У многих небольших компаний возникает потребность оперировать не только своими остатками, но и остатками поставщиков. К примеру, интернет-магазины, дропшипперы, дистрибьюторы и т.д.
Одним из вариантов без программирования будет заведение виртуальной организации и виртуальных складов примерно по такой по методологии: //infostart.ru/1c/articles/546596/
Но иногда заказчик ставит задачу доработки конфигурации. При этом никто не отменял вопрос обновления учетной системы, в связи с чем кроить основную конфигурацию не хочется.
В этом случае удобным средством для реализации является расширение конфигурации. В данной публикации представлено расширение для УНФ.
Задачи:
- Хранить остатки и цены поставщиков в УНФ
- Обновлять их через запрос к сервису прайсов или вручную через файл
- Отображать остатки поставщика в отдельной колонке в списке номенклатуры и в карточке номенклатуры
- Учитывать эти остатки как «свои» при выгрузке на сайт
Технические особенности:
- Конфигурация УНФ, релиз 1.6.20
- Формат файла обмена – json
- HTTP и HTTPS соединения с сервисом прайсов (в моем случае AIMS)
Структрура данных.
Конфигурация поставщика не меняется вообще.
Для сопоставления нашей номенклатуры с номенклатурой поставщика отвечает штатный справочник «НоменклатураПоставщиков».
Хранение данных об остатках и ценах поставщиков реализовано через Регистр Сведений «ОстаткиПоставщиков» (в расширении).
Информация о настройках связи с сервером прайсов хранится в РС «Настройки (Прайсы)» (в расширении).
За параметры синхронизации и создания новой номенклатуры поставщика отвечает РС «Дополнительные реквизиты партнеров» (в расширении). Иными словами – отвечает осуществляется ли для данного Партнера синхронизация через наименование, через код или через артикул.
Документом, используемым для отображения загружаемых остатков и цен конкретного поставщика является док-т «Прайс-лист поставщика» (в расширении).
В шапке – Партнер-поставщик, в ТЧ «Состав» непосредственно цена и остаток поставщика, а также данные для синхронизации: Наименование/Код/Артикул пришедшие от поставщика, найденная по ним Номенклатура поставщика, определенная по ней наша номенклатура, а также Брэнд номенклатуры.
Документ непроводной, ничего не двигает. Имеет 2 основные команды: а)«Зарегистрировать» - по которой создает записи в РС «ОстаткиПоставщиков», б) «Сопоставить номенклатуру» - по которой создаёт элементы справочника «НоменклатураПоставщиков» и (опционально) сами элементы Номенклатуры.
Кроме того, на форме док-та «Прайс-лист поставщика» в контекстном меню есть возможность привязать Брэнд к производителю командой «Связать с брендом...». Для хранения привязок добавлен РС «Синонимы» (в расширение).
Формат JSON-файла со списком прайсов
// [
// {
// "id":123456,
// "createdAt":"2019-11-10T23:43:53",
// "seen":false,
// "supplier":{"id":"2345","key":"УНФ-00012","name":"Форпост"},
// "currency":{"id":"643","code":"RUB","name":"Рубль"}
// },
// {
// "id":123457,
// "createdAt":"2019-12-03T07:24:12",
// "seen":false,
// "supplier":{"id":"2345","key":"УТ-000251","name":"Ступино"},
// "currency":{"id":"643","code":"RUB","name":"Рубль"}
// }
// ]
Формат JSON-файла непосредственно прайса
//{
// "id":987659,
// "createdAt":"2019-12-10T22:43:53",
// "seen":false,
// "supplier":{"id":"9876","key":"УНФ-00317","name":"Рога и копыта"},
// "currency":{"id":"643","code":"RUB","name":"Рубль"},
// "extHeaders":[
// {"id":1, "name":"opt_price"},
// {"id":"2", "name":"min_amount"}
// ]
// "items":[
// {
// "code":"УНФ-00123",
// "article":"1246M",
// "brand":"LONDA",
// "name"="Фольга цветная Londa 4шт*50м 99350035266",
// "amount":4,
// "price":2549.98,
// "rrp":4000,
// "extraFields":[
// {"id":1, "value":2478.00},
// {"id":2, "value":4}
// ]
// }
// ]
//}
Алгоритм работы:
- В обработке «Загрузка прайсов поставщиков» (в расширении) получаем [http-запросом] список возможных прайсов от разных поставщиков.
Есть фильтры по поставщику и по дате прайса. Галочкой выбираем нужные для загрузки . и кнопкой «загрузить прайсы» формируем [через чтение json] док-т «Прайс-лист поставщика» (в расширении). - Заходим в созданный документ. В случае, если на некоторые позиции прайса нет номенклатуры поставщиков, проводим автоматическое сопоставление и создание оной.
- Тут же кнопкой «Зарегистрировать» регистрируем цены и остатки в нужном РС.
- В форме списка номенклатуры и в форме элемента номенклатуры показываются цены и остатки поставщика.
- При штатной выгрузке на сайт остатки поставщика учитываются в составе наших остатков. Для чего (в расширении) изменен план обмена «ОбменУправлениеНебольшойФирмойСайт»
Установка
Подключить расширение можно стандартными средствами через меню «Компания - Администрирование - Печатные формы, отчеты и обработки - Расширения»
Желательно выключить галку «безопасный режим», хотя у меня работало и так..
После этого в интерфейсе появляется меню "Прайсы".
Хочется отметить, что разработка вряд ли кому-то подойдёт на 100% как продукт из коробки - «купил-настроил-запустил». Хотя бы потому что механизм получения прайсов поставщиков и их формат у всех разный. Прежде все это заготовка для тех разработчиков, кто планирует реализовывать подобное у себя.
Польза публикации:
- Методология хранения остатков и цен поставщиков
- Методология чтения json
- Методология http-запросов
- Механизм расширений