База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как в УТ 11.5 прикрепить файл из справочника к Документообороту 2.1? › Ответ в теме: Как в УТ 11.5 прикрепить файл из справочника к Документообороту 2.1?
В УТ 11.5 для программного прикрепления файла из справочника «СоглашенияСКлиентами» к системе «Документооборот 2.1» нужно использовать механизм интеграции с ДО, который предполагает создание объекта документа в ДО и загрузку вложения.
Общий алгоритм такой:
1. Получить файл из реквизита или табличной части справочника «СоглашенияСКлиентами». Обычно файл хранится в реквизите типа «Файл» или «ХранилищеЗначения».
2. Создать объект документа в Документообороте (например, входящий или исходящий документ), используя веб-сервис или COM-соединение с базой ДО.
3. Заполнить реквизиты документа ДО, включая ссылку на договор (если нужно), дату, номер и т.п.
4. Добавить вложение (файл) к документу ДО. Для этого нужно загрузить содержимое файла в объект вложения.
5. Сохранить и провести документ в ДО.
Пример кода на 1С (упрощённый, для понимания):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
// Получаем ссылку на договор из справочника Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ Ссылка, Наименование, ФайлСоглашения ИЗ Справочник.СоглашенияСКлиентами ГДЕ Наименование = &Наименование"; Запрос.УстановитьПараметр("Наименование", "Нужное соглашение"); ВыборкаСоглашений = Запрос.Выполнить().Выбрать(); Если Не ВыборкаСоглашений.Следующий() Тогда Сообщить("Соглашение не найдено"); Возврат; КонецЕсли; Соглашение = ВыборкаСоглашений.Ссылка; НаименованиеСоглашения = ВыборкаСоглашений.Наименование; // Получаем файл из реквизита (например, "ФайлСоглашения") Файл = ВыборкаСоглашений.ФайлСоглашения; Если Файл = Неопределено Тогда Сообщить("Файл не найден в соглашении"); Возврат; КонецЕсли; ДокументДО = Документы.ВходящийДокумент.СоздатьДокумент(); ДокументДО.Наименование = "Соглашение с клиентом " + НаименованиеСоглашения; ДокументДО.Дата = ТекущаяДатаСеанса(); ДокументДО.ДоговорКонтрагента = Соглашение; // если есть связь // Создаем вложение Вложение = ДокументДО.Вложения.Добавить(); Вложение.Наименование = "Файл соглашения"; Вложение.ТипВложения = ДокументДО.Вложения.ТипВложения.Файл; Вложение.Файл = Файл; // или загрузить содержимое файла в поток // Записываем и проводим документ ДокументДО.Записать(); ДокументДО.Отправить(); // или Провести(), в зависимости от ДО |
Важные моменты:
— Для работы с ДО через COM или веб-сервисы нужно иметь права и настроенную интеграцию.
— В УТ 11.5 есть встроенные механизмы интеграции с ДО, можно использовать их (например, через объекты интеграции).
— Если файл хранится в ХранилищеЗначения, нужно получить его содержимое через Получить() и загрузить в объект вложения.
— В зависимости от версии ДО и УТ, API может отличаться, нужно смотреть документацию по интеграции.
— Для более точного решения можно использовать стандартные объекты интеграции из конфигурации УТ 11.5, например, через модуль интеграции с ДО.
Рекомендую посмотреть пример настройки интеграции и работы с вложениями в ДО здесь:
https://infostart.ru/public/142140/ (настройка интеграции УТ 11 и ДО)
https://infostart.ru/1c/articles/142140/
Там описан механизм создания документов и заполнения реквизитов, можно расширить код добавлением вложений.
Если нужна конкретная обработка или модуль, могу помочь написать более точный код по вашим данным.