Перенос проводок из Регистра бухгалтерии в регистр Накопление по настройкам, которые задаются в Регистре Ведомостей

1. G_109117945263266758556 07.10.24 13:34 Сейчас в теме
Добрый день. У меня возникла проблема при написании кода, который должен переносить проводки из регистра бухгалтерии в регистр накопления по настройкам задаваемых в регистре сведений. запись.Также есть нюанс в том что в регистре сведений есть булевые значения СуммаПродажи и СуммаСебестоимость.Если какое-либо из данных значений активное то проводка должна записаться именно в ту колонку.
Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	НачалоПериода = ЭлементыФормы.ДатаНачало.Значение;
	КонецПериода = ЭлементыФормы.ДатаКонец.Значение;
	
	Запрос = Новый Запрос;
	
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ХозрасчетныйДвиженияССубконто.СубконтоДт1 КАК СубконтоДт1,
	|	ХозрасчетныйДвиженияССубконто.СубконтоДт3 КАК СубконтоДт3,
	|	ХозрасчетныйДвиженияССубконто.СубконтоДт4 КАК СубконтоДт4,
	|	ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК СубконтоКт1,
	|	ХозрасчетныйДвиженияССубконто.СубконтоКт2 КАК СубконтоКт2,
	|	ХозрасчетныйДвиженияССубконто.СубконтоКт3 КАК СубконтоКт3,
	|	ХозрасчетныйДвиженияССубконто.СубконтоКт4 КАК СубконтоКт4,
	|	кнтНастройкаПортированияПродаж.СчетДт КАК СчетДт1,
	|	кнтНастройкаПортированияПродаж.СчетКт КАК СчетКт1,
	|	кнтНастройкаПортированияПродаж.СуммаПродажи КАК СуммаПродажи,
	|	кнтНастройкаПортированияПродаж.СуммаСебестоимость КАК СуммаСебестоимость,
	|	кнтНастройкаПортированияПродаж.НастрокаАктуальна КАК НастрокаАктуальна,
	|	кнтНастройкаПортированияПродаж.KindOfBusiness КАК KindOfBusiness,
	|	кнтНастройкаПортированияПродаж.НомерСубконтоНоменклатуры КАК НомерСубконтоНоменклатуры,
	|	ХозрасчетныйДвиженияССубконто.Регистратор КАК Регистратор,
	|	ХозрасчетныйДвиженияССубконто.СубконтоДт3 КАК СубконтоДт31
	|ИЗ
	|	РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто КАК ХозрасчетныйДвиженияССубконто
	|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.кнтНастройкаПортированияПродаж КАК кнтНастройкаПортированияПродаж
	|		ПО ХозрасчетныйДвиженияССубконто.СчетДт = кнтНастройкаПортированияПродаж.СчетДт
	|			И ХозрасчетныйДвиженияССубконто.СчетКт = кнтНастройкаПортированияПродаж.СчетКт
	|ГДЕ
	|	ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &НачалоПериода И &КонецПериода";
	
	Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
	Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
	
	
	
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
	
	Пока Выборка.Следующий() Цикл	
		
		Движение = Выборка.Регистратор.ПолучитьОбъект().Движения.кнтПродажиБухгалтерия;
		НоваяЗапись = Движение.Добавить();
		
		Если Выборка.СуммаПродажи  = Истина Тогда
			
			НоваяЗапись.СуммаДоллар = Движение.СуммаПродажи;
		КонецЕсли;
		
		
		Если Выборка.СуммаСебестоимость = Истина Тогда
			
			НоваяЗапись.СуммаСебестоимостьДоллар = Движение.СуммаСебестоимость; 
		КонецЕсли;
		
		НоваяЗапись.Период = ТекущаяДата(); 
		НоваяЗапись.Номенклатура = Движение.НомерСубконтоНоменклатуры; 
		НоваяЗапись.Техника = Движение.Услуги.Техника; 
		НоваяЗапись.Склад = Движение.Товары.Склад; 
		НоваяЗапись.Дилершип = Движение.Дилершип; 
		НоваяЗапись.Контрагент = Движение.Контрагент;
		НоваяЗапись.ДоговорКонтрагента = Движение.ДоговорКонтрагента;
		НоваяЗапись.ФормаОбслуживания = Движение.ФормаОбслуживания; 
		НоваяЗапись.KindOfBusiness = Движение.KindOfBusiness;
		НоваяЗапись.Валюта =  Движение.ВалютаДокумента;
		НоваяЗапись.Количество = Движение.Товары.Количество;
		
		
		
		НоваяЗапись.Записать();
		
	КонецЦикла;
	
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2107184 07.10.24 13:39 Сейчас в теме
(1)
У меня возникла проблема при написании кода,
Что-то с клавиатурой, предполагаю?
3. ubnkfl 07.10.24 17:33 Сейчас в теме
Вы плохо описываете свою проблему. Непонятно, что не работает, и что вы пробовали.
Предположу, что проблема может быть в том, что вы на каждой строке выборки получете набор записей по регистратору, не читаете этот набор, добавляете новую запись и перезаписываете все записи по регистратору. И в итоге в регистре остается только последняя запись (от последней строки выборки).
Попробуйте добавить чтение набора:
Движение = Выборка.Регистратор.ПолучитьОбъект().Движения.кнтПродажиБухгалтерия;
Движение.Прочитать();
НоваяЗапись = Движение.Добавить();
Оставьте свое сообщение

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