При выполнении процедуры закрытия месяца в системе 1С:ERP Управление предприятием 2.5 пользователи часто сталкиваются с ошибкой на этапе регламентной операции «Списание нормируемых расходов». Ошибка сопровождается системным сообщением: Запись не верна! Не заполнен счет дебета (Регистр бухгалтерии: Журнал проводок (регламентированный учет); Номер строки: 1). Эта ситуация блокирует дальнейшее формирование финансового результата и требует детального анализа как настроек системы, так и данных в регистрах.
Рассмотрим причины возникновения этой проблемы и разберем по шагам методические и технические способы ее решения.
Проанализируем ситуацию: регламентная операция пытается сформировать проводку по списанию расходов, которые в налоговом учете (НУ) ограничиваются нормативами (например, представительские расходы, расходы на рекламу или добровольное страхование). Система рассчитывает долю списания, определяет сумму, которую нужно перенести со счета 76.01.9 (или аналогичных счетов нормируемых расходов) на счета затрат, но не может определить счет дебета. Это происходит из-за того, что в матрице настроек отражения расходов для конкретной статьи не задан целевой счет списания для ОСНО.
Как показывает практика, чаще всего корень проблемы кроется в настройках Группы финансового учета расходов. Рассмотрим этот момент подробнее:
90.07.1 или 90.08.1).Важный нюанс: Если в ГФУ стоит признак отнесения на себестоимость, но статья фактически должна закрываться на 90 счет, система может потерять аналитику. Попробуем установить счет списания явно, даже если статья кажется "прямой".
Иногда ошибка возникает из-за нарушения последовательности проведения документов или изменения параметров статьи расходов «задним числом». В этом случае данные в регистрах накопления (например, Прочие расходы) могут не соответствовать настройкам, актуальным на момент закрытия месяца.
Рассмотрим порядок действий:
Если методические настройки верны, но система все равно выдает ошибку (что случается на некоторых релизах веток 2.5.7 и 2.5.8), можно воспользоваться программным обходом. Суть заключается в том, чтобы принудительно подставить счет дебета, если алгоритм системы не смог его определить автоматически.
Проанализируем пример кода, который переопределяет функцию ПолучитьРасчетСписанияКосвенныхРасходов в модуле менеджера документа РегламентнаяОперация:
&Вместо("ПолучитьРасчетСписанияКосвенныхРасходов")
Функция Испр_ПолучитьРасчетСписанияКосвенныхРасходов(КонтекстРасчета, Отказ)
ТипДенежноеПоле = РаботаСКурсамиВалют.ОписаниеТипаДенежногоПоля;
ТаблицаДанных = Новый ТаблицаЗначений;
ТаблицаДанных.Колонки.Добавить("СчетДт", Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
ТаблицаДанных.Колонки.Добавить("СчетКт", Новый ОписаниеТипов("ПланСчетовСсылка.Хозрасчетный"));
ТаблицаДанных.Колонки.Добавить("СтатьяРасходов", Новый ОписаниеТипов("ПланВидовХарактеристикСсылка.СтатьиРасходов"));
ТаблицаДанных.Колонки.Добавить("Организация", Новый ОписаниеТипов("СправочникСсылка.Организации"));
ТаблицаДанных.Колонки.Добавить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.СтруктураПредприятия"));
ТаблицаДанных.Колонки.Добавить("НаправлениеДеятельности", Новый ОписаниеТипов("СправочникСсылка.НаправленияДеятельности"));
ТаблицаДанных.Колонки.Добавить("Содержание", Новый ОписаниеТипов("Строка"));
ТаблицаДанных.Колонки.Добавить("СуммаНУ", ТипДенежноеПоле);
ТаблицаДанных.Колонки.Добавить("СуммаПР", ТипДенежноеПоле);
ТаблицаДанных.Колонки.Добавить("СуммаВР", ТипДенежноеПоле);
ЭтоКонецГода = КонтекстРасчета.КонДата = КонецГода(КонтекстРасчета.КонДата);
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("КонецПериодаГраница", КонтекстРасчета.КонГраница);
Запрос.УстановитьПараметр("Организация", КонтекстРасчета.Организация);
СоздатьВременнуюТаблицуДолиСписанияКосвенныхРасходов(
КонтекстРасчета.Дата,
КонтекстРасчета.Организация,
Запрос.МенеджерВременныхТаблиц);
Запрос.Текст =
"ВЫБРАТЬ
| ДолиСписания.СтатьяРасходов КАК СтатьяРасходов,
| ПорядокОтраженияНаСчетахУчетаПереопределяемый.СчетУчета КАК СчетСписанияОСНО,
| Остатки.Счет КАК СчетНормируемыхРасходов,
| Остатки.Организация,
| Остатки.Подразделение,
| Остатки.НаправлениеДеятельности,
| ДолиСписания.ДоляСписания,
| Остатки.СуммаНУОстаток,
| Остатки.СуммаВРОстаток
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Остатки(
| &КонецПериодаГраница,
| Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.НормируемыеРасходы),
| ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.СтатьиЗатрат),
| Организация = &Организация
| ) КАК Остатки
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтДолиСписанияКосвенныхРасходов КАК ДолиСписания
| ПО Остатки.Субконто1 = ДолиСписания.СтатьяРасходов
| И Остатки.Организация = ДолиСписания.Организация
| И ДолиСписания.Нормируемые
| ЛЕВОЕ СОЕДИНЕНИЕ ПорядокОтраженияНаСчетахУчетаПереопределяемый КАК ПорядокОтраженияНаСчетахУчетаПереопределяемый
| ПО ПорядокОтраженияНаСчетахУчетаПереопределяемый.ВидСчета = ЗНАЧЕНИЕ(Перечисление.ВидыСчетовРеглУчета.СписаниеРасходовОСНО)
| И ПорядокОтраженияНаСчетахУчетаПереопределяемый.Организация = Остатки.Организация
| И ПорядокОтраженияНаСчетахУчетаПереопределяемый.АналитикаУчета = Остатки.Субконто1
| И ПорядокОтраженияНаСчетахУчетаПереопределяемый.МестоУчета = Остатки.Подразделение";
РегистрыСведений.ПорядокОтраженияНаСчетахУчета.ПереопределитьВТекстеЗапросаПорядокОтраженияСчетаУчета(Запрос.Текст);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.СуммаНУОстаток = 0 Тогда
Продолжить;
КонецЕсли;
СписаниеПоНУ = Окр(Выборка.СуммаНУОстаток * Выборка.ДоляСписания, 2);
Если СписаниеПоНУ <> 0 Тогда
ОписаниеРасходов = ТаблицаДанных.Добавить();
ЗаполнитьЗначенияСвойств(ОписаниеРасходов, Выборка);
// Проверка на заполнение счета. Если пустой - подставляем счет по умолчанию.
Если НЕ ЗначениеЗаполнено(Выборка.СчетСписанияОСНО) Тогда
ОписаниеРасходов.СчетДт = ПредопределенноеЗначение("ПланСчетов.Хозрасчетный.Продажи_УправленческиеРасходыНеЕНВД");
Иначе
ОписаниеРасходов.СчетДт = Выборка.СчетСписанияОСНО;
КонецЕсли;
ОписаниеРасходов.СчетКт = Выборка.СчетНормируемыхРасходов;
ОписаниеРасходов.Содержание = КонтекстРасчета.Содержание;
ОписаниеРасходов.СуммаНУ = СписаниеПоНУ;
ОписаниеРасходов.СуммаВР = Выборка.СуммаВРОстаток;
ОписаниеРасходов.СуммаПР = - СписаниеПоНУ - Выборка.СуммаВРОстаток;
КонецЕсли;
КонецЦикла;
Возврат ТаблицаДанных;
КонецФункции
В данном коде мы проанализировали запрос, который обращается к регистру сведений ПорядокОтраженияНаСчетахУчета. Если левое соединение не находит подходящую запись по комбинации Организация + Статья + Подразделение, поле СчетСписанияОСНО остается пустым. Вставка условия Если НЕ ЗначениеЗаполнено... Тогда позволяет избежать аварийной остановки закрытия месяца.
Чтобы не гадать, по какой именно статье произошел сбой, рекомендуем использовать отчет «Расчет нормируемых расходов». Рассмотрим, на что обратить внимание:
Также полезно заглянуть в отчет «Контроль отражения документов в регл. учете». Несмотря на то, что это регламентная операция, ошибки настройки счетов часто дублируются и для первичных документов, которыми эти расходы были отражены (например, «Приобретение услуг и прочих активов»).
Для исправления ошибки Запись не верна! Не заполнен счет дебета в регламентной операции списания нормируемых расходов:
Подобный комплексный подход позволит успешно завершить процедуру закрытия месяца и обеспечить корректное формирование декларации по налогу на прибыль.