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

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

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

В этой статье мы подробно разберем, почему возникает эта проблема на примере справочника ПрочиеДоходыИРасходы, как работают внутренние механизмы платформы и БСП по обновлению предопределенных данных, и какие конкретные шаги необходимо предпринять, чтобы решить эту задачу.

---

Понимание архитектуры работы с предопределенными данными в 1С 8.3

Прежде чем переходить к практическому решению, давайте разберем теорию. В платформе 1С:Предприятие 8.3 механизм работы с предопределенными элементами существенно отличается от старой версии 8.2. В версии 8.3 предопределенные элементы — это не просто жестко зашитые в метаданные объекты. Они представляют собой полноценные записи в таблице базы данных, которые связаны с идентификаторами в метаданных через специальный скрытый системный реквизит ИмяПредопределенныхДанных.

При первом запуске системы или при обновлении информационной базы платформа сопоставляет метаданные конфигурации с реальными записями в СУБД. За управление этим процессом на уровне кода отвечает свойство справочника Обновление предопределенных данных (находится на вкладке «Прочее» в окне редактирования объекта метаданных). Оно может принимать три значения:

  1. Автоматически — платформа сама создает, обновляет или удаляет элементы в базе данных в соответствии с конфигурацией.
  2. Обновлять — аналогично автоматическому режиму, но с акцентом на форсированное обновление.
  3. Не обновлять — платформа игнорирует изменения предопределенных данных в конфигураторе, управление полностью перекладывается на плечи программного кода разработчика или механизмов БСП.

В современных типовых конфигурациях, включая «1С:Бухгалтерию 3.0», для многих справочников управление предопределенными данными передано подсистемам БСП. Именно поэтому стандартного изменения свойства в конфигураторе часто оказывается недостаточно.

---

Причина 1. Особенности инициализации «поставляемых данных» в БСП

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


Процедура ЗаполнитьОписанияПоставляемыхЭлементов(Описания) Экспорт
    
    НовыйЭлемент = Описания.Добавить();
    НовыйЭлемент.Имя = "НовыйДоходОтРеализации";
    НовыйЭлемент.Наименование = "Новые внереализационные доходы";
    НовыйЭлемент.ВидПрочихДоходовИРасходов = Перечисления.ВидыПрочихДоходовИРасходов.ПрочиеВнереализационныеДоходыРасходы;
    НовыйЭлемент.ПринимаетсяКНалоговомуУчету = Истина;
    
КонецПроцедуры

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

Как решить:

Необходимо принудительно запустить обработчики обновления информационной базы БСП. Сделать это можно следующими способами:

  1. Увеличьте номер версии вашей конфигурации (хотя бы на последнюю цифру, например, с 3.0.79.14 на 3.0.79.15) в свойствах корневого объекта конфигурации и запустите сеанс.
  2. Запустите систему «1С:Предприятие» из командной строки с параметром выполнения обновления:
    "C:\Program Files\1cv8\8.3.XX.XXX\bin\1cv8.exe" ENTERPRISE /F "ПутьКБазе" /C ЗапуститьОбновлениеИнформационнойБазы
  3. Используйте специализированные внешние обработки из состава инструментария разработчика БСП (например, ИнструментыРазработчикаОбновлениеИнформационнойБазы.epf), которые позволяют вручную перезапустить обработчики обновления для конкретных подсистем.

---

Причина 2. Наличие жестких отборов в формах выбора

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

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

Как решить:

Проанализируйте код формы выбора справочника ПрочиеДоходыИРасходы в режиме конфигуратора. Выясните, какие параметры выбора (ПараметрыВыбора) или связи параметров выбора установлены на поле ввода в документе. Обязательно убедитесь, что ваш новый предопределенный элемент заполнен всеми необходимыми аналитическими реквизитами. Для редактирования этих реквизитов у созданного элемента (если они заблокированы для изменения в режиме «1С:Предприятие») используйте встроенную обработку «Групповое изменение реквизитов».

---

Причина 3. Специфика работы в распределенных информационных базах (РИБ)

Если разработка или внедрение происходят в системе, состоящей из главного и подчиненных узлов (РИБ), поведение платформы по умолчанию блокирует автоматическое создание предопределенных элементов в подчиненных узлах во избежание дублирования и нарушения ссылочной целостности.

Как решить:

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

---

Причина 4. Кэширование данных платформы

Локальный кэш метаданных и конфигурации на компьютере пользователя — частая причина «фантомного» поведения системы. Платформа 1С оптимизирует работу, сохраняя структуру конфигурации и списки предопределенных объектов локально. При добавлении элементов разработчиком кэш может не обновиться вовремя.

Как решить:

Произведите полную очистку кэша. Для этого выполните следующие действия:

  1. Удалите информационную базу из списка запуска 1С и добавьте ее заново (при этом папка кэша, привязанная к идентификатору базы, сгенерируется заново).
  2. Либо очистите папки кэша вручную по путям:
    %userprofile%\AppData\Local\1C\1cv8
    %userprofile%\AppData\Roaming\1C\1cv8
    (предварительно закрыв все сеансы работы с 1С).

---

Причина 5. Альтернативный метод — ручная привязка элемента к предопределенному

Если автоматические механизмы платформы или БСП по какой-то причине дали сбой, а вам необходимо срочно решить проблему без повторного запуска тяжелых процедур обновления информационной базы, можно воспользоваться обходным путем: связать обычный элемент справочника, созданный пользователем в режиме «Предприятие», с предопределенным элементом из конфигуратора.

Рассмотрим этот процесс по шагам:

  1. Зайдите в режим «1С:Предприятие» и создайте в справочнике Прочие доходы и расходы новый элемент. Заполните его наименование и все необходимые реквизиты (вид деятельности, налоговый учет) точно так же, как планировалось в конфигураторе. Запишите элемент.
  2. Откройте встроенную обработку Групповое изменение реквизитов (ее можно найти в разделе «Администрирование» — «Обслуживание» — «Корректировка данных»).
  3. В поле «Выбор элементов для изменения» выберите справочник Прочие доходы и расходы и настройте отбор по вашему вновь созданному элементу.
  4. Нажмите кнопку «Параметры» внизу формы обработки и в открывшемся окне установите флаг Показывать служебные реквизиты.
  5. В списке доступных для изменения реквизитов найдите системное поле Имя предопределенных данных (в коде это ИмяПредопределенныхДанных).
  6. Введите в это поле точное имя предопределенного элемента, которое вы задали в конфигураторе (например, НовыйДоходОтРеализации).
  7. Нажмите кнопку Изменить реквизиты.

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

Для закрепления материала рассмотрим, как можно выполнить аналогичную привязку программно (например, во внешней обработке):


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

---

Резюме и рекомендации

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

  1. Проверьте физическое наличие записи в базе данных с помощью консоли запросов. Если записи нет — дело в обновлении ИБ (БСП) или свойстве «Обновление предопределенных данных».
  2. Если запись физически присутствует, но ее не видно в конкретном документе — проанализируйте заполнение реквизитов ВидПрочихДоходовИРасходов и флага налогового учета. Они должны соответствовать отборам формы выбора документа.
  3. Используйте ручную привязку через ИмяПредопределенныхДанных как надежный инструмент быстрого исправления ошибок сопоставления данных.
← На главную