При работе в конфигурации 1С:Управление торговлей 11.4 (или аналогичных решениях на базе ERP) пользователи часто сталкиваются со странным поведением формы документа ПриходныйОрдерНаТовары. Проблема проявляется следующим образом: если в документе содержится небольшое количество строк, всё отображается корректно. Однако стоит количеству позиций превысить определенный порог (обычно около 100 строк), как табличная часть визуально становится пустой, хотя счетчик в шапке документа показывает верное количество товаров. Примечательно, что в файловой версии базы данных проблема может отсутствовать, а проявляется она исключительно в клиент-серверном варианте (SQL).
В данной статье мы разберем причины возникновения этой ошибки, выясним, почему «магическое число» в 100 строк играет ключевую роль, и рассмотрим пошаговые инструкции по исправлению ситуации.
Прежде всего, выясним техническую подоплеку. Исследование показывает, что данная ситуация является подтвержденным багом платформы 1С:Предприятие 8.3.19 (в частности, релизов до 8.3.19.1467). Ошибка кроется в механизме отрисовки управляемых форм и передачи данных между сервером и тонким клиентом.
Рассмотрим основные факторы, влияющие на появление ошибки:
Объект.Товары данные есть), но графический компонент Таблица не получает сигнал о перерисовке.rphost, где ошибки кэширования метаданных формы проявляются острее.Поскольку проблема признана программной ошибкой самой платформы, наиболее правильным и долгосрочным решением будет обновление. Разберем, какие версии исправляют данный баг:
Установим версию платформы 8.3.20.1613, 8.3.21.1302 или выше. В этих ветках механизмы передачи данных «сервер-клиент» для табличных частей были существенно переработаны и оптимизированы. Если ваша конфигурация позволяет, рекомендуется переход на актуальные релизы ветки 8.3.22 и выше.
Если оперативно обновить платформу на сервере невозможно (например, из-за жестких регламентов или зависимости от других баз), попробуем программно отключить использование некоторых графических функций, которые могут конфликтовать с отрисовкой таблиц. Проанализируем дополнительные параметры запуска:
/AppRender -nodirect2d
Этот параметр принудительно отключает использование аппаратного ускорения Direct2D, что часто помогает вернуть видимость строк в «проблемных» формах на платформе 8.3.19.
Иногда форма «залипает» из-за сохраненных настроек пользователя (отборы, группировки, условное оформление), которые в SQL-варианте отрабатывают некорректно. Выполним следующие действия для очистки:
Зайдем в меню Администрирование — Настройки пользователей и прав — Персональные настройки пользователей — Настройки внешнего вида. Найдем там документ «Приходный ордер на товары» для проблемного пользователя и удалим все настройки. Также в самой форме документа можно нажать Еще — Установить стандартные настройки.
Если это не помогло, проанализируем состояние серверного кэша. Для этого необходимо выполнить следующие шаги на стороне сервера приложений:
1C:Enterprise 8.3 Server Agent.C:\Program Files\1cv8\srvinfo).snccntx (кэш сеансовых данных) и очистим её содержимое.Рассмотрим ситуацию с точки зрения кода. Чтобы убедиться, что проблема именно в форме, а не в данных, выполним проверку. Создадим расширение и добавим в форму документа новую закладку, на которую выведем ту же самую табличную часть Товары, но в максимально простом виде, без типовых обработчиков. Если на новой закладке товары видны, значит, проблема в логике типовой формы (события ПриАктивизацииСтроки или динамические отборы).
Посмотрим на пример кода, который можно использовать в расширении для принудительного обновления отображения, если данные в коллекции есть, но на экране пусто:
&НаКлиенте
Процедура ПринудительноОбновитьТаблицу()
// Принудительная команда пересчета видимости
ЭтаФорма.ОбновитьОтображениеДанных();
// В некоторых случаях помогает временное переключение фокуса
ТекущийЭлемент = Элементы.Товары;
КонецПроцедуры
Также проанализируем событие ПриСозданииНаСервере. Если в документе используются расширения, которые добавляют свои колонки в Приходный ордер, попробуем временно их отключить. Часто неоптимизированный код в расширениях, работающий с видимостью колонок, может «ломать» стандартный алгоритм отрисовки строк в 1С 8.3.19 на SQL.
Подведем итог нашему разбору. Если в вашем приходном ордере пропадают товары при достижении 100 строк на SQL-базе:
/AppRender -nodirect2d.Следуя этим шагам, мы сможем восстановить работоспособность складского учета и избежать ошибок при приемке товаров.