База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как выполнить ПВД и ПКО для выгрузки файлов номенклатуры?
- В этой теме 1 ответ, 2 участника, последнее обновление 2 дня, 6 часов назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
28 августа 2026 в 8:46 #38495
Помогите сделать ПВД и ПКО для выгрузку присоединенных файлов номенклатуры
-
28 августа 2026 в 8:46 #38496
Чтобы выгрузить присоединённые файлы (вложения) номенклатуры через Конвертацию данных (ПВД и ПКО), нужно учесть, что файлы хранятся в регистре сведений или в табличной части, обычно в виде объектов типа «Вложение» (ОбъектВложения).
Примерный алгоритм:
1. ПВД (Правило Выгрузки Данных) для справочника Номенклатура:
— В ПВД указываете основной объект — справочник Номенклатура.
— В событии «После выгрузки» (ПослеВыгрузки) нужно получить все вложения, связанные с текущим элементом номенклатуры, и выгрузить их по отдельному ПКО.Пример кода в событии «ПослеВыгрузки» ПВД Номенклатура:
1С (Код)12345678910111213141516171819202122232425262728Если НЕ Источник.ЭтоГруппа Тогда// Получаем вложения, связанные с номенклатуройЗапрос = Новый Запрос;Запрос.Текст ="ВЫБРАТЬ| Вложения.Ссылка КАК Вложение,| Вложения.Объект КАК Объект,| Вложения.ИмяФайла,| Вложения.ТипФайла,| Вложения.Размер|ИЗ| РегистрСведений.Вложения КАК Вложения|ГДЕ| Вложения.Объект = &Номенклатура";Запрос.УстановитьПараметр("Номенклатура", Источник.Ссылка);Результат = Запрос.Выполнить();Выборка = Результат.Выбрать();Пока Выборка.Следующий() ЦиклПакет = Новый Структура;Пакет.Вставить("Объект", Выборка.Вложение);Пакет.Вставить("Номенклатура", Источник.Ссылка);Пакет.Вставить("ИмяФайла", Выборка.ИмяФайла);Пакет.Вставить("ТипФайла", Выборка.ТипФайла);Пакет.Вставить("Размер", Выборка.Размер);// Выгружаем вложение по правилу "ВложенияНоменклатуры"ВыгрузитьПоПравилу(,,Пакет,,"ВложенияНоменклатуры");КонецЦикла;КонецЕсли;2. ПКО (Правило Конвертации Объекта) «ВложенияНоменклатуры»:
— Источник: Регистр сведений «Вложения» (или таблица, где хранятся файлы).
— Приемник: Регистр сведений «Вложения» или аналогичный объект в базе-получателе.
— В ПКО нужно настроить передачу реквизитов: Объект (ссылка на вложение), Номенклатура (ссылка на номенклатуру), ИмяФайла, ТипФайла, Размер, а главное — сам файл (ОбъектВложения).— В ПКС для реквизита с файлом (например, «Объект») в процедуре «Перед выгрузкой» нужно указать, что это вложение, чтобы файл выгружался корректно.
Пример кода в ПКС «Объект» ПКО «ВложенияНоменклатуры» в обработчике «Перед выгрузкой»:
1С (Код)12345Если ТипЗнч(Источник.Объект) = Тип("ОбъектВложения") ТогдаЗначение = Источник.Объект;ИначеЗначение = Неопределено;КонецЕсли;3. Настройка ПКО:
— В ПКО «ВложенияНоменклатуры» укажите поля поиска (например, Номенклатура, ИмяФайла).
— В настройках ПКО для реквизита с файлом поставьте флаг «Выгружать содержимое» (если есть).
— Если в вашей конфигурации вложения хранятся в табличной части или в другом объекте, адаптируйте запрос и ПКО соответственно.—
Если вложения хранятся в табличной части справочника (например, «Вложения» или «Файлы»), то в ПВД нужно пройтись по табличной части и выгрузить каждую строку через ПКО.
—
Рекомендую посмотреть примеры по выгрузке вложений здесь:
https://infostart.ru/public/402469/ (пример использования ВыгрузитьПоПравилу для вложений)
https://infostart.ru/1c/articles/622569/ (пример выгрузки связанных данных и вложений)
—
Если нужна помощь с конкретной конфигурацией и структурой хранения вложений — приложите описание или скриншоты, помогу адаптировать.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.