При работе в современных конфигурациях на базе 1С:ERP, 1С:Комплексная автоматизация или 1С:Управление торговлей 11 программисты часто сталкиваются с ситуацией, когда при попытке открыть карточку организации или выбрать её в документе (например, в «Авансовом отчете») система выдает критическую ошибку: «Невозможно определить вид организации. Обратитесь к администратору». Эта проблема особенно актуальна при переносе данных из других систем или при программном создании объектов. Рассмотрим подробно, почему это происходит и как привести базу в рабочее состояние.
Прежде всего, разберем механизм работы формы справочника Организации. В отличие от простых справочников, форма организации в ERP является динамической. Это означает, что при открытии срабатывает программный код в процедуре ПриСозданииНаСервере, который должен определить, какой именно интерфейс показать пользователю: для юридического лица, для индивидуального предпринимателя или для обособленного подразделения.
Проанализируем ситуацию: если в базе данных значения ключевых реквизитов заполнены некорректно, противоречат друг другу или вовсе отсутствуют (например, после обмена через Конвертацию данных 2.1), программные алгоритмы конфигурации «заходят в тупик». Система не понимает, какой набор полей и закладок ей выводить, и выбрасывает исключение, которое видит пользователь. При этом стандартными средствами интерактивно исправить данные невозможно, так как форма просто не открывается.
Выясним одну из самых распространенных «поверхностных» причин. В 1С:ERP существует жесткая связь между настройками программы и поведением справочников. Рассмотрим ситуацию, когда после очистки справочника или при первичном наполнении базы перестает открываться даже список организаций.
Для решения этой проблемы выполним следующие действия:
Если эта галка выключена, а в справочнике Организации программно создано более одного элемента (или один элемент, но с некорректными признаками), система может блокировать стандартный выбор. Установка этого флага часто «оживляет» список и позволяет перейти к редактированию конкретных карточек.
Проанализируем структуру данных справочника. В процессе развития конфигураций 1С произошло наложение нескольких стандартов БСП (Библиотеки стандартных подсистем). В результате в справочнике Организации сосуществуют два очень похожих реквизита:
ЮрФизЛицо — перечисление, часто используемое в старых механизмах или специфических модулях.ЮридическоеФизическоеЛицо — более современный стандарт, на который опирается большинство процедур в ERP.Посмотрим на типичную ошибку при использовании Конвертации данных 2.1. Программист настраивает правила обмена и переносит значение только в один из этих реквизитов. В итоге, при открытии формы, логика конфигурации видит пустое значение во втором реквизите и выдает ошибку определения вида организации.
Важный совет: всегда заполняйте оба реквизита идентичными значениями из перечисления ЮридическоеФизическоеЛицо (или соответствующего ему типа в вашей версии конфигурации). Именно на основании реквизита ЮридическоеФизическоеЛицо в коде часто вычисляется тип ЮридическоеЛицо или ИндивидуальныйПредприниматель.
Рассмотрим, как правильно настроить правила конвертации свойств (ПКС), чтобы избежать этой ошибки при загрузке данных. Если мы переносим организацию, нам необходимо гарантировать заполнение «триады» признаков, по которым система определяет вид объекта:
Ложь.Если вы используете обработчик ПоляПоиска или ПередЗагрузкой, убедитесь, что значения не затираются. Пример кода для обработчика ПриЗагрузке в КД 2.1 для справочника организации может выглядеть так:
// Установка базовых реквизитов для корректного открытия формы в ERP
Если НЕ ЗначениеЗаполнено(Объект.ЮридическоеФизическоеЛицо) Тогда
Объект.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
КонецЕсли;
// Уточняем второй дублирующий реквизит для совместимости
Объект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ЮридическоеЛицо;
Если ошибка уже возникла и форма не открывается, воспользуемся «тяжелой артиллерией» — обработкой «Редактирование реквизитов объектов» (входит в состав инструментов разработчика или доступна в консоли администратора). Поскольку мы не можем зайти в карточку, нам нужно изменить значения в таблице базы данных напрямую.
Разберем алгоритм действий:
ЮридическоеФизическоеЛицо. Часто оно оказывается равным Неопределено или пустому значению.ЮридическоеЛицо).ОбособленноеПодразделение. Если это не филиал, установим Ложь.После этих манипуляций форма должна открыться в штатном режиме, так как программный код сможет однозначно идентифицировать тип организации.
Проанализируем ситуацию, описанную в обсуждении: почему в ERP так много дублирующих механизмов? Как отмечают опытные разработчики, система является результатом объединения множества различных подсистем. Это порождает определенную избыточность данных. Например, помимо типа лица, на работу документов (таких как «Авансовый отчет») могут влиять настройки учетной политики, которые также привязаны к организации.
Если вы столкнулись с тем, что после исправления вида организации ошибка сохраняется в конкретном документе, проверьте следующее:
ОбособленноеПодразделение = Истина).Таким образом, решение проблемы «Невозможно определить вид организации» сводится к обеспечению целостности данных в скрытых реквизитах справочника и правильной настройке функциональных опций в разделе администрирования предприятия.