В крупных прикладных решениях на платформе 1С (таких как 1С:ERP Управление предприятием и 1С:Комплексная автоматизация 2) пользователи периодически сталкиваются с загадочным поведением системы: документ оформлен абсолютно корректно, движения по оперативным регистрам идеальны, но при отражении в регламентированном учете проводки по списанию остаточной стоимости основных средств (например, по кредиту счета 01.09 или 01.01 в дебет счета 91.02) необъяснимым образом задваиваются или даже затраиваются.
Давайте подробно разберем, почему возникает этот коварный сбой, проанализируем внутренние механизмы работы платформы и выясним, как быстро вернуть учет в штатный режим.
Для того чтобы понять природу ошибки, нам необходимо рассмотреть, чем принципиально отличается формирование бухгалтерских проводок в 1С:ERP от более простых конфигураций (например, 1С:Бухгалтерия 3.0).
В решениях ERP-класса реализован двухсистемный (офлайн) механизм формирования проводок:
РеализацияУслугИПрочихАктивов) данные записываются исключительно в оперативные регистры накопления (такие как ПрочиеРасходы, ВыручкаИСебестоимостьПродаж и другие). На этом этапе никаких проводок по плану счетов Хозрасчетный не создается.В момент запуска этого механизма система выполняет сложный поисковый SQL-запрос, который динамически сопоставляет оперативные данные документов с настройками субконто на счетах учета. И именно в этой точке кроется уязвимость.
Для счета 91.02 («Прочие расходы») в типовой конфигурации предопределено строго ограниченное количество аналитик (субконто). Как правило, это только первое субконто — ПрочиеДоходыИРасходы, и в некоторых случаях второе — РеализуемыеАктивы.
Проблема возникает тогда, когда пользователи, сторонние расширения или программисты вручную добавляют на счет 91.02 дополнительную аналитику (например, третье субконто Подразделения, НаправленияДеятельности или Контрагенты).
При генерации проводок алгоритм отражения в регламентированном учете пытается сопоставить оперативную аналитику документа с субконто счета. Для этого выполняется соединение таблиц (LEFT JOIN) в СУБД:
ВЫБРАТЬ
ДвиженияОтражения.Регистратор,
ДвиженияОтражения.СчетДт,
ДвиженияОтражения.СчетКт,
ДвиженияОтражения.Сумма,
ЗначенияСубконто.Субконто1,
ЗначенияСубконто.Субконто2,
ЗначенияСубконто.Субконто3
ИЗ
ВременнаяТаблицаДвижений КАК ДвиженияОтражения
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК ЗначенияСубконто
ПО ДвиженияОтражения.АналитикаУчета = ЗначенияСубконто.Ссылка
Если для вновь добавленного (третьего) субконто в системе отсутствует однозначная связь с данными оперативного учета конкретного документа, либо правила заполнения этого субконто не определены, СУБД при выполнении запроса соединения выдает несколько строк вместо одной (происходит частичное декартово произведение). Для системы это выглядит как необходимость продублировать проводку с разными или пустыми значениями субконто. В результате в регистре бухгалтерии Хозрасчетный создаются две абсолютно одинаковые по суммам проводки (например, Дт 91.02 - Кт 01.09).
Если вы столкнулись с подобным поведением системы, давайте вместе пройдем по шагам локализации и устранения этой ошибки.
Первым делом нам нужно убедиться, что сам документ делает корректные движения в оперативных регистрах. Откройте движения проблемного документа Реализация услуг и прочих активов и перейдите на вкладку регистра накопления Прочие расходы. Если сумма там указана единожды и она верна, значит, математика документа работает правильно, и ручные корректировки или перепроведение самого документа без изменения метаданных не помогут. Проблема кроется именно в правилах трансляции проводок.
Перейдем в Регламентированный учет -> Настройки и справочники -> План счетов. Найдем счета 91.01 и 91.02:
Контрагенты или НоменклатурныеГруппы), вы нашли источник проблемы.Здесь у нас есть два пути решения проблемы в зависимости от бизнес-требований компании:
Вариант А. Удаление лишнего субконто (рекомендуется)
Если добавление субконто было инициативой бухгалтера «для удобства отчетности» без понимания архитектуры ERP, лучшим решением будет удалить это лишнее субконто из плана счетов. Для детального анализа по подразделениям или направлениям деятельности в ERP предусмотрены другие штатные механизмы (например, сквозной учет по направлениям деятельности или статьи расходов с соответствующим типом аналитики).
Вариант Б. Настройка правил заполнения субконто
Если удалить субконто невозможно (например, оно критически важно для интеграции с внешними системами или специализированными отраслевыми решениями), нам необходимо программно или параметрически объяснить системе, как его заполнять:
91.02 и добавленное нетиповое субконто.После того как План счетов приведен в порядок, нам необходимо заставить систему переформировать проводки регламентированного учета «с чистого листа». Простое перепроведение документа часто не дает эффекта, так как система кэширует результаты предыдущих расчетов.
Выполните следующие действия:
Реализация услуг и прочих активов.После выполнения этих шагов алгоритм генерации проводок отработает штатно, сопоставление таблиц пройдет корректно, и проводки по списанию остаточной стоимости основных средств на счет 91.02 перестанут задваиваться.