Загрузка справочников

Постановка задачи

Имеем Excel файл следующего содержания
Группа
Материалы
Мебель
Кровать
Мебель
Диван
Инструменты
Молоток
Инструменты
Дрель
Канцтовары
Кнопка
Канцтовары
Скрепка
в котором перечислены материалы. Данный список (колонка Материалы) необходимо загрузить в справочник номенклатура по возможности расположив в существующих группах (колонка Группа)

Реализация

Используя предопределенный шаблоны "Импорт Excel"  импортируем данные в таблицу результата из файла, после чего перейдем на закладку Обработка результата и перетащим обработку Загрузка данных на колонку "Группа" (или "Материалы", в данном примере это не имеет значения)

Добавляется сама обработка Загрузка данных - "Группа" (поскольку обработка данного типа  настраиваемая, создается пустая настройка с именем колонки на которую она перетаскивается, имя настройки можно изменить в дереве доступных обработок, но в этих примерах мы этого делать не будем).

Теперь нам необходимо изменить настройки обработки "Группа", по двойному клику на откроем ее форму.


Настройка совсем пустая. Для добавления правила загрузки (ПКО) справочника номенклатура:
  1. Выделите строку Справочники в дереве объектов;
  2. В контекстном меню выберите кнопку Добавить, или нажмите клавишу Ins;
  3. В появившемся диалоговом окне выберите "Номенклатура";

Поскольку для каждой строки результата запроса нам необходимо создать номенклатуру,  добавленное ПКО "Номенклатура" необходимо загружать явно - для этого в настройках ПКО  необходимо снять флажок Загружать только по ссылке на ПКО.

Также в настройках ПКО необходимо установить флажок Автоматически генерировать код(номер) если он не задан.

Примечание:
Можно заставить систему сгенерировать код, но тогда в этом случае придется отказать от использования 
вложенной обработки ОбменДанными.Загрузка.

Теперь в таблице свойств задаем только необходимые значения:
  • Наименование - используя диалог выбора переменной выберем из текущих данных колонку "Материалы"  и установим галочку Поиск 
  • БазоваяЕдиницаИзмерения - выберем существующее значение шт.
  • ВидНоменклатуры - выберем существующее значение "Материал"
  • ЕдиницаДляОтчетов
  • ЕдиницаХраненияОстатков
Для единиц хранения и отчетов выбрать значение из существующих в базе не получится, их тоже придется загружать (справочник единицы измерения подчинен справочнику номенклатура)
В колонке ПКО для обоих строк выбираем ПКО которое будет загружать(искать) эти значения.
Примечание 
Если ПКО соответствующего типа не было обнаружено в 
дереве объектов и поле не является значением составного типа. То при выборе значение таблице свойств в колонке ПКО, будет предложено создать новое ПКО 

Важно:
ПКО указанное в таблице свойств используется только в том случае если колонка "Значение" не заполнена.

Таблица свойств для ПКО номенклатура будет иметь следующий вид:

Теперь перейдем к ПКО "Единицы измерения" и зададим необходимые настройки.
Также уставим флажок генерации кода, а вот флажок Загружать только по ссылке на ПКО
оставим включенным поскольку создание единицы измерения необходимо именно для загрузки справочника номенклатура
В таблице свойств  укажем необходимые значения:
  • Владелец -  укажем ПКО "Номенклатура" именно по правилам данного ПКО будет загружаться(искаться) владелец, по данному реквизиту так же необходимо выполнить поиск существующего значения;
  • Наименование -  "шт";
  • ЕдиницаПоКлассификатору - выберем существующее значение шт., по данному реквизиту выполняется поиск;
  • Коэффициент - 1;

Таблица свойств для ПКО номенклатура будет иметь следующий вид:

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

В колонке ПКО, таблицы свойств для поля Родитель создадим новое ПКО "Номенклатура _Родитель

Для нового ПКО в настройках изменим флажки:
  • Не создавать новый объект , если он НЕ найден  - объект будем только искать;
  • Не замещать

В таблице свойств укажем только 2 значения по которым и будет производится поиск:
  • ЭтоГруппа  - значение истина;
  • Наименование -  используя диалог выбора переменной выберем из текущих данных колонку "Группа" 
Таблица свойств для ПКО "Номенклатура_родитель" будет иметь следующий вид:


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

Comments