Бухгалтерские проводки

1. G_104675376381940917085 24.05.24 20:41 Сейчас в теме
Почему у меня в регистре бухгалтерии формируются 2 проводки по себестоимости

Процедура ОбработкаПроведения(Отказ, Режим)
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	РасходнаяНакладнаяТовары.Товар КАК Товар,
	|	СУММА(РасходнаяНакладнаяТовары.Количество) КАК Количество,
	|	РасходнаяНакладнаяТовары.Ссылка.Склад КАК Склад
	|ПОМЕСТИТЬ ВременнаяТабличнаяЧастьТовары
	|ИЗ
	|	Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
	|ГДЕ
	|	РасходнаяНакладнаяТовары.Ссылка = &Ссылка
	|
	|СГРУППИРОВАТЬ ПО
	|	РасходнаяНакладнаяТовары.Товар,
	|	РасходнаяНакладнаяТовары.Ссылка.Склад
	|;
	|
	|////////////////////////////////////////////////////////////­////////////////////
	|ВЫБРАТЬ
	|	ВременнаяТабличнаяЧастьТовары.Товар КАК Товар,
	|	ВременнаяТабличнаяЧастьТовары.Товар.Представление КАК ТоварПредставление,
	|	ВременнаяТабличнаяЧастьТовары.Количество КАК Количество,
	|	ВременнаяТабличнаяЧастьТовары.Склад КАК Склад,
	|	ЕСТЬNULL(ОстаткиТоваровОстатки.КоличествоОстатокОстаток, 0) КАК КоличествоОстаток
	|ИЗ
	|	ВременнаяТабличнаяЧастьТовары КАК ВременнаяТабличнаяЧастьТовары
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки(
	|				&Дата,
	|				(Номенклатура, Склад) В
	|					(ВЫБРАТЬ
	|						ВременнаяТабличнаяЧастьТовары.Товар КАК Товар,
	|						ВременнаяТабличнаяЧастьТовары.Склад КАК Склад
	|					ИЗ
	|						ВременнаяТабличнаяЧастьТовары КАК ВременнаяТабличнаяЧастьТовары)) КАК ОстаткиТоваровОстатки
	|		ПО ВременнаяТабличнаяЧастьТовары.Товар = ОстаткиТоваровОстатки.Номенклатура
	|			И ВременнаяТабличнаяЧастьТовары.Склад = ОстаткиТоваровОстатки.Склад
	|
	|УПОРЯДОЧИТЬ ПО
	|	Товар,
	|	Склад";
	
	Запрос.УстановитьПараметр("Дата",Дата);  
	Запрос.УстановитьПараметр("Ссылка",Ссылка);
	Запрос.УстановитьПараметр("Склад",Склад);
	
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл 
		Если ВыборкаДетальныеЗаписи.Количество > ВыборкаДетальныеЗаписи.КоличествоОстаток Тогда
			Отказ = Истина;
			Сообщить("Не хватает: " + ВыборкаДетальныеЗаписи.ТоварПредставление + " " + (ВыборкаДетальныеЗаписи.Количество - ВыборкаДетальныеЗаписи.КоличествоОстаток)+ " штук");
		КонецЕсли;
		Если Отказ Тогда
			Продолжить;
		КонецЕсли; 
		Если ТипЗнч(ВыборкаДетальныеЗаписи.Товар) = Тип("СправочникСсылка.Номенклатура") тогда
			Движения.ОстаткиТоваров.Записывать = Истина;
			Движение = Движения.ОстаткиТоваров.Добавить();
			Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
			Движение.Период = Дата;
			Движение.Номенклатура = ВыборкаДетальныеЗаписи.Товар;
			Движение.Склад = Склад;
			Движение.КоличествоОстаток = ВыборкаДетальныеЗаписи.Количество; 
		КонецЕсли;
		
		
	КонецЦикла; 
	
	
	   			
		
		Запрос1 = Новый Запрос;
		Запрос1.Текст = 
		"ВЫБРАТЬ
		|	СебестоимостьТоваровОстатки.Номенклатура КАК Номенклатура,
		|	СебестоимостьТоваровОстатки.СуммаОстаток КАК Сумма,
		|	СебестоимостьТоваровОстатки.КоличествоОстаток КАК Количество
		|ИЗ
		|	РегистрНакопления.СебестоимостьТоваров.Остатки(
		|			&МоментВремени,
		|			Номенклатура В
		|				(ВЫБРАТЬ
		|					РасходнаяНакладнаяТовары.Товар КАК Товар
		|				ИЗ
		|					Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
		|				ГДЕ
		|					РасходнаяНакладнаяТовары.Ссылка = &Ссылка)) КАК СебестоимостьТоваровОстатки";
		
		Запрос1.УстановитьПараметр("МоментВремени", МоментВремени());
		Запрос1.УстановитьПараметр("Ссылка", Ссылка);
		
		РезультатЗапроса1 = Запрос1.Выполнить();
		
		Выборка = РезультатЗапроса1.Выбрать();
		
		СуммаСебестоимости = 0;
		
		Пока Выборка.Следующий() Цикл
			Если  Выборка.Количество <> 0 Тогда 
				СебестоимостьЕдиницы = Выборка.Сумма/Выборка.Количество;
			Иначе 
				СебестоимостьЕдиницы = 0;
			КонецЕсли; 
			СтрокаТЧ = Товары.Найти(Выборка.Номенклатура,"Товар");
			СебестоимостьСписания = СебестоимостьЕдиницы * СтрокаТЧ.Количество;
			
			Движения.СебестоимостьТоваров.Записывать = Истина;
			Движение = Движения.СебестоимостьТоваров.Добавить();
			Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
			Движение.Период = Дата;		
			Движение.Номенклатура = Выборка.Номенклатура;
			Движение.Количество = СтрокаТЧ.Количество;
			Движение.Сумма = СебестоимостьСписания;
		КонецЦикла;
		
	Движения.РегистрБухгалтерии.Записывать = Истина;
	Для Каждого ТекСтрокаТовары Из Товары Цикл
		Если ТипЗнч(Выборка.Номенклатура) = Тип("СправочникСсылка.Номенклатура") тогда
			Движение = Движения.РегистрБухгалтерии.Добавить();         			
			Движение.СчетДт = ПланыСчетов.ПланСчетов.ПрибыльИУбыток;
			Движение.СчетКт = ПланыСчетов.ПланСчетов.Товары;
			Движение.Период = Дата;
			Движение.Сумма = СебестоимостьСписания; 
		КонецЕсли;
	КонецЦикла;
	
	Для Каждого ТекСтрокаТовары Из Товары Цикл
		Если ТипЗнч(Выборка.Номенклатура) = Тип("СправочникСсылка.Номенклатура") тогда
			Движение = Движения.РегистрБухгалтерии.Добавить(); 
			Движение.Контрагент = Контрагент;
			Движение.СчетДт = ПланыСчетов.ПланСчетов.Покупатели;
			Движение.СчетКт = ПланыСчетов.ПланСчетов.ПрибыльИУбыток;
			Движение.Период = Дата;
			Движение.Сумма = ТекСтрокаТовары.Сумма ; 
		КонецЕсли;
	КонецЦикла;   
	
	Для Каждого ТекСтрокаТовары Из Товары Цикл
		Если ТипЗнч(Выборка.Номенклатура) = Тип("СправочникСсылка.Услуги") тогда
			Движение = Движения.РегистрБухгалтерии.Добавить();  
			Движение.Контрагент = Контрагент;
			Движение.СчетДт = ПланыСчетов.ПланСчетов.Покупатели;
			Движение.СчетКт = ПланыСчетов.ПланСчетов.ПрибыльИУбыток;
			Движение.Период = Дата;
			Движение.Сумма = ТекСтрокаТовары.Сумма ; 
		КонецЕсли;
	КонецЦикла; 	
	
КонецПроцедуры
Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1880116 25.05.24 08:58 Сейчас в теме
(1) Напомни, пожалуйста, как зовут твоего преподавателя?
3. G_104675376381940917085 25.05.24 12:05 Сейчас в теме
(2) Я самостоятельно изучаю 1с
4. user1880116 25.05.24 12:32 Сейчас в теме
(3)
самостоятельно изучаю
Отладчик уже изучил? Сколько итераций в цикле?
5. Bukaska 140 25.05.24 13:47 Сейчас в теме
(3)Вы все таки пробегитесь отладчиком и посмотрите, сколько данных в выборке.
6. G_104675376381940917085 25.05.24 13:56 Сейчас в теме
(5) но ещё проблема в том, что себестоиомость в движении будет у всех одинаковая, но должна быть разнач для каждого товара
7. Bukaska 140 25.05.24 15:27 Сейчас в теме
(6)Я бы все таки вам рекомендовала пройти какие нить курсы онлайн. За регистр бухгалтерии пока ничего сказать не могу, так как до того модуля я еще не дошла. Но то что у вас тут черт ногу сломит и надо бы делать иначе - это я вижу))))
Как минимум по стандартным регистрам(не бухгалтерии) я бы сделала сначала в пакете запросов:
1) Временная таблица ТЧ товары
2) запрос к регистру, где в конструкторе выбираем обе таблицы и временную и регистр и ставим условие по номенклатуре как минимум и возможно по периоду и там же согласно выборки уже заполняла бы регистры: один, второй, третий.
В пакете запросов бывает не два-три, бывает и больше. А у вас запрос и уже результат, потом опять запрос и опять результат.. Посмотрите как сделаны процедуры в типовых.
На основании данных запросов я даже не понимаю, что это за ТЗ такое. Но то что вы говорите, это запросом к одной таблице не делается, это нужно стопудово пакет с двух-трех как минимум запросов при наличии связей, условий..)))
Оставьте свое сообщение

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