Как добавить всю группу товаров или несколько позиций одновременно в документ «1С:Розница 2.2»?

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

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

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

Выясняем причину: почему стандартный «Подбор» не переносит группы товаров

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

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

Способ 1. Загрузка списка через Excel (Штатный обходной путь)

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

Давайте разберем этот процесс по шагам:

  1. Откроем справочник Номенклатура (раздел НСИ — Номенклатура).
  2. Перейдем в левой панели или в списке в ту группу (папку) товаров, которую нам необходимо перенести в документ.
  3. В правом верхнем углу формы списка нажмем кнопку «Еще» и выберем команду «Вывести список».
  4. В появившемся диалоговом окне настроек вывода списка обязательно отметим галочками ключевые поля для идентификации товаров: Штрихкод, Код или Артикул, а также Наименование. Нажмем кнопку «ОК».
  5. Платформа сформирует плоскую текстовую таблицу со всеми товарами, находящимися в этой папке.
  6. Нажмем главное меню Файл — Сохранить как... и сохраним этот документ на рабочий стол в формате Excel (.xlsx).
  7. Теперь перейдем в наш документ (например, Поступление товаров или Оприходование товаров).
  8. Над табличной частью «Товары» найдем и нажмем кнопку «Загрузить из файла».
  9. В открывшемся помощнике скопируем колонку со штрихкодами или кодами из ранее сохраненного Excel-файла и вставим ее в поле ввода. Программа автоматически сопоставит позиции по штрихкоду или коду и добавит всю группу товаров в документ за несколько секунд.

Способ 2. Использование механизма «Наборы номенклатуры»

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

Набор в 1С — это виртуальный шаблон, который сам по себе не хранится на складе, но при выборе в документе автоматически «распаковывается» на составляющие его товары. Настроить его можно следующим образом:

  1. В справочнике Номенклатура создадим новый элемент.
  2. В поле «Тип номенклатуры» выберем значение «Набор».
  3. Перейдем к настройке состава набора и добавим туда все товары из нашей группы.
  4. При заполнении любого документа поступления или списания выберем этот созданный набор. Программа автоматически заполнит табличную часть всеми входящими в него позициями как отдельными строками.

Способ 3. Подключение внешней обработки заполнения табличной части

Для полной автоматизации процесса без изменения типовой конфигурации отлично подходит механизм дополнительных отчетов и обработок, работающий на базе Библиотеки стандартных подсистем (БСП). Мы можем написать или скачать внешнюю обработку заполнения табличной части с расширением .epf.

После регистрации такой обработки в меню Администрирование — Печатные формы, отчеты и обработки, в документе над табличной частью «Товары» появится кнопка «Заполнить по группе».

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


Функция ПолучитьТаблицуТоваровГруппы(ВыбраннаяГруппа) Экспорт
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	Номенклатура.Ссылка КАК Номенклатура,
        |	Номенклатура.ЕдиницаИзмерения КАК Упаковка,
        |	1 КАК Количество
        |ИЗ
        |	Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |	Номенклатура.Родитель В ИЕРАРХИИ(&ВыбраннаяГруппа)
        |	И НЕ Номенклатура.ЭтоГруппа
        |	И НЕ Номенклатура.ПометкаУдаления";
        
    Запрос.УстановитьПараметр("ВыбраннаяГруппа", ВыбраннаяГруппа);
    
    Возврат Запрос.Выполнить().Выгрузить();
    
КонецФункции

Этот запрос находит абсолютно все элементы справочника, которые подчинены выбранной группе (включая любые вложенные подпапки), отсекает сами группы (папки) с помощью условия НЕ Номенклатура.ЭтоГруппа, а также игнорирует помеченные на удаление позиции. Полученная таблица значений затем легко переносится в документ-владелец через стандартное API БСП.

Способ 4. Использование расширения конфигурации (cfe)

Наиболее удобным решением с точки зрения конечного пользователя является использование специального расширения конфигурации. Расширение не снимает программу с поддержки, что позволяет без проблем обновлять 1С:Розница в будущем.

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

  1. Определить список выделенных строк в форме подбора.
  2. Для каждой выделенной строки проверить, является ли она группой (свойство ЭтоГруппа).
  3. Если это группа, программно обойти все её элементы (используя запрос с условием В ИЕРАРХИИ) и поместить их в список подобранных товаров.
  4. Перенести накопленный список в итоговый документ.

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

← На главную