gifts2017

Открытие управляемой формы внешней обработки (аналогично внешнего отчета)

Опубликовал m-serg74 (m-serg74) в раздел Программирование - Работа с интерфейсом

Много перекопал статей, но везде как то заморочено, и зачастую не полностью рабочий код. Если кому пригодится, то буду очень рад.

Процедуры предназначены для того, чтобы можно было в режиме управляемого приложения открыть произвольную управляемую форму внешнего отчета/ обработки, в том числе и из внешнего отчета/обработки.

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

&НаКлиенте
Процедура ОткрытьФормуВнешнейОбработки()
    мИмяФайла = "D:\ВнешняяОбработка.epf";
    мИмяФормы = "НужнаяФорма";
    мАдресХранилища = "";
    мРезультат = ПоместитьФайл(мАдресХранилища, мИмяФайла, , Ложь, Новый УникальныйИдентификатор);
    мИмяВнешнейОбработки = ПодключитьВнешнююОбработкуСервер(мАдресХранилища);
    мФорма = ПолучитьФорму("ВнешняяОбработка." + мИмяВнешнейОбработки + ".Форма." + мИмяФормы, , ЭтаФорма);
    мФорма.Открыть();
КонецПроцедуры

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Тестовая обработка
.epf 6,19Kb
30.10.13
33
.epf 6,19Kb 33 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Александр Медведев (anig99) 30.10.13 13:08
А как открыть из справочника Дополнительные отчеты и обработки?
2. m-serg74 (m-serg74) 30.10.13 13:50
(1) anig99, открыть оттуда что?
3. Александр Медведев (anig99) 30.10.13 14:06
(2) да. для открытия обработки по ссылке или коду, а не внешнему файлу.
4. m-serg74 (m-serg74) 30.10.13 14:19
(3) anig99, так ее ж все равно во временный файл записывать, чем она лучше то совсем внешней?
5. Александр Медведев (anig99) 30.10.13 14:49
(4) ну вот кусок кода записи во внешний файл и нужен. Искать не охота.
6. m-serg74 (m-serg74) 30.10.13 15:27
(5) anig99,
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Ссылка.ХранилищеОбработки.Получить());
ИмяОбработки = ВнешниеОбработки.Подключить(АдресВоВременномХранилище, , Истина);
ОткрытьФорму("ВнешняяОбработка."+ ИмяОбработки +".Форма", ПараметрыОбработки, ВладелецФормы);

ну как то так в общем случае...
7. Сергей Ожерельев (Поручик) 31.10.13 10:35
(1) В БСПЯтине поищи, там всё есть.
8. Тимофей Шантин (ShantinTD) 31.10.13 11:56
вот если бы в режиме обычного приложения открыть управляемую форму внешней обработки ...
(при условии что в обычном приложении разрешено использование управляемых форм, конечно)
9. m-serg74 (m-serg74) 31.10.13 12:47
(8) ShantinTD, зачем? вот если бы в Visual Studio можно было 1Совские обработки отлаживать... вот это было б круто... наверное...
10. Сергей Куликов (ksvd) 31.10.13 13:59
Спасибо. Пригодилось. Сделал себе запуск из одной формы нужных внешних отчетов и обработок.
11. m-serg74 (m-serg74) 31.10.13 14:26
(10) ksvd, На здоровье! Спасибо за отзыв.
12. Тимофей Шантин (ShantinTD) 31.10.13 19:50
вот если бы в Visual Studio можно было 1Совские обработки отлаживать...

а это кому нужно? 1С или ВизуалСтудии? (знаю я что такое студия. сам в ней редактировал все, что только можно было. еще в версии 2003 или 2005, кажется. и от 1С ждал редактора хотя бы отдаленно похожего.)

Ну, например: есть у меня база. изначально обычное приложение. веду постепенный перевод на управляемые формы. в частности - не пишу новых форм обычных. так вот если обработку новую нужно - то или встраивать сразу, или запускаться в управляемом режиме (а он почти пустой). Если бы кто поборол запуск управлемой формы внешней обработки из обычного режима - не пришлось бы корячиться.
Азбука Морзе; AlexB.; the1; +3 Ответить 1
13. m-serg74 (m-serg74) 31.10.13 20:44
(12) ShantinTD,
а это кому нужно?

точно так же не нужно по большому счету как и
в режиме обычного приложения открыть управляемую форму внешней обработки

но это мое личное мнение и с ним не обязательно соглашаться (одно плохо для не согласных - Фирма 1С кажется думает так же)
и от 1С ждал редактора хотя бы отдаленно похожего

ну и зря - 1С в первую очередь система учета, а не среда разработки

ПС. 1С придумали Дополнительную форму, делайте дополнительно к Обычной Управляемую форму, и будет работать в обоих режимах
14. Тимофей Шантин (ShantinTD) 02.11.13 18:16
Да, то что предложил я (открытие управляемой формы внешней обработки в обычном режиме) - если кому-то и нужно, то только на момент отладки.
Сделать дополнительную форму - не трудно. Я выше уже говорил как раз о том, что проверять и отлаживать форму в неродном режиме - неудобно.

Система учета - это когда в режиме предприятия запущена. В режиме конфигуратора - это как раз-таки среда разработки для вышеуказанной системы учета.
Кстати: не "система учета", а "система автоматизации учета". Мое мнение, конечно.
Я считаю, что использовать 1С в качестве калькулятора или текстового редактора - неправильно. Но если для автоматизации требуется какулятор или тектовый редактор, то запускать внешнее приложение (калькулятор или блокнот) - совсем не обязательно. Так и писать можно не только "учетные" модули, но любые вещи, которые будут полезны для автоматизации. Даже если это автоматизация не учета, а чего-то еще.
15. m-serg74 (m-serg74) 04.11.13 10:40
(14) ShantinTD,
но любые вещи
ну да, игру например
16. Тимофей Шантин (ShantinTD) 04.11.13 11:31
(15) m-serg74, если оно действительно полезно для автоматизации, то почему бы и нет?
Не нужно отрывать часть контекста.
17. m-serg74 (m-serg74) 04.11.13 12:01
(16) ShantinTD, конечно полезно, игра позволяет, в свободное время отдохнуть человеку.
18. Тимофей Шантин (ShantinTD) 04.11.13 17:31
(17) m-serg74, именно так
конечно полезно, игра позволяет, в свободное время отдохнуть человеку
.
За сим данный диспут останавливаю. Если есть желание - можно перенести в отдельную ветку спор о том, что полезно для автоматизации, что нужно делать на 1С, а что не нужно. Мы и так уже достаточно удалились от темы публикации.
19. Денис Кузнецов (kuza_87) 06.11.13 06:19
Спасибо, актуальная тема
20. m-serg74 (m-serg74) 06.11.13 08:25
(19) kuza_87, пожалуйста, на это и рассчитывал, что кому-то да пригодится
21. rasswet (rasswet) 06.11.13 08:59
не понимаю зачем в комментах писать "это никому не нужно"?? ну не нужно тебе лично-не качай, не обсуждай, не используй. Посмотрел обзор еженедельный, так в каждой третье ветке "кому оно надо".
Мах; yurii_host; hasp_x; +3 Ответить 1
22. m-serg74 (m-serg74) 06.11.13 09:16
(21) rasswet, а кто сказал что не нужно? и про что?
23. Андрей Овсянкин (Evil Beaver) 08.11.13 13:06
Блин, че за банальщина.... Прям даже минус просится
24. m-serg74 (m-serg74) 08.11.13 13:07
(23) Evil Beaver, ссылку дай где про это почитать
25. Андрей Овсянкин (Evil Beaver) 08.11.13 13:45
(24) m-serg74, про "это" - про что? про то, как открыть форму внешней обработки? Например, Синтакс-помощник и типовое руководство разработчика.
26. m-serg74 (m-serg74) 08.11.13 13:52
(25) Evil Beaver, а для чего смотришь такие "банальные" вещи? Если не секрет?
27. Андрей Овсянкин (Evil Beaver) 08.11.13 13:59
(26) m-serg74, хм... висит на главной тема "Открытие управляемой формы внешнего отчета". Думаю, надо же, чего такого интересного решили люди предложить про открытие форм? Лезу, смотрю, а там просто "открытие" т.е. никаких там новостей, оригинальных ходов и прочего. Тупо кусок кода по подключению внешней обработки. Мой камент про "банальщину" прям вырвался, тьфу-ты, думаю, хрень какая, зря только заходил. И кроме того, минуса я-таки не поставил, предлагаю тему свернуть.
28. m-serg74 (m-serg74) 08.11.13 14:07
(27) Evil Beaver, начал говорить - ставь, мне лично твое личное мнение по барабану, я не для +/- писал
29. Андрей Овсянкин (Evil Beaver) 08.11.13 14:32
(28) m-serg74, :) Ну так ясное дело, что по барабану:) И мне минусить кого-то тоже по барабану. Статья твоя ниачем, вот что я хотел сказать. Ну раз кому-то пригодится, то слава Богу, значит я ошибаюсь.
30. Михаил G/ (s512) 05.03.14 19:35
Этот код не работает, если сервер и клиент разнесены на разные компьютеры.

ВнешниеОбработки.Подключить(мАдресХранилища); -регистрирует обработку с сохранением во временную папку сервера. Значит, на клиенте, который работает удаленно, сетевой файл просто не будет доступен, и при вызове Форма.ПолучитьФорму(...) будет ошибка.
31. m-serg74 (m-serg74) 05.03.14 20:02
(30) s512,
Значит, на клиенте, который работает удаленно, сетевой файл просто не будет доступен, и при вызове Форма.ПолучитьФорму(...) будет ошибка.


Значит? Будет? Может пробуем и текст ошибки сюда... а не размышления, если бы у бабки...
32. Михаил G/ (s512) 06.03.14 14:35
Пробовал неоднократно, поэтому и пишу. Сервер 1С находится на удаленном компе, подключение к нему по локалке. При вызове "ПоместитьФайл" обработка создается во временных файлах Сервера, а не на клиенте у юзера, и при "Форма.ПолучитьФорму" сразу вылетает "файл не обнаружен: "+ путь к файлу на удаленном сервере 1С (C:\Users\USR1CV82...)
33. m-serg74 (m-serg74) 06.03.14 15:04
(32) s512,
Сервер 1С находится на удаленном компе
но
подключение к нему по локалке
что за ...?

если Сервер, то значит клиент-серверная, 99% что он на удаленном компе(с серверной ОС), тогда не понятно что значит "по локалке"???
34. Михаил G/ (s512) 06.03.14 17:54
(33) m-serg74,
Все ок, код работает, у меня проблема была в правах доступа к файлам.
Т.е. спасибо - пригодилось.
35. Владимир Попов (NittenRenegade) 21.11.14 09:27
Спс, пригодилось. По поводу того, то в СП всё есть, так это не совсем так. Раз уж зашла речь о Visual Studio, то можно вспомнить и шикарную справку с многочисленными подробными примерами, в сравнении с которыми можно подтереться и СП и ИТС заодно, если сравнить её с MSDN. Я когда переходил с .NET на 1С был просто в шоке от справочной информации.

Как отладить эту внешнюю обработку? Весь сыр бор мне нужен был чтобы отладить заполнение ТЧ из формы.
36. m-serg74 (m-serg74) 21.11.14 09:53
(35) NittenRenegade,
Как отладить эту внешнюю обработку? Весь сыр бор мне нужен был чтобы отладить заполнение ТЧ из формы.


как обычно - отладчиком, а вот про заполнение ТЧ что то не понял
37. Владимир Попов (NittenRenegade) 21.11.14 10:12
Отладчик не заходит в вызываемую обработку. Возможно оттого, что вызывается по сути не тот файл обработки, который я указал для вызова, а тот, который теперь находится в хранилище
38. m-serg74 (m-serg74) 21.11.14 11:17
(37) NittenRenegade, так а что там отлаживать то собрались, если там заполнение ТЧ, то делайте его в модуле менеджера нужного документа, и отлаживайте
39. Владимир Попов (NittenRenegade) 21.11.14 12:04
УТ 11 на поддержке. Хочу вызвать методы, которые обычно отрабатывают при изменении номенклатуры, чтобы заполнились остальные значения, но что-то с ними не ладится. Вот и пытаюсь это дело отладить.
Документ - Поступление товаров услуг
40. Владимир Попов (NittenRenegade) 21.11.14 12:09
Идея была написать обработку - отладчик заполнителей ТЧ, т.к. задача явно будет повторяться в том или ином виде ещё не раз.
Сейчас пришел к тому, что через Файл / Открыть открываю обработку, указываю ей документ поступления, получаю его форму, открываю и заполняю. Чтобы отладить заполнение ТЧ, заполнять-то надо с клиента, форму поступления.
42. Иван Б (Beerk@) 27.07.15 08:16
m-serg74, Спасибо за код по открытию формы внешней обработки.
43. Гость 12.04.16 13:26
44. m-serg74 (m-serg74) 12.04.16 13:32
(43) Гость, не открывается что именно?
45. LivingStar (L&S) (LivingStar) 12.04.16 14:34
(44.) если не выбрано имя файла то пишет

{Форма.НужнаяФорма.Форма(26)}: Ошибка при вызове метода контекста (ПоместитьФайл)
мРезультат = ПоместитьФайл(мАдресХранилища, мИмяФайла, , Ложь, Новый УникальныйИдентификатор);
по причине:
Ошибка сохранения файла. Файл не обнаружен 'D:\ВнешняяОбработка.epf'. 2(0x00000002): Не удается найти указанный файл.

А что в коде нельзя получить путь к файлу? А если обработка будет загружена во внешние отчеты конфигурации, как тогда?

А если выбрать обработку по требуемому пути , и нажать кнопку пишет "Использование модальных окон в данном режиме запрещено!". Я открываю в толстом клиенте.
46. LivingStar (L&S) (LivingStar) 12.04.16 14:40
вот что ещё пишет

{Форма.НужнаяФорма.Форма(27)}: Ошибка при вызове метода контекста (ПодключитьВнешнююОбработкуСервер)
мИмяВнешнейОбработки = ПодключитьВнешнююОбработкуСервер(мАдресХранилища);
по причине:
Неизвестный идентификатор формы
47. m-serg74 (m-serg74) 12.04.16 14:58
(45) LivingStar,
А что в коде нельзя получить путь к файлу?

Кто ж Вам может запретить? Конечно можно. Цель публикации - показать как открыть, а не как выбрать файл обработки, форму которой нужно открыть, и не как работать с справочником внешние обработки...

Чувствую скоро будут задавать вопросы типа - а почему она документы не проводит, мне нужно чтоб она проводила...
48. Гость 12.04.16 15:13
(47) так форму то как открыть???? Она у меня не открывается же!!!!
49. LivingStar (L&S) (LivingStar) 12.04.16 15:14
(47) вы про форму скажите мне, что бы открылась без ошибок
50. m-serg74 (m-serg74) 12.04.16 15:16
(49) LivingStar, путь к обработке из которой открывать форму хотите укажите... любым доступным Вам способом.
51. LivingStar (L&S) (LivingStar) 12.04.16 15:29
(50) да я делаю как у вас, но я указываю путь к этой же обработке, пишет использование модальных окон запрещено
52. LivingStar (L&S) (LivingStar) 12.04.16 15:31
(50) {Форма.НужнаяФорма.Форма(27)}: Ошибка при вызове метода контекста (ПодключитьВнешнююОбработкуСервер)
мИмяВнешнейОбработки = ПодключитьВнешнююОбработкуСервер(мАдресХранилища);
по причине:
Неизвестный идентификатор формы
53. m-serg74 (m-serg74) 12.04.16 16:17
(51) LivingStar,
но я указываю путь к этой же обработке


Зачем Вам открывать Форму которая уже открыта?

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

&НаКлиенте
Процедура Команда1(Команда)
    мИмяФайла = "d:\_wrk\Ячейки.epf";
    мИмяФормы = "Форма";
    мАдресХранилища = "";
	Оп = Новый ОписаниеОповещения("ВыполнитьПосле", ЭтотОбъект, мИмяФормы);
	НачатьПомещениеФайла(Оп, мАдресХранилища, мИмяФайла, Ложь, УникальныйИдентификатор);
КонецПроцедуры

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