Замена заполнения по одному документу на множественное. БП3
Эта задача интересна еще и тем, что оригинально используется метод ПродожитьВызов.
В документе дополнительных расходов товарную часть можно заполнить кнопкой «Добавить из поступления»:
Пользователям захотелось добавлять сразу из нескольких выбраннных поступлений.
Я реализовал им это, выводя попутно сообщения, из каких документов произошло заполнение:
Код несложный.
В форме документа ПоступлениеДопРасходов включаем множественный выбор:
&НаКлиенте &ИзменениеИКонтроль("ЗаполнитьТабличнуюЧастьПоПоступлению") Процедура дор_ЗаполнитьТабличнуюЧастьПоПоступлению(СпособЗаполнения) ПараметрыОтбора = Новый Структура("Организация", Объект.Организация); ПараметрыФормы = Новый Структура("Отбор", ПараметрыОтбора); ДополнительныеПараметры = Новый Структура; ДополнительныеПараметры.Вставить("СпособЗаполнения", СпособЗаполнения); #Вставка ПараметрыФормы.Вставить("МножественныйВыбор", Истина); #КонецВставки ОповещениеОЗакрытии = Новый ОписаниеОповещения("ЗаполнитьТабличнуюЧастьПоПоступлениюЗавершение", ЭтотОбъект, ДополнительныеПараметры); ОткрытьФорму("Документ.ПоступлениеТоваровУслуг.ФормаВыбора", ПараметрыФормы, ЭтотОбъект,,,, ОповещениеОЗакрытии); КонецПроцедуры
Я кстати, сначала ошибся и множественный выбор прописал в дополнительные параметры. 1С давала выделять много строк, но выбирала все равно одну.
В обработке поступления 1С ожидает ссылку, поэтому если на вход поступает массив, вызываем функцию для каждого элемента массива в модуле документа ПоступлениеДопРасходов:
&Вместо("ЗаполнитьПоПоступлению") Процедура дор_ЗаполнитьПоПоступлению(ДанныеЗаполнения) Если ТипЗнч(ДанныеЗаполнения) = Тип("Массив") Тогда Для Каждого ТекДокумент из ДанныеЗаполнения Цикл Сообщить("Заполнение по документу: " + ТекДокумент); ПродолжитьВызов(ТекДокумент); КонецЦикла; КонецЕсли; КонецПроцедуры
Мне понравилось, что ПродолжитьВызов можно вызывать многократно в цикле. Раньше с этим не сталкивался.
Среда: БП Корп 3.0.111.25. Объем: 1 час.
Свежие комментарии