Много перекопал статей, но везде как то заморочено, и зачастую не полностью рабочий код. Если кому пригодится, то буду очень рад.
Процедуры предназначены для того, чтобы можно было в режиме управляемого приложения открыть произвольную управляемую форму внешнего отчета/ обработки, в том числе и из внешнего отчета/обработки.
&НаСервере
Функция ПодключитьВнешнююОбработкуСервер(мАдресХранилища)
Возврат ВнешниеОбработки.Подключить(мАдресХранилища);
КонецФункции
&НаКлиенте
Процедура ОткрытьФормуВнешнейОбработки()
мИмяФайла = "D:ВнешняяОбработка.epf";
мИмяФормы = "НужнаяФорма";
мАдресХранилища = "";
мРезультат = ПоместитьФайл(мАдресХранилища, мИмяФайла, , Ложь, Новый УникальныйИдентификатор);
мИмяВнешнейОбработки = ПодключитьВнешнююОбработкуСервер(мАдресХранилища);
мФорма = ПолучитьФорму("ВнешняяОбработка." + мИмяВнешнейОбработки + ".Форма." + мИмяФормы, , ЭтаФорма);
мФорма.Открыть();
КонецПроцедуры
А как открыть из справочника Дополнительные отчеты и обработки?
(1) anig99, открыть оттуда что?
(2) да. для открытия обработки по ссылке или коду, а не внешнему файлу.
(3) anig99, так ее ж все равно во временный файл записывать, чем она лучше то совсем внешней?
(4) ну вот кусок кода записи во внешний файл и нужен. Искать не охота.
(5) anig99,
АдресВоВременномХранилище = ПоместитьВоВременноеХранилище(Ссылка.ХранилищеОбработки.Получить());
ИмяОбработки = ВнешниеОбработки.Подключить(АдресВоВременномХранилище, , Истина);
ОткрытьФорму(«ВнешняяОбработка.»+ ИмяОбработки +».Форма», ПараметрыОбработки, ВладелецФормы);
ну как то так в общем случае…
(1) В БСПЯтине поищи, там всё есть.
вот если бы в режиме обычного приложения открыть управляемую форму внешней обработки …
(при условии что в обычном приложении разрешено использование управляемых форм, конечно)
(8) ShantinTD, зачем? вот если бы в Visual Studio можно было 1Совские обработки отлаживать… вот это было б круто… наверное…
Спасибо. Пригодилось. Сделал себе запуск из одной формы нужных внешних отчетов и обработок.
(10) ksvd, На здоровье! Спасибо за отзыв.
а это кому нужно? 1С или ВизуалСтудии? (знаю я что такое студия. сам в ней редактировал все, что только можно было. еще в версии 2003 или 2005, кажется. и от 1С ждал редактора хотя бы отдаленно похожего.)
Ну, например: есть у меня база. изначально обычное приложение. веду постепенный перевод на управляемые формы. в частности — не пишу новых форм обычных. так вот если обработку новую нужно — то или встраивать сразу, или запускаться в управляемом режиме (а он почти пустой). Если бы кто поборол запуск управлемой формы внешней обработки из обычного режима — не пришлось бы корячиться.
(12) ShantinTD,
точно так же не нужно по большому счету как и
но это мое личное мнение и с ним не обязательно соглашаться (одно плохо для не согласных — Фирма 1С кажется думает так же)
ну и зря — 1С в первую очередь система учета, а не среда разработки
ПС. 1С придумали Дополнительную форму, делайте дополнительно к Обычной Управляемую форму, и будет работать в обоих режимах
Да, то что предложил я (открытие управляемой формы внешней обработки в обычном режиме) — если кому-то и нужно, то только на момент отладки.
Сделать дополнительную форму — не трудно. Я выше уже говорил как раз о том, что проверять и отлаживать форму в неродном режиме — неудобно.
Система учета — это когда в режиме предприятия запущена. В режиме конфигуратора — это как раз-таки среда разработки для вышеуказанной системы учета.
Кстати: не «система учета», а «система автоматизации учета». Мое мнение, конечно.
Я считаю, что использовать 1С в качестве калькулятора или текстового редактора — неправильно. Но если для автоматизации требуется какулятор или тектовый редактор, то запускать внешнее приложение (калькулятор или блокнот) — совсем не обязательно. Так и писать можно не только «учетные» модули, но любые вещи, которые будут полезны для автоматизации. Даже если это автоматизация не учета, а чего-то еще.
(14) ShantinTD,
ну да, игру например
(15) если оно действительно полезно для автоматизации, то почему бы и нет?
Не нужно отрывать часть контекста.
(16) ShantinTD, конечно полезно, игра позволяет, в свободное время отдохнуть человеку.
(17) именно так
.
За сим данный диспут останавливаю. Если есть желание — можно перенести в отдельную ветку спор о том, что полезно для автоматизации, что нужно делать на 1С, а что не нужно. Мы и так уже достаточно удалились от темы публикации.
Спасибо, актуальная тема
(19) kuza_87, пожалуйста, на это и рассчитывал, что кому-то да пригодится
не понимаю зачем в комментах писать «это никому не нужно»?? ну не нужно тебе лично-не качай, не обсуждай, не используй. Посмотрел обзор еженедельный, так в каждой третье ветке «кому оно надо».
(21) rasswet, а кто сказал что не нужно? и про что?
Блин, че за банальщина…. Прям даже минус просится
(23) Evil Beaver, ссылку дай где про это почитать
(24) про «это» — про что? про то, как открыть форму внешней обработки? Например, Синтакс-помощник и типовое руководство разработчика.
(25) Evil Beaver, а для чего смотришь такие «банальные» вещи? Если не секрет?
(26) хм… висит на главной тема «Открытие управляемой формы внешнего отчета». Думаю, надо же, чего такого интересного решили люди предложить про открытие форм? Лезу, смотрю, а там просто «открытие» т.е. никаких там новостей, оригинальных ходов и прочего. Тупо кусок кода по подключению внешней обработки. Мой камент про «банальщину» прям вырвался, тьфу-ты, думаю, хрень какая, зря только заходил. И кроме того, минуса я-таки не поставил, предлагаю тему свернуть.
(27) Evil Beaver, начал говорить — ставь, мне лично твое личное мнение по барабану, я не для +/- писал
(28) 🙂 Ну так ясное дело, что по барабану:) И мне минусить кого-то тоже по барабану. Статья твоя ниачем, вот что я хотел сказать. Ну раз кому-то пригодится, то слава Богу, значит я ошибаюсь.
Этот код не работает, если сервер и клиент разнесены на разные компьютеры.
ВнешниеОбработки.Подключить(мАдресХранилища); -регистрирует обработку с сохранением во временную папку сервера. Значит, на клиенте, который работает удаленно, сетевой файл просто не будет доступен, и при вызове Форма.ПолучитьФорму(…) будет ошибка.
(30) s512,
Значит? Будет? Может пробуем и текст ошибки сюда… а не размышления, если бы у бабки…
Пробовал неоднократно, поэтому и пишу. Сервер 1С находится на удаленном компе, подключение к нему по локалке. При вызове «ПоместитьФайл» обработка создается во временных файлах Сервера, а не на клиенте у юзера, и при «Форма.ПолучитьФорму» сразу вылетает «файл не обнаружен: «+ путь к файлу на удаленном сервере 1С (C:UsersUSR1CV82…)
(32) s512,
но
что за …?
если Сервер, то значит клиент-серверная, 99% что он на удаленном компе(с серверной ОС), тогда не понятно что значит «по локалке»???
(33)
Все ок, код работает, у меня проблема была в правах доступа к файлам.
Т.е. спасибо — пригодилось.
Спс, пригодилось. По поводу того, то в СП всё есть, так это не совсем так. Раз уж зашла речь о Visual Studio, то можно вспомнить и шикарную справку с многочисленными подробными примерами, в сравнении с которыми можно подтереться и СП и ИТС заодно, если сравнить её с MSDN. Я когда переходил с .NET на 1С был просто в шоке от справочной информации.
Как отладить эту внешнюю обработку? Весь сыр бор мне нужен был чтобы отладить заполнение ТЧ из формы.
(35) NittenRenegade,
как обычно — отладчиком, а вот про заполнение ТЧ что то не понял
Отладчик не заходит в вызываемую обработку. Возможно оттого, что вызывается по сути не тот файл обработки, который я указал для вызова, а тот, который теперь находится в хранилище
(37) NittenRenegade, так а что там отлаживать то собрались, если там заполнение ТЧ, то делайте его в модуле менеджера нужного документа, и отлаживайте
УТ 11 на поддержке. Хочу вызвать методы, которые обычно отрабатывают при изменении номенклатуры, чтобы заполнились остальные значения, но что-то с ними не ладится. Вот и пытаюсь это дело отладить.
Документ — Поступление товаров услуг
Идея была написать обработку — отладчик заполнителей ТЧ, т.к. задача явно будет повторяться в том или ином виде ещё не раз.
Сейчас пришел к тому, что через Файл / Открыть открываю обработку, указываю ей документ поступления, получаю его форму, открываю и заполняю. Чтобы отладить заполнение ТЧ, заполнять-то надо с клиента, форму поступления.
+1
m-serg74, Спасибо за код по открытию формы внешней обработки.
у меня не открывается
(43) Гость, не открывается что именно?
(44.) если не выбрано имя файла то пишет
{Форма.НужнаяФорма.Форма(26)}: Ошибка при вызове метода контекста (ПоместитьФайл)
мРезультат = ПоместитьФайл(мАдресХранилища, мИмяФайла, , Ложь, Новый УникальныйИдентификатор);
по причине:
Ошибка сохранения файла. Файл не обнаружен ‘D:ВнешняяОбработка.epf’. 2(0x00000002): Не удается найти указанный файл.
А что в коде нельзя получить путь к файлу? А если обработка будет загружена во внешние отчеты конфигурации, как тогда?
А если выбрать обработку по требуемому пути , и нажать кнопку пишет «Использование модальных окон в данном режиме запрещено!». Я открываю в толстом клиенте.
вот что ещё пишет
{Форма.НужнаяФорма.Форма(27)}: Ошибка при вызове метода контекста (ПодключитьВнешнююОбработкуСервер)
мИмяВнешнейОбработки = ПодключитьВнешнююОбработкуСервер(мАдресХранилища);
по причине:
Неизвестный идентификатор формы
(45) LivingStar,
Кто ж Вам может запретить? Конечно можно. Цель публикации — показать как открыть, а не как выбрать файл обработки, форму которой нужно открыть, и не как работать с справочником внешние обработки…
Чувствую скоро будут задавать вопросы типа — а почему она документы не проводит, мне нужно чтоб она проводила…
(47) так форму то как открыть???? Она у меня не открывается же!!!!
(47) вы про форму скажите мне, что бы открылась без ошибок
(49) LivingStar, путь к обработке из которой открывать форму хотите укажите… любым доступным Вам способом.
(50) да я делаю как у вас, но я указываю путь к этой же обработке, пишет использование модальных окон запрещено
(50) {Форма.НужнаяФорма.Форма(27)}: Ошибка при вызове метода контекста (ПодключитьВнешнююОбработкуСервер)
мИмяВнешнейОбработки = ПодключитьВнешнююОбработкуСервер(мАдресХранилища);
по причине:
Неизвестный идентификатор формы
(51) LivingStar,
Зачем Вам открывать Форму которая уже открыта?
ПС. Для новомодных немодальных режимов код:
Показать
(3) вот так например
Показать
(54) в (6) давным давно все написано как из Доп. Обработок открывать
(56) не знай. я так и не нашел способ используя только обработки в справочники. ругается на безопасный режим.опять с помощью костылей только. из одной обработки вызывать другую.а расширение пока не охото использовать
(57)
а что смущает в не безопасном режиме работать?
(58) попробуйте в типовой добавить в расширении в какой нибудь документ кнопку.и по кнопке открыть форму обработки из справочника, у меня не получилось хотя везде Ложь прописано
(59) вот как думаете зачем мне разворачивать какую-то типовую базу, делать какую-то обработку, которую потом загружать в справочник доп. обработок, потом пробовать там что-то, ведь не факт, что я повторю те же условия что получились у Вас? По-моему будет проще, если Вы, то что уже сделали, выложите на какой-нибудь обменник, и я на Вашем примере уже буду смотреть что там не так…. Верно?
ПС. Посмотрите рисунок — если у Вас у расширения, например, стоит галка — Безопасный режим, то думаю, чтобы Вы потом, где не пытались сделать для изменения режима, платформа оставит все в безопасном режиме.
(60) действительно, вы правы. вся бяда была в галочке, ну или прокладку сменить надо)))
спасибо за подсказку, я бы наверное так и не обратил бы внимание на без опастность расширения
(61) бывает 🙂
Спасибо!