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