Почему предопределенные элементы справочника «Статьи движения денежных средств» не отображаются в 1С:Бухгалтерии 3.0 и как это исправить?

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Ситуация, когда в конфигураторе 1С:Предприятие мы видим четко заданный список предопределенных элементов, а в пользовательском режиме (1С:Предприятие) справочник оказывается пуст или содержит не все элементы, довольно распространена в современных конфигурациях на базе 1С 8.3. Особенно часто это встречается в 1С:Бухгалтерия предприятия 3.0 со справочником СтатьиДвиженияДенежныхСредств. Проанализируем, почему так происходит, и разберем пошагово методы исправления этой ситуации.

Разберем причину: изменение механизма работы платформы

Прежде всего, нам необходимо понять фундаментальное изменение в работе платформы 1С:Предприятие, которое произошло около 10 лет назад. В старых версиях (8.0, 8.1 и ранних 8.2) предопределенные элементы создавались платформой автоматически «сами собой» сразу после обновления конфигурации базы данных. Если элемент был в дереве метаданных, он гарантированно появлялся в интерфейсе.

В современных реалиях поведение управляется свойством объекта метаданных «Обновление предопределенных данных». Рассмотрим возможные значения этого свойства:

  1. Автоматически: Классическое поведение. Платформа сама создает элементы при обновлении.
  2. Не обновлять: Платформа полностью игнорирует создание элементов, отдавая это на откуп программисту.
  3. Переносить: Элементы создаются только при первом создании информационной базы.

В типовой конфигурации БП 3.0 для многих справочников установлено значение, отличное от «Автоматически». Это сделано для того, чтобы логика БСП (Библиотеки стандартных подсистем) могла гибко управлять процессом начального заполнения. Если база была создана не из дистрибутива (шаблона .dt), а путем загрузки файла конфигурации (.cf) в пустую базу, механизм инициализации начальных данных просто не срабатывает.

Выясним причину отсутствия элементов в «Статьях движения денежных средств»

Проанализируем конкретную ситуацию со справочником статей ДДС. В 1С:Бухгалтерии 3.0 этот справочник заполняется программно при первом запуске или при выполнении обработчиков обновления. Если элементы «потерялись», это означает, что связь между ссылкой в базе данных и именем в конфигураторе была разорвана или вовсе не создана. Это критично, так как алгоритмы автозаполнения отчетности (например, Формы №4) опираются именно на предопределенные элементы.

Решение 1: Программная привязка элементов через код

Если элементы в справочнике уже существуют как обычные (созданные пользователем вручную), но они не связаны с предопределенными именами из конфигуратора, мы можем выполнить «привязку» программно. Для этого используется свойство ИмяПредопределенныхДанных.

Рассмотрим пример кода, который можно запустить во внешней обработке для восстановления связи:


// Выберем нужную статью, которую нужно сделать предопределенной
СтатьяСсылка = Справочники.СтатьиДвиженияДенежныхСредств.НайтиПоНаименованию("Оплата поставщикам (подрядчикам)");

Если Не СтатьяСсылка.Пустая() Тогда
    СтатьяОбъект = СтатьяСсылка.ПолучитьОбъект();
    // Указываем имя, как оно задано в Конфигураторе
    СтатьяОбъект.ИмяПредопределенныхДанных = "ОплатаПоставщикам";
    Попытка
        СтатьяОбъект.Записать();
        Сообщить("Связь успешно установлена для: " + СтатьяСсылка);
    Исключение
        Сообщить("Ошибка при записи: " + ОписаниеОшибки());
    КонецПопытки;
КонецЕсли;

После выполнения этого кода у элемента в списке появится специальная иконка (с желтой точкой), и платформа начнет идентифицировать его как предопределенный.

Решение 2: Использование стандартных инструментов БСП

Поскольку мы работаем с типовой конфигурацией БП 3.0, в ней уже заложены механизмы для принудительного обновления вспомогательных данных. Посмотрим на процедуру ПриДобавленииПредопределенныхЭлементов в модуле менеджера справочника. Она описывает, какие элементы должны быть созданы.

Чтобы заставить программу перечитать эти данные, можно воспользоваться следующим приемом:

  1. Перейдем в раздел «Функции для технического специалиста» (ранее — «Все функции»).
  2. Найдем обработку «Обновление вспомогательных данных».
  3. Запустим процесс обновления. Это инициирует выполнение процедур БСП, которые отвечают за заполнение справочников по умолчанию.

Решение 3: Восстановление через Тестирование и Исправление

В некоторых случаях, если записи в таблицах базы данных повреждены или частично отсутствуют, помогает штатный механизм Конфигуратора. Проанализируем шаги:

  1. Запустим Конфигуратор и создадим архивную копию базы (обязательно!).
  2. Перейдем в меню Администрирование — Тестирование и исправление.
  3. Установим флаг «Проверка ссылочной целостности».
  4. В поле «При наличии ссылок на несуществующие объекты» выберем «Создавать объекты».
  5. В поле «При частичной потере данных объектов» выберем «Создавать объекты».

Хотя этот метод чаще используется для битых ссылок, иногда он позволяет платформе «увидеть» несоответствия в предопределенных данных и восстановить их структуру.

Решение 4: Применение инструментов разработчика (ИР)

Если нам нужно массово восстановить или изменить предопределенные элементы, наиболее эффективным инструментом будет консоль «Инструменты разработчика». В ее составе есть специализированный «Редактор предопределенных». Рассмотрим его преимущества:

  1. Он позволяет видеть список всех предопределенных имен, заложенных в метаданных.
  2. Позволяет в один клик связать существующий элемент справочника с именем предопределенного.
  3. Позволяет «отвязать» элемент, если он был привязан ошибочно.

Это самый быстрый способ для системного администратора или программиста 1С, когда нужно привести в порядок справочник СтатьиДвиженияДенежныхСредств в нескольких базах сразу.

Важное замечание про Форму №4

Помните, что простое наличие текста «Оплата поставщикам» в справочнике недостаточно для корректного формирования отчетности. Бухгалтерский алгоритм ищет элемент по его GUID или по свойству ИмяПредопределенныхДанных. Если вы просто создадите элемент вручную, отчет «Движение денежных средств» останется пустым. Поэтому использование вышеописанных методов программной привязки является обязательным условием для корректного ведения учета.

Подводя итог, отметим: если вы столкнулись с отсутствием предопределенных данных в типовой базе, скорее всего, база была развернута некорректно (через .cf). Самый правильный путь — программная установка свойства ИмяПредопределенныхДанных существующим элементам или использование встроенных механизмов обновления БСП.

← На главную