Многие пользователи УПП сталкивались с отказом базы закрывать общехозяйственные расходы при отсутствии выпуска в текущем периоде.
Решение в таком случае каждый принимает свое. Предлагаю вам НЕ РЕШЕНИЕ, а вариант обхода этой трудности с помощью внесения изменений в модуль конфигурации.
Одному хватает списать затраты вручную Операцией: Дт 90.08 Кт 26.01
Другие списывают записи регистров ЗатратыБухгалтерскийУчет и ЗатратыНалоговыйУчет + отражают в регламентированном учете проводки с помощью документа "Корректировка записей регистров".
В моем случае конфигурация на поддержке, с возможностью вносить изменения. Не используем РАУЗ, в учетной политике установлено закрытие общехозяйственных затрат по методу "Директ-костинг".
Дописал немного в общем модуле "ПроцедурыРасчетаСебестоимостиВыпуска" типовую процедуру "РаспределитьЗатратыПоБазеРаспределенияПоПродажам".
Открытие "//НВ"
Закрытие "//КВ"
// Процедура производит распределение расходов по базе распределения по продажам.
//
// Параметры
//	СтруктураШапкиДокумента – Структура – Реквизиты документа "Расчет себестоимости"
//	ВыборкаПоЗатратам - ВыборкаИзРезультатаЗапроса - Текущая строка выборки из результата запроса по затратам
//	ВыборкаБазаРаспределения - ВыборкаИзРезультатаЗапроса - Выборка из результата запроса по базе распределения
//	МассивКоэф - Массив - Массив коэффициентов распределения
//	СчетСписания - ПланСчетовСсылка.Хозрасчетный или ПланСчетовСсылка.Налоговый - Счет списания затрат
//	ХарактерЗатрат - ПеречислениеСсылка.ХарактерЗатрат - Текущий характер затрат
//	ЕНВД - Булево - Признак распределения по деятельности, облагаемой ЕНВД
//	СуммаОстаток - Число - Сумма затрат
//  ПостояннаяРазницаОстаток - Число - Сумма затрат в части постоянной разницы
//  ВременнаяРазницаОстаток - Число - Сумма затрат в части временной разницы
//	НаборЗаписейЗатраты - РегистрНакопленияНаборЗаписей - Набор записей регистра накопления "Затраты"
//  РегистрБухгалтерииНаборЗаписей - РегистрБухгалтерииНаборЗаписей - Набор записей регистра бухгалтерии.
//
Процедура РаспределитьЗатратыПоБазеРаспределенияПоПродажам(
	СтруктураШапкиДокумента,
	ВыборкаПоЗатратам,
	ВыборкаБазаРаспределения,
	МассивКоэф,
	СчетСписания,
	ХарактерЗатрат,
	ЕНВД,
	СуммаОстаток,
	ПостояннаяРазницаОстаток,
	ВременнаяРазницаОстаток,
	НаборЗаписейЗатраты,
	РегистрБухгалтерииНаборЗаписей
	)
	
	Если СуммаОстаток = 0
	   И ПостояннаяРазницаОстаток = 0
	   И ВременнаяРазницаОстаток = 0
	Тогда
		Возврат;
	КонецЕсли;
	
	МассивСумма = ОбщегоНазначения.РаспределитьПропорционально(СуммаОстаток, МассивКоэф, 2);
	
	Если СтруктураШапкиДокумента.ОтражатьВНалоговомУчете Тогда
			
		ОбщаяСумма = СуммаОстаток + ПостояннаяРазницаОстаток + ВременнаяРазницаОстаток;
		МассивОбщаяСумма        = ОбщегоНазначения.РаспределитьПропорционально(ОбщаяСумма, МассивКоэф, 2);		
		МассивПостояннаяРазница = ОбщегоНазначения.РаспределитьПропорционально(ПостояннаяРазницаОстаток, МассивКоэф, 2);
		МассивВременнаяРазница  = ОбщегоНазначения.РаспределитьПропорционально(ВременнаяРазницаОстаток, МассивКоэф, 2);
		
	КонецЕсли;
	
	Индекс = 0;
	СуммаВсего = 0;
	ПостояннаяРазницаВсего = 0;
	ВременнаяРазницаВсего = 0;
	
	СтруктураПоиска = Новый Структура;
	СтруктураПоиска.Вставить("ЕНВД", ЕНВД);
	Если Не ВыборкаПоЗатратам.НоменклатурнаяГруппа.Пустая() Тогда
		СтруктураПоиска.Вставить("НоменклатурнаяГруппа", ВыборкаПоЗатратам.НоменклатурнаяГруппа);
	КонецЕсли;
	
    ВыборкаБазаРаспределения.Сбросить();
	Пока ВыборкаБазаРаспределения.НайтиСледующий(СтруктураПоиска) Цикл
		
		Если ВыборкаПоЗатратам.НоменклатурнаяГруппа.Пустая() Тогда
			
			Сумма = ?(МассивСумма = Неопределено, 0, МассивСумма[Индекс]);
			
			Если СтруктураШапкиДокумента.ОтражатьВНалоговомУчете Тогда
				ПостояннаяРазница = ?(МассивПостояннаяРазница = Неопределено, 0, МассивПостояннаяРазница[Индекс]);
				ВременнаяРазница  = ?(МассивВременнаяРазница = Неопределено, 0, МассивВременнаяРазница[Индекс]);
				ОбщаяСумма        = ?(МассивОбщаяСумма = Неопределено, 0, МассивОбщаяСумма[Индекс]);
				
				// Скорректируем сумму затрат по временной или постоянной разнице для исключения ошибок округления.
				Если Сумма + ПостояннаяРазница + ВременнаяРазница <> ОбщаяСумма Тогда
					Если ВременнаяРазница <> 0 Тогда
						ВременнаяРазница = ОбщаяСумма - (Сумма + ПостояннаяРазница);
					ИначеЕсли ПостояннаяРазница <> 0 Тогда
						ПостояннаяРазница = ОбщаяСумма - Сумма;
					КонецЕсли;
				КонецЕсли;
			Иначе
				ПостояннаяРазница = 0;
				ВременнаяРазница = 0;
			КонецЕсли;
			
		Иначе
			Сумма = СуммаОстаток;
			ПостояннаяРазница = ПостояннаяРазницаОстаток;
			ВременнаяРазница = ВременнаяРазницаОстаток;
		КонецЕсли;
		
		СуммаВсего = СуммаВсего + Сумма;
		ПостояннаяРазницаВсего = ПостояннаяРазницаВсего + ПостояннаяРазница;
		ВременнаяРазницаВсего = ВременнаяРазницаВсего + ВременнаяРазница;
		
		СформироватьДвиженияПоРегиструБухгалтерииРаспределениеПоПродажам(
			СтруктураШапкиДокумента,
			СтруктураШапкиДокумента.ВидОтраженияВУчете,
			ВыборкаПоЗатратам,
			СчетСписания,
			ВыборкаБазаРаспределения.НоменклатурнаяГруппа,
			ХарактерЗатрат,
			Сумма,
			ПостояннаяРазница,
			ВременнаяРазница,
			РегистрБухгалтерииНаборЗаписей
		);
		
		Если ВыборкаПоЗатратам.НоменклатурнаяГруппа.Пустая() Тогда
			Индекс = Индекс + 1;
		Иначе
			Прервать;
		КонецЕсли;
			
	КонецЦикла;
//НВ
Если ХарактерЗатрат = Перечисления.ХарактерЗатрат.ОбщехозяйственныеРасходы И СтруктураШапкиДокумента.ДиректКостинг Тогда
	Если Сумма = Неопределено Тогда
		Сумма 				= 0;
		ПостояннаяРазница 	= 0;
		ВременнаяРазница 	= 0;
		Если СтруктураШапкиДокумента.ОтражатьВБухгалтерскомУчете Тогда
			Если (СуммаОстаток > 0 И СуммаВсего = 0 ) Тогда
				СуммаВсего = СуммаОстаток;
				Сумма = СуммаОстаток;
			КонецЕсли;	
		ИначеЕсли СтруктураШапкиДокумента.ОтражатьВНалоговомУчете Тогда
			Если СуммаОстаток > 0 И СуммаВсего = 0  Тогда
				СуммаВсего = СуммаОстаток;
			Конецесли;
			Если ПостояннаяРазницаОстаток > 0 И ПостояннаяРазницаВсего = 0  Тогда
				ПостояннаяРазницаВсего 	= ПостояннаяРазницаОстаток;
				ПостояннаяРазница 		= ПостояннаяРазницаОстаток;
			Конецесли;
			Если ВременнаяРазницаОстаток > 0 И ВременнаяРазницаВсего = 0  Тогда
				ВременнаяРазницаВсего 	= ВременнаяРазницаОстаток;
				ВременнаяРазница		= ВременнаяРазницаОстаток;		
			Конецесли;
		КонецЕсли;
		СформироватьДвиженияПоРегиструБухгалтерииРаспределениеПоПродажам(
			СтруктураШапкиДокумента,
			СтруктураШапкиДокумента.ВидОтраженияВУчете,
			ВыборкаПоЗатратам,
			СчетСписания,
			ВыборкаБазаРаспределения.НоменклатурнаяГруппа,
			ХарактерЗатрат,
			Сумма,
			ПостояннаяРазница,
			ВременнаяРазница,
			РегистрБухгалтерииНаборЗаписей
		);
	КонецЕсли;	
КонецЕсли;	
//КВ
	// Формирование движений по регистру "Затраты".
	СформироватьДвиженияПоРегиструЗатратыРаспределениеЗатрат(
		СтруктураШапкиДокумента,
		ВыборкаПоЗатратам,
		ХарактерЗатрат,
		СуммаВсего,
		ПостояннаяРазницаВсего,
		ВременнаяРазницаВсего,
		ВидДвиженияНакопления.Расход,
		НаборЗаписейЗатраты
	);
	
	Если СуммаВсего <> СуммаОстаток Тогда
		ОбщегоНазначения.Сообщение("Не удалось распределить затраты:
			|Счет учета: " + ВыборкаПоЗатратам.СчетУчета + "
			|Подразделение: " + ВыборкаПоЗатратам.Подразделение + "
			|Статья затрат: " + ВыборкаПоЗатратам.СтатьяЗатрат + "
			|Заказ: " + ВыборкаПоЗатратам.Заказ + "
			|Номенклатурная группа: " + ВыборкаПоЗатратам.НоменклатурнаяГруппа + " 
			|Сумма: " + (СуммаОстаток - СуммаВсего) + "
			|", СтатусСообщения.Важное);
	КонецЕсли;
	
КонецПроцедуры // РаспределитьЗатратыПоБазеРаспределенияПоПродажам()
Тестировалось на конфигурации: Управление производственным предприятием, редакция 1.3 (1.3.120.1)
Вступайте в нашу телеграмм-группу Инфостарт
 
                                 
                                     
                                    