Создание договора в документе поступление товаров и услуг

1. skiopolitan 20.11.18 13:27 Сейчас в теме
Нужно создать договор при создании документа, наименование одно и тоже, контрагент разный, организация из того, что выбрали в обработке, код:
Если МассивКолонок.Количество() <> 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;    
Показать
Прикрепленные файлы:
+
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. buganov 200 20.11.18 13:37 Сейчас в теме
Ну так Справочники.ДоговорыКонтрагентов.СоздатьЭлемент() разве не работает?
+
3. skiopolitan 20.11.18 13:38 Сейчас в теме
4. buganov 200 20.11.18 13:40 Сейчас в теме
(3) а Спр = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
//Заполнение элемента справочника
Спр.Записать();
?
+
5. skiopolitan 20.11.18 13:43 Сейчас в теме
(4) Нет, не работает.
Спр = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
+
7. buganov 200 20.11.18 13:43 Сейчас в теме
(5) что пишет? Что в отладке?
+
6. buganov 200 20.11.18 13:43 Сейчас в теме
По Вашей логике на каждую строку экселя нужно создать договор, а записать его только в самом конце. Перенесите в цикл
+
8. Octopus 337 20.11.18 13:45 Сейчас в теме
(6)
а записать его только в самом конце
А присваивать вообще не надо )
buganov; +1
9. skiopolitan 20.11.18 13:45 Сейчас в теме
(6)Ничего не пишет, документы создаются
Прикрепленные файлы:
+
10. buganov 200 20.11.18 13:57 Сейчас в теме
У Вас логику нужно пересмотреть.
Вы:
1. Создаете договор, но не записываете.
2. Записываете только последний договор
3. Не присваиваете в документах
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот