Как выделить документы в списке при нехватке остатков на складе в 1С:Управление торговлей 11?

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

В процессе работы с конфигурацией «1С:Управление торговлей 11» часто возникает необходимость наглядно видеть в списке те документы Реализация товаров и услуг, по которым на складе не хватает физического или свободного остатка. Рассмотрим подробнее, какими техническими и типовыми средствами можно решить эту задачу, а также проанализируем возможные проблемы с производительностью при доработке динамических списков.

Доработка динамического списка через расширение конфигурации

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

Проанализируем алгоритм выполнения доработки:

  1. Создадим расширение конфигурации и добавим в него форму списка документа Реализация товаров и услуг.
  2. В настройках динамического списка включим Произвольный запрос.
  3. Свяжем табличную часть документа с остатками номенклатуры с помощью левого соединения. В выражении поля формируем признак нехватки товара:

ВЫБОР
	КОГДА ТаблицаДокумента.Количество > ЕСТЬНУЛЛ(ТаблицаОстатков.КоличествоОстаток, 0)
		ТОГДА ИСТИНА
	ИНАЧЕ ЛОЖЬ
КОНЕЦ КАК ТоварВНаличии

После получения поля ТоварВНаличии в настройках условного оформления формы списка задаем правило: если ТоварВНаличии равно Истина, то устанавливаем цвет фона или текста строки в красный цвет.

Ограничения производительности и риски при соединении с остатками

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

Выделим ключевые причины замедления системы:

  1. Запрет временных таблиц: В произвольных запросах динамических списков не допускается использование временных таблиц. Все соединения с регистрами выполняются через вложенные запросы.
  2. Повторный расчет при прокрутке: СУБД выполняет расчет остатков для всех позиций из видимой порции документов при каждом пролистывании страницы или обновлении списка. При большом объеме номенклатурных позиций в документах это создает высокую нагрузку на MS SQL Server или PostgreSQL.

Альтернативные архитектурные решения

Если динамический расчет остатков приводит к зависаниям списка реализаций, проанализируем более оптимальные способы реализации подсветки:

1. Использование обработчика ПриПолученииДанныхНаСервере
Вместо усложнения запроса динамического списка расчёт остатков выполняется программно в обработчике формы ПриПолученииДанныхНаСервере. В этом случае платформой обрабатывается только порция строк, фактически выведенных на экран пользователя. На сервере собираются ссылки на видимые документы, одним точечным запросом проверяются остатки и оформляются ячейки списка.

2. Регистрация признака дефицита при проведении или регламентным заданием
В структуру конфигурации добавляется дополнительный реквизит документа или независимый регистр сведений. При проведении документа или по расписанию фоновым заданием рассчитывается остаток и фиксируется флаг ЕстьНехватка. В динамический список выводится готовое индексированное поле, по которому настраивается стандартное условное оформление без обращения к регистрам остатков в момент отображения списка.

Типовые инструменты 1С:УТ 11 для контроля обеспечения

Посмотрим на проблему с точки зрения типового функционала 1С:Управление торговлей 11. Чтобы избежать необходимости разрешать отгрузки в минус и городить технические «костыли», рекомендуется использовать штатные механизмы программы:

← На главную