Мы сталкиваемся с распространенной проблемой, которая возникает после обновления конфигурации 1С:ERP, в частности, при переходе с версии 2.5.22.87 на 2.5.22.106 и выше — для проверки бизнес-процессов есть автоматизированное регресс-тестирование ERP после обновлений. В статье об особенностях перехода на новые релизы ERP мы уже рассматривали подобные нюансы, но здесь основная сложность заключается в некорректном формировании проводок по налоговому учету (НУ) в документе "Отражение зарплаты в финансовом учете", особенно в части резервов на оплату отпусков. К слову, правильный ввод вступительных остатков и распределение резерва отпусков по сотрудникам часто является фундаментом для дальнейшего корректного учета. Давайте вместе разберем эту ситуацию, выясним причины и найдем эффективные решения.
После обновления многие пользователи обнаруживают, что документ "Отражение зарплаты в финансовом учете" перестает корректно формировать проводки по налоговому учету для резервов отпусков — это решается через автоматическое исправление проводок и движений в 1С:ERP. Симптомы могут быть разными: суммы по НУ либо полностью отсутствуют, либо формируются неверно, что приводит к расхождениям между бухгалтерским (БУ) и налоговым учетом. Для детальной проверки данных на этом этапе может быть полезно отражение зарплаты в бухучете в разрезе начислений и сотрудников, что позволяет увидеть проблемные места в структуре документа.
Мы заметили, что в проблемных релизах (например, 2.5.22.109) могут отсутствовать строки, касающиеся "Отпуска за счет обязательств", в то время как в предыдущих версиях (2.5.22.87) они формировались корректно. Это указывает на изменение логики формирования проводок в новых версиях конфигурации.
Следует помнить, что учет резервов на оплату отпусков — это достаточно сложный участок, требующий внимательной настройки. Организации могут самостоятельно определять, формировать ли резервы в налоговом учете, а также использовать разные методы расчета (нормативный, метод обязательств/МСФО) для БУ и НУ.
Для того чтобы понять, почему возникают эти расхождения, мы проведем детальный анализ.
Сравнение релизов: Мы восстановили файловые копии конфигураций обоих релизов — 2.5.22.87 (корректный) и 2.5.22.106/109 (проблемный). Это позволило нам пошагово сравнить поведение системы при формировании проводок.
Анализ общего модуля РеглУчетПроведениеСервер: Мы проверили этот общий модуль, так как он часто содержит логику, отвечающую за формирование проводок в регламентированном учете. Хотя он может влиять на процесс, в данном случае проблема оказалась глубже.
Проверка настроек учета: Мы тщательно проанализировали настройки учета, связанные с ПБУ 18 "Учет расчетов по налогу на прибыль организаций" и статьями затрат. Корректные настройки критически важны для правильного формирования проводок. Иногда специфика учета требует дополнительных настроек, таких как заполнение документа по счету 76.09 по физическим лицам и контрагентам или детализация по сотрудникам на счете 76.10. Рассмотрим примеры, как должны выглядеть проводки:
Затратный метод ПБУ 18:
Балансовый метод ПБУ 18:
Если настройки статей затрат или способы отражения зарплаты некорректны, это может привести к неверным проводкам.
Использование замера производительности и отладчика: Мы включили замер производительности и сформировали проводки, чтобы определить, какие объекты конфигурации участвуют в процессе. Выяснилось, что проводки формируются в Обработка.ОтражениеДокументовВРеглУчете. Далее, углубившись с помощью отладчика, мы обнаружили, что ключевой участок кода находится в РегистрБухгалтерии.Хозрасчетный.МодульМенеджера — для этого подойдёт инструмент для отладки кода и поиска ошибок в режиме 1С:Предприятие. Для комплексного контроля за результатами удобно использовать внешний отчет для анализа начислений и отражений зарплаты по периодам.
Выявление ключевого участка кода: Мы обнаружили, что проблема кроется в процедуре ЗаполнитьСуммыНалоговогоУчета(Проводки) модуля менеджера регистра бухгалтерии. В этом участке кода происходит автоматическое присвоение суммы в налоговый учет, что не всегда корректно для резервов. Рассмотрим проблемный фрагмент:
Если Не БухгалтерскийУчетВызовСервераПовтИсп.ЭтоСчетЦелевоеФинансирование(СчетДт) Тогда
// Налоговые суммы по этим счетам рассчитываются в первичном документе по особым правилам
СвойстваСчетаДт = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(СчетДт);
Если СвойстваСчетаДт.НалоговыйУчет
И Проводка.СуммаНУДт = 0
И Проводка.СуммаПРДт = 0
И Проводка.СуммаВРДт = 0 Тогда
Проводка.СуммаНУДт = Проводка.Сумма;
КонецЕсли;
КонецЕсли;
Именно строка Проводка.СуммаНУДт = Проводка.Сумма; при определенных условиях приводит к некорректному заполнению сумм по НУ, особенно когда резервы в НУ не должны формироваться или должны иметь другую сумму.
После выявления корневой причины, мы можем рассмотреть несколько подходов к решению этой проблемы. Важно понимать, что есть как временные, так и официальные методы исправления.
Если вам необходимо оперативно восстановить корректное формирование проводок до выхода официального патча или обновления, вы можете использовать расширение конфигурации для временного исправления логики. Этот метод позволяет внести изменения, не снимая конфигурацию с поддержки.
Создаем расширение: В режиме конфигуратора создайте новое расширение.
Добавляем модуль менеджера: В расширение добавьте модуль менеджера регистра бухгалтерии РегистрБухгалтерии.Хозрасчетный.
Переопределяем процедуру: Используйте аннотацию &Вместо(с контролем) для переопределения процедуры ЗаполнитьСуммыНалоговогоУчета. Это позволит вам внести изменения в ее логику.
Изменяем проблемную строку: Внутри переопределенной процедуры вы можете закомментировать проблемную строку или добавить условие для ее выполнения. Например, мы можем закомментировать строку, которая принудительно устанавливает СуммаНУДт:
&Вместо("ЗаполнитьСуммыНалоговогоУчета")
Процедура ЗаполнитьСуммыНалоговогоУчета(Проводки)
Для Каждого Проводка Из Проводки Цикл
// ... существующий код до проблемного участка ...
Если Не БухгалтерскийУчетВызовСервераПовтИсп.ЭтоСчетЦелевоеФинансирование(Проводка.СчетДт) Тогда
СвойстваСчетаДт = БухгалтерскийУчетВызовСервераПовтИсп.ПолучитьСвойстваСчета(Проводка.СчетДт);
Если СвойстваСчетаДт.НалоговыйУчет
И Проводка.СуммаНУДт = 0
И Проводка.СуммаПРДт = 0
И Проводка.СуммаВРДт = 0 Тогда
// Проводка.СуммаНУДт = Проводка.Сумма; // Закомментировали проблемную строку
// Или добавили условие, например, чтобы не трогать 96 счет НУ
// Если Не (Проводка.СчетДт = ПланыСчетов.Хозрасчетный.Счет96
// И Проводка.ВидДвижения = ВидДвиженияБухгалтерии.Дебет
// И Проводка.СуммаНУДт = 0) Тогда
// Проводка.СуммаНУДт = Проводка.Сумма;
// КонецЕсли;
КонецЕсли;
КонецЕсли;
// ... остальной код ...
КонецЦикла;
КонецПроцедуры
Важно: При использовании расширения для комментирования строки, убедитесь, что вы точно понимаете, какой эффект это произведет на другие участки учета. В общем случае, эта строка нужна для определенных ситуаций, поэтому полное ее отключение может быть нежелательным. Более надежным решением является добавление условия, исключающего ее выполнение для конкретного случая резервов отпусков.
Этот подход позволил нам подтвердить, что именно в этом месте кроется "корешок зла", и временно решить проблему.
Мы рады сообщить, что фирма "1С" признала наличие этой ошибки, зарегистрировав ее под номером 00-00785775. Это означает, что проблема является типовой и требует официального исправления.
Выпущенный патч: Для версий 2.5.22.109 и 2.5.24.62 был выпущен специальный патч EF_00_00785775. Мы рекомендуем применять официальные патчи 1С, так как они протестированы разработчиками и гарантируют корректную работу системы.
Исправление в новых версиях: В более свежих версиях конфигурации, начиная с 2.5.22.114, эта ошибка уже устранена в типовой поставке. Если у вас есть возможность обновиться до этих версий, это будет наиболее предпочтительным решением.
Суть технического исправления: Официальное решение проблемы заключалось в явном заполнении полей СуммаНУДт и СуммаНУКт значением СУММА(Строки.Сумма). Это изменение было внесено в метод ТекстОтраженияВРеглУчете() модуля менеджера документа "Отражение зарплаты в финансовом учете", в области ТекстЗапросаНачисленоПоСтатьям, во всех трех подзапросах. Пример, как это выглядит:
СУММА(Строки.Сумма) КАК СуммаНУДт
...
СУММА(Строки.Сумма) КАК СуммаНУКт
Это гарантирует, что суммы по налоговому учету будут корректно передаваться из первичных данных.
Обновление конфигурации может повлиять на корректность проводок даже за уже закрытые периоды. Если вы обнаружили некорректные проводки по НУ после обновления в прошлых месяцах, вам необходимо:
Применить исправление: Установите патч или обновитесь до версии, где ошибка уже исправлена.
Перепровести документы: После применения исправления, необходимо перепровести документы отражения зарплаты за те периоды, где были обнаружены расхождения. Это позволит системе сформировать правильные проводки.
Использовать механизмы корректировки: В случае необходимости, для исправления ошибок прошлых периодов, 1С предусматривает различные механизмы, такие как внесение изменений в текущем периоде с помощью новых документов, отражающих корректировки, или использование документа "Сторнирование начислений".
Мы выяснили, что причиной проблемы является изменение в логике формирования проводок по налоговому учету резервов отпусков после обновления 1С:ERP. К счастью, фирма "1С" оперативно отреагировала и выпустила официальные исправления. Мы рекомендуем всегда следовать рекомендациям разработчика и применять официальные патчи или обновляться до актуальных версий для обеспечения стабильной и корректной работы вашей системы.