Многие пользователи УПП сталкивались с отказом базы закрывать общехозяйственные расходы при отсутствии выпуска в текущем периоде.
Решение в таком случае каждый принимает свое. Предлагаю вам НЕ РЕШЕНИЕ, а вариант обхода этой трудности с помощью внесения изменений в модуль конфигурации.
Одному хватает списать затраты вручную Операцией: Дт 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)