Имя: Пароль:
1C
1С v8
Как на сервере без контекста получить макет?
, ,
0 baribars
 
17.09.22
14:57
Собственно.
1 sitex
 
naïve
17.09.22
15:06
(0) Почитать ИТС https://its.1c.ru/db/v8std/content/636/hdoc
2 Kassern
 
17.09.22
15:08
(0) Передать параметром
3 baribars
 
17.09.22
15:13
забыл) внешней обработки макет получить
4 RomanYS
 
17.09.22
15:26
(3) внешние обработки можно подключать. Это не про БСП, а про методы платформы
5 baribars
 
17.09.22
15:34
(4) есть внешняя обработка, у нее есть макет, мне надо получить макет на сервере без контекста
6 Kassern
 
17.09.22
15:35
(5) Значит надо, там где есть контекст, получить этот макет и передать в процедуру без контекста
7 rphosts
 
17.09.22
15:45
(0) старые форму, УФ? Если макет в ИБ существует - напрямую, иначе например через хранилище.
8 RomanYS
 
17.09.22
16:07
(5) Обработка в файле лежит или тебе надо из открытой формы этой обработки?
9 baribars
 
17.09.22
16:17
(8) в самой этой обработке получится макет из нее же
10 RomanYS
 
17.09.22
16:27
(9)

&НаКлиенте
Процедура Подключить(Команда)//можно ПриОткрытии
    НачатьПомещениеФайла(Новый ОписаниеОповещения("ПодключитьЗавершение", ЭтаФорма,), , ИспользуемоеИмяФайла(), Ложь);
КонецПроцедуры

&НаКлиенте
Процедура ПодключитьЗавершение(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
    ИмяОбработки = ПодключитьВнешнююОбработку(Адрес);
КонецПроцедуры

&НаСервере
Функция ИспользуемоеИмяФайла();
    Возврат РеквизитФормыВЗначение("Объект").ИспользуемоеИмяФайла;
КонецФункции

&НаСервере
Функция ПодключитьВнешнююОбработку(АдресХранилища)
    Возврат ВнешниеОбработки.Подключить(АдресХранилища);
КонецФункции  

&НаСервереБезКонтекста
Функция Макет(ИмяОбработки, ИмяМакета)
    Возврат ВнешниеОбработки.Создать(ИмяОбработки).ПолучитьМакет(ИмяМакета);
КонецФункции
11 baribars
 
17.09.22
16:46
(10) Каталог не обнаружен 'e1cib\tempstorage\8b98bcdd-703f-4358-9675-fb0e3426cbb6'. 3(0x00000003): Системе не удается найти указанный путь.  - НачатьПомещениеФайла(Новый ОписаниеОповещения("ПодключитьЗавершение", ЭтаФорма,), , ИспользуемоеИмяФайла(), Ложь);
12 RomanYS
 
17.09.22
17:02
(11) в (10) для обработки открытой с диска. У тебя похоже через БСП подключена, должно быть ещё проще
13 RomanYS
 
17.09.22
17:03
... помещать файл не нужно... И возможно она подключена кодом БСП
14 baribars
 
17.09.22
17:07
(13) да, через бсп было
15 baribars
 
17.09.22
17:23
а как сохранить макет с компоновкой данных? чтобы загрузить в другую обработку в макет?
16 RomanYS
 
17.09.22
20:29
(15) в конфигураторе копипаста работает. Можно в файл (xml) выгрузить
17 Сергиус
 
19.09.22
03:32
(0)ДвоичныеДанныеОбработки = Новый ДвоичныеДанные(<ПутьКФайлу>);
   АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеОбработки);
   ОписаниеЗащитыОтОпасныхДействий = Новый ОписаниеЗащитыОтОпасныхДействий;
   ОписаниеЗащитыОтОпасныхДействий.ПредупреждатьОбОпасныхДействиях = Ложь;        
   Обработка = ВнешниеОбработки.Подключить(АдресВХранилище, , Ложь, ОписаниеЗащитыОтОпасныхДействий);
   Обработка = ВнешниеОбработки.Создать(<ИмяОбработки>);
   Обработка.ПолучитьМакет(ИмяМакета);
18 Smallrat
 
19.09.22
08:39
(9) тебе надо получить макет обработки из самой формы обработки? РеквизитФормыВЗначения("Объект").ПолучитьМакет("ИмяМакета");
19 Smallrat
 
19.09.22
08:40
+(18) но без контекста не получится, надо будет где-то получить в контексте и передать параметром
20 mikecool
 
19.09.22
09:41
а мне вот интересно, почему Прочитать() таб дока не работает на клиенте?
21 Kassern
 
19.09.22
09:47
(20) у него практически все методы серверные, кроме как Показать)
22 mikecool
 
19.09.22
09:48
(21) вот-вот, а накой мне пользовать ДД, потом на сервере их в файл скидывать, чтобы прочитать?
23 Kassern
 
19.09.22
09:53
(22) По поводу файла, это да, было бы удобно, если бы ТД умел с потока читать. Тогда можно было ДД передать на сервер через временное хранилище, а у него получить поток и запихнуть в ТД. Тогда не пришлось бы временные файлы создавать и нагружать диск.
24 mikecool
 
19.09.22
09:56
(23) или читать сразу на клиенте и на серв закидывать уже табдок )
25 mikecool
 
19.09.22
09:56
+24 или не закидывать, а на клиенте обработать )
26 Kassern
 
19.09.22
10:00
(25) Тогда придется все остальные методы сделать клиентскими, а это не так уж и просто.
27 Kassern
 
19.09.22
10:02
(24) ТабДоки могут быть большими, ооочень большими. Читать такое на клиенте, может просто загнуть его.
28 mikecool
 
19.09.22
10:04
(27) ага, пусть сервер гнется )) разраб уже пусть принимает решение )
29 RomanYS
 
19.09.22
10:28
(26) Области ячеек и их содержимое доступны на клиенте, этого достаточно для большинства задач в принципе выполнимых на клиенте