Как перенести картинки номенклатуры из УТ 10.3 в Розницу 2.3?

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

Перенос данных между конфигурациями на разных платформах — задача, с которой сталкиваются многие специалисты при переходе с УТ 10.3 на современные решения на базе БСП (Библиотеки стандартных подсистем), такие как Розница 2.3. Основная сложность заключается в фундаментальном изменении архитектуры хранения файлов: если в старой версии картинки часто хранились в реквизитах типа ХранилищеЗначения, то в современных конфигурациях используется подсистема ПрисоединенныеФайлы.

Понимание архитектуры хранения файлов

Прежде чем приступать к написанию кода, важно осознать, как устроена работа с файлами в Рознице 2.3. Это не просто путь к картинке, а сложная структура:

  1. Справочник НоменклатураПрисоединенныеФайлы отвечает за учет метаданных: имя файла, расширение, автор, дата создания.
  2. Регистр сведений ДвоичныеДанныеФайлов содержит саму «начинку» файла.
  3. Механизм БСП автоматически управляет тем, где лежат эти данные — в самой базе данных или в томах на диске.

Алгоритм переноса изображений

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

  1. Выгрузка данных из УТ 10.3: Создайте внешнюю обработку, которая переберет элементы справочника Номенклатура. Для каждой позиции с картинкой необходимо считать данные из реквизита ХранилищеКартинки и сохранить их как физический файл на диске. Параллельно формируется файл-маппинг (например, Excel или CSV), содержащий соответствие ключа поиска (артикул или код) и пути к сохраненному файлу на диске.
  2. Загрузка в Розницу 2.3: Используйте полученный файл соответствий для автоматической загрузки. На стороне Розницы необходимо использовать программный интерфейс ПрисоединенныеФайлы.

Пример программного кода для загрузки картинки

Разберем пример кода, который позволяет программно добавить файл к номенклатуре в Рознице 2.3. Обратите внимание, что выполнение этих операций должно происходить на сервере.


// Исходные данные для создания записи
ИмяФайла = "c:\ФайлКартинки.png";
Парам = Новый Структура;
Парам.Вставить("Автор", ПользователиКлиентСервер.ТекущийПользователь);
Парам.Вставить("ВладелецФайлов", Номенклатура);
Парам.Вставить("ИмяБезРасширения", Номенклатура.Код);
Парам.Вставить("РасширениеБезТочки", "png");
Парам.Вставить("ВремяИзмененияУниверсальное", ТекущаяУниверсальнаяДата);

// Чтение данных и помещение во временное хранилище
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
Адрес = ПоместитьВоВременноеХранилище(ДвоичныеДанные);

// Создание присоединенного файла средствами БСП
СсылкаНаКартинку = ПрисоединенныеФайлы.ДобавитьПрисоединенныйФайл(Парам, Адрес, , , );

// Привязка к номенклатуре
ОбъектНоменклатура = Номенклатура.ПолучитьОбъект();
ОбъектНоменклатура.ФайлКартинки = СсылкаНаКартинку;
ОбъектНоменклатура.Записать();

Советы по автоматизации

Для того чтобы процесс прошел максимально эффективно, примите во внимание следующие рекомендации:

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

← На главную