Имя: Пароль:
1C
 
Открыть форму документа во OLE-соединении БЕЗ главного окна приложения
0 GANR
 
09.06.26
23:58
Порядок действий:

На стороне УХ в толстом клиенте выполняем программный код, чтобы открыть форму документа во внешней базе (БП 3)

V83App = Новый COMObject("V83.Application");
V83App.Connect("Srvr=""уууу"";Ref=""ffff"";Usr=""tttt"";Pwd=""xxx"";");
ВнешняяСсылка = V83App.Документы.РеализацияТоваровУслуг.ПолучитьСсылку(Новый УникальныйИдентификатор("467c0a4a-067d-4dd6-80ec-ca6b2eb7d3be"));
ПараметрыФормы = V83App.NewObject("Структура", "Ключ", ВнешняяСсылка);    
V83App.OpenForm("Документ.РеализацияТоваровУслуг.ФормаОбъекта", ПараметрыФормы);

Фактический результат:
Во внешнем соединении открывается окно приложения и внутри него документ.

Желаемый результат:
Открыть форму документа во внешнем соединении БЕЗ главного окна приложения.

Каким образом можно добиться желаемого результата?
1 timurhv
 
10.06.26
00:17
Это к Гению 1С, он научит
2 GANR
 
10.06.26
00:22
(1) Делал в 2012 году такое, но к сожалению никак не найду исходник. Может навигационные ссылки можно как-то открывать с токеном, чтобы не было надобности по 100 раз пароль и логин вводить.
3 GANR
 
10.06.26
00:25
Модераторов попрошу тему переименовать в "Открыть форму документа во внешнем соединении БЕЗ главного окна приложения".
4 H A D G E H O G s
 
10.06.26
00:31
ПерейтиПоНавигационнойСсылке(<НавигационнаяСсылка>)

Возможен переход по внешней ссылке. Для внешней ссылки, которая содержит сигнатуру "e1cib" выполняются следующие действия:
Если начало ссылки совпадает с навигационной ссылкой информационной базы текущего сеанса, то выполняется переход по локальной ссылке;
Если начало ссылки не совпадает с навигационной ссылкой информационной базы, то осуществляется поиск запущенного клиента, подключенного к базе, адрес которой соответствует ссылке. Если такой клиент найден, окно его приложения активизируется и в нем выполняется переход по ссылке.
Если соответствующего запущенного экземпляра тонкого клиента нет, то выполняется попытка запуска нового экземляра тонкого клиента с соответствующей строкой соединения и в нем выполняется переход.
5 GANR
 
10.06.26
00:41
(4) похоже, это наиболее приближенный к современный реалиям вариант
6 Мультук
 
гуру
10.06.26
06:43
(0)

Цель то какая ?
7 GANR
 
10.06.26
08:33
(6) Человек просматривающий нагруженные из внешних систем документы в 1 таблицу должен иметь возможность в 1 клик открыть его как он есть в первоисточнике на просмотр
8 Rovan
 
гуру
10.06.26
08:56
(0) а так
V83App.Visible = 0
9 GANR
 
10.06.26
09:01
(8) Ни документ ни главное окно базы источника не видно тогда
10 Rovan
 
гуру
10.06.26
09:28
попробуй
WindowState = 2    // Minimize
11 Климов Сергей
 
10.06.26
09:32
(7) А просмотр печатной формы не спасёт отца русской демократии? Это сильно проще в реализации.
12 Garykom
 
гуру
10.06.26
22:46
(7) Попытка изобрести свою бесшовную интеграцию с ДО?

Кстати оно вполне реализуемо и даже универсально для любых справочников/документов
Причем нафик COM/OLE, сделать через веб или лучше http-сервис

Суть что тебе надо взять некий объект с данными из другой базы и отобразить его
Данные взять не проблема, причем используя метаданные даже знаем какие есть

Остается внешний вид - и тут как раз для УФ форм можно программно получить и нарисовать как надо, почти как в исходном справочнике или документе и с ТЧ
https://infostart.ru/1c/tools/304736/

Минус только один - это нихрена не задачка уровня джуна, тут и сеньор пару недель провозится
Но зато будет универсальный механизм и готовый материал для статьи на ИС или выступления на эвенте
13 егаис
 
11.06.26
08:12
(11) А есть примеры, как это реализуется?
У меня дергается представление документа в управленку из бух по http. Как реализовать вывод печатной формы в управленке, зная уид документа источника?
Знаю метод получения данных через json и формирования отчета скд через внешний  источник данных. Есть еще варианты, например табдок передать готовый?
14 toypaul
 
гуру
11.06.26
08:24
(13) передать как двоичные данные. например, файлы в ДО так передаются
15 Климов Сергей
 
11.06.26
09:18
(13) Примеров нет. По команде из управленки формировать для документа печатную форму по умолчанию. Возвращать готовый mxl.
16 stix2010
 
11.06.26
10:04
(13) передачу табдок через двоичные данные совсем недавно делал, ничего сложного,табдок записать в двоичные данные и передать нужным транспортом, на другой стороне перевести обратно в табдок и отобразить.
ПФ в БСП генерится тут
Результат = УправлениеПечатью.СформироватьПечатныеФормыДляБыстройПечати(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ПараметрыПечати);
17 GANR
 
11.06.26
12:49
(4) Пока склоняюсь к этому.
(12) Писать звездолет уж точно не вариант. Я то напишу, да только кто поддерживать будет без меня - большой вопрос.
18 TormozIT
 
гуру
11.06.26
14:09
V83App.Visible = False;
V83App.OpenFormModal()
19 AAA
 
11.06.26
14:38
Типичный случай неверно поставленной задачи. Автор пишет - "Человек просматривающий нагруженные из внешних систем документы в 1 таблицу должен иметь возможность в 1 клик открыть его как он есть в первоисточнике на просмотр"
Кто это придумал и поставил такую задачу? Предполагаю, что это даже не человек, просматривающий...
Дуиаю, что человек просматривающий просто сверяет данные в БП3 с данными источника (другой программы). И здесь уже были вполне разумные подходы к решению этой задачи. Грубо говоря, нужен отчет по сверке импортированных в БП3 данных. И COM тут не надо. HTTP сервис в руки и вперед
20 GANR
 
11.06.26
15:07
(18) Вот так в итоге взлетело. Тормозит сильно, однако.

V83App.Visible = false;
Form = V83App.GetForm("Документ.КорректировкаПоступления.ФормаОбъекта", ПараметрыФормы);
Form.DoModal();
21 H A D G E H O G s
 
11.06.26
15:31
(20) Каждый раз открывается сеанс 1С?
22 GANR
 
11.06.26
15:36
(21) Если я это буду "набело" делать, то конечно же в переменную суну сеанс.
23 Eiffil123
 
11.06.26
16:28
(22) а в какую переменную? где она будет?
24 GANR
 
11.06.26
16:40
(23) Вариантов много очень. Но вообще я уж решил прекратить копать в сторону OLE - лучше уж навигационные ссылки.
25 vicof
 
12.06.26
08:11
(22) Вот тут бы пару букв поменять местами в выделенном слове
26 GANR
 
12.06.26
19:32
(25) Как посоветуете?
27 TormozIT
 
гуру
12.06.26
20:08
(24) Специалист по межпроцессным интеграциям пользовательского интерфейса 1С тут есть? Да, он сделал их уже много и сейчас вот делает EDT-1C. Не все ведутся на модные пластинки "COM/OLE - прошлый век, позор, зашквар".
Рекомендую статью https://infostart.ru/1c/articles/387577/ Она поможет ускорить подключение.
28 Garykom
 
гуру
12.06.26
22:14
(27) Это все конечно хорошо и прекрасно
Но как быть с Linux, macOS, Android и iOS?
Что делать когда с x86/x64 будет переход на ARM или даже RISC-V?
29 Гений 1С
 
гуру
12.06.26
23:16
(20) ну вот и без гения справились.
ну задача изначально не в духе 1С. потому и решение довольно костыльное. 1с так не умеет
30 Гений 1С
 
гуру
12.06.26
23:20
может лучше не во внешнем, а в родном? Скопировать по-элементно? а?
31 GANR
 
13.06.26
06:56
(28) Если переведут на Линукс эта задача будет последним, о чем вспомнят пользователи.
32 GANR
 
13.06.26
19:40
(30) Можно, конечно, но... Учитывая масштабы овчинка выделки не стоит точно. Проще навигационные ссылки загнать по обмену да и пользователя подучить - ничуть не хуже.