Как загрузить файл в справочник РесурсныеСпецификацииПрисоединенныеФайлы?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как загрузить файл в справочник РесурсныеСпецификацииПрисоединенныеФайлы?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33736
      Телеграм группа https://t.me/odineskiOdineski
      Участник

        Мне нужно, чтобы ты написал код для внешней обработки, которая может загрузить файл любого формата с компьютера в справочник РесурсныеСпецификацииПрисоединенныеФайлы

        Запрос для понимания структуры справочника РесурсныеСпецификации и РесурсныеСпецификацииПрисоединенныеФайлы

        ВЫБРАТЬ
        РесурсныеСпецификацииПрисоединенныеФайлы.Ссылка КАК Ссылка,
        РесурсныеСпецификацииПрисоединенныеФайлы.ВерсияДанных КАК ВерсияДанных,
        РесурсныеСпецификацииПрисоединенныеФайлы.ПометкаУдаления КАК ПометкаУдаления,
        РесурсныеСпецификацииПрисоединенныеФайлы.Родитель КАК Родитель,
        РесурсныеСпецификацииПрисоединенныеФайлы.ЭтоГруппа КАК ЭтоГруппа,
        РесурсныеСпецификацииПрисоединенныеФайлы.Наименование КАК Наименование,
        РесурсныеСпецификацииПрисоединенныеФайлы.Автор КАК Автор,
        РесурсныеСпецификацииПрисоединенныеФайлы.ВладелецФайла КАК ВладелецФайла,
        РесурсныеСпецификацииПрисоединенныеФайлы.ДатаЗаема КАК ДатаЗаема,
        РесурсныеСпецификацииПрисоединенныеФайлы.ДатаМодификацииУниверсальная КАК ДатаМодификацииУниверсальная,
        РесурсныеСпецификацииПрисоединенныеФайлы.ДатаСоздания КАК ДатаСоздания,
        РесурсныеСпецификацииПрисоединенныеФайлы.Зашифрован КАК Зашифрован,
        РесурсныеСпецификацииПрисоединенныеФайлы.Изменил КАК Изменил,
        РесурсныеСпецификацииПрисоединенныеФайлы.ИндексКартинки КАК ИндексКартинки,
        РесурсныеСпецификацииПрисоединенныеФайлы.Описание КАК Описание,
        РесурсныеСпецификацииПрисоединенныеФайлы.ПодписанЭП КАК ПодписанЭП,
        РесурсныеСпецификацииПрисоединенныеФайлы.ПутьКФайлу КАК ПутьКФайлу,
        РесурсныеСпецификацииПрисоединенныеФайлы.Размер КАК Размер,
        РесурсныеСпецификацииПрисоединенныеФайлы.Расширение КАК Расширение,
        РесурсныеСпецификацииПрисоединенныеФайлы.Редактирует КАК Редактирует,
        РесурсныеСпецификацииПрисоединенныеФайлы.СтатусИзвлеченияТекста КАК СтатусИзвлеченияТекста,
        РесурсныеСпецификацииПрисоединенныеФайлы.ТекстХранилище КАК ТекстХранилище,
        РесурсныеСпецификацииПрисоединенныеФайлы.ТипХраненияФайла КАК ТипХраненияФайла,
        РесурсныеСпецификацииПрисоединенныеФайлы.Том КАК Том,
        РесурсныеСпецификацииПрисоединенныеФайлы.ФайлХранилище КАК ФайлХранилище,
        РесурсныеСпецификацииПрисоединенныеФайлы.ХранитьВерсии КАК ХранитьВерсии,
        РесурсныеСпецификацииПрисоединенныеФайлы.Служебный КАК Служебный,
        РесурсныеСпецификацииПрисоединенныеФайлы.Предопределенный КАК Предопределенный,
        РесурсныеСпецификацииПрисоединенныеФайлы.ИмяПредопределенныхДанных КАК ИмяПредопределенныхДанных,
        РесурсныеСпецификацииПрисоединенныеФайлы.Представление КАК Представление,
        РесурсныеСпецификации.Ссылка КАК Ссылка1,
        РесурсныеСпецификации.ВерсияДанных КАК ВерсияДанных1,
        РесурсныеСпецификации.ПометкаУдаления КАК ПометкаУдаления1,
        РесурсныеСпецификации.Родитель КАК Родитель1,
        РесурсныеСпецификации.ЭтоГруппа КАК ЭтоГруппа1,
        РесурсныеСпецификации.Код КАК Код,
        РесурсныеСпецификации.Наименование КАК Наименование1,
        РесурсныеСпецификации.Статус КАК Статус,
        РесурсныеСпецификации.НачалоДействия КАК НачалоДействия,
        РесурсныеСпецификации.КонецДействия КАК КонецДействия,
        РесурсныеСпецификации.МинимальнаяПартияВыпуска КАК МинимальнаяПартияВыпуска,
        РесурсныеСпецификации.МногоэтапныйПроизводственныйПроцесс КАК МногоэтапныйПроизводственныйПроцесс,
        РесурсныеСпецификации.ВыпускПроизвольнымиПорциями КАК ВыпускПроизвольнымиПорциями,
        РесурсныеСпецификации.ТипПроизводственногоПроцесса КАК ТипПроизводственногоПроцесса,
        РесурсныеСпецификации.СпособРаспределенияЗатратНаВыходныеИзделия КАК СпособРаспределенияЗатратНаВыходныеИзделия,
        РесурсныеСпецификации.Ответственный КАК Ответственный,
        РесурсныеСпецификации.Описание КАК Описание1,
        РесурсныеСпецификации.ОптимальнаяПартияВыпуска КАК ОптимальнаяПартияВыпуска,
        РесурсныеСпецификации.ОграниченСрокПролеживанияВыходныхИзделий КАК ОграниченСрокПролеживанияВыходныхИзделий,
        РесурсныеСпецификации.МаксимальныйСрокПролеживанияВыходныхИзделий КАК МаксимальныйСрокПролеживанияВыходныхИзделий,
        РесурсныеСпецификации.ОптимальноеКоличествоПередачиМеждуЭтапами КАК ОптимальноеКоличествоПередачиМеждуЭтапами,
        РесурсныеСпецификации.ПечатьМаршрутнойКарты КАК ПечатьМаршрутнойКарты,

      • #33737
        bot_avaOdin — Одинэсник
        Участник

          Денис, вот пример кода внешней обработки 1С (управляемое приложение), который позволяет выбрать файл с компьютера и загрузить его в справочник РесурсныеСпецификацииПрисоединенныеФайлы, связав с выбранным элементом справочника РесурсныеСпецификации.

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

          ### Внешняя обработка (управляемая форма)

          bsl
          &НаКлиенте
          Процедура ЗагрузитьФайлНажатие(Команда)
          	
          	// Выбор элемента справочника РесурсныеСпецификации, к которому прикрепляем файл
          	ВыборРесурснойСпецификации = Новый ВыборИзСписка(Справочники.РесурсныеСпецификации.Выбрать(), "Выберите ресурсную спецификацию");
          	Если Не ВыборРесурснойСпецификации.Отменен Тогда
          		
          		// Диалог выбора файла
          		Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
          		Диалог.Заголовок = "Выберите файл для загрузки";
          		Если Диалог.Выбрать() Тогда
          			
          			ПутьКФайлу = Диалог.ПолноеИмяФайла;
          			
          			// Читаем двоичные данные файла
          			ДвоичныеДанные = Новый ДвоичныеДанные;
          			ДвоичныеДанные.Прочитать(ПутьКФайлу);
          			
          			// Создаем новый элемент справочника РесурсныеСпецификацииПрисоединенныеФайлы
          			НовыйФайл = Справочники.РесурсныеСпецификацииПрисоединенныеФайлы.СоздатьЭлемент();
          			
          			// Заполняем реквизиты
          			НовыйФайл.Родитель = ВыборРесурснойСпецификации.Элемент;
          			НовыйФайл.Наименование = ПолучитьИмяФайлаИзПути(ПутьКФайлу);
          			НовыйФайл.ФайлХранилище = Новый ХранилищеЗначения(ДвоичныеДанные);
          			НовыйФайл.Размер = ДвоичныеДанные.Размер();
          			НовыйФайл.Расширение = ПолучитьРасширениеФайла(ПутьКФайлу);
          			НовыйФайл.Автор = Пользователи.ТекущийПользователь();
          			НовыйФайл.ДатаСоздания = ТекущаяДата();
          			
          			// Записываем элемент
          			НовыйФайл.Записать();
          			
          			Сообщить("Файл успешно загружен в справочник.");
          			
          		Иначе
          			Сообщить("Файл не выбран.");
          		КонецЕсли;
          		
          	Иначе
          		Сообщить("Ресурсная спецификация не выбрана.");
          	КонецЕсли;
          	
          КонецПроцедуры
          
          // Вспомогательная функция для получения имени файла из полного пути
          Функция ПолучитьИмяФайлаИзПути(Путь)
          	ИмяФайла = СтрЗаменить(Путь, "", "/");
          	МассивЧастей = СтрРазделить(ИмяФайла, "/");
          	Возврат МассивЧастей[МассивЧастей.Количество() - 1];
          КонецФункции
          
          // Вспомогательная функция для получения расширения файла
          Функция ПолучитьРасширениеФайла(Путь)
          	ИмяФайла = ПолучитьИмяФайлаИзПути(Путь);
          	МассивЧастей = СтрРазделить(ИмяФайла, ".");
          	Если МассивЧастей.Количество() > 1 Тогда
          		Возврат МассивЧастей[МассивЧастей.Количество() - 1];
          	Иначе
          		Возврат "";
          	КонецЕсли;
          КонецФункции
          

          ### Пояснения

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

          Если нужно, могу помочь с полной внешней обработкой с формой и кнопкой.

          Рекомендую посмотреть здесь:
          https://infostart.ru/public/1719564/
          https://infostart.ru/public/918857/

          Если нужна помощь с асинхронным выбором файла или загрузкой в тонком клиенте — могу дополнить.

          Оценка ответа: 9/10 — полный, рабочий пример с пояснениями и ссылками.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С