УПП 1.3 Док: КомплектацияНоменклатуры где формируются суммы для движений по бух

1. Vitaly1C8 30.05.18 11:35 Сейчас в теме
Добрый день !
Помогите разобраться с документом КомплектацияНоменклатуры !
В документе ИсходнаяНоменклатура (Запчасть) разбирается на комплектующие ...
Заполнена табличная часть "Комплектующие"; Рассчитаны доли каждой комплектующей а СУММЫ - не рассчитаны ! В табличной части "Комплектующие" ДоляСтоимости заполнена, а СуммаПередачи - нет (кроме того на форме эта колонка скрыта и не используется для режима "Разборка")
Далее ... при проведении документа формируются проводки по РегистрБухгалтерии.Хозрасчетный где Стоимость (ЗапЧасти) пропорционально долям (Комплектующие.ДоляСтоимости) рассчитывается и выставляется в Сумма (проводки)
Вопрос: Где именно производится этот расчет ? То есть где именно производится это вычисление Сумма = Стоимость * Комплектующие.ДоляСтоимости
Отладчиком хожу по ОбработкеПроведения - ничего подобного не вижу !
+
Найденные решения
3. Vitaly1C8 04.06.18 14:21 Сейчас в теме
Спасибо за подсказку !

УправлениеЗапасамиПартионныйУчет.СписаниеПартий() : 2977


Если СтрокаДереваПартий <> Неопределено Тогда
		
		// В.Ч. ПередачаТоваров (Передача Товаров)
		ЭтоДокументПередачаТоваров = Ложь;
		Если ТипЗнч(СтрокаДокумента.Регистратор) = Тип("ДокументСсылка.ПередачаТоваров") Тогда
			тчТовары = СтрокаДокумента.Регистратор.ПолучитьОбъект().Товары;
			ЭтоДокументПередачаТоваров = Истина;
		КонецЕсли;
		
		// В.Ч. КомплектацияНоменклатуры (Комплектация Номенклатуры)
		ЭтоДокументКомплектацияНоменклатуры = Ложь;
		Если ТипЗнч(СтрокаДокумента.Регистратор) = Тип("ДокументСсылка.КомплектацияНоменклатуры") Тогда
			тчКомплектующие = СтрокаДокумента.Регистратор.ПолучитьОбъект().Комплектующие;
			ЭтоДокументКомплектацияНоменклатуры = Истина;
		КонецЕсли;
		
		Для Каждого СтрокаПартииРаспределения ИЗ СтрокаДереваПартий.Строки Цикл
			
			// В.Ч.
			вчСуммаПередачи = 0;
			Если ЭтоДокументКомплектацияНоменклатуры Тогда
				СтрокаТчКомплектующие = тчКомплектующие.Получить(СтрокаДокумента.НомерСтрокиДокумента - 1);
				Если СтрокаТчКомплектующие.СуммаПередачи <> 0 Тогда			
					// В.Ч. - берем точные кво и Сумму прямо из документа, 
					// без приколов со средневзвешенным списанием !
					//Движение.Количество	= СтрокаТчТовары.Количество;
					вчСуммаПередачи = СтрокаТчКомплектующие.СуммаПередачи;
				КонецЕсли;
			КонецЕсли;
			
			Если КоличествоОсталосьПогасить <= 0 Тогда
				// В.Ч. Если ЭтоДокументКомплектацияНоменклатуры Тогда
				Если вчСуммаПередачи = 0 Тогда
					Прервать;
				//Иначе
				//	Сообщить(СтрокаДокумента.НоменклатураНовая);	// Отладка
				КонецЕсли;
			КонецЕсли;
			
			СтрокаПартии = ПолучитьСтрокуОстатковПартий(СтрокаПартииРаспределения, СтруктураИзмерений, ТаблицаОстатковПартий);
			
			//АБС ВСТАВКА 18360
			// Если в партии счет учета пустой, не списывать эту партию
			Если СтрокаДокумента.ОтражатьВНалоговомУчете ИЛИ СтрокаДокумента.ОтражатьВБухгалтерскомУчете Тогда
				Если СокрЛП(Строка(СтрокаПартии.СчетУчета)) = "" Тогда
					Продолжить;
				КонецЕсли;
			КонецЕсли;
			//АБС ВСТАВКА КОНЕЦ 18360
			
			// Количество по строке больше 0
			Если НЕ СтрокаПартии.Количество > 0 Тогда
				// В.Ч. Если ЭтоДокументКомплектацияНоменклатуры Тогда
				Если вчСуммаПередачи = 0 Тогда
					Продолжить;
				//Иначе
				//	Сообщить("Продолжить ");		// Отладка
				КонецЕсли;				
			КонецЕсли; 
			
			Если СтрокаДокумента.ОтражатьВНалоговомУчете 
			   И СтрокаДокумента.КодОперацииПартииТоваров = СтруктураПараметров.КодыОпераций.ПринятиеКУчетуОС
			   И СтрокаПартии.СчетУчета = ПланыСчетов.Налоговый.МатериалыВСоставеОСвНУ тогда
			   	Продолжить;
			КонецЕсли;
			
			Если СтрокаПартии.Количество >= КоличествоОсталосьПогасить Тогда
				КоэффСписания = КоличествоОсталосьПогасить/СтрокаПартии.Количество;
			Иначе
				КоэффСписания = 1;
			КонецЕсли;
			
			Если ЗначениеЗаполнено(СтрокаДокумента.ДокументПартии) И (СтрокаПартии.ДокументОприходования = СтрокаДокумента.ДокументПартии) Тогда
				КоличествоСписанноеПоДокументуПартии = КоличествоСписанноеПоДокументуПартии + Окр(СтрокаПартии.Количество * КоэффСписания,3,1);
			КонецЕсли;	
			
			// Добавим новую строку
			Движение = ДобавитьДвижениеВСтруктуруПараметров(ИмяРегистра, СтруктураПараметров);
			
			// Свойства
			Движение.Период 	 = СтрокаДокумента.Период;
			Движение.Регистратор = СтрокаДокумента.Регистратор;
			Движение.Активность  = Истина;
			Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
			
			// Измерения
			Движение.Номенклатура = СтрокаПартии.Номенклатура;
			Движение.Организация = СтруктураПараметров.ОрганизацияУпр;
			
			// Ресурсы 
			Движение.Количество	= Окр(СтрокаПартии.Количество * КоэффСписания,3,1);
			Движение.Стоимость	= Окр(СтрокаПартии.Стоимость  * КоэффСписания,2,1);
			
			// В.Ч.
			Если ЭтоДокументПередачаТоваров Тогда
				СтрокаТчТовары = тчТовары.Получить(СтрокаДокумента.НомерСтрокиДокумента - 1);
				Если СтрокаТчТовары.СуммаРуб <> 0 Тогда			
					// В.Ч. - берем точные кво и Сумму прямо из документа, 
					// без приколов со средневзвешенным списанием !
					Движение.Количество	= СтрокаТчТовары.Количество;
					Движение.Стоимость	= СтрокаТчТовары.СуммаРуб;
				КонецЕсли;
			КонецЕсли;
			
			// В.Ч.
			Если ЭтоДокументКомплектацияНоменклатуры Тогда
				// СтрокаТчКомплектующие = тчКомплектующие.Получить(СтрокаДокумента.НомерСтрокиДокумента - 1);
				Если вчСуммаПередачи <> 0 Тогда			
					// В.Ч. - берем точные кво и Сумму прямо из документа, 
					// без приколов со средневзвешенным списанием !
					//Движение.Количество	= СтрокаТчТовары.Количество;
					Движение.Стоимость	= вчСуммаПередачи;	// СтрокаТчКомплектующие.СуммаПередачи;
				КонецЕсли;
			КонецЕсли;
// ============================================================­========
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. HobbitT 30.05.18 17:37 Сейчас в теме
Если РАУЗ - расчет может проводиться и в модуле регистра УчетЗатрат, так как финальная стоимость определяется только после расчета себестоимости, а движения в документе могут быть и с нулевыми суммами (в зависимости от настроек учетной политики)
Vitaly1C8; +1
3. Vitaly1C8 04.06.18 14:21 Сейчас в теме
Спасибо за подсказку !

УправлениеЗапасамиПартионныйУчет.СписаниеПартий() : 2977


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

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