Почему тип субконто отображается в конфигураторе, но отсутствует в режиме предприятия?

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

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

Суть проблемы и механизм работы предопределенных данных

Ситуация, описанная в теме, касается предопределенного элемента плана видов характеристик ВидыСубконтоХозрасчетные. Автор добавил документ Заявление о ввозе в составной тип значения вида субконто Счета-фактуры полученные. Однако в пользовательском режиме при выборе значения субконто на счете (например, 60-м или 19-м) платформа не предлагает выбрать данный тип документа. Более того, программная проверка в коде подтверждает, что тип значения объекта не содержит внесенных изменений.

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

Решение 1: Проверка функциональных опций

Прежде чем приступать к программным методам, проанализируем настройки программы. В типовых конфигурациях, таких как БП 3.0, видимость и доступность типов данных часто управляется через функциональные опции. Если документ ЗаявлениеОВвозеТоваров входит в состав функциональной опции (например, ВедетсяУчетИмпортаТоваров), и эта опция выключена, платформа может скрывать этот тип из интерфейса и списков выбора, даже если он разрешен в метаданных.

Выясним причину: проверьте настройки интерфейса и параметров учета. Если опция включена, но тип все равно не виден, переходите к следующему шагу.

Решение 2: Программное обновление состава типов

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

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


// Получаем ссылку на предопределенный вид субконто
ВидСубконтоСсылка = ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.СчетаФактурыПолученные;

// Получаем объект для редактирования
ВидСубконтоОбъект = ВидСубконтоСсылка.ПолучитьОбъект();

// Формируем новый массив типов на основании текущего состава
МассивТекущихТипов = ВидСубконтоОбъект.ТипЗначения.Типы();

// Добавляем новый тип (например, Заявление о ввозе)
МассивТекущихТипов.Добавить(Тип("ДокументСсылка.ЗаявлениеОВвозеТоваров"));

// Устанавливаем новое ОписаниеТипов для объекта
ВидСубконтоОбъект.ТипЗначения = Новый ОписаниеТипов(МассивТекущихТипов);

// Записываем объект, игнорируя возможные блокировки редактирования предопределенных данных
ВидСубконтоОбъект.ОбменДанными.Загрузка = Истина;
ВидСубконтоОбъект.Записать();

Важный момент: Использование свойства ОбменДанными.Загрузка = Истина позволяет обойти проверки платформы и типовой логики конфигурации, которые могут запрещать изменение предопределенных элементов вручную.

Решение 3: Управление обновлением предопределенных данных

Если проблема носит массовый характер или касается всей конфигурации после обновления, стоит обратить внимание на метод платформы УстановитьОбновлениеПредопределенныхДанных. В платформе 8.3 существует три режима обновления: «Автоматически», «Не обновлять» и «Обновлять только принудительно».

Проанализируем ситуацию через консоль кода:


// Установим режим автоматического обновления для плана видов характеристик
ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.УстановитьОбновлениеПредопределенныхДанных(ОбновлениеПредопределенныхДанных.ОбновлятьАвтоматически);

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

Решение 4: Кэш метаданных и тестирование базы

Иногда причиной расхождения данных является «залипание» серверного кэша метаданных. Рассмотрим по шагам процесс очистки:

  1. Остановите службу сервера 1С:Предприятие.
  2. Очистите содержимое папки snccntx в каталоге сервера (там хранятся снимки конфигурации).
  3. Очистите локальный кэш пользователя на рабочем месте.
  4. Запустите конфигуратор и выполните Тестирование и исправление с включенной опцией «Реструктуризация таблиц информационной базы».

Реструктуризация — это наиболее радикальный, но действенный метод, который заставляет платформу пересоздать таблицы базы данных в соответствии с текущей структурой метаданных конфигуратора. Это часто помогает, если «галочка» в конфигураторе стоит, но поле в БД под этот тип данных еще не расширено.

Дополнительные нюансы для версии КОРП

В версии «Бухгалтерия предприятия КОРП» учет НДС и импортных операций (включая ЕАЭС) сильно завязан на общие модули. Даже если вы добавили тип в субконто, проверьте, не накладывается ли программный фильтр в форме выбора. Посмотрите в модуле менеджера плана счетов или в модулях учета НДС, нет ли там жесткого ограничения состава типов при открытии формы выбора (процедура ПриСозданииНаСервере или использование параметров СвязиПараметровВыбора).

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

← На главную