Вводные
- Конфигурация Управление небольшой фирмой
- Прайс лист поставщика
- Нужно загрузить номенклатуру для последующей загрузки цен и остатков
Вариант решения
- Получить иерархию номенклатуры поставщика
- Состыковать с иерархией номенклатуры поставщика зафиксированной в базе, при отсутствии элементов создать
- Сопоставить иерархию номенклатуры поставщика с группами номенклатуры и категориями номенклатуры
- Создать номенклатуру поставщика
- Создать номенклатуру
- Заполнить дополнительные реквизиты номенклатуры
Доработка структуры данных в 1С
Реализовал в виде расширения, потому что для работы нужно добавить дополнительные реквизиты и регистр сведений.
- для спр. НоменклатураПоставщиков добавлен реквизит зн_ИдентификаторГруппы, выведен на форму элемента группы
- зн_СоответствиеГруппаПоставщикаНоменклатура
- Измерения
- Контрагент - денормализация для удобства выборок
- ГруппаПоставщика
- Ресурсы
- ГруппаНоменклатуры
- КатегорияНоменклатуры
- Измерения
Работа с данными реализована на уровне обработки, в которой присутствуют реквизиты
- ТабличныйДокумент, в текущей реализации использую загрузку через табличный документ
- ТаблицаГруппПоставщика - таблица состыковки идентификаторов и спр. НоменклатураПоставщика
- ИдентификаторЭлемент
- ИдентификаторРодитель
- Наименование
- Элемент
- ДеревоГруппПоставщика - для отображения пользователю
- ГруппыНоменклатуры (динамический список) - для выбора соответствия
- КатегорииНоменклатуры (динамический список) - для выбора соответствия
- Поставщик для фильтрации спр. НоменклатураПоставщика
Получение иерархии
При загрузке исходных данных нужно получить таблицу вида
- Идентификатор
- Идентификатор родителя
- Наименование
- Элемент (по умолчанию постое значение)
Получаем группы номенклатуры поставщика из базы
Сравниваю таблицы значений, использовался алгоритм "Соединение по индексу" из //infostart.ru/public/326983/, с корректировкой проверки ресурсов (проверяю только идентификаторы) на заполнение "Элемент".
Строки разницы добавляю в основную таблицу и отмечаю строки которые есть в базе но нет в исходных данных
Формирую дерево из таблицы значений, использована наработка //infostart.ru/1c/articles/73969/, вывожу на форму
В результате получаю заполненное дерево. Для примера намеренно изменил идентификатор для демонстрации работы при расхождениях.
Состыковка иерархии
Состыковку с группами номенклатуры поставщика сделал через изменение флага строки дерева
Привязку групп и категорий сделал через кнопки возле динамических списков.
Итог
В результате получил состыковку групп, которую в дальнейшем буду использовать для создания номенклатуры.
Благодарю за внимание.