Как загрузить дополнительные реквизиты номенклатуры из Excel в 1С:УТ 11.4 и почему данные не сохраняются?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

При работе с современными конфигурациями на платформе 1С:Предприятие 8.3, такими как Управление торговлей 11.4, специалисты часто сталкиваются с ситуацией: внешняя обработка «Загрузка данных из табличного документа» отрапортовала об успешном завершении операции, но при проверке в справочнике «Номенклатура» значения дополнительных реквизитов (характеристик) остаются прежними или пустыми. В этой статье мы подробно разберем, почему так происходит, чем архитектура 1С 8.3 отличается от старых версий (например, УТ 10.3 на 8.2) и как правильно настроить загрузку данных.

Разбираем причину проблемы: где хранятся дополнительные реквизиты?

Первое, что нам необходимо проанализировать — это способ хранения данных. В старых конфигурациях дополнительные свойства хранились в отдельном регистре сведений ЗначенияСвойствОбъектов. Однако в УТ 11, ERP 2 и КА 2 разработчики перешли на использование механизма Библиотеки стандартных подсистем (БСП). Теперь дополнительные реквизиты хранятся непосредственно внутри самого объекта (справочника) в специальной табличной части.

Проанализируем структуру справочника Номенклатура. Если мы откроем его в конфигураторе, то увидим табличную часть под названием ДополнительныеРеквизиты. Она содержит две ключевые колонки:

  1. Свойство: это ссылка на план видов характеристик ДополнительныеРеквизитыИСведения.
  2. Значение: это само значение реквизита (может быть числом, строкой, ссылкой на справочник и т.д.).

Суть проблемы автора: если вы пытаетесь загрузить данные, указывая обработке на «реквизиты объекта», она ищет колонку с названием свойства в основной таблице справочника. Поскольку такой колонки там нет, а есть только подчиненная таблица, запись «в никуда» формально проходит успешно, но данные в объект не попадают.

Решение №1: Настройка обработки «Загрузка данных из табличного документа»

Рассмотрим по шагам, как настроить внешнюю обработку для работы с табличной частью ДополнительныеРеквизиты. Этот метод требует внимательности при сопоставлении полей.

Шаг 1: Выбор режима загрузки

В верхней части обработки необходимо выбрать режим «Загрузка в табличную часть». После этого в поле выбора таблицы нужно найти ДополнительныеРеквизиты у объекта Номенклатура.

Шаг 2: Определение полей поиска

Для корректного обновления данных нам нужно сопоставить товар. В таблице настройки выберите колонку (например, Артикул или Код) и установите для нее флаг «Поле поиска». Это позволит программе понять, в какую именно карточку товара нужно записывать данные.

Шаг 3: Настройка поиска строки внутри табличной части

Это самый сложный момент. Стандартная обработка при загрузке в табличную часть по умолчанию может просто добавлять новые строки. Чтобы обновить существующее свойство (например, изменить «Вылет» с 0 на 35), нам нужно заставить систему искать строку, где в колонке Свойство стоит значение «Вылет».

К сожалению, базовая версия обработки «Загрузка из табличного документа» часто не обладает встроенным функционалом «Поиска по ключу внутри табличной части». Если вы используете именно этот инструмент, рассмотрите следующий алгоритм настройки:

Решение №2: Использование встроенного механизма «Загрузка данных из файла»

В современных версиях 1С:Управление торговлей 11.4 существует встроенная альтернатива внешней обработке, которая гораздо корректнее работает с дополнительными реквизитами. Посмотрим, как ею воспользоваться:

  1. Перейдите в раздел НСИ и администрирование — Начальное заполнение — Загрузка данных из файла.
  2. Выберите справочник Номенклатура.
  3. Программа сформирует шаблон таблицы. Обратите внимание: дополнительные реквизиты в этом списке будут отображаться как обычные колонки, несмотря на то, что в базе они лежат в табличной части.
  4. Скопируйте свои данные из Excel в это окно.
  5. Система автоматически сопоставит колонку «Вылет» с нужным свойством и выполнит корректную запись объекта, используя внутренние механизмы БСП.

Решение №3: Групповое изменение реквизитов (если значение одно для всех)

Если вам нужно установить одно и то же значение (например, Вылет = 35) для большого списка товаров, не обязательно использовать загрузку. Проанализируем возможности функции «Изменить выделенные»:

В списке номенклатуры выделите нужные позиции, нажмите правую кнопку мыши и выберите «Изменить выделенные». В списке доступных для изменения полей вы найдете ваши дополнительные реквизиты. Просто установите новое значение и нажмите «Изменить параметры». Этот способ является самым безопасным, так как исключает ошибки сопоставления колонок из внешних файлов.

Важный нюанс: Типы данных

Выясним причину, по которой даже при правильной настройке значение может не сохраниться. Дополнительные реквизиты имеют строго заданный тип. Рассмотрим пример:

Пример кода для программного заполнения (для программистов)

Если вы решили написать свою мини-обработку для загрузки, разберем пример кода, который правильно обращается к табличной части дополнительных реквизитов:


// Предположим, ОбъектНоменклатура уже получен для редактирования
СвойствоСсылка = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Вылет");
НайденнаяСтрока = ОбъектНоменклатура.ДополнительныеРеквизиты.Найти(СвойствоСсылка, "Свойство");

Если НайденнаяСтрока = Неопределено Тогда
    // Если такого свойства у товара еще нет — добавляем строку
    НоваяСтрока = ОбъектНоменклатура.ДополнительныеРеквизиты.Добавить();
    НоваяСтрока.Свойство = СвойствоСсылка;
    НоваяСтрока.Значение = 35; // Указываем наше значение
Иначе
    // Если свойство уже было заполнено — обновляем значение
    НайденнаяСтрока.Значение = 35;
КонецЕсли;

ОбъектНоменклатура.Записать();

Резюме: Чтобы успешно загрузить данные, нужно учитывать, что в УТ 11.4 дополнительные реквизиты — это строки табличной части ДополнительныеРеквизиты. Рекомендуется использовать встроенную обработку «Загрузка данных из файла», так как она автоматически обрабатывает все сложности сопоставления типов и поиска существующих строк в подчиненных таблицах.

← На главную