При работе с типовой конфигурацией 1С:Управление торговлей 10 многие пользователи сталкиваются с задачей массового обновления данных. Часто возникает ситуация, когда необходимо привязать одну характеристику сразу к нескольким артикулам номенклатуры. В первом сообщении автор задается вопросом: можно ли передать список артикулов «через запятую» в ЗагрузкаДанныхИзТабличногоДокумента, чтобы не разбивать процесс на десятки ручных операций?
Давайте разберем эту ситуацию и выясним, как оптимизировать работу, не прибегая к сложным доработкам типового функционала.
Важно осознать, что ЗагрузкаДанныхИзТабличногоДокумента — это универсальный инструмент, работающий по принципу «одна строка файла — один объект в базе». Обработка последовательно перебирает строки и выполняет поиск владельца (номенклатуры) для каждого элемента. Она не обладает встроенной логикой парсинга строк вида «артикул1, артикул2, артикул3» для одной записи.
Если вы попытаетесь передать список артикулов в одну ячейку, обработка не сможет найти нужный объект, так как поиск по артикулу будет пытаться найти номенклатуру с именем, идентичным всей строке «1, 2, 3, 4, 5». В 1С поиск по реквизиту Артикул — это операция, требующая точного соответствия.
Поскольку типовая обработка не поддерживает массовое присвоение «в один клик», наиболее эффективным способом решения задачи без изменения кода конфигурации является подготовка исходного файла. Мы должны привести данные к такому виду, который «понятен» системе.
Excel.ВПР (VLOOKUP), чтобы подтянуть артикулы к каждой характеристике.Если после подготовки файла загрузка все равно идет медленно, проблема может крыться в механизме поиска объектов. Рассмотрим, как ускорить этот этап:
Поиск по артикулу: Если в вашей версии 1С:Управление торговлей поиск владельца происходит долго, проанализируйте, проиндексирован ли реквизит Артикул. Если вы обладаете правами на изменение конфигурации, убедитесь, что в свойствах реквизита справочника Номенклатура установлен флаг Индексировать.
Настройки обработки: При запуске загрузки внимательно проверяйте настройки поиска. Используйте наиболее быстрые поля для идентификации:
Коду (работает мгновенно, так как это ключевое поле).Ссылке (если данные уже были выгружены из 1С).Артикулу (требует наличия индекса для высокой скорости).Как отмечают опытные специалисты, попытки «обмануть» типовой инструмент без внесения правок — это всегда компромисс. Если объем номенклатуры исчисляется тысячами позиций, а структура входящих файлов не совпадает со структурой справочников 1С, целесообразно рассмотреть написание небольшой внешней обработки.
Внешняя обработка позволит:
ТЗ (Таблицу Значений) для хранения промежуточных данных.СтрРазделить для обработки строки с артикулами через запятую.НайтиПоРеквизиту для быстрого получения ссылок на номенклатуру в цикле.Пример логики, которую можно реализовать в собственном модуле:
// Пример обработки списка артикулов
СписокАртикулов = СтрРазделить(СтрокаФайла.Артикулы, ",");
Для Каждого Артикул Из СписокАртикулов Цикл
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", СокрЛП(Артикул));
Если ЗначениеЗаполнено(Номенклатура) Тогда
// Создаем характеристику и записываем её
КонецЕсли;
КонецЦикла;
Чтобы ускорить загрузку без доработок, мы рекомендуем сосредоточиться на качественной подготовке исходных данных. Приведение таблицы к формату 1:1 (одна строка — одна связь) — это «золотой стандарт» для типовых обработок. Это позволит избежать ошибок сопоставления и использовать стандартный функционал ЗагрузкаДанныхИзТабличногоДокумента с максимальной эффективностью.
Если же задача носит регулярный характер, мы советуем потратить время на написание специализированного скрипта, который автоматизирует разбор списков, экономя часы ручной работы в дальнейшем.