Создание договора в документе поступление товаров и услуг
Нужно создать договор при создании документа, наименование одно и тоже, контрагент разный, организация из того, что выбрали в обработке, код:
Если МассивКолонок.Количество() <> 0 и МассивКолонок.НайтиСтроки(Новый Структура("НазваниеКолонки", "Номенклатура")).Количество() <> 0 Тогда
ОсновнойСклад = Справочники.Склады.НайтиПоНаименованию("Основной склад", Истина);
ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("руб.", Истина);
СозданныеДокументы = Новый Соответствие;
Для СтрокаОтсчета = 2 по КоличествоСтрок Цикл
Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Excel.Cells(СтрокаОтсчета, 23).Text, Истина);
ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары;
//Договор = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(Excel.Cells(СтрокаОтсчета, 20).Text, Истина);
НовыйОбъект = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
НовыйОбъект.Владелец = Контрагент;
НовыйОбъект.Наименование = "Основной";
НовыйОбъект.Организация = Объект.Организация;
НовыйОбъект.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком;
НовыйДокумент = СозданныеДокументы[Контрагент];
Если НовыйДокумент = Неопределено Тогда
НовыйДокумент = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
НовыйДокумент.Контрагент = Контрагент;
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.Организация = Объект.Организация;
НовыйДокумент.ВидОперации = ВидОперации;
НовыйДокумент.Склад = ОсновнойСклад;
НовыйДокумент.ВалютаДокумента = ВалютаДокумента;
//НовыйДокумент.ДоговорКонтрагента = Договор;
СозданныеДокументы.Вставить(Контрагент, НовыйДокумент);
КонецЕсли;
НСтрк = НовыйДокумент.Товары.Добавить();
Для каждого СтрокаМассив из МассивКолонок Цикл
ТекущееЗначение = Excel.Cells(СтрокаОтсчета, СтрокаМассив.НомерКолонки).Value;
ИмяКолонки = Excel.Cells(1, СтрокаМассив.НомерКолонки).Text;
НСтрк.СчетУчета = ПланыСчетов.Хозрасчетный.НайтиПоНаименованию("Сырье и материалы", Истина);
Если ИмяКолонки = "Номенклатура" Тогда
НСтрк.Номенклатура = Объект.Номенклатура;
ИначеЕсли
ИмяКолонки = "Количество" Тогда
НСтрк.Количество = ТекущееЗначение;
ИначеЕсли
ИмяКолонки = "Цена" Тогда
НСтрк.Цена = ТекущееЗначение;
ИначеЕсли
ИмяКолонки = "Сумма" Тогда
НСтрк.Сумма = НСтрк.Количество*НСтрк.Цена;
ИначеЕсли
ИмяКолонки = "Ставка НДС" Тогда
НСтрк.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
КонецЕсли;
КонецЦикла;
КонецЦикла;
Для каждого КлючИЗначение из СозданныеДокументы Цикл
НовыйДокумент = КлючИЗначение.Значение;
НовыйДокумент.Записать();
Сообщить("Создан и заполнен документ " + Строка(НовыйДокумент));
КонецЦикла;
Иначе
Сообщить("В Excel файле не достаточно данных для заполнения документа!");
КонецЕсли;
НовыйОбъект.Записать();
Сообщить("ВЦфВ");
Excel.DisplayAlerts = 0;
Excel.Quit();
Excel.DisplayAlerts = 1;
ПоказатьПрикрепленные файлы:
По теме из базы знаний
- Перенос документов из УТ 11 в Бухгалтерию 3.0
- Загрузка документов и номенклатуры из Excel в 1С "одним нажатием": УПД, ТОРГ-12, отчеты маркетплейсов, заказы, счета, прайсы
- Автоматическое оприходование товаров документом поступления на основании списка документов реализации. БП 3.0
- Создание документа поступления на основании реализации в другой базе
- Массовое создание поступлений товаров и услуг из актов оказания производственных услуг для УПП 1.3
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
По Вашей логике на каждую строку экселя нужно создать договор, а записать его только в самом конце. Перенесите в цикл
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот