Исправление в модуле для закрытия общехозяйственных расходов (26 счет) при отсутствии выпуска


При отсутствии записей о выпуске в УПП не закрываются общехозяйственные расходы. Не РАУЗ.

Многие пользователи УПП сталкивались с отказом базы закрывать общехозяйственные расходы при отсутствии выпуска в текущем периоде. 

Решение в таком случае каждый принимает свое. Предлагаю вам НЕ РЕШЕНИЕ, а вариант обхода этой трудности с помощью внесения изменений в модуль конфигурации. 

Одному хватает списать затраты вручную Операцией: Дт 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  Тогда
ВременнаяРазницаВсего  = ВременнаяРазницаОстаток;
ВременнаяРазница  = ВременнаяРазницаОстаток;
Конецесли;
КонецЕсли;
СформироватьДвиженияПоРегиструБухгалтерииРаспределениеПоПродажам(
СтруктураШапкиДокумента,
СтруктураШапкиДокумента.ВидОтраженияВУчете,
ВыборкаПоЗатратам,
СчетСписания,
ВыборкаБазаРаспределения.НоменклатурнаяГруппа,
ХарактерЗатрат,
Сумма,
ПостояннаяРазница,
ВременнаяРазница,
РегистрБухгалтерииНаборЗаписей
);
КонецЕсли;
КонецЕсли;
//КВ
// Формирование движений по регистру "Затраты".
СформироватьДвиженияПоРегиструЗатратыРаспределениеЗатрат(
СтруктураШапкиДокумента,
ВыборкаПоЗатратам,
ХарактерЗатрат,
СуммаВсего,
ПостояннаяРазницаВсего,
ВременнаяРазницаВсего,
ВидДвиженияНакопления.Расход,
НаборЗаписейЗатраты
);

Если СуммаВсего <> СуммаОстаток Тогда
ОбщегоНазначения.Сообщение("Не удалось распределить затраты:
|Счет учета: " + ВыборкаПоЗатратам.СчетУчета + "
|Подразделение: " + ВыборкаПоЗатратам.Подразделение + "
|Статья затрат: " + ВыборкаПоЗатратам.СтатьяЗатрат + "
|Заказ: " + ВыборкаПоЗатратам.Заказ + "
|Номенклатурная группа: " + ВыборкаПоЗатратам.НоменклатурнаяГруппа + "
|Сумма: " + (СуммаОстаток - СуммаВсего) + "
|", СтатусСообщения.Важное);
КонецЕсли;

КонецПроцедуры // РаспределитьЗатратыПоБазеРаспределенияПоПродажам()

Теперь независимо от того, есть выпуск или нет, формируются проводки закрытия 26 счета (на 90.08.1)
 

Тестировалось на конфигурации: Управление производственным предприятием, редакция 1.3 (1.3.120.1) 

2 Comments

  1. teller

    С УПП куда переходить собираетесь?

    Reply
  2. 9093042

    Пока никуда )

    ЕРП нам не нужно, из производства — оказание услуг.

    Так что остается КА2. Нужен блок БУ, блок НУ, ЗП и Планирование движения ДС, — свои подсистемы буду дописывать.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *