Изменение сумм в Заказе покупателя в УНФ (обработка заполнения табличной части Запасы)

05.11.14

Учетные задачи - Оптовая торговля

Обработка позволяет изменять суммы в таб.части Запасы документа Заказ покупателя на указанный процент, на указанную сумму, а также уменьшать/увеличивать суммы так, чтобы итого по таб.части Запасы стало равно заданному значению.

Скачать исходный код

Наименование Файл Версия Размер
UstanovkaSkidokNaZapasyZakaza.epf.7z
.7z 5,48Kb
42
.7z 5,48Kb 42 Скачать

Появилась необходимость в УНФ в заказах покупателей предоставлять ручные скидки. Например, уменьшить все суммы на 5%, или уменьшить все суммы так, чтобы итоговая сумма документа уменьшилась на 1000р., или сказать, что всё вместе продаётся за 10000р., и чтобы при этом все суммы пропорционально уменьшились/увеличились.

Во "взрослых" конфигурациях (УПП, УТ), насколько помню, есть спец.обработка таб.частей, которая позволяет решить эту задачу (а кроме неё ещё и много других) за пару кликов мыши. В УНФ такого не нашёл. Поэтому взялся за написание своего велосипеда. Большого опыта разработки для упр.приложения пока нет, поэтому буду благодарен за дельные замечания и предложения в комментариях.

Обработка добавляется в "Дополнительные отчеты и обработки" (Вид обработки = "Заполнение объекта"). После этого в документе Заказ покупателя появляется кнопка "Заполнить" с тремя командами:

  • "Скидка, %" - уменьшает все суммы в таб.части Запасы на указанный процент (если ввести отрицательное число, то наоборот увеличит на указанный процент).
  • "Скидка, сумма" - уменьшает все суммы в таб.части Запасы так, чтобы итоговая сумма документа уменьшилась на указанную сумму (если ввести отрицательное число, то наоборот итоговая сумма документа будет увеличена на эту сумму).
  • "Скидка, установить Итого" - уменьшает/увеличивает все суммы в таб.части Запасы так, чтобы итого по таб.части Запасы стало равно введённой сумме.

Код модуля обработки:

////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС

// Возвращает сведения о внешней обработке.
Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
	
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиЗаполнениеОбъекта();
	ПараметрыРегистрации.Версия = "0.99";
	ПараметрыРегистрации.Назначение.Добавить("Документ.ЗаказПокупателя");
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Скидка, %'");
	НоваяКоманда.Идентификатор = "УстановитьСкидкуПроцент";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Скидка, сумма'");
	НоваяКоманда.Идентификатор = "УстановитьСкидкуСумма";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	
	НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
	НоваяКоманда.Представление = НСтр("ru = 'Скидка, установить Итого'");
	НоваяКоманда.Идентификатор = "УстановитьСуммуИтого";
	НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовКлиентскогоМетода();
	НоваяКоманда.ПоказыватьОповещение = Истина;
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Код модуля формы (сама форма не содержит никаких реквизитов и элементов):

// {{{ Код взят из модуля формы документа ЗаказПокупателя (обработка события "изменение поля Сумма таб.части Запасы").
// Изменение кода свелось по большому счету к передаче ДокОбъект во все процедуры и обращение к "ДокОбъект" (вместо "Объект") внутри процедур.
// < Начало кода, права на который принадлежат фирме 1С

// Рассчитывается сумма НДС в строке табличной части.
//
&НаСервере
Процедура РассчитатьСуммуНДС(ДокОбъект, СтрокаТабличнойЧасти)
	
	СтавкаНДС = УправлениеНебольшойФирмойПовтИсп.ПолучитьЗначениеСтавкиНДС(СтрокаТабличнойЧасти.СтавкаНДС);
	
	СтрокаТабличнойЧасти.СуммаНДС = ?(ДокОбъект.СуммаВключаетНДС, 
									  СтрокаТабличнойЧасти.Сумма - (СтрокаТабличнойЧасти.Сумма) / ((СтавкаНДС + 100) / 100),
									  СтрокаТабличнойЧасти.Сумма * СтавкаНДС / 100);
											
КонецПроцедуры // ПересчитатьСуммыДокумента() 

// Процедура пересчитывает суммы в платежном календаре.
//
&НаСервере
Процедура ПересчитатьПлатежныйКалендарь(ДокОбъект, ПересчитыватьПроцент = Ложь)
	
	// +++ пересчет процента, а не суммы оплаты
	// для решения моей частной задачи нужно чтобы указанная в документе сумма оплаты не менялась, а менялся процент оплаты
	Если ПересчитыватьПроцент Тогда
		Для каждого ТекСтрока Из ДокОбъект.ПлатежныйКалендарь Цикл
			Всего = ДокОбъект.Запасы.Итог("Всего") + ДокОбъект.Работы.Итог("Всего");
			ТекСтрока.ПроцентОплаты = ?(Всего = 0, 0, ТекСтрока.СуммаОплаты / Всего * 100);
			ТекСтрока.СуммаНДСОплаты = Окр((ДокОбъект.Запасы.Итог("СуммаНДС") + ДокОбъект.Работы.Итог("СуммаНДС")) * ТекСтрока.ПроцентОплаты / 100, 2, 1);
		КонецЦикла;
		Возврат;
	КонецЕсли;
	// пересчет процента, а не суммы оплаты +++
	
	Для каждого ТекСтрока Из ДокОбъект.ПлатежныйКалендарь Цикл
		ТекСтрока.СуммаОплаты = Окр((ДокОбъект.Запасы.Итог("Всего") + ДокОбъект.Работы.Итог("Всего")) * ТекСтрока.ПроцентОплаты / 100, 2, 1);
		ТекСтрока.СуммаНДСОплаты = Окр((ДокОбъект.Запасы.Итог("СуммаНДС") + ДокОбъект.Работы.Итог("СуммаНДС")) * ТекСтрока.ПроцентОплаты / 100, 2, 1);
	КонецЦикла;
	
КонецПроцедуры // ПересчитатьПлатежныйКалендарь()

// Процедура - обработчик события ПриИзменении поля ввода Сумма.
//
&НаСервере
Процедура ЗапасыСуммаПриИзменении(ДокОбъект)
	
	Для Каждого СтрокаТабличнойЧасти Из ДокОбъект.Запасы Цикл
	
		// Цена.
		Если СтрокаТабличнойЧасти.Количество <> 0 Тогда
			СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Сумма / СтрокаТабличнойЧасти.Количество;
		КонецЕсли;
		
		// Скидка.
		Если СтрокаТабличнойЧасти.ПроцентСкидкиНаценки = 100 Тогда
			СтрокаТабличнойЧасти.Цена = 0;
		ИначеЕсли СтрокаТабличнойЧасти.ПроцентСкидкиНаценки <> 0 И СтрокаТабличнойЧасти.Количество <> 0 Тогда
			СтрокаТабличнойЧасти.Цена = СтрокаТабличнойЧасти.Сумма / ((1 - СтрокаТабличнойЧасти.ПроцентСкидкиНаценки / 100) * СтрокаТабличнойЧасти.Количество);
		КонецЕсли;
			
		// Сумма НДС.
		РассчитатьСуммуНДС(ДокОбъект, СтрокаТабличнойЧасти);
		
		// Всего.
		СтрокаТабличнойЧасти.Всего = СтрокаТабличнойЧасти.Сумма + ?(ДокОбъект.СуммаВключаетНДС, 0, СтрокаТабличнойЧасти.СуммаНДС);
		
	КонецЦикла;
		
	// Платежный календарь.
	ПересчитатьПлатежныйКалендарь(ДокОбъект, Истина); // для штатного пересчета платежного календаря нужно во втором параметре передать Ложь или не указывать его вообще
	
КонецПроцедуры // ЗапасыСуммаПриИзменении()
// Конец кода, права на который принадлежат фирме 1С / >
// Код взят из модуля формы документа ЗаказПокупателя (обработка события "изменение поля Сумма таб.части Запасы"). }}}

// отсюда и до конца файла GPLv3

&НаСервере
Процедура УстановитьСкидкуПроцент(ДокОбъект, ЗначСкидки)
	
	Для Каждого СтрокаТЧ Из ДокОбъект.Запасы Цикл
		СтрокаТЧ.Сумма = Окр(СтрокаТЧ.Сумма * (100 - ЗначСкидки) / 100, 2);
	КонецЦикла;
	
КонецПроцедуры

&НаСервере
Процедура УстановитьСкидкуСумма(ДокОбъект, ЗначСкидки)
	
	МассивСумм = ДокОбъект.Запасы.ВыгрузитьКолонку("Сумма");
	МассивСкидок = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(ЗначСкидки, МассивСумм);
	
	Для Сч = 0 По МассивСумм.Количество() - 1 Цикл
		МассивСумм[Сч] = МассивСумм[Сч] - МассивСкидок[Сч];
	КонецЦикла;
	
	ДокОбъект.Запасы.ЗагрузитьКолонку(МассивСумм, "Сумма");
	
КонецПроцедуры

&НаСервере
Процедура УстановитьСуммуИтого(ДокОбъект, ЗначСкидки)
	
	МассивСумм = ДокОбъект.Запасы.ВыгрузитьКолонку("Сумма");
	МассивРез = ОбщегоНазначения.РаспределитьСуммуПропорциональноКоэффициентам(ЗначСкидки, МассивСумм);
	
	ДокОбъект.Запасы.ЗагрузитьКолонку(МассивРез, "Сумма");
	
КонецПроцедуры

&НаСервере
Процедура УстановитьСкидкуНаСервере(ИмяКоманды, ОбъектыНазначения, ЗначСкидки)
	
	Для Каждого ДокСсылка Из ОбъектыНазначения Цикл
		
		Если ТипЗнч(ДокСсылка) <> Тип("ДокументСсылка.ЗаказПокупателя") Тогда
			Продолжить;
		КонецЕсли;
		
		ДокОбъект = ДокСсылка.ПолучитьОбъект();
		
		Если ДокОбъект.Запасы.Количество() = 0 Тогда
			Продолжить;
		КонецЕсли;
		
		Если ИмяКоманды = "УстановитьСкидкуПроцент" Тогда
			УстановитьСкидкуПроцент(ДокОбъект, ЗначСкидки);
		ИначеЕсли ИмяКоманды = "УстановитьСкидкуСумма" Тогда
			УстановитьСкидкуСумма(ДокОбъект, ЗначСкидки);
		ИначеЕсли ИмяКоманды = "УстановитьСуммуИтого" Тогда
			УстановитьСуммуИтого(ДокОбъект, ЗначСкидки);
		КонецЕсли;
		
		ЗапасыСуммаПриИзменении(ДокОбъект);
		
		ДокОбъект.Записать();
		
	КонецЦикла;
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
	
	Если ОбъектыНазначения.Количество() > 1 Тогда
		// не будем давать пользователю возможность массово устанавливать скидки
		ВызватьИсключение НСтр("ru = 'Установка скидок для нескольких документов не поддерживается!'");
		Возврат;
	КонецЕсли;
	
	ЗначСкидки = 0;
	ЧислоВведено = Ложь;
	Если ИмяКоманды = "УстановитьСкидкуПроцент" Тогда
		ЧислоВведено = ВвестиЧисло(ЗначСкидки, НСтр("ru = 'Уменьшить на %'"), 4, 1);
	ИначеЕсли ИмяКоманды = "УстановитьСкидкуСумма" Тогда
		ЧислоВведено = ВвестиЧисло(ЗначСкидки, НСтр("ru = 'Уменьшить на сумму'"), 15, 2);
	ИначеЕсли ИмяКоманды = "УстановитьСуммуИтого" Тогда
		ЧислоВведено = ВвестиЧисло(ЗначСкидки, НСтр("ru = 'Установить сумму Итого = '"), 15, 2);
	Иначе
		ВызватьИсключение "Неизвестная команда """ + ИмяКоманды + """!";
		Возврат;
	КонецЕсли;
	
	Если НЕ ЧислоВведено Тогда
		Возврат;
	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ЗначСкидки) Тогда
		Возврат;
	КонецЕсли;

	УстановитьСкидкуНаСервере(ИмяКоманды, ОбъектыНазначения, ЗначСкидки);
	
	// обновим открытые списки и формы документов
	Для Каждого ДокСсылка Из ОбъектыНазначения Цикл
		ОповеститьОбИзменении(ДокСсылка);
		ПараметрыФормы = Новый Структура("Ключ", ДокСсылка);
		ТекФорма = ПолучитьФорму("Документ.ЗаказПокупателя.Форма.ФормаДокумента", ПараметрыФормы);
		Если ТекФорма.Открыта() Тогда
			ТекФорма.Прочитать();
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры

См. также

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 руб.

21.04.2017    90903    108    40    

197

ЕГАИС++. Опт, производство, импорт

Оптовая торговля Розничная торговля Обмен с ГосИС Платформа 1С v8.3 1С:Управление торговлей 10 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Россия Бухгалтерский учет Управленческий учет Акцизы Платные (руб)

Полнофункциональное расширение (ранее известное как Модуль 1С-ЕГАИС) для взаимодействия типовых конфигураций 1С и ЕГАИС, предоставляющее максимум возможностей по работе с УТМ. Получение и отправка ТТН, отправка акта о постановке на баланс и акта о списании. Получение остатков. Загрузка и сопоставление номенклатуры и контрагентов. Оправка в ЕГАИС отчетов о производстве и импорте.

8970 руб.

15.12.2015    166406    702    362    

389

Переработка давальческого сырья в 1С:КА

Производство готовой продукции (работ, услуг) Бухгалтерский учет 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Учет у переработчика теперь и в КА (полные возможности в ERP). Без внесения изменений в конфигурацию.

16800 руб.

22.02.2019    61407    228    85    

168

Обмен с системой ЦРПТ (Универсальная конфигурация ХамелеонЦРПТ + маркировка табака, обуви, одежды, лекарств, фото, молока, духов(парфюма), питьевой воды, велосипедов и шин)

Оптовая торговля Розничная торговля Обмен с ГосИС Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Бухгалтерский учет Управленческий учет Платные (руб)

Данная публикация создана для помощи разработчикам, интеграторам и другим заинтересованным лицам по настройке системы маркировки обуви, одежды, лекарств, табака, фото, молока, духов(парфюма), питьевой воды, велосипедов и шин. Смело задавайте нам вопросы по работе с ЦРПТ, GS1, ЭДО, Национальным каталогом, мы накопили достаточно большую базу знаний по данным темам и готовы ответить на все Ваши вопросы.

104000 руб.

18.03.2019    110648    34    114    

178

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки

Обмен между базами 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос в продаже с 2015г., и мы постоянно работаем над его развитием. Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    190722    270    239    

269

Обмен с системой Меркурий через Web + Ветис.API для любых конфигураций (универсальная конфигурация Хамелеон Меркурий)

Оптовая торговля Производство готовой продукции (работ, услуг) Розничная торговля Обмен с ГосИС Платформа 1С v8.3 Конфигурации 1cv8 Сельское хозяйство и рыболовство Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Рестораны, кафе и фаст-фуд Пищевая промышленность Россия Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная конфигурация Хамелеон Меркурий для взаимодействия с системой Меркурий(тестовый+рабочий+демо контур) может использоваться для интеграции в любую конфигурацию на базе 1С, версии ПРОФ и выше. Основное отличие от других решений - работа через веб-интерфейс и API 2.0(API 2.1). Для удобства реализован общий интерфейс в виде обработки, схожей с интерфейсом Меркурий, но возможностей гораздо больше, т.к. при интеграции в Вашу учетную систему, можно на основании Ваших справочников и документов, создавать соответствующие документы и справочники в системе Меркурий и наоборот.

104000 руб.

08.11.2017    121073    295    140    

394
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. vlastapov 49 27.12.14 12:26 Сейчас в теме
В УНФ, редакция 1.5 (1.5.2.25) выдает ошибку "Использование модальных окон в данном режиме запрещено!". Можно исправить?
+
2. q_i 577 30.12.14 12:53 Сейчас в теме
(1) vlastapov, вместо процедуры "Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт" вставьте (см. прилагаемый файл):
&НаКлиенте
Процедура ВыполнитьКоманду(ИмяКоманды, ОбъектыНазначения) Экспорт
	
	Если ОбъектыНазначения.Количество() > 1 Тогда
		// не будем давать пользователю возможность массово устанавливать скидки
		ВызватьИсключение НСтр("ru = 'Установка скидок для нескольких документов не поддерживается!'");
		Возврат;
	КонецЕсли;
	
	ЗначСкидки = 0;
	Если ИмяКоманды = "УстановитьСкидкуПроцент" Тогда
		ПоказатьВводЧисла(Новый ОписаниеОповещения("ПродолжитьВыполнениеПослеВводаЧисла", ЭтаФорма, Новый Структура("ИмяКоманды, ОбъектыНазначения", ИмяКоманды, ОбъектыНазначения)), ЗначСкидки, НСтр("ru = 'Уменьшить на %'"), 4, 1);
	ИначеЕсли ИмяКоманды = "УстановитьСкидкуСумма" Тогда
		ПоказатьВводЧисла(Новый ОписаниеОповещения("ПродолжитьВыполнениеПослеВводаЧисла", ЭтаФорма, Новый Структура("ИмяКоманды, ОбъектыНазначения", ИмяКоманды, ОбъектыНазначения)), ЗначСкидки, НСтр("ru = 'Уменьшить на сумму'"), 15, 2);
	ИначеЕсли ИмяКоманды = "УстановитьСуммуИтого" Тогда
		ПоказатьВводЧисла(Новый ОписаниеОповещения("ПродолжитьВыполнениеПослеВводаЧисла", ЭтаФорма, Новый Структура("ИмяКоманды, ОбъектыНазначения", ИмяКоманды, ОбъектыНазначения)), ЗначСкидки, НСтр("ru = 'Установить сумму Итого = '"), 15, 2);
	Иначе
		ВызватьИсключение "Неизвестная команда """ + ИмяКоманды + """!";
		Возврат;
	КонецЕсли;
	
КонецПроцедуры	

&НаКлиенте
Процедура ПродолжитьВыполнениеПослеВводаЧисла(ВведенноеЧисло, ДополнительныеПараметры) Экспорт
	
	ЗначСкидки			= ВведенноеЧисло;
	ИмяКоманды			= ДополнительныеПараметры.ИмяКоманды;
	ОбъектыНазначения	= ДополнительныеПараметры.ОбъектыНазначения;
	
	Если НЕ ЗначениеЗаполнено(ЗначСкидки) Тогда
		Возврат;
	КонецЕсли;

	УстановитьСкидкуНаСервере(ИмяКоманды, ОбъектыНазначения, ЗначСкидки);
	
	// обновим открытые списки и формы документов
	Для Каждого ДокСсылка Из ОбъектыНазначения Цикл
		ОповеститьОбИзменении(ДокСсылка);
		ПараметрыФормы = Новый Структура("Ключ", ДокСсылка);
		ТекФорма = ПолучитьФорму("Документ.ЗаказПокупателя.Форма.ФормаДокумента", ПараметрыФормы);
		Если ТекФорма.Открыта() Тогда
			ТекФорма.Прочитать();
		КонецЕсли;
	КонецЦикла;
	
КонецПроцедуры
Показать

Ещё отвалилось обновление открытой формы документа. При поиске формы с помощью кода
ПараметрыФормы = Новый Структура("Ключ", ДокСсылка);
ТекФорма = ПолучитьФорму("Документ.ЗаказПокупателя.Форма.ФормаДокумента", ПараметрыФормы);
ТекФорма.Открыта() возвращает Ложь. Пока некогда разбираться с этим. Буду благодарен коллегам если подскажут как найти и обновить форму открытого документа, из которого была вызвана процедура заполнения.
Прикрепленные файлы:
UstanovkaSkidokNaZapasyZakaza_dlya_unf1.5.2.epf.7z
+
3. nvk1234 29.11.15 19:26 Сейчас в теме
Хорошо ли при вводе процента скидки писать непосредственно в объект документа? Ведь пользователю может не понравиться результат...
+
4. q_i 577 30.11.15 11:25 Сейчас в теме
(3) nvk1234, когда писалась эта обработка (а это было год назад), количество костылей, которыми нужно было обложить БСП, чтобы что-то хоть как-то работало стремилось к бесконечности.
На данный момент обработка устарела, и я не удаляю эту публикацию только из-за наличия хоть и мизерной, но всё-таки вероятности, что кому-то могут пригодиться какие-нибудь куски кода из неё.
Дорабатывать в ближайшее время не планирую ввиду отсутствия коммерческого заказа.
+
5. akaky_2001 29.01.16 20:49 Сейчас в теме
Мне пригодилась, так что автору респект
+
Оставьте свое сообщение