Номенклатура (Запрос) с учетом иерархии

В данном примере продемонстрирована настройка выгрузки справочника номенклатуры с учетом иерархии с помощью Экстрактора 1С. В качестве источника данных мы будем использовать «Запрос».

Иногда бывает так, что у номенклатура в 1С построена не сбалансировано, какие то позиции товара лежат на 2-м уровне иерархии, какие-то на 4-м и т.д. В таких случаях можно воспользоваться методом настройки выгрузки продемонстрированном в данном примере.

Итак, приступим.

1. Создаем новый проект, воспользовавшись Инструкцией по созданию проекта: Этап 1. Создание нового проекта.

2. Создаем набор данных с типом источника данных “Запрос“, воспользовавшись Инструкцией по созданию проекта: Этап 2. Создание набора данных.

3. Вставляем ниже представленный текста запрос в окно для текста запроса и нажимаем “Далее“ в правом нижнем углу окна.

ВЫБРАТЬ ВЫБОР КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель.Родитель КОГДА Номенклатура.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель ИНАЧЕ " " КОНЕЦ КАК НоменклатураУровень1, ВЫБОР КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель ИНАЧЕ " " КОНЕЦ КАК НоменклатураУровень2, ВЫБОР КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель ИНАЧЕ " " КОНЕЦ КАК НоменклатураУровень3, ВЫБОР КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ТОГДА Номенклатура.Родитель ИНАЧЕ " " КОНЕЦ КАК НоменклатураУровень4, Номенклатура.Ссылка КАК Номенклатура, Номенклатура.Код КАК Код, Номенклатура.Артикул КАК Артикул, Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры, Номенклатура.ТипНоменклатуры КАК ТипНоменклатуры, ПОДСТРОКА(Номенклатура.Наименование, 1, 2) КАК Буква, Номенклатура.НаименованиеПолное КАК НаименованиеПолное, Номенклатура.Производитель КАК Производитель, Номенклатура.Наименование КАК Наименование ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ ПОДСТРОКА(Номенклатура.Наименование, 1, 2) = &Буква И Номенклатура.ЭтоГруппа = ЛОЖЬ

Остановимся подробнее на условии:

ГДЕ ПОДСТРОКА(Номенклатура.Наименование, 1, 2) = &Буква И Номенклатура.ЭтоГруппа = ЛОЖЬ

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

4. Проверяем, чтобы все поля были выделены, ничего не меняем. Параметры буквы мы будем задавать отдельно с помощью обработчиков и нажимаем “Далее“.

Примечание

Об обработчиках подробнее можно прочитать в статье “Обработчики“.

5. Добавляем дополнительное поле "НоменклатураГуид“.

Так как впоследствии данный справочник, скорей всего, будет связываться с какими-то фактами, например, с выручкой, и при этом должна быть видна иерархия номенклатуры, то необходимо в результирующую таблицу добавить поле “НоменклатураГуид“, это делается на этапе изменения исходных данных.

Выбираем вариант “Изменить“, нажимаем “Далее“.

В открывшемся окне выбираем поле “НоменклатураГуид“ и нажимаем “Далее“. Затем выбираем подключение или создаем новое, снова нажимаем “Далее“.

6. Создаем новую таблицу.

Выбираем базу и даем название таблице.

В сопоставлении полей оставляем все как есть:

Нажимаем “Далее“.

Пропускаем этап расширенных настроек.

7. После того как настройка проекта завершена, Экстрактор 1С вернется к окну проекта, здесь задаем название проекта, заполнив текстовое поле “Наименование“ и нажимаем “Записать”.

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

Примечание

Об обработчиках подробнее можно прочитать в статье “Обработчики“.

Для этого заходим в настройки строки проекта, нажав значок , выбираем “Обработчик формирования очереди для первичной/полной выгрузки данных“, активируем переключатель “Обработчик:“, выбираем “Предопределенный обработчик“, указываем инициализацию “Инициализация очереди выгрузки по подстроке реквизита“.

Нажимаем кнопку настройки параметров обработчика.

И, в открывшемся окне, указываем следующие данные:

  • Вид объекта — Справочники;

  • Имя объекта — Номенклатура;

  • Поле реквизита — Наименование;

  • Имя параметра — Буква;

  • Начало подстроки — 1;

  • Длина подстроки — 2.

Нажимаем “Сохранить и закрыть“.

Настраиваем “Обработчик формирования очереди при изменении объектов” аналогичным образом:

  • устанавливаем флаг “Вкл“ для вида объекта “Справочники“;

  • выбираем из выпадающего списка вид обработчика — “Предопределенный обработчик“;

  • выбираем из выпадающего списка обработчик — “Регистрация изменений по подстроке реквизита“.

  • нажимаем ссылку “Настройка” в столбце “Параметры“.

  • в открывшемся окне указываем:

    • Поле реквизита — Наименование;

    • Начало подстроки — 1;

    • Длина подстроки — 2.

Нажимаем “Сохранить и закрыть“.

В окне настройки строки проекта нажимаем “Сохранить“, затем “Применить и закрыть“.

8. В окне проекта последовательно нажимаем кнопки “Записать“, “Сформировать очередь” и “Выполнить проект“.

Теперь посмотрим на результат. Нажимаем кнопку “Открыть очередь“.

В результате у нас были перебраны все первые буквы, которые есть в этой конкретной конфигурации (важно понимать, что не все буквы алфавита, и именно первые буквы использующиеся в конкретной конфигурации).

Примечание

При выгрузке будет указываться количество строк, которые начинаются на ту или иную букву.