Имя: Пароль:
1C
 
Сохранение данных отчета в файл.
, , ,
0 location
 
naïve
30.09.24
17:47
Добрый день.
Подскажите пож-та есть ли какой то способ сохранить файл или универсально или с выбором каталога для сохранения.
Суть проблемы, есть отчет на СКД, отчет формируется программно, форма отчета отсутствует, получается в процедуре прикомпоновкеданных нельзя вызвать диалогвыборафайла, при добавлении формы отчета, не могу открыть форму настроек ошибка "На заданы параметры ФормыНастроек", вспомогательная форма настроек не подходит, т.к. в основной форме куча доп кнопок заполнений.
Пробовал универсально на рабочий стол сохранить, но оно сохраняет под пользователем агента 1С. Хотя если ввести в "выполнить" "%USERPROFILE%" открывается мой каталог, а программно каталог агента.
1 craxx
 
30.09.24
18:03
(0) а что мешает сделать свою форму отчета?
2 lEvGl
 
гуру
30.09.24
18:35
так если программно, то вывод куда, в табдок? его и сохраняйте, там же где программно
3 craxx
 
30.09.24
18:36
(2) Так автор и пишет что сохраняется, но в папку юзера USR1CV8
4 lEvGl
 
гуру
01.10.24
09:25
(3) что значит "сохраняется", автор что - нейросеть и не может сам назначить каталог сохранения? натравите нейросеть на базу знаний

на клиенте
Каталог = ДиалогВыбора
СформироватьОтчетНаСервере(Каталог)

на сервере:
Компоновщик = тратата
Вывести(Результат)
Результат.Записать(Каталог)


или
ОтчетОбъект.ДопСвойства.Вставить(Каталог)
ТабДок.Записать(ДопСвойства.Каталог);


да как угодно передать каталог от пользователя

а куда ему вообще надо? автору-то. Он определился? Так-то только технические проблемы описаны, что не получается, а куда надо, не ясно
аа "выполнить" используется, ну это диагноз
;)
5 Волшебник
 
01.10.24
08:56
Горбатый (верблюжий) регистр потеряли
6 DiMel_77
 
01.10.24
09:29
Непонятно что вообще хочет автор?
Если вызов формирования табличного документа выполняется с клиента, то можно сделать открытие формы печати документа пользователю.
Например так:

&НаКлиенте
Процедура ОтчетОВыполнении(ДополнительныеПараметры) Экспорт

	// сформируем нужный нам табличный документ
	ОтчетПоРезультату = СформироватьОтчетНаСервере();
	
	// создадим коллекцию печатных форм, в которую надо будет добавить нужный нам табличный документ
	КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("ИмяОтчета");	
	// Добавляем в коллекцию (тип массив) сформированный Табличный документ
	КоллекцияПечатныхФорм[0].ТабличныйДокумент = ОтчетПоРезультату; 
	// если требуется устанавливаем параметры печати
	КоллекцияПечатныхФорм[0].Экземпляров = 1;
	КоллекцияПечатныхФорм[0].СинонимМакета = "Синоним макета";  // используется для формирования имени файла при сохранении из общей формы печати документов
	// .. и выводим стандартной процедурой БСП
	УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, Неопределено, ЭтаФорма);	

КонецПроцедуры // ОтчетОВыполнении()


Но есть у меня подозрение, что автор формирует отчет на сервере, а сохранить хочет на клиенте...
7 Волшебник
 
01.10.24
09:30
(6) Подозрение вполне обоснованное
8 lEvGl
 
гуру
01.10.24
09:36
ааа, ну может и так, тогда можно вернуть табдок на клиента и записать куда надо
9 location
 
naïve
01.10.24
12:16
(1) так я ж пишу, не могу сделать форму отчета.
Если делаю форму отчета, для свойства "Форма настроек" необходимо указать "ВспомогательнаяФормаНастроекОтчета", если этого не сделать то любая другая форма настроек выдает
ошибку "Не передан служебный параметр "НастройкиОтчета" а мне нужна использовать стандартную "ФормаНастроекОтчета".
10 location
 
naïve
01.10.24
12:21
(2) как мне прописать сохранение например на рабочем столе пользователя, который будет пользоваться этим отчетом?
11 location
 
naïve
01.10.24
12:22
(6) нету формы у меня, все формируется на сервере и сохраняется на сервере.
12 osa1C
 
01.10.24
12:26
В (11) сам пишешь, что формируешь и сохраняешь на сервере, а нужно на клиенте. В (8) ответ
13 location
 
naïve
01.10.24
12:53
(12) формы нету, как я ее на клиента верну?
14 Мультук
 
гуру
01.10.24
13:00
(10)

Что мешает сохранять в сетевую папку.
Ссылку на папку поместить пользователю на стол
15 Мультук
 
гуру
01.10.24
13:02
(0)

>> отчет формируется программно

Работает 1С работает, а потом "а что бы мне отчёт не сформировать" ?

Регламентное? или всё же кто-то жмёт на кнопку ?
Или отчёт формируется (например) при проведении документа ?
16 osa1C
 
01.10.24
13:02
(13) Не форму, ТабличныйДокумент вернешь. Пользователь у тебя какие действия выполняет, чтобы сформировался отчет?
17 Волшебник
 
01.10.24
13:04
Если регламентное, можно сохранять в регистр сведений "Рассылка" или подобный.

Если интерактивно, то просто вернуть ТабДок через временное хранилище. Или тоже через РС
18 location
 
naïve
01.10.24
13:11
(15) жмут кнопку. но формы нету
19 location
 
naïve
01.10.24
13:21
(16) как мне вернуть на форму табличный документ, если формы нет.
20 osa1C
 
01.10.24
13:22
(18) Ещё раз тебе ответ в (8) и (17)
21 Мультук
 
гуру
01.10.24
13:24
(18)

Вот такой псевдокод.
На каком этапе проблема ?

&НаКлиенте
Процедура НажатиеНаКнопку()
  Таб = СформироватьОтчетСКДВернутьТабДокумент();

  ИмяФайла = ""; 
  Если ВыбратьИмяФайла(ИмяФайла) Тогда
     Таб.Сохранить(ИмяФайла);
  КонецЕсли; 

КонецПроцедуры 


&НаСервере
Функция СформироватьОтчетСКДВернутьТабДокумент()
    //тут всякое. Программное формрование отчёта скд
 

   Возврат табличныйДокумент;
КонецФункции

22 Волшебник
 
01.10.24
13:25
(21) Ой, помогите.

"ВыбратьИмяФайла" - метод не обнаружен.

"табличныйДокумент" - переменная не определена.
23 location
 
naïve
01.10.24
13:25
(21) на этапе что у меня у меня формы нету
24 osa1C
 
01.10.24
13:25
(19) На какую форму? Кнопку у тебя нажимают, вот в процедуру &НаКлиенте и верни табличный документ через временное хранилище. И получив его во временном хранилище сохраняй на рабочий стол или куда хочешь, уже на машине клиента
25 location
 
naïve
01.10.24
13:26
формы нет, она формируется автоматом
26 osa1C
 
01.10.24
13:26
(23) Кнопка есть? Процедура ПриНажатииНаКнопку есть? Что тебе еще надо?
27 Мультук
 
гуру
01.10.24
13:27
(23)

А можно скриншот контекста кнопки ?
Мне стало уже интересно, как кнопки в 1С стали существовать без форм
28 Мультук
 
гуру
01.10.24
13:28
(0)

>>>отчет формируется программно

Покажите уже ваш код
29 lEvGl
 
гуру
01.10.24
13:29
))
"да нет у меня формы! мамой клянуць"
30 osa1C
 
01.10.24
13:30
(27) Просто видимо кнопка программно создается. Но даже при программном создании процедура ПриНажатии() должна создаваться. Иначе это не кнопка, а рисунок
31 osa1C
 
01.10.24
13:32
(25) Если есть кнопка, то она у тебя же не в воздухе болтается, она на форме. В эту форму и иди. То что у отчета нет формы в данном случае не важно
32 location
 
naïve
01.10.24
13:36
у меня нет добавленной формы отчета. только макет СКД, при открытии в предприятии вызывается общая форма "ФормаОтчета", которая работает на все остальные отчеты в базе, ее изменять нельзя.
33 Волшебник
 
01.10.24
13:41
коллегам
34 location
 
naïve
01.10.24
13:44
(33) причина почему я не могу сделать так описана в (9)
35 location
 
naïve
01.10.24
13:45
расскажите как в таком варианте вернуть данные на клиент, если общую форму менять нельзя
36 lEvGl
 
гуру
01.10.24
13:47
(32) почему нельзя менять?
возможность сохранения на раб стол пользователя может быть нужна только для одного из отчетов, разве?
37 location
 
naïve
01.10.24
13:49
(36) этот отчет специфический он не должен отобразиться пользователю, а просто сохраниться сразу в эксель "ГДЕТО" для пользователя, т.к. там прописана куча формул, куча полей для ручного ввода значений и т.д.
38 lEvGl
 
гуру
01.10.24
13:54
покажите уже стек процедур, как происходит формирование и показ или не показ сейчас. чтобы понимать какой у вас вариант, т к их не один
39 osa1C
 
01.10.24
13:56
(37) Ну так сохрани программно, не показывай пользователю. А действия общей формы можно поменять в расширении. Указываешь, что твои действия производятся только с нужным тебе отчетом, передаешь Табличный документ и сохраняешь, это все
40 АгентБезопасной Нацио
 
01.10.24
13:56
(35) ОтчетыКлиентПереопределяемый.ПослеФормирования(ЭтотОбъект, ОтчетСформирован)
41 location
 
naïve
01.10.24
14:07
(39) этот отчет внешний.
Его могут переименовать как захотят, привязаться не к чему.
42 DiMel_77
 
01.10.24
16:11
(41) Итого:

1) Есть внешний отчет (в модуле которого скорее всего прописана процедура подключения).
2) Необходимо формировать отчет, без вывода пользователю результата (37), но с возможностью настройки пользователем через форму БСП "ФормаНастроекОтчета"(9)?
3) Типовая форма отчета БСП вас не устраивает (по каким то непонятным причинам...).

Т.е. вы хотите использовать форму настроек из БСП - "ФормаНастроекОтчета", но не хотите использовать типовую "ФормуОтчета" из состава БСП?

А разработать собственную форму (реализовав в ней весь функционал по работе с настройками) вам не очень хочется.

Копировать типовую общую форму "ФормуОтчета" в отчет и переписать то что вам нужно, тоже не хотите. (расширения не нужны в этом случае)

Ищете какой то волшебный способ вызова с сервера клиентских процедур? Такого способа нет!
43 Волшебник
 
01.10.24
16:22
(42) >> волшебный способ вызова с сервера клиентских процедур? Такого способа нет!

В 27 релизе обещали сделать WebSocket
https://wonderland.v8.1c.ru/blog/podderzhka-protokola-websocket/
обсуждение было здесь Заметки из Зазеркалья: Поддержка протокола WebSocket
44 1cVandal
 
01.10.24
21:30
на почту отправляй пользователю и не пучкай мозг. он сам сохранит в папку куда ему надо
45 Волшебник
 
01.10.24
21:32
(44) Топорно... ИТ-архитекторы не воспринимают почту как часть ИС. Для них почта — это типа неудобного мессенджера, где всё теряется.
Ошибка? Это не ошибка, это системная функция.