Выполнить передачу файла приложению. Вызывает команду передачи файла из текущей области данных в любую другую область
// Вызывает команду передачи файла из текущей области данных в любую другую область
// данных сервиса.
// Важно! Если какой-либо из параметров передан некорректно, вызывается исключение.
//
// Параметры:
// ИмяФайла - Строка - полное имя к передаваемому файлу.
// КодПолучателя - Число - код области данных, куда нужно передать файл.
// БыстраяПередача - Булево - указывает, что необходимо использовать быстрые сообщения для передачи файла.
// ПараметрыВызова - Структура - дополнительные параметры вызова,
// *Код (Число), *Тело (Строка).
//
// Возвращаемое значение:
// УникальныйИдентификатор - GUID вызова.
//
Функция ВыполнитьПередачуФайлаПриложению(ИмяФайла, КодПолучателя, БыстраяПередача = Ложь, ПараметрыВызова = Неопределено) Экспорт
Локаль = ОбщегоНазначенияКлиентСервер.КодОсновногоЯзыка();
// Проверяем существование файла.
Указатель = Новый Файл(ИмяФайла);
Если НЕ Указатель.Существует() Тогда
Комментарий = НСтр("ru = 'Файл с указанным именем не найден на файловой системе.'", Локаль);
ВызватьИсключение Комментарий;
КонецЕсли;
// Проверяем код получателя.
Если НЕ ЗначениеЗаполнено(КодПолучателя) И НЕ ТипЗнч(КодПолучателя) = Тип("Число") Тогда
Комментарий = НСтр("ru = 'Параметр КодПолучателя не содержит валидный код области данных.'", Локаль);
ВызватьИсключение Комментарий;
КонецЕсли;
// Помещаем файл в общее хранилище МС.
УстановитьПривилегированныйРежим(Истина);
ИдентификаторВызова = Новый УникальныйИдентификатор();
ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ИмяФайла);
ИдентификаторФайла = РаботаВМоделиСервиса.ПоместитьФайлВХранилищеМенеджераСервиса(ДвоичныеДанныеФайла);
// Формируем и отправляем сообщение.
ТипСообщения = СообщенияРаспределенноеВыполнениеКомандИнтерфейс.ТипПередачаФайлаЗапрос();
Сообщение = СообщенияВМоделиСервиса.НовоеСообщение(ТипСообщения);
Сообщение.Body.Zone = РаботаВМоделиСервиса.ЗначениеРазделителяСеанса();
Сообщение.Body.Call_ID = ИдентификаторВызова;
Сообщение.Body.File_ID = ИдентификаторФайла;
Сообщение.Body.Sender = Сообщение.Body.Zone;
Сообщение.Body.Recipient = КодПолучателя;
Сообщение.Body.RapidTransfer = БыстраяПередача;
Если НЕ ПараметрыВызова = Неопределено И ТипЗнч(ПараметрыВызова) = Тип("Структура") Тогда
Если ПараметрыВызова.Свойство("Код") Тогда
Сообщение.Body.CallCode = ПараметрыВызова.Код;
КонецЕсли;
Если ПараметрыВызова.Свойство("Тело") Тогда
Сообщение.Body.CallBody = ПараметрыВызова.Тело;
КонецЕсли;
КонецЕсли;
// Высылаем сообщение МС.
НачатьТранзакцию();
Попытка
Получатель = РаботаВМоделиСервисаПовтИсп.КонечнаяТочкаМенеджераСервиса();
СообщенияВМоделиСервиса.ОтправитьСообщение(Сообщение, Получатель, БыстраяПередача);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
УстановитьПривилегированныйРежим(Ложь);
Возврат ИдентификаторВызова;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ВыполнитьВыгрузкуДляУзлаИнформационнойБазыВСервисПередачиФайлов (БСП)
ВыполнитьЗагрузкуДляУзлаИнформационнойБазыИзСервисаПередачиФайлов (БСП)
Выбор файла управляемое приложение
ВыполнитьСравнениеФайлов (БСП)
ПолучитьРазмерБлокаПередачиФайла (БСП)
ОбработатьЗапросНаПередачуФайла (БСП)
ОбработатьОтветНаПередачуФайла (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)