При запуске процедуры закрытия месяца в программе 1С:Управление торговлей (релиз 11.4.13.47 и смежные версии) пользователи часто сталкиваются со сбоем на этапе распределения расходов. Система аварийно завершает работу, выдавая техническую ошибку в модуле менеджера документа распределения прочих затрат. В этой статье мы подробно разберем, почему возникает данная неполадка, как взаимосвязаны ошибки закрытия и зависшие остатки, а также пошагово исправим код запроса напрямую или с помощью расширения.
Давайте проанализируем ситуацию, когда при закрытии месяца система выдает сразу два сообщения об ошибках:
Разное количество полей в объединяемых запросах {Документ.РаспределениеПрочихЗатрат.МодульМенеджера(855)}.По организации "СТИМУЛ" на конец периода есть остатки по регистру прочих расходов.Выясним, какая из этих ошибок является первичной. Первичной является техническая ошибка в коде запроса. Поскольку процедура распределения расходов ломается на этапе выполнения пакетного запроса в СУБД, документы распределения прочих затрат не проводятся и не могут завершить свой жизненный цикл. Как следствие, прочие расходы не списываются на финансовый результат компании, и на конец месяца зависают те самые остатки по регистру прочих расходов. Таким образом, устранив ошибку в запросе, мы автоматически решим проблему с незакрытыми остатками.
Суть программной ошибки кроется в архитектуре конфигурации. В линейке решений 11.4.13 разработчики фирмы 1С объединили логику распределения затрат для ERP, Комплексной автоматизации и Управления торговлей. При использовании оператора ОБЪЕДИНИТЬ ВСЕ (UNION ALL) в тексте запроса в одной из частей выборки были добавлены поля, отвечающие за производственный учет, а в другой ветке (предназначенной для УТ, где производства нет) эти поля оказались пропущены или закомментированы. Из-за этого СУБД возвращает ошибку несовпадения структуры объединяемых таблиц.
---
Если ваша база данных снята с поддержки или допускает непосредственное изменение кода конфигурации, мы можем выполнить оперативное исправление исходного текста запроса.
Рассмотрим этот процесс по шагам:
РаспределениеПрочихЗатрат.РаспределитьРасходыНаФинансовыйРезультат (ошибка указывает примерно на строку 855, где вызывается метод Запрос.ВыполнитьПакет()).
// Комментируем некорректные поля-заглушки в запросе
// | НЕОПРЕДЕЛЕНО КАК ЗаказНаПроизводство,
// | НЕОПРЕДЕЛЕНО КАК КодСтрокиПродукция,
// | НЕОПРЕДЕЛЕНО КАК ПартияПроизводства,
После комментирования данных строк структура объединяемых частей запроса станет полностью идентичной. Сохраним изменения в конфигурации базы данных и повторно запустим процедуру закрытия месяца. Для автоматического выполнения регламентных операций за несколько периодов с уведомлением об итогах подойдёт обработка для группового закрытия месяцев с отправкой отчета в Telegram.
---
Вносить изменения напрямую в типовую конфигурацию крайне не рекомендуется, так как это усложнит последующие обновления программы. Правильным решением будет вынос исправленной процедуры в отдельное расширение конфигурации. Техническое обслуживание и автоматизированное обновление таких систем выполняется через программу для тихого обновления и тестирования баз 1С.
Проанализируем шаги по созданию и настройке расширения:
ИсправлениеЗакрытияМесяца).РаспределениеПрочихЗатрат, кликнем по нему правой кнопкой мыши и выберем Добавить в расширение.РаспределитьРасходыНаФинансовыйРезультат, используя аннотацию &Вместо или &ИзменениеИКонтроль.При использовании расширений разработчики часто сталкиваются со следующей ошибкой компиляции:
неверное значение перечисления указано для строки:
И ТекущиеДвижения.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.РаспределениеРасходовПоНаправлениямДеятельности)
Выясним причину этой ошибки. Платформа 1С в контексте расширения не видит конкретные значения перечислений из основной конфигурации, если эти объекты метаданных не были явным образом добавлены в само расширение. Чтобы решить эту проблему, выполним простое действие:
ХозяйственныеОперации.РаспределениеРасходовПоНаправлениямДеятельности также перенеслось в область видимости расширения.После выполнения этой операции программный код успешно скомпилируется без ошибок валидации типов.
---
Даже после исправления синтаксиса запроса вы можете обнаружить, что остатки по некоторым статьям расходов все равно не закрываются до конца. Это происходит из-за особенностей учета финансового результата по направлениям деятельности в УТ 11.4.
Если в вашей информационной базе включена опция Финансовый результат по направлениям деятельности, обратим внимание на настройки самих статей расходов:
Распределение прочих затрат программа установит статус «Готов к распределению», но оставит незаполненными ключевые реквизиты базы распределения, из-за чего документ не сможет провестись автоматически.Как избежать этой проблемы без программирования:
Распределение прочих затрат перед финальным расчетом себестоимости. Все они должны быть заполнены и иметь статус Проведен.Применение данных рекомендаций и исправление кода запроса позволят вам успешно завершить закрытие месяца без ошибок и зависших остатков по регистрам управленческого учета. Для наглядного контроля этапов регламентных процедур и быстрого поиска проблемных периодов можно использовать монитор операций закрытия месяца для УТ и КА.