При разработке и кастомизации конфигураций на платформе 1С:Предприятие 8.3 (особенно типовых решений, таких как 1С:Бухгалтерия предприятия 3.0, построенных на базе Библиотеки стандартных подсистем — БСП) разработчики часто сталкиваются с ситуацией, когда новые предопределенные элементы справочника, добавленные в конфигураторе, упорно отказываются появляться в режиме «1С:Предприятие». Ситуация становится еще более загадочной, когда код инициализации написан верно, конфигурация базы данных обновлена, но в пользовательском интерфейсе нужные элементы так и не выводятся.
В этой статье мы подробно разберем, почему возникает эта проблема на примере справочника ПрочиеДоходыИРасходы, как работают внутренние механизмы платформы и БСП по обновлению предопределенных данных, и какие конкретные шаги необходимо предпринять, чтобы решить эту задачу.
---
Прежде чем переходить к практическому решению, давайте разберем теорию. В платформе 1С:Предприятие 8.3 механизм работы с предопределенными элементами существенно отличается от старой версии 8.2. В версии 8.3 предопределенные элементы — это не просто жестко зашитые в метаданные объекты. Они представляют собой полноценные записи в таблице базы данных, которые связаны с идентификаторами в метаданных через специальный скрытый системный реквизит ИмяПредопределенныхДанных.
При первом запуске системы или при обновлении информационной базы платформа сопоставляет метаданные конфигурации с реальными записями в СУБД. За управление этим процессом на уровне кода отвечает свойство справочника Обновление предопределенных данных (находится на вкладке «Прочее» в окне редактирования объекта метаданных). Оно может принимать три значения:
В современных типовых конфигурациях, включая «1С:Бухгалтерию 3.0», для многих справочников управление предопределенными данными передано подсистемам БСП. Именно поэтому стандартного изменения свойства в конфигураторе часто оказывается недостаточно.
---
В БСП внедрен механизм динамического создания и актуализации так называемых «поставляемых данных». Справочник ПрочиеДоходыИРасходы во многих конфигурациях завязан на этот механизм. Разработчик может прописать добавление нового элемента в специальной процедуре общего модуля:
Процедура ЗаполнитьОписанияПоставляемыхЭлементов(Описания) Экспорт
НовыйЭлемент = Описания.Добавить();
НовыйЭлемент.Имя = "НовыйДоходОтРеализации";
НовыйЭлемент.Наименование = "Новые внереализационные доходы";
НовыйЭлемент.ВидПрочихДоходовИРасходов = Перечисления.ВидыПрочихДоходовИРасходов.ПрочиеВнереализационныеДоходыРасходы;
НовыйЭлемент.ПринимаетсяКНалоговомуУчету = Истина;
КонецПроцедуры
Однако простого написания этого кода и добавления элемента в метаданные недостаточно. Чтобы БСП прочитала этот код и создала записи в базе данных, должен отработать процесс обновления информационной базы. В обычном режиме отладки при простом запуске по кнопке F5 обновление БСП может не запуститься, если номер версии конфигурации не изменился.
Как решить:
Необходимо принудительно запустить обработчики обновления информационной базы БСП. Сделать это можно следующими способами:
3.0.79.14 на 3.0.79.15) в свойствах корневого объекта конфигурации и запустите сеанс."C:\Program Files\1cv8\8.3.XX.XXX\bin\1cv8.exe" ENTERPRISE /F "ПутьКБазе" /C ЗапуститьОбновлениеИнформационнойБазы
ИнструментыРазработчикаОбновлениеИнформационнойБазы.epf), которые позволяют вручную перезапустить обработчики обновления для конкретных подсистем.---
Если вы убедились с помощью консоли запросов или через стандартный интерфейс «Функции для технического специалиста», что элемент физически создан в базе данных, но его все равно не видно при выборе в документах (например, в «Поступлении на расчетный счет» или «Операции бухучета»), дело в динамических отборах формы выбора.
Справочник ПрочиеДоходыИРасходы хранит статьи, которые критически важны для целей корректного заполнения декларации по налогу на прибыль. При выборе статьи в конкретном документе система накладывает жесткие программные отборы. Рассмотрим типичные реквизиты, по которым платформа фильтрует элементы:
ПеречислениеСсылка.ВидыПрочихДоходовИРасходов). Если в вашем новом предопределенном элементе этот реквизит остался незаполненным (или равен значению, не соответствующему контексту операции документа), элемент автоматически отсекается стандартным запросом формы выбора.ПринимаетсяКНалоговомуУчету). В некоторых документах, отражающих только налоговый или только бухгалтерский учет, этот отбор работает в обязательном порядке.Используется или ИсключитьИзВыбора). Если при программном создании через процедуру БСП этот флаг установился в значение Ложь, элемент скроется из списка выбора.Как решить:
Проанализируйте код формы выбора справочника ПрочиеДоходыИРасходы в режиме конфигуратора. Выясните, какие параметры выбора (ПараметрыВыбора) или связи параметров выбора установлены на поле ввода в документе. Обязательно убедитесь, что ваш новый предопределенный элемент заполнен всеми необходимыми аналитическими реквизитами. Для редактирования этих реквизитов у созданного элемента (если они заблокированы для изменения в режиме «1С:Предприятие») используйте встроенную обработку «Групповое изменение реквизитов».
---
Если разработка или внедрение происходят в системе, состоящей из главного и подчиненных узлов (РИБ), поведение платформы по умолчанию блокирует автоматическое создание предопределенных элементов в подчиненных узлах во избежание дублирования и нарушения ссылочной целостности.
Как решить:
Создание и привязка предопределенных элементов должны происходить строго в главном узле распределенной базы данных. После успешного создания элементов в центральной базе необходимо выполнить стандартный сеанс обмена данными, чтобы изменения конфигурации и сами новые записи физически перенеслись в подчиненные узлы.
---
Локальный кэш метаданных и конфигурации на компьютере пользователя — частая причина «фантомного» поведения системы. Платформа 1С оптимизирует работу, сохраняя структуру конфигурации и списки предопределенных объектов локально. При добавлении элементов разработчиком кэш может не обновиться вовремя.
Как решить:
Произведите полную очистку кэша. Для этого выполните следующие действия:
%userprofile%\AppData\Local\1C\1cv8
%userprofile%\AppData\Roaming\1C\1cv8
---
Если автоматические механизмы платформы или БСП по какой-то причине дали сбой, а вам необходимо срочно решить проблему без повторного запуска тяжелых процедур обновления информационной базы, можно воспользоваться обходным путем: связать обычный элемент справочника, созданный пользователем в режиме «Предприятие», с предопределенным элементом из конфигуратора.
Рассмотрим этот процесс по шагам:
Прочие доходы и расходы новый элемент. Заполните его наименование и все необходимые реквизиты (вид деятельности, налоговый учет) точно так же, как планировалось в конфигураторе. Запишите элемент.Прочие доходы и расходы и настройте отбор по вашему вновь созданному элементу.Имя предопределенных данных (в коде это ИмяПредопределенныхДанных).НовыйДоходОтРеализации).После выполнения этой операции платформа свяжет физическую запись в базе данных с элементом метаданных конфигуратора. Элемент справочника в интерфейсе сразу же получит характерную пиктограмму с желтым шариком, указывающую на то, что теперь он является предопределенным.
Для закрепления материала рассмотрим, как можно выполнить аналогичную привязку программно (например, во внешней обработке):
Процедура ПривязатьЭлементКПредопределенному() Экспорт
// Поиск существующего элемента в базе данных по наименованию
СсылкаНаЭлемент = Справочники.ПрочиеДоходыИРасходы.НайтиПоНаименованию("Новые внереализационные доходы");
Если Не СсылкаНаЭлемент.Пустая() Тогда
ОбъектЭлемента = СсылкаНаЭлемент.ПолучитьОбъект();
// Заполняем системное имя предопределенного из конфигуратора
ОбъектЭлемента.ИмяПредопределенныхДанных = "НовыйДоходОтРеализации";
Попытка
ОбъектЭлемента.Записать();
Сообщить("Элемент успешно связан с предопределенным!");
Исключение
Сообщить("Ошибка записи элемента: " + ОписаниеОшибки());
КонецПопытки;
Иначе
Сообщить("Элемент для привязки не найден в базе данных.");
КонецЕсли;
КонецПроцедуры
---
Проблема отображения предопределенных данных в справочнике Прочие доходы и расходы — это комплексный вопрос, лежащий на стыке работы платформы и прикладных механизмов БСП. При возникновении подобной ситуации мы рекомендуем придерживаться следующего алгоритма диагностики:
ВидПрочихДоходовИРасходов и флага налогового учета. Они должны соответствовать отборам формы выбора документа.ИмяПредопределенныхДанных как надежный инструмент быстрого исправления ошибок сопоставления данных.