Форумы » Вопросы и ответы по интеграции »
Групповое создание ВСД2_ЛабораторныеИсследования (доработка)
Добавил(а) Скворцов Анатолий почти 6 года назад
Принцип:
1. Создаем много шаблонов для каждого Продукция_Элемент в конкретной дате (например: 01.12.19)
2. Из обработки ВСД_ЛабИсследования выбираем партии, нажимает кнопку группового создания, указываем дату шаблонов и все ЛИ создаются.
3. Нажимаем Отправить
Док.ВСД2_ЛабораторныеИсследования
Новый реквизит: ЭтоШаблон (Число,1)
Новый реквизит: Продукция_Элемент
Форма: Добавлены реквизиты
Модуль:
Процедура ПриИзмененииЭтоШаблон()
Если ЭтоШаблон=1 Тогда
Форма.кнОтправить.Доступность(0);
Форма.Партия.Видимость(0);
Форма.Продукция_Элемент.Видимость(1);
Иначе
Форма.кнОтправить.Доступность(1);
Форма.Партия.Видимость(1);
Форма.Продукция_Элемент.Видимость(0);
КонецЕсли;
КонецПроцедуры
Вызов из реквизита формы ЭтоШаблон и из ПриОткрытии()
И заблокирована отправка шаблона.
Форма обработки: Кнопка "Создать..."
Модуль обработки:
Процедура ВвестиЛИСписком()
ДокЛИ=СоздатьОбъект("Документ.ВСД2_ЛабораторныеИсследования");
ВыбДатаШаблонов=ВосстановитьЗначение("ДатаШаблоновЛабИссл");
Если ВвестиДату(ВыбДатаШаблонов,"Укажите дату результатов исследований",60)=1 Тогда
СохранитьЗначение("ДатаШаблоновЛабИссл",ВыбДатаШаблонов);
Иначе
Возврат;
КонецЕсли;
ДокЛИ.ВыбратьДокументы(ВыбДатаШаблонов,ВыбДатаШаблонов);
ТекСтрокаПартий=ТаблицаПартий.ТекущаяСтрока();
Пока ДокЛИ.ПолучитьДокумент() = 1 Цикл
Если ДокЛИ.ЭтоШаблон=0 Тогда
Продолжить;
КонецЕсли;
Если ДокЛИ.Продукция_Элемент<>ТаблицаПартий.Продукция Тогда
Продолжить;
КонецЕсли;
Сообщить("Найден шаблон "+ДокЛИ.Продукция_Элемент+" - "+ДокЛИ.НаименованиеПоказателя);
ВыбШаблон=ДокЛИ.ТекущийДокумент();
ВвестиЛИ();
ТаблицаПартий.ПолучитьСтрокуПоНомеру(ТекСтрокаПартий);
ТаблицаПартий.ФлЛИЕ=0;
КонецЦикла;
КонецПроцедуры
| ЛИ2.jpg (275 КБ) ЛИ2.jpg | форма документа | ||
| обработка.jpg (255 КБ) обработка.jpg | форма обработки | ||
| ВСД_ЛабИсследования.ert (273 КБ) ВСД_ЛабИсследования.ert |
Ответы (4)
RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка)
-
Добавил(а) кб99 Филипп почти 6 года назад
Здорово! Элегантное решение! Думал через отдельный справочник это делать, но так даже интереснее.
RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка)
-
Добавил(а) кб99 Филипп почти 6 года назад
На будущее просьба присылать свои доработки с помощью git
RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка)
-
Добавил(а) Скворцов Анатолий почти 6 года назад
С git-ом разберусь.
При нашем цейтноте только "элегантные" решения приходится внедрять )
Еще пара моментов по обработке:
Процедура ЗаполнитьСписокПартий()
ТаблицаПартий.УдалитьСтроки();
ДатаИзг=ГМ.Преобразовать_Дата_в_Строка(ДатаВыработки); // <<== для работы фильтра по дате выработки
Запрос=СоздатьОбъект("Запрос");
Текст= "//{{ЗАПРОС(Сформировать)
|ВСД_Партия = Справочник.ВСД_Партия.ТекущийЭлемент;
|ВсдДата = Справочник.ВСД_Партия.ВсдДата;
|ДатаИзготовления1 = Справочник.ВСД_Партия.ДатаИзготовления1;
|Продукция_Элемент = Справочник.ВСД_Партия.Продукция_Элемент;
|Группировка ВСД_Партия без групп;
|Условие(ВсдДата=ДатаСоздания);
|"//}}ЗАПРОС
;
Если ФлФильтрВыработка=1 Тогда
Текст=Текст+"Условие(Лев(ДатаИзготовления1,10)=ДатаИзг);"; // <<== для работы фильтра по дате выработки
КонецЕсли;
Если ВыбПродукция.Выбран()=1 Тогда
Текст=Текст+"Условие(Продукция_Элемент=ВыбПродукция);";
КонецЕсли;
СписокПартий=СоздатьОбъект("СписокЗначений");
Запрос.Выполнить(Текст);
Пока Запрос.Группировка(1)=1 Цикл
Если СокрЛП(Запрос.ВСД_Партия.Статус)="103" Тогда // <<== выводим только выработанные партии (можно вынести на форму)
ТаблицаПартий.НоваяСтрока();
...
RE: Групповое создание ВСД2_ЛабораторныеИсследования (доработка)
-
Добавил(а) кб99 Филипп почти 6 года назад
Простой и понятный код лучше сложного-сочиненного
легко читать => легко поддерживать = легко тестировать
сложный код = сложно понимать = сложно тестировать = частые ошибки