Многие пользователи, переходящие с версии 10.3 на 1С:Управление торговлей 11 (поможет расширение для адаптации при переходе на УТ 11) (или ERP и Комплексную автоматизацию 2), сталкиваются с неожиданным изменением: в стандартной форме списка номенклатуры отсутствуют привычные колонки с остатками товаров на складах и ценами. На первый взгляд это кажется неудобным, но такое решение разработчиков 1С продиктовано технической архитектурой современных систем на управляемых формах. Рассмотрим подробнее, почему так произошло и какими способами можно вернуть или заменить этот функционал.
Для начала разберем ситуацию с точки зрения производительности. В старых версиях системы (УТ 10.3) использовались обычные формы, где расчет и вывод данных происходил иначе. В УТ 11 основным инструментом отображения списков является динамический список. Его главная задача — мгновенно открываться и быстро пролистываться, загружая данные из базы порциями.
Проанализируем, что происходит, если мы добавим колонку «Остаток» напрямую в такой список:
ТоварыНаСкладах и рассчитать итоги на текущий момент. Если в списке тысячи позиций, а складов десятки, производительность резко падает.Именно поэтому фирма 1С вынесла эти данные в специализированные инструменты. Рассмотрим их по порядку.
Выясним, где же теперь находятся те самые остатки и цены, к которым привыкли менеджеры. Основным инструментом для оперативной работы является обработка ПодборТоваровВДокументПродажи (или аналогичная для закупок) — для этого подойдёт вывод остатков и цен в формы списка и выбора. Она вызывается непосредственно из документов (например, из Заказа клиента).
В форме подбора реализованы:
Это штатный и наиболее правильный путь работы в системе. Если менеджеру нужно видеть остатки для продажи или заказа поставщику, он должен делать это именно через форму подбора, так как она учитывает контекст конкретной сделки.
Если нам все же необходимо просматривать остатки, находясь в общем справочнике «Номенклатура», разберем штатную возможность использования контекстной информации. В правой части формы списка часто располагается панель (которую можно включить в настройках формы), отображающая данные по одной выделенной строке.
Посмотрим, как это работает: при навигации по списку система делает быстрый запрос к базе только для одного товара и выводит информацию об остатках на складах и ценах в боковую панель. Это компромиссное решение, которое не замедляет работу списка, но дает нужную информацию.
Проанализируем ситуацию, когда менеджеру нужно увидеть общую картину остатков. Для этого лучше всего подходят контекстные отчеты. В форме списка номенклатуры перейдите в меню Отчеты и выберите пункт Остатки и доступность товаров.
Система сформирует отчет с фильтром по текущей позиции или группе товаров. В нем будут видны не только физические остатки, но и:
Если бизнес-процессы категорически требуют наличия колонок в списке, мы можем реализовать это через расширение конфигурации — есть вывод свободных остатков и цен в список номенклатуры. Разберем основные методы реализации, чтобы минимизировать торможение системы.
Метод А: Добавление вычисляемых полей в динамический список
Мы можем изменить запрос динамического списка, добавив левое соединение с регистром сведений ЦеныНоменклатуры (срез последних) или регистром накопления ТоварыНаСкладах (остатки).
Рассмотрим пример упрощенного запроса для динамического списка:
ВЫБРАТЬ
СправочникНоменклатура.Ссылка КАК Ссылка,
СправочникНоменклатура.Код КАК Код,
СправочникНоменклатура.Наименование КАК Наименование,
ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, 0) КАК Остаток
ИЗ
Справочник.Номенклатура КАК СправочникНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладахОстатки
ПО СправочникНоменклатура.Ссылка = ТоварыНаСкладахОстатки.Номенклатура
Важно: При таком подходе обязательно нужно наложить фильтр по конкретному складу в параметрах виртуальной таблицы остатков, иначе данные будут некорректными или их получение будет слишком долгим.
Метод Б: Использование вспомогательных регистров
Для высоконагруженных систем рекомендуется создать отдельный регистр сведений, куда регламентным заданием (например, раз в 15-30 минут) будут записываться «плоские» данные по остаткам и ценам. Динамический список будет читать данные из этого регистра мгновенно, так как ему не придется выполнять сложные вычисления остатков в момент прокрутки списка.
Если вы решили дорабатывать форму, следуйте этим правилам:
Таким образом, отсутствие колонок остатков в УТ 11 — это не ошибка, а особенность архитектуры, направленная на стабильность работы системы. Оптимальным решением будет использование штатной Формы подбора или настройка Панели дополнительной информации — удобнее через колонки остатков и цен в стиле УТ 10.3.