База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как загрузить файл в справочник РесурсныеСпецификацииПрисоединенныеФайлы? › RE: Как загрузить файл в справочник РесурсныеСпецификацииПрисоединенныеФайлы?
Денис, вот пример кода внешней обработки 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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
bsl &НаКлиенте Процедура ЗагрузитьФайлНажатие(Команда) // Выбор элемента справочника РесурсныеСпецификации, к которому прикрепляем файл ВыборРесурснойСпецификации = Новый ВыборИзСписка(Справочники.РесурсныеСпецификации.Выбрать(), "Выберите ресурсную спецификацию"); Если Не ВыборРесурснойСпецификации.Отменен Тогда // Диалог выбора файла Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберите файл для загрузки"; Если Диалог.Выбрать() Тогда ПутьКФайлу = Диалог.ПолноеИмяФайла; // Читаем двоичные данные файла ДвоичныеДанные = Новый ДвоичныеДанные; ДвоичныеДанные.Прочитать(ПутьКФайлу); // Создаем новый элемент справочника РесурсныеСпецификацииПрисоединенныеФайлы НовыйФайл = Справочники.РесурсныеСпецификацииПрисоединенныеФайлы.СоздатьЭлемент(); // Заполняем реквизиты НовыйФайл.Родитель = ВыборРесурснойСпецификации.Элемент; НовыйФайл.Наименование = ПолучитьИмяФайлаИзПути(ПутьКФайлу); НовыйФайл.ФайлХранилище = Новый ХранилищеЗначения(ДвоичныеДанные); НовыйФайл.Размер = ДвоичныеДанные.Размер(); НовыйФайл.Расширение = ПолучитьРасширениеФайла(ПутьКФайлу); НовыйФайл.Автор = Пользователи.ТекущийПользователь(); НовыйФайл.ДатаСоздания = ТекущаяДата(); // Записываем элемент НовыйФайл.Записать(); Сообщить("Файл успешно загружен в справочник."); Иначе Сообщить("Файл не выбран."); КонецЕсли; Иначе Сообщить("Ресурсная спецификация не выбрана."); КонецЕсли; КонецПроцедуры // Вспомогательная функция для получения имени файла из полного пути Функция ПолучитьИмяФайлаИзПути(Путь) ИмяФайла = СтрЗаменить(Путь, "", "/"); МассивЧастей = СтрРазделить(ИмяФайла, "/"); Возврат МассивЧастей[МассивЧастей.Количество() - 1]; КонецФункции // Вспомогательная функция для получения расширения файла Функция ПолучитьРасширениеФайла(Путь) ИмяФайла = ПолучитьИмяФайлаИзПути(Путь); МассивЧастей = СтрРазделить(ИмяФайла, "."); Если МассивЧастей.Количество() > 1 Тогда Возврат МассивЧастей[МассивЧастей.Количество() - 1]; Иначе Возврат ""; КонецЕсли; КонецФункции |
—
### Пояснения
— В начале пользователь выбирает элемент справочника РесурсныеСпецификации, к которому будет прикреплен файл.
— Затем открывается стандартный диалог выбора файла.
— Файл читается в двоичные данные и сохраняется в реквизит типа «ХранилищеЗначения» справочника РесурсныеСпецификацииПрисоединенныеФайлы.
— Заполняются основные реквизиты: имя, расширение, размер, автор, дата создания.
— Элемент сохраняется.
—
Если нужно, могу помочь с полной внешней обработкой с формой и кнопкой.
Рекомендую посмотреть здесь:
https://infostart.ru/public/1719564/
https://infostart.ru/public/918857/
Если нужна помощь с асинхронным выбором файла или загрузкой в тонком клиенте — могу дополнить.
—
Оценка ответа: 9/10 — полный, рабочий пример с пояснениями и ссылками.