Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 окт 2021, 12:05

как создать 2 документа в цикле

Автор margo, 11 окт 2021, 19:17

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

margo

Добрый день!

Подскажите, пожалуйста, как правильно в одном цикле создать 2 документа. Сейчас создается только один.
ДатаЗакрытияРегистров = Объект.Дата;
Организация = Объект.Организация;
//ВидПоставки = Объект.ВидПоставки;
ОбъектРасчетов = Объект.ОбъектРасчетов;

Запрос = Новый Запрос;
            Запрос.Текст =
"ВЫБРАТЬ
| ЗаказыКлиентовОстатки.ЗаказКлиента КАК объектрасчетов,
| ЗаказыКлиентовОстатки.Номенклатура,
| ЗаказыКлиентовОстатки.Характеристика,
| ЗаказыКлиентовОстатки.КодСтроки,
| ЗаказыКлиентовОстатки.Склад,
| ЗаказыКлиентовОстатки.Серия,
| ЗаказыКлиентовОстатки.ЗаказаноОстаток КАК количество,
| ЗаказыКлиентовОстатки.СуммаОстаток,
| РасчетыСКлиентамиОстатки.СуммаОстаток КАК СуммаРасчетовОстаток,
| ЗаказыКлиентовОстатки.ЗаказКлиента.Организация КАК Организация,
| ЗаказыКлиентовОстатки.ЗаказКлиента.Контрагент КАК Контрагент,
| ЗаказыКлиентовОстатки.ЗаказКлиента.Партнер КАК Партнер,
| ЗаказыКлиентовОстатки.ЗаказКлиента.Подразделение КАК Подразделение,
| ЗаказыКлиентовОстатки.ЗаказКлиента.Дата КАК Дата
|ИЗ
| РегистрНакопления.ЗаказыКлиентов.Остатки(
| &Период,
| ЗаказКлиента.Организация = &Организация
| И ЗаказКлиента = &объектрасчетов) КАК ЗаказыКлиентовОстатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКлиентами.Остатки КАК РасчетыСКлиентамиОстатки
| ПО ЗаказыКлиентовОстатки.ЗаказКлиента = РасчетыСКлиентамиОстатки.ЗаказКлиента
|ГДЕ
| РасчетыСКлиентамиОстатки.СуммаОстаток <> 0
|ИТОГИ ПО
| объектрасчетов";


Запрос.УстановитьПараметр("Период", ДатаЗакрытияРегистров);
            Запрос.УстановитьПараметр("Организация", Организация);
Запрос.УстановитьПараметр("ОбъектРасчетов", ОбъектРасчетов);


ВыборкаПоЗаказам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ОбъектРасчетов");
Пока ВыборкаПоЗаказам.Следующий() Цикл

НовыйДокумент = Документы.ЗаказКлиента.СоздатьДокумент();
НовыйДокумент.Дата = ВыборкаПоЗаказам.Дата;
НовыйДокумент.УстановитьНовыйНомер();
НовыйДокумент.Комментарий = ("авто");
НовыйДокумент.ХозяйственнаяОперация = ПредопределенноеЗначение("Перечисление.ХозяйственныеОперации.РеализацияКлиенту");
НовыйДокумент.Организация = ПредопределенноеЗначение("Справочник.Организации.ОрганизацияСолди");
НовыйДокумент.Подразделение = ВыборкаПоЗаказам.Подразделение;
НовыйДокумент.Партнер = ВыборкаПоЗаказам.Партнер;
НовыйДокумент.Контрагент = ВыборкаПоЗаказам.Контрагент;

НовыйДокумент2 = Документы.ВводОстатков.СоздатьДокумент();
НовыйДокумент2.Дата = ДатаЗакрытияРегистров;
НовыйДокумент2.Организация = ПредопределенноеЗначение("Справочник.Организации.ОрганизацияСолди");

Выборка = ВыборкаПоЗаказам.Выбрать();

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

margo

смысл в том, что первый документ должен быть в табличной части второго документа

Ивашка

это как? никогда не видел подобного

margo

@Ивашка, нужно создать заказ с заполненной табличной частью и ввести по нему остаток документом ввод остатков

DmitriyF

Цитата: margo от 11 окт 2021, 21:14@Ивашка, нужно создать заказ с заполненной табличной частью и ввести по нему остаток документом ввод остатков
так, а почему в цикле то? Можно заполнить заказ, записать его и потом без всякого цикла создать ввод остатков

margo


LexaK

@margo, имеется ввиду воездание ввода остатков примерно так сделать
        Выборка = ВыборкаПоЗаказам.Выбрать();
           
            Пока Выборка.Следующий() Цикл
                    НоваяСтрока = НовыйДокумент.Товары.Добавить();
                    НоваяСтрока.Номенклатура = Выборка.Номенклатура;
                    НоваяСтрока.КоличествоУпаковок = Выборка.Количество;
                    НоваяСтрока.Цена = Выборка.СуммаОстаток/Выборка.Количество;
                    НоваяСтрока.Сумма = Выборка.СуммаОстаток;
                  КонецЦикла;
                 
           НовыйДокумент.Записать(режимзаписидокумента.Проведение, режимпроведениядокумента.Неоперативный);
           НовыйДокумент2 = Документы.ВводОстатков.СоздатьДокумент();
           НовыйДокумент2.Заполнить(НовыйДокумент.Ссылка);//если конечно налажено/настроено Заполнение на основании
           //проверьте может еще какие реквизиты надо дозаполнить
           НовыйДокумент2.Записать(режимзаписидокумента.Проведение);
ответ Понравился? (в смысле пригодился?)

margo

@LexaK, НовыйДокумент2 = Документы.ВводОстатков.СоздатьДокумент(); в том то и дело, что на этом шаге, если смотреть через отладчик, то документ не создается

LexaK

эээ, а что пишет?
а права на создание есть?

а так

ДокВвод = Документы.ВводОстатков.СоздатьДокумент();

ответ Понравился? (в смысле пригодился?)

LexaK

попробуйте вот это вставить, что напишет?
Попытка
ДокВвод = Документы.ВводОстатков.СоздатьДокумент();
Исключение
лкОшибка = ОписаниеОшибки();
Сообщить(лкОшибка);
КонецПопытки;
ответ Понравился? (в смысле пригодился?)

Теги:

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

Рейтинг@Mail.ru Rambler's Top100

Поиск