При работе в конфигурации «1С:Бухгалтерия государственного учреждения 2.0» бухгалтеры и технические специалисты часто сталкиваются со специфической проблемой. При оформлении документа «Принятие к учету ОС» на забалансовый счет (например, 01.32 «Объекты в пользовании») система выдает ошибку: «Проводка 1. Не заполнено субконто дебета ЦМО». При этом в самом документе реквизит Центр материальной ответственности (ЦМО) заполнен корректно, а кнопка «Предварительный просмотр» показывает правильные проводки.
В этой статье мы подробно разберем, почему возникает этот программный диссонанс, и проанализируем шаги, необходимые для решения проблемы.
Для начала выясним причину, по которой программа ведет себя двояко. В БГУ 2.0 механизм предварительного просмотра и реальный механизм формирования проводок — это два разных программных алгоритма.
Предварительный просмотр формирует записи на лету, используя упрощенную модель данных текущей формы документа. Он видит заполненное поле на форме и «рисует» проводку. Однако при реальном проведении документа в дело вступает Менеджер расчета проводок. Если в типовой операции источник данных для субконто указан некорректно или система не может правильно типизировать значение в момент итерации по строкам, возникает ошибка незаполненного значения.
Проанализируем ситуацию: на счете 01.32 используется три субконто: Основные средства, Контрагенты и ЦМО. Ошибка часто маскирует проблему в очередности заполнения этих аналитических разрезов.
Перед тем как вносить изменения в код или настройки, проверим структуру самого забалансового счета:
ЦМО обычно идет третьим субконто.Если порядок субконто был изменен вручную, типовая операция, которая жестко ищет Субконто 3 для записи ЦМО, не сможет найти нужный слот, что приведет к ошибке даже при визуально заполненном реквизите.
Поскольку оригинальная типовая операция находится на поддержке, мы не можем редактировать ее напрямую без снятия с замка. Мы рекомендуем создать свою копию и протестировать ее. Разберем этот процесс по шагам:
В колонке «Субконто дебета 3» (где должно быть ЦМО) скорее всего стоит значение Документ.ЦМО. Попробуем изменить способ обращения к данным. Вместо прямого выбора реквизита документа, пропишем выражение на встроенном языке 1С.
Рассмотрим пример того, как можно принудительно указать источник данных:
// В поле выражения для субконто ЦМО можно попробовать указать:
Объект.ЦМО
Это заставляет менеджер проводок обращаться непосредственно к реквизиту объекта в памяти, что помогает избежать проблем с типизацией в некоторых релизах (например, 2.0.55 – 2.0.60).
Если изменение типовой операции не помогло, проанализируем внешние факторы. Рассмотрим ситуацию, когда в базе установлены расширения конфигурации.
Иногда расширения содержат подписки на событие ОбработкаПроведения. Если логика расширения написана неоптимально, она может очищать таблицу дополнительных реквизитов или структуру проводок непосредственно перед записью в регистр бухгалтерии. Для диагностики выполним следующие действия:
Не стоит забывать и о чисто технических ошибках платформы 1С. Выясним, не является ли проблема следствием сбоя в кэше метаданных:
Если вы принимаете к учету сразу несколько объектов ОС в одном документе (заполнение табличной части «Основные средства»), типовая операция должна корректно «пробрасывать» ЦМО из шапки документа в каждую строку проводки.
В релизах БГУ 2.0.55.11 и 2.0.55.14 была замечена ошибка: при итерации по строкам табличной части система «теряла» связь с реквизитом ЦМО шапки. В этом случае поможет только обновление до актуального релиза (выше 2.0.60) или ручная доработка копии типовой операции, где в алгоритме заполнения субконто будет явно прописан поиск владельца (шапки документа) для каждой строки.
Важный совет: Если вы решили писать обращение в службу поддержки 1С, обязательно приложите скриншот окна «Настройка типовой операции» и результат «Предварительного просмотра» проводок. Это ускорит получение ответа по конкретному баг-трекеру вашего релиза.