Заполнение документа на основании

1. user1809279 14.08.24 07:07 Сейчас в теме
Здравствуйте, такой вопрос. Делаю обработку для создания документов на основании, возник вопрос в процессе

&НаСервере
Процедура СоздатьЭлектронныйАктНаСервере()
	
	МассивРеализации = Новый Массив;
	
	Количество = Строка(ДанныеСЧ.Количество());
	
	Сч = 0;
	
	Для каждого СтрокаТЗ Из ДанныеСЧ Цикл
		
		Если не СтрокаТЗ.Пометка Тогда
			
			Продолжить;
			
		КонецЕсли;
		
		Попытка
			
			Если Не ЗначениеЗаполнено(СтрокаТЗ.Реализация) Тогда
				
				ДокуметРеализацияТоваровУслуг = Документы.РеализацияТоваровУслуг.СоздатьДокумент();
				
				ДокуметРеализацияТоваровУслуг.ЗаполнитьПоДокументуОснования(СтрокаТЗ.ДокументСчета);
				
				ДокуметРеализацияТоваровУслуг.Дата = ТекущаяДата();  
				
				ДокуметРеализацияТоваровУслуг.СпособВыпискиАктовВыполненныхРабот = Перечисления.СпособыВыпискиАктовВыполненныхРабот.НаПорталеИСЭСФ;
				
				ДокуметРеализацияТоваровУслуг.Записать(РежимЗаписиДокумента.Запись);
								
				СтрокаТЗ.Реализация = ДокуметРеализацияТоваровУслуг.Ссылка;
				
			КонецЕсли;
			
		Исключение
			
		    ДокуметРеализацияТоваровУслуг.Записать(РежимЗаписиДокумента.Проведение);
			
			
			Сообщить(ОписаниеОшибки());
			
			Продолжить;
			
		КонецПопытки;
		
		МассивРеализации.Очистить();
		
		Сч = Сч + 1;   
		
		МассивАктов = Новый Массив;      
		
		Если не СтрокаТЗ.Пометка Тогда
			
			Продолжить;
			
		КонецЕсли;
		
		Попытка
			
			Если Не ЗначениеЗаполнено(СтрокаТЗ.АВР) Тогда
				
				ДокументЭлектронныйАктВыполненныхРабот = Документы.ЭлектронныйАктВыполненныхРабот.СоздатьДокумент();
								
				ДокументЭлектронныйАктВыполненныхРабот.Дата = ТекущаяДата(); 
				
				ДокументЭлектронныйАктВыполненныхРабот.Направление = Перечисления.НаправленияЭСФ.Исходящий; 
								
				ДокументЭлектронныйАктВыполненныхРабот.ДокументОснование = СтрокаТЗ.Реализация; 
				
				ДокументЭлектронныйАктВыполненныхРабот.ЗаполнитьПоДокументуОснования(СтрокаТЗ.Реализация);
				
				ДокументЭлектронныйАктВыполненныхРабот.Записать(РежимЗаписиДокумента.Запись);
								
				СтрокаТЗ.АВР = ДокументЭлектронныйАктВыполненныхРабот.Ссылка; 
				СтрокаТЗ.ДатаАВР = ДокументЭлектронныйАктВыполненныхРабот.Дата;
				СтрокаТЗ.СостояниеАВР = ДокументЭлектронныйАктВыполненныхРабот.Состояние;
				
			КонецЕсли;
			
		Исключение
			
			Сообщить(ОписаниеОшибки());
			
			Продолжить;
			
		КонецПопытки;

		
		
		
	КонецЦикла;
	
КонецПроцедуры
Показать



{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(168)}: Метод объекта не обнаружен (ЗаполнитьПоДокументуОснования)

Создается документ реализации, а на основании него должен создаваться документ ЭАВР(Электронный акт выполненных работ), но метод заполнения на основании с электронным документом не находит, процедуры тоже такой не получилось найти. Как можно в такой ситуации реализовать?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Vadim-SH 14.08.24 07:58 Сейчас в теме
(1) Вместо ЗаполнитьПоДокументуОснования() нужно вызывать метод объекта Заполнить()
4. user1809279 14.08.24 08:50 Сейчас в теме
(3) Заполнить(ДокументОснование) - Имеете в виду в этом плане?
5. Vadim-SH 14.08.24 11:37 Сейчас в теме
(4) ДокуметРеализацияТоваровУслуг.Заполнить(СтрокаТЗ.ДокументСчета);

Смотри процедуру ОбработкаЗаполнения в модуле объекта
6. user1809279 14.08.24 11:56 Сейчас в теме
(5)
ДокуметРеализацияТоваровУслуг.Заполнить(СтрокаТЗ.ДокументСчета);


Нет, это не вариант, так оно не заполняется, тоже ошибку выдает
7. user2033930 14.08.24 11:58 Сейчас в теме
(6)
тоже ошибку выдает
Ну, значит не судьба. Ты сделала всё, что могла.

// Ну подумаешь, забыла посмотреть ОбработкаЗаполнения, как посоветовали. А в остальном - ты герой!
8. user1809279 14.08.24 12:03 Сейчас в теме
(7) Просматривала процедуру
Если ДанныеЗаполнения.Свойство("СтруктураДанных") Тогда
ОснованиеДляЗаполнения = ДанныеЗаполнения;
ИначеЕсли ДанныеЗаполнения.Свойство("ДокументОснование") Тогда
ОснованиеДляЗаполнения = ДанныеЗаполнения.ДокументОснование;
Иначе
Возврат;
КонецЕсли;


Пишу так же
ДокументЭлектронныйАктВыполненныхРабот.Заполнить(Документы.РеализацияТоваровУслуг);
9. user2033930 14.08.24 12:09 Сейчас в теме
(8) Ну что здесь увидела? Какие входящие параметры на данный момент обрабатывает метод Заполнить()? Обрабатывает ли она данные с типом ДокументМенеджер?
10. user1809279 14.08.24 12:32 Сейчас в теме
(9) Я так понимаю должен принимать документ основание, но его он не видит
11. user1809279 14.08.24 12:40 Сейчас в теме
(10) ДокументЭлектронныйАктВыполненныхРабот.Заполнить(Документы.РеализацияТоваровУслуг);
Пишу вот так
12. user2033930 14.08.24 12:52 Сейчас в теме
(10) Кому должен? Когда должен? Сколько?
Он должен принимать только то, что программист запрограммировал. Не более.
Поэтому переспрошу - программист запрограммировал принимать в параметры метода Заполнить() переменную с типом ДокументМенеджер?
13. user1809279 14.08.24 13:02 Сейчас в теме
(12) По обработке заполнения да
14. user2033930 14.08.24 13:09 Сейчас в теме
(13) Подтвердить сможешь?
15. Vadim-SH 15.08.24 07:33 Сейчас в теме
(8)
Если ДанныеЗаполнения.Свойство("СтруктураДанных") Тогда
ОснованиеДляЗаполнения = ДанныеЗаполнения;
ИначеЕсли ДанныеЗаполнения.Свойство("ДокументОснование") Тогда
ОснованиеДляЗаполнения = ДанныеЗаполнения.ДокументОснование;
Иначе
Возврат;
КонецЕсли;

3 варианта - выбери нужный. Там должно быть еще условие типа:
Если ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда


Смотри дальше, как используется переменная ОснованиеДляЗаполнения, чтобы знать как подготовить данные для заполнения.
ДанныеЗаполнения=Новый Структура();
ДанныеЗаполнения.Вставить( , );
...
ДокуметРеализацияТоваровУслуг.Заполнить(ДанныеЗаполнения);
2. user2033930 14.08.24 07:43 Сейчас в теме
Оформи уже нормальный код, чтобы читать можно было.
Оставьте свое сообщение

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