Если при нажатии на клиенте кнопку нужно формировать файл на сервере, а потом результат формирования перенести назад на клиента тогда
&НаКлиенте Процедура СформироватьXLSX(Команда) //сохранение файла Если ПустаяСтрока(ПутьКФайлу) Тогда Режим = РежимДиалогаВыбораФайла.ВыборКаталога; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.Каталог = ""; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = "Выберите каталог"; Если ДиалогОткрытия.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытия.Каталог + "\"; Иначе Предупреждение("Каталог не выбран!"); Возврат; КонецЕсли; КонецЕсли; ИмяФайлаНаДиске = ПутьКФайлу+ИмяФайла+".xlsx"; //сохранение файла //формирование прайса МассивПрайсовДД = СформироватьXLSXСКлиента(ИмяФайлаНаДиске ); //формирование прайса Если МассивПрайсовДД = Неопределено Тогда Возврат; КонецЕсли; //перенос файла на клиент ПереместитьПрайсы(МассивПрайсовДД, ИмяФайлаНаДиске); //перенос файла на клиент КонецПроцедуры &НаКлиенте Процедура ПереместитьПрайсы(МассивПрайсовДД, ИмяФайлаНаДиске) // Создаем описание получаемых файлов. ОписанияФайлов = Новый Массив; Для Каждого ПрайсДД Из МассивПрайсовДД Цикл ОписаниеФайла = Новый ОписаниеПередаваемогоФайла(ПолучитьИмяВременногоФайла(), ПрайсДД); ОписанияФайлов.Добавить(ОписаниеФайла); КонецЦикла; // Сохраняем файлы из временного хранилища в локальную файловую систему. ПолученныеФайлы = Новый Массив; ПолучитьФайлы(ОписанияФайлов, ПолученныеФайлы, , Ложь); // Открываем файлы. Для Каждого ПолученныйФайлы Из ПолученныеФайлы Цикл дд = Новый ДвоичныеДанные(ПолученныйФайлы.Имя); дд.Записать(ИмяФайлаНаДиске); //Предупреждение("Файл сохранен "+ ИмяФайлаНаДиске); ЗапуститьПриложение(ИмяФайлаНаДиске); КонецЦикла; КонецПроцедуры Функция СформироватьXLSXСКлиента(ИмяФайлаНаДиске) //сохранение прайса на сервере дд = Новый ДвоичныеДанные(ИмяФайлаНаДиске); //C:\\1.xls АдресаВоВременномХранилище = Новый Массив; АдресаВоВременномХранилище.Добавить(ПоместитьВоВременноеХранилище(дд, ЭтаФорма.УникальныйИдентификатор)); Возврат АдресаВоВременномХранилище; //возврат адрес прайса на сервере КонецФункции
&НаКлиенте Процедура СформироватьXLSX(Команда) //сохранение файла Если ПустаяСтрока(ПутьКФайлу) Тогда Режим = РежимДиалогаВыбораФайла.ВыборКаталога; ДиалогОткрытия = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытия.Каталог = ""; ДиалогОткрытия.МножественныйВыбор = Ложь; ДиалогОткрытия.Заголовок = "Выберите каталог"; Если ДиалогОткрытия.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытия.Каталог + "\"; Иначе Предупреждение("Каталог не выбран!"); Возврат; КонецЕсли; КонецЕсли; ИмяФайлаНаДиске = ПутьКФайлу+ИмяФайла+".xlsx"; //сохранение файла //формирование прайса МассивПрайсовДД = СформироватьXLSXСКлиента(ИмяФайлаНаДиске ); //формирование прайса Если МассивПрайсовДД = Неопределено Тогда Возврат; КонецЕсли; //перенос файла на клиент ПереместитьПрайсы(МассивПрайсовДД, ИмяФайлаНаДиске); //перенос файла на клиент КонецПроцедуры &НаКлиенте Процедура ПереместитьПрайсы(МассивПрайсовДД, ИмяФайлаНаДиске) // Создаем описание получаемых файлов. ОписанияФайлов = Новый Массив; Для Каждого ПрайсДД Из МассивПрайсовДД Цикл ОписаниеФайла = Новый ОписаниеПередаваемогоФайла(ПолучитьИмяВременногоФайла(), ПрайсДД); ОписанияФайлов.Добавить(ОписаниеФайла); КонецЦикла; // Сохраняем файлы из временного хранилища в локальную файловую систему. ПолученныеФайлы = Новый Массив; ПолучитьФайлы(ОписанияФайлов, ПолученныеФайлы, , Ложь); // Открываем файлы. Для Каждого ПолученныйФайлы Из ПолученныеФайлы Цикл дд = Новый ДвоичныеДанные(ПолученныйФайлы.Имя); дд.Записать(ИмяФайлаНаДиске); //Предупреждение("Файл сохранен "+ ИмяФайлаНаДиске); ЗапуститьПриложение(ИмяФайлаНаДиске); КонецЦикла; КонецПроцедуры Функция СформироватьXLSXСКлиента(ИмяФайлаНаДиске) //сохранение прайса на сервере дд = Новый ДвоичныеДанные(ИмяФайлаНаДиске); //C:\\1.xls АдресаВоВременномХранилище = Новый Массив; АдресаВоВременномХранилище.Добавить(ПоместитьВоВременноеХранилище(дд, ЭтаФорма.УникальныйИдентификатор)); Возврат АдресаВоВременномХранилище; //возврат адрес прайса на сервере КонецФункции
Комментариев нет:
Отправить комментарий