Часто в процессе работы с конфигурацией 1С:Управление торговлей 11 возникает задача по массовому дозаполнению справочника Номенклатура данными, которые приходят из сторонних файлов Excel. Например, у вас есть список Артикул и Производитель, и вам нужно обновить карточки товаров в базе. Рассмотрим, как подойти к этой задаче профессионально и эффективно.
Самый надежный и быстрый способ для разработчика — это загрузка данных файла во временную таблицу и последующее сопоставление с данными справочника с помощью запроса. Этот метод позволяет обрабатывать тысячи записей за считанные секунды.
Рассмотрим пошагово, как это реализовать:
ТабличныйДокумент или массив структур.МенеджерВременныхТаблиц и поместите туда считанные данные.Номенклатура по полю Артикул.Пример структуры запроса для сопоставления данных:
ВЫБРАТЬ
ВременнаяДанныеПоиска.Артикул КАК Артикул,
ВременнаяДанныеПоиска.Производитель КАК Производитель
ПОМЕСТИТЬ ВременнаяДанныеПоиска
ИЗ
&ТаблицаДанных КАК ВременнаяДанныеПоиска
;
ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК СсылкаНаТовар,
ВременнаяДанныеПоиска.Производитель КАК НовыйПроизводитель
ИЗ
ВременнаяДанныеПоиска КАК ВременнаяДанныеПоиска
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура
ПО ВременнаяДанныеПоиска.Артикул = СпрНоменклатура.Артикул
После того как запрос вернул выборку, вам останется только пройтись в цикле по результату, найти объект через СсылкаНаТовар.ПолучитьОбъект(), установить значение реквизита Производитель и сохранить изменения методом Записать().
Если вы часто сталкиваетесь с подобными задачами, написание «велосипеда» каждый раз — не самый эффективный путь. Использование готовых инструментов, таких как PowerTools или специализированные обработки для загрузки прайс-листов, позволяет автоматизировать процесс сопоставления данных.
Работая с внешними инструментами, вы также можете использовать функционал временных таблиц. Суть остается прежней: инструмент берет на себя рутину по парсингу Excel, а вы концентрируетесь на логике обновления данных в базе 1С.
Хотя в 1С:УТ 11 есть штатные механизмы загрузки из табличного документа, они часто оказываются недостаточно гибкими для массовых операций с уже заполненным справочником. При работе с обновлением существующих записей важно:
СокрЛП()), чтобы избежать дублей или ошибок при поиске.Для создания собственной универсальной обработки, которая поможет вам не только с производителем, но и с другими реквизитами (ценовыми группами, номенклатурными группами и т.д.), рекомендуем придерживаться следующей архитектуры:
ТаблицуЗначений.Используя этот подход, вы один раз создадите инструмент, который будет служить вам годами, позволяя загружать любые данные в любые справочники системы 1С:Управление торговлей 11 без необходимости постоянно дописывать код под каждую новую задачу.