Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:36

Создание на основании нескольких документов

Автор lam_anna, 03 мая 2023, 12:22

0 Пользователей и 1 гость просматривают эту тему.

lam_anna

Из табличной части создаю документы Заказ клиенту в УТ. На основании уже записанных документов хочу создать акты выполненных работ. Вроде получилось создать, но создается один документ АВР из списка, а нужно на все

Подскажите люди добрые, как можно прописать цикл для создания нескольких документов? Точнее как прописать цикл я понимаю, но не пойму как получить список уже созданных документов Заказов, чтобы на их основании ввести АВР

Процедура СоздатьАВР(Док)

//Вот тут нужно сделать цикл.

ДанныеЗаполнения=Новый Структура;
ДанныеЗаполнения.Вставить("ДокументОснование", Док);
ДанныеЗаполнения.Вставить("Продажа",Истина);
Реализ=Документы.АктВыполненныхРабот.СоздатьДокумент();
Реализ.Заполнить(ДанныеЗаполнения);
ФормаРеализации=Реализ.ПолучитьФорму("Документ.АктВыполненныхРабот.ФормаОбъекта");
Реализ.Дата = Объект.ДатаРеализ;
Реализ.Записать(РежимЗаписиДокумента.Проведение);
Сообщить(Реализ.Ссылка);
//КонецЦикла


КонецПроцедуры



antoneus

Нужно получить список заказов без созданных на их основании АВР?

lam_anna

antoneus, да, все верно. у меня в табличной части допустим 5 заказов, я их создаю обработкой и хочу на их основании создать АВР

Afinogen

lam_anna,
и в чем в таком случае проблема?

у любого документа есть предопределенный метод Заполнить()
вызов этого  метода приводит к запуску обработчика модуля объекта ОбработкаЗаполнения()

в вашем случае достаточно  сделать цикл
Для Каждого ТекЗаказ ИЗ Таблица (елси хотите список или массив) Цикл

//в теле цикла получаете объект вашего заказа
//ТекОбъект = ТекЗаказ.Ссылка.ПолучитьОбъект();
//ТекОбъект.Заполнить();
//ТекОбъект.Записать()
//все

КонецЦикла

ну а в метод Заполнить() передаете то что  у вас прописано непорсредственно в ОбработкеЗаполнения() соответствующего создаваемого документа, как правило туда либо  ссылка на Документ основание передается или какая -нибудь структура



antoneus

Ну если заказы в табличной части - тогда цикл по табличной части, но на всякий случай лучше проверить, что авр на заказ не создан уже:

Процедура СоздатьДокументы()

    Заказы = Объект.ИмяТабличнойЧасти.Выгрузить().ВыгрузитьКолонку("ИмяКолонкиСЗаказами");
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ЗаказКлиента.Ссылка КАК Ссылка
    |ИЗ
    |    Документ.ЗаказКлиента КАК ЗаказКлиента
    |ЛЕВОЕ СОЕДИНЕНИЕ
    |    Документ.АктВыполненныхРабот КАК АктВыполненныхРабот
    |ПО
    |    ЗаказКлиента.Ссылка = АктВыполненныхРабот.ДокументОснование
    |ГДЕ
    |    ЗаказКлиента.Ссылка В(&Ссылки)
    |    И АктВыполненныхРабот.Ссылка ЕСТЬ NULL";

    Запрос.УстановитьПараметр("Ссылки", Заказы);
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        ДанныеЗаполнения=Новый Структура("ДокументОснование, Продажа", Выборка.Ссылка, Истина);
        Реализ=Документы.АктВыполненныхРабот.СоздатьДокумент();
        Реализ.Заполнить(ДанныеЗаполнения);
        Реализ.Дата = Объект.ДатаРеализ;
        Реализ.Записать(РежимЗаписиДокумента.Проведение);
        Сообщить("Создан документ: " + Реализ.Ссылка);
    КонецЦикла;

КонецПроцедуры
       

Afinogen

теолретически может быть ситуация когда заказ создан но поменялись данные в основании и нужно уже созданный корректировать  B)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск