Не записываются проводки в регистр

1. user1046602 14.07.22 10:45 Сейчас в теме
Пытаюсь дополнить документ проводками по регистру сведений ОперацииСПрослеживаемымиТоварами и регистру накопления ПрослеживаемыеТовары.

В модуле объекта
УсловияПрослеживаемости = Новый Структура;
	
	УсловияПрослеживаемости.Вставить("ВедетсяУчетПрослеживаемыхТоваров", ПолучитьФункциональнуюОпцию("ВестиУчетПрослеживаемыхТоваров")
		И ПрослеживаемостьБРУ.ВедетсяУчетПрослеживаемыхТоваров(СтруктураШапкиДокумента.Дата));
	
	Если УсловияПрослеживаемости.ВедетсяУчетПрослеживаемыхТоваров Тогда
	    Документы.ОИТ_ТребованиеНакладнаяПоЛимиткамЗаПериод.ДвиженияПоРегистрамПрослеживаемыхТоваров(СтруктураШапкиДокумента, ТаблицаМатериалов);

		
	КонецЕсли; 
Показать


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

Процедура ДвиженияПоРегистрамПрослеживаемыхТоваров(СтруктураШапкиДокумента, ТаблицаСумм = Неопределено) Экспорт
	
	УчетнаяПолитикаРегл = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитики(СтруктураШапкиДокумента.Дата, ЛОЖЬ, СтруктураШапкиДокумента.Организация, , Истина);
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	Запрос.УстановитьПараметр("Ссылка", СтруктураШапкиДокумента.Ссылка);
	
	НомераТаблиц = Новый Структура;
	ПараметрыПроведения = Новый Структура;
	
	УсловияПрослеживаемости = Новый Структура;
	УсловияПрослеживаемости.Вставить("ВедетсяУчетПрослеживаемыхТоваров", ПолучитьФункциональнуюОпцию("ВестиУчетПрослеживаемыхТоваров")
		И ПрослеживаемостьБРУ.ВедетсяУчетПрослеживаемыхТоваров(СтруктураШапкиДокумента.Дата));
	
	Запрос.Текст = Документы.ОИТ_ТребованиеНакладнаяПоЛимиткам.ТекстЗапросаПрослеживаемыеТовары(НомераТаблиц, ПараметрыПроведения, УсловияПрослеживаемости);
	
	Если НЕ ПустаяСтрока(Запрос.Текст) Тогда
		Результат = Запрос.ВыполнитьПакет();
		
		Для Каждого НомерТаблицы Из НомераТаблиц Цикл
			ПараметрыПроведения.Вставить(НомерТаблицы.Ключ, Результат[НомерТаблицы.Значение].Выгрузить());
		КонецЦикла;
	КонецЕсли;
	
	Если УсловияПрослеживаемости.ВедетсяУчетПрослеживаемыхТоваров Тогда
		ТаблицаРеквизиты = ПрослеживаемостьБП.СтруктуруВТаблицуЗначений(СтруктураШапкиДокумента);
		
		Если НЕ ТаблицаСумм = Неопределено Тогда
			Для каждого Строка Из ПараметрыПроведения.ПрослеживаемыеОперации Цикл
				СтрокаССуммой = ТаблицаСумм.Найти(Строка.ИдентификаторСтроки, "ИдСтрокиПрослеживаемогоТовара");
				
				Если ЗначениеЗаполнено(СтрокаССуммой) Тогда
					Строка.СуммаБезНДС = СтрокаССуммой.Стоимость;
				КонецЕсли;
			КонецЦикла;
			
			ПараметрыПроведения.ПрослеживаемыеОперации.Свернуть("ДатаДокумента, ДокументОперации, КодОперации, Контрагент,
			|Номенклатура, НомерДокумента, ОтражениеВОтчетности, ПериодОперации, РНПТ, ТипДокументаВПрослеживаемости",
			"СуммаБезНДС, Количество, КоличествоПрослеживаемости");
		КонецЕсли;
	
		ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
			ПараметрыПроведения.ПрослеживаемыеТовары,
			ПараметрыПроведения.ПрослеживаемыеОперации,
			ТаблицаРеквизиты,
			СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения);
	
	КонецЕсли; 
	
КонецПроцедуры
Показать


Затем переходим в общий модуль ПрослеживаемостьБП

Процедура СформироватьДвиженияРеализацияТоваров(ТаблицаТовары, ТаблицаОперации, ТаблицаРеквизиты, Движения) Экспорт
	
	Если Не ЗначениеЗаполнено(ТаблицаРеквизиты) Тогда
		Возврат;
	КонецЕсли;
	
	ОбщиеПараметры = ПодготовитьОбщиеПараметры(ТаблицаРеквизиты);
	Реквизиты = ОбщиеПараметры.Реквизиты[0];
	
	СформироватьДвиженияПрослеживаемыхТоваров(ТаблицаТовары, Реквизиты, Движения, Истина);
	
	СформироватьДвиженияОперацииСПрослеживаемымиТоварами(ТаблицаОперации, Реквизиты, Движения, ТаблицаРеквизиты);
	
КонецПроцедуры

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

КонецПроцедуры

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

КонецПроцедуры


Показать


В итоге... когда отладчик в общем модуле ПрослеживаемостьБП в ригистрах ОперацииСПрослеживаемымиТоварами и Прослеживаемые товары движения есть. Когда возвращаемся в документ движения пропадают. По завершении операции проведения движения только по хозрасчетному регистру.
Что не так?
По теме из базы знаний
Найденные решения
2. soft_wind 14.07.22 10:57 Сейчас в теме
ошибка скорее всего здесь
 ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
            ПараметрыПроведения.ПрослеживаемыеТовары,
            ПараметрыПроведения.ПрослеживаемыеОперации,
            ТаблицаРеквизиты,
            СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения);


СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения);- вы создаете НОВЫЙ объект с новым набором движений!!!
попробуйте через свою структуру передать как раз ссылку на движения ТЕКУЩЕГО документа объекта

что бы такой код был

 ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
            ПараметрыПроведения.ПрослеживаемыеТовары,
            ПараметрыПроведения.ПрослеживаемыеОперации,
            ТаблицаРеквизиты,
            СтруктураШапкиДокумента.Движения);
5. soft_wind 14.07.22 15:20 Сейчас в теме
(4) найдите где формируете СтруктураШапкиДокумента
и где добавляете
СтруктураШапкиДокумента.вставить("Ссылка", Ссылка);
там же добавьте и движения
СтруктураШапкиДокумента.вставить("Движения", Движения);

сохранитесь и должно заработать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 14.07.22 10:57 Сейчас в теме
ошибка скорее всего здесь
 ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
            ПараметрыПроведения.ПрослеживаемыеТовары,
            ПараметрыПроведения.ПрослеживаемыеОперации,
            ТаблицаРеквизиты,
            СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения);


СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения);- вы создаете НОВЫЙ объект с новым набором движений!!!
попробуйте через свою структуру передать как раз ссылку на движения ТЕКУЩЕГО документа объекта

что бы такой код был

 ПрослеживаемостьБП.СформироватьДвиженияРеализацияТоваров(
            ПараметрыПроведения.ПрослеживаемыеТовары,
            ПараметрыПроведения.ПрослеживаемыеОперации,
            ТаблицаРеквизиты,
            СтруктураШапкиДокумента.Движения);
3. user1046602 14.07.22 15:10 Сейчас в теме
(2) СтруктураШапкиДокумента.Движения - нет такого реквизита, выдает ошибку не найден.

СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения - я же получаю проводимый документ по ссылке
4. user1046602 14.07.22 15:14 Сейчас в теме
(2) СтруктураШапкиДокумента.Движения - нет такого реквизита, ругается не найден.
СтруктураШапкиДокумента.Ссылка.ПолучитьОбъект().Движения - в др конфигурации этот код рабочий, есть движения по регистрам
5. soft_wind 14.07.22 15:20 Сейчас в теме
(4) найдите где формируете СтруктураШапкиДокумента
и где добавляете
СтруктураШапкиДокумента.вставить("Ссылка", Ссылка);
там же добавьте и движения
СтруктураШапкиДокумента.вставить("Движения", Движения);

сохранитесь и должно заработать
6. user1046602 15.07.22 10:17 Сейчас в теме
Да, заработало! Спасибо огромное!
Оставьте свое сообщение

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