bdd2

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

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

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

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

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

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

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

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

См. также

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

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

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

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

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

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

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

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

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

ВнешниеОбработки.Подключить(мАдресХранилища); -регистрирует обработку с сохранением во временную папку сервера. Значит, на клиенте, который работает удаленно, сетевой файл просто не будет доступен, и при вызове Форма.ПолучитьФорму(...) будет ошибка.
31. m-serg74 (m-serg74) 34 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) 34 06.03.14 15:04 Сейчас в теме
(32) s512,
Сервер 1С находится на удаленном компе
но
подключение к нему по локалке
что за ...?

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

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


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

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

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

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

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

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

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


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

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

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

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