При работе с конфигурацией 1С:Бухгалтерия предприятия 3.0 пользователи и разработчики часто сталкиваются с ситуацией, когда в справочнике Номенклатура необходимо заполнить Код по ОКПД2. Однако, несмотря на то что в конфигураторе этот реквизит присутствует на форме и его свойство Видимость установлено в значение Истина, в пользовательском режиме поле упорно не отображается. Давайте разберем эту ситуацию подробно, выясним технические причины такого поведения системы и найдем способы решения задачи.
Первое, что делает опытный пользователь или программист — проверяет настройки формы непосредственно в режиме 1С:Предприятие. Через меню «Изменить форму» мы пытаемся найти нужный элемент, но его там нет, либо флажок видимости стоит, а поле все равно отсутствует. Проанализируем, что происходит на уровне платформы:
Видимость, это еще не гарантирует его показ. Платформа может управлять видимостью динамически.Функциональной опции, которая в текущей базе выключена (значение Ложь), платформа полностью исключает этот элемент из интерфейса, игнорируя любые программные установки Элементы.КодОКПД2.Видимость = Истина.Рассмотрим техническую реализацию реквизита КодОКПД2 в типовом решении. В конфигурации «Бухгалтерия предприятия» этот реквизит жестко связан с функциональной опцией ИспользоватьУведомленияОКонтролируемыхСделках.
Важный нюанс: функционал контролируемых сделок реализован исключительно в версии КОРП. В версиях ПРОФ и Базовая константа, отвечающая за эту опцию, всегда имеет значение «Ложь», и интерфейсных механизмов для её включения просто не существует. Именно поэтому, даже если вы перенесете поле в другую группу на форме или попытаетесь программно включить его отображение, платформа скроет его при создании формы на сервере, так как опция не активна.
Если ваша организация использует версию ПРОФ, но вам критически важно хранить КодОКПД2 для отчетности или ЭДО, самым правильным и безопасным методом будет использование механизма Дополнительных реквизитов. Это позволит избежать изменения типовой конфигурации и проблем при последующих обновлениях.
Разберем по шагам, как это настроить:
Дополнительные реквизиты и сведения включен.Дополнительные реквизиты, найдем в списке справочник Номенклатура.Теперь в карточке номенклатуры появится вкладка (или раздел) Дополнительные реквизиты, где вы сможете хранить необходимые коды. Для вывода этого кода в печатные формы (например, УПД) можно воспользоваться механизмом редактирования макетов печатных форм.
Если же вам необходимо использовать именно системный реквизит КодОКПД2 (например, для интеграции со сторонними сервисами или сложного обмена данными), нам придется «обмануть» логику функциональных опций. Рассмотрим, как это сделать правильно с помощью расширения.
Нам необходимо переопределить поведение формы справочника Номенклатура. Проанализируем код процедуры ПриСозданииНаСервере. Мы можем программно разорвать связь элемента формы с функциональной опцией.
Пример кода в расширении для формы элемента номенклатуры:
&НаСервере
&ИзменениеИКонтроль("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Вызываем оригинальный обработчик
ЗдесьДолженБытьВызовОригинала();
// Принудительно устанавливаем видимость, игнорируя функциональную опцию
ЭлементКодОКПД2 = Элементы.Найти("КодОКПД2");
Если ЭлементКодОКПД2 <> Неопределено Тогда
ЭлементКодОКПД2.Видимость = Истина;
КонецЕсли;
КонецПроцедуры
Внимание: простого установления видимости может быть недостаточно, если платформа блокирует само Данные элемента. В таком случае в расширении следует найти саму ФункциональнуюОпцию и проверить, какие объекты в неё входят. Однако наиболее стабильным программным методом будет перенос элемента из-под влияния ФО в коде ПриСозданииНаСервере.
Проанализируем еще одну ситуацию. Иногда КодОКПД2 требуется для работы с Гособоронзаказами (ГОЗ). В последних релизах 1С:Бухгалтерия КОРП видимость этого поля также может зависеть от настройки Вести учет по ГОЗ. Если ваша база — КОРП, проверьте следующие настройки:
Что касается Электронного документооборота (ЭДО): при отправке УПД система ищет код ОКПД2 в определенных полях. Если вы используете версию ПРОФ и создали «свой» доп. реквизит, вам потребуется подправить модуль обмена ЭДО через расширение, чтобы система знала, откуда брать данные для тега КодОКПД в XML-файле.
Подведем итог нашим изысканиям и выберем оптимальный путь:
Видимость и программного отключения проверки функциональной опции для конкретного элемента формы.Помните, что поле КодОКПД2 часто путают с кодом ТН ВЭД. Для системы прослеживаемости товаров используется именно ТН ВЭД, и этот реквизит доступен во всех версиях программы (ПРОФ и КОРП) при включении соответствующей настройки в разделе «Внешняя торговля».