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