Как на сервере получить объект созданной внешней обработки по уникальному ид #709041


#0 by Crush
Тонкий клиент 8.3.4 Запускаю внешнюю обработку. Её объект остается на сервере, а клиенту передается форма. У формы есть свойства: Хочу получить ИспользуемоеИмяФайла без передачи контекста. Ведь объект внешней обработки есть на сервере. Подскажите как получить объект внешней обработки по уид или по имени формы? ВнешниеОбработкиМенеджер имеет методы Создать(Имя) и Подключить(Имя). В обоих случаях сказано, что создается объект внешней обработки. А мне нужно получить ранее созданный.
#1 by fisher
"Её объект остается на сервере, а клиенту передается форма" Новичок в УФ?
#2 by Crush
Ага. За последние 2 года сегодня первый раз взялся. получилось так #Область НеМобильноеПриложение #Если НЕ (МобильноеПриложениеСервер или МобильноеПриложениеКлиент) Тогда #КонецОбласти Теперь хочу это в общий модуль как то припаять, что бы из внешних обработок можно было одной строчкой вызывать
#3 by fisher
Получить "ранее созданный" объект обработки невозможно, потому что он самоликвидировался при завершении серверного вызова. А смысл процедуры РезетНаСервере остался за пределами моего понимания.
#4 by Crush
Там как раз получается ранее созданный объект. Из него вытягивается ИмяФайла и создается новый объект на основании файла. Потом на клиенте открывается его форма по имени.. Сейчас еще чуть допилю и выложу конечный результат. мож кому сгодиться, а может кто пинка правильного даст
#5 by fisher
Чтобы не сойти с ума, открою эту ветку завтра утром. Пока я что-то вообще не пойму ни смысла телодвижений, ни каким путем этот смысл достигается. Кто-то из нас двоих заработался.
#6 by H A D G E H O G s
КонецПроцедуры
#7 by H A D G E H O G s
Автор чето жжет и курит
#8 by H A D G E H O G s
Он пытается "обнулить" уже созданный объект на сервере. Бедолага.
#9 by H A D G E H O G s
При последующей контекстном вызове, с клиента поползут мигрируемые данные (Объект.Организация, Объект.НомерГТД) и он их увидит.
#10 by Crush
Имя файла нужно в момент перезапуска обработки. Цель была такая: быстро подключать в новые обработки возможность перезагрузки. Как помните в опенКонфе в 7.7 был шаблон на форму "Перезагрузить". Вот как получилось и работает. В модуле формы добавляем процедуру &НаКлиенте Процедура ДействиеРезет(Команда) РаботаСФормамиНаКлиенте.ПерезагрузитьВнешнююОбработку(ЭтаФорма); КонецПроцедуры Создаем команду и кнопку. Кстати если в свойствах конфы стоит только галка Мобильное приложение, то Сочетание клавиш команды не активно, а программно устанавливается. Общий модуль "РаботаСФормамиНаКлиенте": Только галка "Клиент (Управляемое приложение)". &НаКлиенте Общий модуль "РаботаСФормамиНаСервере": Галки "Сервер" и "Вызов сервера".     #Если НЕ МобильноеПриложениеСервер Тогда КонецПроцедуры     В модуль формы можно еще текста добавить, если лень создавать команду и кнопку вручную. &НаСервере не знаю как на счет "Заработался", но слезть с толстого клиента и столкнуться со стеной непонимания клиент-серверного программирования - это вынос мозга еще тот. Если кто знает правильный метод быстрого добавления кнопки "Перезагрузить" на управляемую форму внешней обработки, подскажите пожалуйста пока ко мне 03 не вызвали:)
#11 by Crush
У меня получилось обратиться к контексту при вызове процедуры из общего модуля. Точнее я не знаю как это сделать.
#12 by Crush
*НЕ получилось
#13 by H A D G E H O G s
Чтобы не переоткрывать форму?
#14 by Лефмихалыч
покрышки
#15 by H A D G E H O G s
Да не, походу автор чето годное раскопал.
#16 by H A D G E H O G s
автор крут, че!
#17 by H A D G E H O G s
он автоматизировал перезапуск обработок при отладке вида 1. Закрыть. 2. Файл - Открыть - имя файла обработки.
#18 by Crush
А кто то кроме меня это протестил? Начал читать доки по УФ и там подтверждаются слова " fisher Получить "ранее созданный" объект обработки невозможно, потому что он самоликвидировался при завершении серверного вызова. " А объект то получается, иначе ВнешниеОбработки.Создать(ИмяОбработки).ИспользуемоеИмяФайла возвращало бы какую-нибудь ерунду. Проверил сейчас на двух разных однвременно работающих обработках - полет нормальный.
#19 by fisher
Так. С утра я хотя бы понял, чего ты хочешь добиться. А если в РаботаСФормамиНаКлиенте.ПерезагрузитьВнешнююОбработку закомментировать строчку РаботаСФормамиНаСервере.ПерезагрузитьВнешнююОбработку(ИмяОбработки); То результат разве изменится? :)
#20 by Crush
Это будет удар ниже пояса:) *полез проверять*
#21 by Crush
Изменится. Будет открываться тот экземпляр формы, который был открыт руками, а не тот, что в файле. Короче не перезагружается внешняя обработка без этой строчки.
#22 by fisher
А давай сначала. А то я плохо нащупываю нить. Смысл всех телодвижений, чтобы переоткрыть открытую внешнюю обработку кнопкой из этой самой обработки? Встроенных в конфу одноименных обработок нет?
#23 by Crush
1.Да. 2. Не важно есть или нет одноименные встроенные в конфу. Они уже не внешние обработки и не имеют свойства "ИспользуемоеИмяФайла".
#24 by H A D G E H O G s
Автор, ты - прекрасен. Это - лучшее, что я видел на мисте за последнее время.
#25 by Crush
А если одновременно открыть 3 обработки и два раза жмакнуть на f5, то останется одна:)
#26 by Crush
Выбор Когда НЕ(ЯНачинающийУФник И НадоМнойСтебутся) Тогда
#27 by H A D G E H O G s
#Если НЕ МобильноеПриложениеСервер Тогда     #Если НЕ МобильноеПриложениеСервер Тогда КонецПроцедуры
#28 by H A D G E H O G s
А ИспользуемоеИмяФайла - получал бы в ПриСозданииНаСервере И еще смотрел - является ли обработка внешней     ЭтоВнешняяОбработка=Метаданные.НайтиПоТипу(ТипЗнч(ОбработкаОбъект))=Неопределено;
#29 by H A D G E H O G s
#30 by H A D G E H O G s
СтруктураКлиентСерверныхДанных - реквизит формы, тип - Произвольный
#31 by H A D G E H O G s
Вообще, надо бы статью черкнуть, как правильно хранить данные в УФ, а то понапишуть дятлы, волосы на жопе дыбом встают.
#32 by Crush
Основная цель - это минимизировать работу в новой внешней обработке по созданию кнопки "Перезагрузить". А если в "ПриСозданииНаСервере" получать имя файла, то это дополнительный текст модуля, что не совпадает с основной целью. Кстати, сейчас идея возникла! "лампочка над затылком":) Если бы найти событие, которое вызывается при открытии файла внешней обработки, то вообще было бы круто:)
#33 by Crush
Похоже цель достигнута: Ничего писать во внешней обработке не надо:) Решается добавлением только одной общей команды с хоткеем. У себя назвал глShiftF5 Модуль: &НаКлиенте Свойства команды: При открытии нескольких экземпляров внешней обработки перезагружается только текущая активная.
#34 by fisher
Ты крут :) Я другого способа добраться до имени файла (имея только ссылку на форму), кроме твоего ВнешниеОбработки.Создать(ИмяОбработки) так и не нашел. А сам бы этого мог и не додуматься.
#35 by fisher
Не. Всё равно фигня. В тонком клиенте не получится. Сервер ведь другой комп и там клиентский путь к обработке может не канать. А если передавать файл обработки на сервер - то нормально отладить, наверное, не получится...
#36 by H A D G E H O G s
Обычно отлаживают на файловой
#37 by DmitriyDI
да ладно, это работает?
#38 by fisher
Я отлаживаю не тестовом сервере :) Буду по-старинке. Два лишних клика :)
#39 by DmitriyDI
если да то это очень круто, а при перезапуске реквизиты на форме остаются заполнены? если да то просто добавить это в глобальник и постоянно использовать при отладке
#40 by H A D G E H O G s
Я сделал это для себя.
#41 by DmitriyDI
а куда добавлять эти Свойства команды:
#42 by DmitriyDI
ааа это просто отчет по команде
#43 by Crush
Да.. С серваком засада. Либо файл передавать, либо отлаживать на серваке, либо класть обработку на общий ресурс и обращаться к ней через сетевой интерфейс (\МойКомпШараОбработка.epf). В 8.2(18.102) хреново работает метод АктивноеОкно - всё время возвращает основное окно конфигурации. Может это от того, что в 8.2 окно обработки открывается отдельным окном, а в 8.3 открывается в рабочей области основного окна. Но при этом код на серваке отрабатывается если непосредственно из обработки вызывать.
#44 by Crush
Вариант для клиент-сервер и файл-сервер Модуль команды: &НаКлиенте Функция ИмяФайлаВнешнейОбработки(ИмяОбработки)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С