Создание ЭАВР на основании Реализации

1. user1809279 12.08.24 07:49 Сейчас в теме
Здравствуйте такой вопрос. Делаю обработку, которая на основании счета делаете реализацию, а потом на основании реализации, создает ЭАВР(электронный акт выполненных работ)

Часть процедуры, которая выполняет эти действия

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

						
			Сообщить(ОписаниеОшибки());
			
			Продолжить;
			
		КонецПопытки;

		МассивОснований.Очистить();
		
		Сч = Сч + 1;  
				
		//Состояние("Обработано: "+Сч+" из "+Количество);
		
		Если ЗначениеЗаполнено(СтрокаТЗ.ДатаАВР) Тогда
			Продолжить;
		КонецЕсли; 
		
		Если НЕ СтрокаТЗ.ИИНКорректен Тогда
			Сообщить("Ошибка ИИН строка пропущена. Контрагент:"+Строка(СтрокаТЗ.Контрагент)+" не корректен ИИН: "+СтрокаТЗ.ИИН);
			
			Если ПропускатьКонтрагентовСНекорректнымиИИН Тогда
				Продолжить;
			КонецЕсли; 
		КонецЕсли;
		
		МассивОснований.Вставить(0,СтрокаТЗ.Реализация);  
				
		СписокСозданныхАВР = АВРВызовСервера.СоздатьСписокИсходящихЭАВР(МассивОснований);	
		
		Если СписокСозданныхАВР <> Неопределено И СписокСозданныхАВР.Количество() > 0 Тогда
						
			АВР = СписокСозданныхАВР.Получить(0).ПолучитьОбъект();
			
			АВР.Дата = ТекущаяДата();
			АВР.Организация = АВР.Организация.ГоловнаяОрганизация;
			АВР.ВерсияБланкаАВР = 2;
			
			Если НЕ СтрокаТЗ.ИИНКорректен и ЗначениеЗаполнено(СтрокаТЗ.ИИН) Тогда
				
				Для каждого СтрокаПолучатели Из АВР.Получатели Цикл
					СтрокаПолучатели.Нерезидент = Истина;
					СтрокаПолучатели.ПолучательИдентификатор = "";
				КонецЦикла; 
				
				АВР.ГрузополучательИдентификатор = "";
				
			ИначеЕсли не ЗначениеЗаполнено(СтрокаТЗ.ИИН) Тогда
				
				Для каждого СтрокаПолучатели Из АВР.Получатели Цикл
					СтрокаПолучатели.РозничнаяРеализация = Истина;
					СтрокаПолучатели.ПолучательИдентификатор = "";
				КонецЦикла;
				
				АВР.ГрузополучательИдентификатор = "";
				
			КонецЕсли; 
			
			Попытка
				
				АВР.Записать(РежимЗаписиДокумента.Проведение);
				
			Исключение
				
				АВР.Записать(РежимЗаписиДокумента.Запись);
				Сообщить(ОписаниеОшибки());
				Продолжить;
				
			КонецПопытки;

			СтрокаТЗ.АВР = АВР.Ссылка;
			СтрокаТЗ.ДатаАВР = АВР.Дата;
			СтрокаТЗ.СостояниеАВР = АВР.Состояние;
			
		КонецЕсли;
		
	КонецЦикла; 
	
КонецПроцедуры
Показать


Но ругается что не найдено поле МассивОснований, куда смотреть и копать?

Поле объекта не обнаружено (МассивОснований)
{ОбщийМодуль.АВРСерверПереопределяемый.Модуль(115)}: МассивДокументов = ПараметрыСоздания.МассивОснований;
{Обработка.ОбменЭСФ.МодульОбъекта(4178)}: Возврат АВРСерверПереопределяемый.СоздатьСписокИсходящихАВР(МассивОснований)
{ОбщийМодуль.АВРВызовСервера.Модуль(539)}: Возврат ЭСФСерверПовтИсп.ОбработкаОбменЭСФ().СоздатьСписокИсходящихАВР(ПараметрыСоздания);
{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(158)}: СписокСозданныхАВР = АВРВызовСервера.СоздатьСписокИсходящихЭАВР(МассивОснований);
{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(212)}: СоздатьЭлектронныйАктНаСервере();
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Anton_new01 12.08.24 09:48 Сейчас в теме
(1)
написаннно же все.
в Общем модуле АВРСерверПереопределяемый
в функции/процедуре СоздатьСписокИсходящихАВР
в строке 115 общего модуля АВРСерверПереопределяемый

у вас есть следующий код:
МассивДокументов = ПараметрыСоздания.МассивОснований;

система не понимает что такое ПараметрыСоздания.МассивОснований;
скорее всего вы не присвоили там этот параметр структуры.
туда и копай.
3. user1809279 12.08.24 10:04 Сейчас в теме
Дело в том что это внешняя обработка, типовая конфигурация
4. Anton_new01 12.08.24 10:10 Сейчас в теме
(3)
стек вызовов - обратно копай.

Поле объекта не обнаружено (МассивОснований)
{ОбщийМодуль.АВРСерверПереопределяемый.Модуль(115)}: МассивДокументов = ПараметрыСоздания.МассивОснований;
{Обработка.ОбменЭСФ.МодульОбъекта(4178)}: Возврат АВРСерверПереопределяемый.СоздатьСписокИсходящихАВР(МассивОснований)
{ОбщийМодуль.АВРВызовСервера.Модуль(539)}: Возврат ЭСФСерверПовтИсп.ОбработкаОбменЭСФ().СоздатьСписокИсходящихАВР(ПараметрыСоздания);
{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(158)}: СписокСозданныхАВР = АВРВызовСервера.СоздатьСписокИсходящихЭАВР(МассивОснований);
{ВнешняяОбработка.СоздатьДокументыАВРнаОснованииРеализации.Форма.Форма.Форма(212)}: СоздатьЭлектронныйАктНаСервере();

если типовую конфу не хочешь менять.
то смотри по стеку вызовов - где какие параметры передаются.
и как надо изменить входящий параметр во внешней обработке, таким образом, чтобы ошибки не было.

могу предположить, что надо изначально в МассивОснований - помещать структуру Структура.МассивОснований
- но это "пальцем в небо".. по коду надо смотреть.
5. user2033930 12.08.24 10:13 Сейчас в теме
(3) Что-то мне подсказывает, что модули с префиксом вряд ли являются типовыми.
6. Anton_new01 12.08.24 10:20 Сейчас в теме
(5) АВР это акт выполненных работ.
таким образом это выходит не префикс, а полноценное наименование.
странное наименование... но какое есть :)

PS. ЭСФ - электронная счет фактура?
7. user1809279 12.08.24 10:27 Сейчас в теме
В самом стандартном модуле есть какая-то структура этого массива, сомнения были может в СписокСозданныхАВР = АВРВызовСервера.СоздатьСписокИсходящихЭАВР(МассивОснований); какой то параметр указать чтоб ссылалось на него
Оставьте свое сообщение

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