Почему не отображаются товары в приходном ордере УТ 11.4 на SQL-базе и как это исправить?

Программист 1С v8.3 (Управляемые формы) Управленческий учет Торговля и дистрибуция
← На главную

При работе в конфигурации 1С:Управление торговлей 11.4 (или аналогичных решениях на базе ERP) пользователи часто сталкиваются со странным поведением формы документа ПриходныйОрдерНаТовары. Проблема проявляется следующим образом: если в документе содержится небольшое количество строк, всё отображается корректно. Однако стоит количеству позиций превысить определенный порог (обычно около 100 строк), как табличная часть визуально становится пустой, хотя счетчик в шапке документа показывает верное количество товаров. Примечательно, что в файловой версии базы данных проблема может отсутствовать, а проявляется она исключительно в клиент-серверном варианте (SQL).

В данной статье мы разберем причины возникновения этой ошибки, выясним, почему «магическое число» в 100 строк играет ключевую роль, и рассмотрим пошаговые инструкции по исправлению ситуации.

Проанализируем причины возникновения проблемы

Прежде всего, выясним техническую подоплеку. Исследование показывает, что данная ситуация является подтвержденным багом платформы 1С:Предприятие 8.3.19 (в частности, релизов до 8.3.19.1467). Ошибка кроется в механизме отрисовки управляемых форм и передачи данных между сервером и тонким клиентом.

Рассмотрим основные факторы, влияющие на появление ошибки:

  1. Порционная подкачка данных (Ленивая загрузка): Платформа 1С для оптимизации скорости работы не загружает все 1000 строк таблицы сразу. Она подкачивает их порциями (обычно по 20, 45 или 100 строк). Когда пользователь прокручивает список, клиент запрашивает у сервера следующую порцию. В определенных версиях 8.3.19 этот механизм в SQL-режиме дает сбой: сервер передает данные, клиент их получает (поэтому программно в Объект.Товары данные есть), но графический компонент Таблица не получает сигнал о перерисовке.
  2. Разница в протоколах SQL и File: В файловом режиме обмен данными между «сервером» и «клиентом» происходит внутри одного процесса, что нивелирует ошибки сериализации или задержки дескрипторов. В клиент-серверном варианте взаимодействие идет через rphost, где ошибки кэширования метаданных формы проявляются острее.
  3. Аппаратное ускорение Render: На некоторых конфигурациях оборудования графический движок 1С некорректно обрабатывает отрисовку «тяжелых» интерфейсов с большим количеством условного оформления.

Решение 1: Обновление технологической платформы (Основной способ)

Поскольку проблема признана программной ошибкой самой платформы, наиболее правильным и долгосрочным решением будет обновление. Разберем, какие версии исправляют данный баг:

Установим версию платформы 8.3.20.1613, 8.3.21.1302 или выше. В этих ветках механизмы передачи данных «сервер-клиент» для табличных частей были существенно переработаны и оптимизированы. Если ваша конфигурация позволяет, рекомендуется переход на актуальные релизы ветки 8.3.22 и выше.

Решение 2: Изменение параметров запуска клиента

Если оперативно обновить платформу на сервере невозможно (например, из-за жестких регламентов или зависимости от других баз), попробуем программно отключить использование некоторых графических функций, которые могут конфликтовать с отрисовкой таблиц. Проанализируем дополнительные параметры запуска:

  1. Откроем список баз в стартере 1С.
  2. Выберем нужную базу и нажмем «Изменить».
  3. Перейдем на последнюю вкладку настроек.
  4. В поле «Дополнительные параметры запуска» вставим следующую строку: /AppRender -nodirect2d

Этот параметр принудительно отключает использование аппаратного ускорения Direct2D, что часто помогает вернуть видимость строк в «проблемных» формах на платформе 8.3.19.

Решение 3: Диагностика и очистка пользовательских настроек

Иногда форма «залипает» из-за сохраненных настроек пользователя (отборы, группировки, условное оформление), которые в SQL-варианте отрабатывают некорректно. Выполним следующие действия для очистки:

Зайдем в меню Администрирование — Настройки пользователей и прав — Персональные настройки пользователей — Настройки внешнего вида. Найдем там документ «Приходный ордер на товары» для проблемного пользователя и удалим все настройки. Также в самой форме документа можно нажать Еще — Установить стандартные настройки.

Если это не помогло, проанализируем состояние серверного кэша. Для этого необходимо выполнить следующие шаги на стороне сервера приложений:

Решение 4: Программная диагностика (для разработчиков)

Рассмотрим ситуацию с точки зрения кода. Чтобы убедиться, что проблема именно в форме, а не в данных, выполним проверку. Создадим расширение и добавим в форму документа новую закладку, на которую выведем ту же самую табличную часть Товары, но в максимально простом виде, без типовых обработчиков. Если на новой закладке товары видны, значит, проблема в логике типовой формы (события ПриАктивизацииСтроки или динамические отборы).

Посмотрим на пример кода, который можно использовать в расширении для принудительного обновления отображения, если данные в коллекции есть, но на экране пусто:


&НаКлиенте
Процедура ПринудительноОбновитьТаблицу()
    // Принудительная команда пересчета видимости
    ЭтаФорма.ОбновитьОтображениеДанных();
    
    // В некоторых случаях помогает временное переключение фокуса
    ТекущийЭлемент = Элементы.Товары;
КонецПроцедуры

Также проанализируем событие ПриСозданииНаСервере. Если в документе используются расширения, которые добавляют свои колонки в Приходный ордер, попробуем временно их отключить. Часто неоптимизированный код в расширениях, работающий с видимостью колонок, может «ломать» стандартный алгоритм отрисовки строк в 1С 8.3.19 на SQL.

Резюме

Подведем итог нашему разбору. Если в вашем приходном ордере пропадают товары при достижении 100 строк на SQL-базе:

  1. Первым делом проверьте версию платформы. Если это 8.3.19.х — планируйте обновление до 8.3.20+.
  2. В качестве быстрой помощи используйте ключ запуска /AppRender -nodirect2d.
  3. Для локальной очистки сбросьте настройки формы в пользовательском режиме.

Следуя этим шагам, мы сможем восстановить работоспособность складского учета и избежать ошибок при приемке товаров.

← На главную