Всем доброго времени суток! Хочу добавить возможность сохранения печатной формы в нетиповой документ. Код написал, но при нажатии кнопки открывается окно диалога выбора и документ не хочет сохраняться. Подскажите, в чем может быть ошибка
&НаСервере
Процедура СохранитьДокНаСервере()
ТабДок = Новый ТабличныйДокумент;
...
ТабДок.Вывести(Подвал);
ТабДок.АвтоМасштаб = Истина;
//ТабДок.Записать("C:\Договора Материнского Капиатала\"+Объект.ЗаказКлиента.Номер+"_"+объект.Покупатель+".xlsx", ТипФайлаТабличногоДокумента.XLSX);
Возврат
КонецПроцедуры
&НаКлиенте
Процедура СохранитьДок(Команда)
СохранитьДокНаСервере();
СтандартнаяОбработка = Ложь;
РежимДиалога = РежимДиалогаВыбораФайла.Сохранение;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога);
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.Заголовок = "Выберите папку, где необходимо сохранить файл";
ДиалогВыбораФайла.ПолноеИмяФайла = Объект.ЗаказКлиента.Номер+объект.Покупатель;
ДиалогВыбораФайла.Фильтр = "Формат выгрузки(*xlsx)|*.xlsx";
Если ДиалогВыбораФайла.Выбрать() Тогда
Объект.ПутьФайла = ДиалогВыбораФайла.ПолноеИмяФайла;
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Сохранение печатной формы в Excel
- Групповая печать/сохранение документов (с гибкой настройкой отбора, указание печатной формы выбранному виду документа, указание количества копий для печати, сохранение в PDF/XLS, индикатор+оставшееся время выполнения)
- Привязка пути сохранения печатных форм к клиенту
- Сохранение печатной формы в файл для нескольких документов с заданным именем файла
- Массовое сохранение печатных форм Торг-12 в формате xls из Реализации товаров и услуг
Найденные решения
(1)
&НаСервере
Функция СформироватьТабДок()
ТабДок = Новый ТабличныйДокумент;
...
ТабДок.Вывести(Подвал);
ТабДок.АвтоМасштаб = Истина;
Возврат ТабДок;
КонецФункции
&НаКлиенте
Процедура СохранитьДок(Команда)
ТабДок = СформироватьТабДок();
СтандартнаяОбработка = Ложь;
РежимДиалога = РежимДиалогаВыбораФайла.Сохранение;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога);
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.Заголовок = "Выберите папку, где необходимо сохранить файл";
ДиалогВыбораФайла.ПолноеИмяФайла = Объект.ЗаказКлиента.Номер+объект.Покупатель;
ДиалогВыбораФайла.Фильтр = "Формат выгрузки(*xlsx)|*.xlsx";
Если ДиалогВыбораФайла.Выбрать() Тогда
ТабДок.Записать(ДиалогВыбораФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Могу подсказать последовательность действий.
1. Формируем документ.
2. Выбираем имя файла для документа.
3. Записываем сформированный документ по указанному имени файла.
Твой алгоритм:
1. Формируем документ.
2. Теряем его на сервере.
3. Выбираем имя файла.
Найди отличия.
1. Формируем документ.
2. Выбираем имя файла для документа.
3. Записываем сформированный документ по указанному имени файла.
Твой алгоритм:
1. Формируем документ.
2. Теряем его на сервере.
3. Выбираем имя файла.
Найди отличия.
(8) Все происходит на клиенте, нажимаем кнопку печать документа с последующим сохранением, печатная форма открывается и параллельно с ней документ автоматически сохраняется по указанному пути. У данного решения есть 2 проблемы: идет жесткая привязка к пути для сохранения документа и вторая - если у человека не создана нужная папка то программа выдаст ошибку, мол такой папки не существует и сохранить ничего нельзя. Поэтому делаю альтернативное решение, где точно также можно сохранить документ, но только через окно сохранения документа
(12) Да, при условии, что этот ресурс с сервера доступен ровно по тому же пути и с теми же правами, что и с клиента. Или если клиент и сервер работают на одной машине. Или если это файловая база.
Если мы хотим, чтобы у пользователя все работало без сбоев и ошибок и хоть немного любим свою техподдержку - любая интерактивная запись должна быть на клиенте. Это просто из разряда юзабилити. Технически, канеш, мы программисты умнее пользователей, и можем записать что угодно и где угодно.
Но пишем-то мы не для себя ;-)
А то понапихают всяких сетевых дисков, понимаешь...
Если мы хотим, чтобы у пользователя все работало без сбоев и ошибок и хоть немного любим свою техподдержку - любая интерактивная запись должна быть на клиенте. Это просто из разряда юзабилити. Технически, канеш, мы программисты умнее пользователей, и можем записать что угодно и где угодно.
Но пишем-то мы не для себя ;-)
А то понапихают всяких сетевых дисков, понимаешь...
(9)Если пользователь указывает место сохранения файла на своей машине, то см (7)
Если пользователь может указать место сохранения в общем сетевом ресурсе, то можно и на стороне сервера выполнять сохранения файла, главное дать доступ серверу 1С к этому общему сетевому ресурсу.
Если пользователь может указать место сохранения в общем сетевом ресурсе, то можно и на стороне сервера выполнять сохранения файла, главное дать доступ серверу 1С к этому общему сетевому ресурсу.
(1)
&НаСервере
Функция СформироватьТабДок()
ТабДок = Новый ТабличныйДокумент;
...
ТабДок.Вывести(Подвал);
ТабДок.АвтоМасштаб = Истина;
Возврат ТабДок;
КонецФункции
&НаКлиенте
Процедура СохранитьДок(Команда)
ТабДок = СформироватьТабДок();
СтандартнаяОбработка = Ложь;
РежимДиалога = РежимДиалогаВыбораФайла.Сохранение;
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалога);
ДиалогВыбораФайла.МножественныйВыбор = Ложь;
ДиалогВыбораФайла.Заголовок = "Выберите папку, где необходимо сохранить файл";
ДиалогВыбораФайла.ПолноеИмяФайла = Объект.ЗаказКлиента.Номер+объект.Покупатель;
ДиалогВыбораФайла.Фильтр = "Формат выгрузки(*xlsx)|*.xlsx";
Если ДиалогВыбораФайла.Выбрать() Тогда
ТабДок.Записать(ДиалогВыбораФайла.ПолноеИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот