1с не открывается внешняя обработка
В файловом режиме 1С работает, а в серверном не работает, клиент толстый. Пишет:
Ошибка при вызове метода контекста (ПолучитьФорму): Неизвестное имя формы. Имя: "ВнешняяОбработка.МаяОбработка.Форма.УправляемаяФорма".
Как сделать чтобы в серверном работала?
(20) Как сделать чтобы было клиент? Как я понял в файловом варианте само делается, потому что там нет сервера.
в файловом варианте есть сервер. но поскольку он крутится на твоей локальной машине, то и позволяет открыть окно настроек.
К (0). Из внешнего модуля так вызывается:
может мы чего не поняли в твоей задуме?
короче. твоя печатная форма должна быть создана по технологии внешних обработок 8.2
только тогда ты сможешь открыть ее форму.
делается это так:
Вот этого нужно тебе?
(41) Не понял как это может помочь открыть форму внешней обработки. Это для типовой УТ? Похоже не то что нужно
(47) что конкретно тебе непонятно? ты делаешь дополнительную печатную форму для какого то документа. правильно?
(44) Пишет: Ошибка при вызове метода контекста (ПолучитьФорму): Неизвестное имя формы. Имя: "ВнешняяОбработка.МаяОбработка.Форма.УправляемаяФорма"
(48) Да, но в той статье написано как сделать дополнительную печатную форму, это я сделал, работает.
Теперь мне надо открыть ее форму.
ищи в своей обработке "ДобавитьКоманду(ТаблицаКоманд,"
и пиши туда вместо ИМЯ_ТВОЕЙ_ФОРМЫ имя формы как она у тебя обзывается в обработке
(56) ровно то, что я написал. ему надо сделать внешнюю печатную форму для УТ11, которая прилепляется к нужным документам штатными средствами без изменения конфы и позволяет перед печатью открывать окно с некоторыми настройками.
но судя по тому, что ТС молчит, то предположу что он не осилил как же это сделать. видимо придется ему предложить купить эту форму ))))
(51) Этот код не работает. ДобавитьКоманду - такая процедура не определена.
(57) Вообще-то не для УТ11. Интересует как открыть форму в принципе, "с нуля"
(52) Код не работает.
Ошибка при вызове метода контекста (ПолучитьФорму): Неизвестное имя формы. Имя: "ВнешняяОбработка.МаяОбработка.Форма.УправляемаяФорма"
Почему-то в пятницу не работало. 1с перезапустил, заработало.
Вот так тоже рабюотает:
Вот так тоже теперь работает:
Что за фигня! В пятницу не работало, а сейчас работает без всяких дополнений! Всего-то платформу перезапустил
: Процедура или функция с указанным именем не определена (ПодключитьВнешнююОбработку)
(70)а давай я тебе по руке погадаю? Тыж меня в телепаты записал.
(71) твой код. Пишется ошибка.
Закомментированная строка не работает. Переделал как во второй строке, ошибку не выдает:
(67)Если предполагать, что ты используешь код из (67), дополнив его куском кода из (72), то у меня разрыв шаблона - метод Подключить имеет доступность "Сервер, внешнее соединение", хотя у тебя выставлено &НаКлиенте.
Ты занимаешься мозгоимением??
Третий косяк: Если взять другую обработку и задать ей имя "МаяОбработка", и открыть ее форму из той процедуры, то всё равно откроется форма старой обработки. Тоесть она как-то зарегистрировалась под этим именем, и не пойму когда и как она это сделала
(79)ты каким-то чудом вызываешь метод "Печать" из одной внешней обработки, а потом хочешь открыть другую внешнюю обработку "tmp.epf"??
А как ты вызываешь "Печать"?
(80) Из общего модуля вызываю:
хз, чего там у тебя как работает, но (74) не должен работать: &НаКлиенте и ВнешниеОбработки.Подключить не должны вместе дружить.
Еще раз: в (44) код достаточен для твоей задачи. "ОткрытьОбработку(Команда)" - это вызов по команде/кнопке на форме.
Открыл форму, сделал настройки, там же нажал кнопку/команду печать.
(84) Чтобы нажать кнопку на форме, нужно сперва открыть эту форму, а она не открывается. А вообще вызов внешней обработки и ее метода "Печать" нельзя менять. И почему работает ВнешниеОбработки.Подключить я не знаю. Могу выложить обработку чтобы посмотрели
(84) Вот выложил: http://ifolder.ru/29092486
Кнопка на обработке открывает такую же обработку и вызывает "Печать()". И твой код не работает.
(86)
ВнешниеОбработки не доступно в тонком клиенте
ПодключитьВнешнююОбработку это метод объекта. чтобы его вызвать, нужно сначала получить объект с помощью РеквизитФормыВЗначение. но сделать это можно только на сервере
а вообще зачем всё это нужно?
(88) У меня в ТОЛСТОМ клиенте
Этот метод вызывается в модуле объекта, тоесть получать объект не нужно, он уже есть.
Нужно просто разобраться. Почему оно не работает!
И как могут работать два метода ПоместитьФайл и ВнешниеОбработки.Подключить в одной процедуре. У них же разная доступность на клиенте и на сервере!
(90) ты для какой конфы это безобразие ваяешь?
для УТ11 я тебе дал все карты в руки. у меня все работает, подключается, открывает форму настроек и печатает.
(91) если указать имя обработки "МаяОбработка", то работает. А если поменять имя и указать там новое имя, то не работает.
Выяснил что нужно хотябы раз открыть форму обработки через меню файл, и выполнить команду:
Тогда в следующий раз форма открывается из модуля объекта нормально. Но как сделать чтобы не нужно было открывать ее в первый раз вручную?
Добрый день!
Платформа тестовая 8.3.5.823.
Толстый клиент, обычное приложение.
Открываю через "Файл-открыть" любую внешнюю обработку на обычных формах, а в ней все кнопки недоступны. Права полные, в т.ч. установлены на интерактивное открытие внешних обработок. Раньше работало. Что это, баг, или новая особенность, про которую я так и не нашел документации? Кто-нибудь может проверить у себя подобное поведение?
(2) Сейчас попробовал, при открытии не предлагает ничего конвертировать, как было с 8.1 -> 8.2. После открытия в режиме предприятия ничего не изменилось.
(4) Такое свойство установлено. Как и использование управляемых в обычном.
Но если открывать внешнюю обработку на обычных формах в управляемом режиме, то она не открывается. Где-то на ИТС, кажется, читал информацию, что внешние обработки для этого надо встраивать в конфигурацию, только тогда они запустятся.
+(5) Но вопрос в другом - запускается обработка на обычных формах в режиме обычного приложения. Например, удаление помеченных объектов с диска ИТС. Все кнопки недоступны. Самописная обработка - аналогично. Мобильные инструменты разработчика тоже не работают.
(0) обработки все на обычных формах, ничего удивительного, что в обычном приложении вы не увидите УФ-формы, а в УФ - обычные: режим совместимости для обработок не предусмотрен в принципе, только для конфигураций. Внесите в конфигурацию и открывайте.
А в УФ автопреобразование из обычных форм делается только на основе ТЧ, реквизитов и стандартных кнопок.
(3)>>Сейчас попробовал, при открытии не предлагает ничего конвертировать
это невозможно в принципе. Это не разный формат, как было в 8.1->8.2, а соврешенно разные несовместимые идеологии представления форм.
(5) поменьше верьте 1С на слово, а побольше практикуйтесь.
Все заявленные "использование управляемых в обычном" работают отнюдь не заявленным сопсобом, если работают вообще.
8.3.4.356 Толстый клиент, обычное приложение. Обработка под обычное приложение нормально открывается и выполняется без проблем. Может не стоит просто тестовую платформу юзать?
(16) от 1С можно ожидать все, что угодно.
И быть готовым к любому глюку.
В 8.3.1 тоже ничего не работает?
(17) какая платформа есть, на той открыла. Правда надо учесть, что база, в которой открывала написана под 8.2 на УФ, но открывала я ее в обычном приложении. Режим совместимости стоит 8.3.1, значит наверное будет работать и на 8.3.1
(20) А какой режим совместимости?
Я поставил "не использовать". Скорее всего, если поставить совместимость, то заработает. Надо завтра проверить.
(19)>>Режим совместимости стоит 8.3.1
режим совместимости нужно мигнимум 8.2 поставить. А то и 8.1, если есть еще такой.
(24) Чего мне смотреть? У меня все работает. Я на тестовой базе ставила эксперименты, работает в режиме совместимости и без оного. (27) попробуйте не ставить тестовые релизы платформ.
Установка совместимости не решает проблему. Ставил по нисходящей вплоть до 8.1 - ничего не изменилось.
(33) Конечно, они так заработают. Просто не хочется внедрять подсистему "Инструменты разработчика", когда мобильные вполне отлично работали.
Да, конфа ЗУП 2.5, платформа 8.3.5.823, открываю внешнюю обработку с ИТС, кнопки доступны, все работает
(36) Ок, спасибо за информацию. Пока тогда не ясно, что вызывает эту проблему. Хотя нас уже минимум трое таких.
(39) У Вас скорее всего база в режиме совместимости 8.2 работает. Вы не могли бы на тестовой копии попробовать поставить режим совместимости - "Не использовать", а затем снова попытаться открыть обработку?
(40) так им и надо в режиме совместимости с 8.2. Зуп 2.5 еще не переводили на совместимость с 8.3. Он не запустится скорее всего.
(40) ЗУП так не сделать, ну вот скрин пустой базы созданной в 8.3.5.823 все работает и открывается
У меня вот так это выглядит:
Интересно, может стоить переустановить платформу?
Попробуй удалить все версии 1с, оставить только 8.3.5
У меня стоит только 8.3.4 и 8.3.5.
Сейчас создал пустую базу - в ней нормально все открывается.
Да, кстати - чистить кэш - тоже не помогло.
(49) Во дела. Поставил в обработке в процедуре ПередОткрытием точку останова, открываю обработку - а точка становится серой (выключена) и отладчик на ней не останавливается.
Вчера тоже поставили платформу 8.3.5.823. Такие же проблемы. До этого стояла платформа 8.3.4 были проблемы со входом базу и производительностью кластеров. В итоге стало еще хуже и вернулись на платформу 8.2 и проблем ни каких нету. Компании 1с выпускать сырую серверную часть 1с 8.3 с огромным списков багов должно быть стыдно. Я с 8.3 неделю мучился постоянно вылетала.
(42) (43) у вас у обоих конфа открывается в толстом варианте.
Независимо от натсроек в свойствах. О чем и писал в ( 14).
(52) да, я говорю именно о "независимости" работы платформы 8.3 от её настроек.
Проще говоря, о полной неработоспособности 8.3 как рабочей платформы.
(52) Досадно. Багов действительно очень много. Иногда вылетает "Невосстановимая ошибка на сервере" и база закрывается. Перестают прокручиваться динамические списки, пока не нажмешь F5. Перестают работать сочетания клавиш. В веб клиенте новый поиск неработоспособен - если быстро набирать текст, то пробелы между словами сами удаляются и получается каша (проверено в Google Chrome, Firefox). Зависают сеансы и/или соединения. Это только то, что сходу вспомнил. Понятно, что платформа тестовая, но что-то уж слишком печально все.
(54) Агент сервера запущен с ключом /debug, хотя в данном случае это не важно - модуль обычной формы исполняется на клиенте.
(58) Это вообще-то обработка Удаление помеченных объектов с диска ИТС. Там все сделано как надо. И подобная "детская ошибка" не приводит к автоматическому отключению точки останова при открытии обработки.
(0) Попробовал на 8.3.5.823 (файловая база) управляемое приложение в режиме обычного с отключенным режимом совместимости -- обработки на обычных формах открываются и кнопки доступны.
Не пугай так больше =)
(62) Ага, видел. Уже перешел, работает. Зато не исправили другой серьезный баг - динамические списки (любых объектов - справочники, документы) спустя несколько минут использования перестают прокручиваться. Ни колесиком, ни клавишами. Помогает только нажатие F5. Надеюсь, что они хотя бы в курсе насчет этой проблемы.
Программы 1С можно дорабатывать через Конфигуратор. В таких случаях немного осложняется обновление конфигурации.
Поэтому широкое распространение получили внешние обработки — с помощью них выполняются необходимые действия, а конфигурация остается типовой.
Внешние обработки можно подключить в 1С в список дополнительных отчетов и обработок и разместить в нужном для себя разделе.
Но не все обработки поддерживают такую функцию, также бывает, что обработку нужно открыть разово или использовать редко. В таких случаях используется интерактивное открытие обработки и тогда часто выходит ошибка «Нарушение прав доступа».
Разберем, почему происходит такая ситуация в 1С 8.3, и как ее решить.
Как открыть обработку интерактивно
При интерактивном открытии обработки ее не нужно никуда подключать. Достаточно зайти в раздел «Сервис и настройки — Файл — Открыть» или нажать CTRL + O на клавиатуре.
Получите понятные самоучители по 1С бесплатно:
Затем выбираем саму обработку. В этот момент и выходит ошибка.
Для исправления ошибки назначим пользователю роль, которая позволяет открывать обработки интерактивно. Роль так и называется — Интерактивное открытие внешних отчетов и обработок. Отметим, что эту роль нужно назначить даже пользователю с полными правами.
Установка ролей построена таким образом: роли указываются в профилях групп доступа, а профили назначаются пользователям.
Сначала рассмотрим, где находится нужный профиль, а затем разберем, как назначить ее пользователю.
Профиль для открытия внешних обработок
Зайдем в меню «Администрирование — Настройки программы — Настройки пользователей и прав».
Раскроем раздел «Группы доступа» и перейдем по ссылке «Профили групп доступа».
Нужный профиль в программе уже создан и называется «Открытие внешних отчетов и обработок».
Откроем его и увидим, что в нем содержится единственная роль «Интерактивное открытие внешних отчетов и обработок».
Как назначить профиль пользователю
В том же разделе, где находится профиль групп доступа, откроем справочник «Пользователи».
Выберем пользователя, которому нужно назначить профиль. Перейдем по ссылке «Права доступа». Ставим флажок для пункта «Открытие внешних отчетов и обработок» и нажмем «Записать» для сохранения настроек.
Обязательно закрываем 1С и запускаем заново. Открываем обработку и ошибки больше не будет.
Рассмотрим в данной статье пошаговую инструкцию по созданию внешней обработки в 1С 8.3 в режиме управляемого приложения, соответственно, будем использовать управляемые формы. А самое главное — мы научимся подключать её к механизму «внешних обработок» конфигураций 1С, построенных на библиотеке стандартных подсистем версии 2.0 и новее.
Задача будет следующая: создать простейшую внешнюю обработку, которая будет выполнять групповое действие над справочником «Номенклатура», а именно, устанавливать выбранный процент ставки НДС для указанной группы номенклатуры.
Включение механизма внешних обработок в программе
Для этого сразу произведем необходимую настройку в программе (рассматривается конфигурация 1С 8.3: «Бухгалтерия предприятия 3.0» на управляемых формах).
Заходим в меню «Администрирование» и по ссылке «Печатные формы, отчеты и обработки» переходим в настройки. Здесь нужно установить флажок «Дополнительные отчеты и обработки»:
Установка данного флажка дает нам возможность использовать внешние обработки.
Создание новой внешней обработки в 1С 8.3 на примере
Теперь переходим в конфигуратор. В меню «Файл» выбираем «Новый…». Откроется окно выбора вида создаваемого файла. Выбираем «Внешняя обработка»:
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Откроется окно новой внешней обработки. Сразу зададим ей имя. Оно будет предложено при сохранении обработки на диск:
Добавим новую управляемую форму обработки. Указываем, что это форма обработки и она является основной:
На форме у нас будет два реквизита:
- ГруппаНоменклатуры – ссылка на справочник «Номенклатура»;
- ВыбСтавкаНДС – ссылка на перечисление Ставки НДС.
Создаем реквизиты в колонке «Реквизит» в верхнем правом окне. Перетаскиваем мышкой их в левое верхнее окно. Новые реквизиты должны сразу отобразиться на форме внизу.
Очередность реквизитов можно менять стрелками «Вверх» – «Вниз»:
Осталось добавить кнопку «Установить». В управляемых формах нельзя просто так добавить кнопку на форму. Даже если добавить её в структуру элементов формы, на самой форме её видно не будет. Кнопку обязательно нужно связать с командой, которую она будет выполнять. Переходим к закладке «Команды» и добавляем команду «УстановитьСтавкуНДС». В свойствах команды создаем действие. Обработчик команды выбираем «На клиенте». Команду можно добавить на форму также простым «перетаскиванием» в раздел с элементами формы.
В модуле формы будет создана одноименная процедура. В ней вызовем процедуру на сервере:
В процедуре на сервере напишем небольшой запрос и действия, связанные с установкой ставки НДС:
Запрос = Новый Запрос;
Запрос.Текст =
«ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка В ИЕРАРХИИ (&ГруппаНоменклатуры)
| И НЕ Номенклатура.ПометкаУдаления
| И НЕ Номенклатура.ЭтоГруппа»;
Запрос.УстановитьПараметр(«ГруппаНоменклатуры», ГруппаНоменклатуры);
РезЗапроса = Запрос.Выполнить();
ВыбДетЗаписи = РезЗапроса.Выбрать();
Пока ВыбДетЗаписи.Следующий() Цикл
СпрНомОбъект = ВыбДетЗаписи.Ссылка.ПолучитьОбъект();
СпрНомОбъект.СтавкаНДС = ВыбСтавкаНДС;
Попытка
СпрНомОбъект.Записать();
Исключение
Сообщить(«Ошибка записи объекта «»» + СпрНомОбъект + «»»!
|» + ОписаниеОшибки());
КонецПопытки;
Возвращаемся на закладку «Форма», добавляем на форму кнопку и связываем ее с командой:
Как таковая наша обработка готова к использованию. Чтобы ее вызвать, в режиме «1С Предприятия» нужно зайти в меню «Файл» – «Открыть» и выбрать созданный файл.
Однако работа в таком режиме удобна для отладки обработки, а для работы пользователю не совсем подходит. Пользователи привыкли, чтобы у них все было «под рукой», то есть в самой базе данных.
Для этого и служит раздел «Дополнительные отчеты и обработки».
Но чтобы добавить туда нашу обработку, нужно сначала дать ей описание и сообщить программе ее свойства.
Описание функции «Сведения О Внешней Обработке»
Приведу пример содержимого данной функции. Она должна быть экспортной и, соответственно, располагаться в модуле обработки:
Функция СведенияОВнешнейОбработке() Экспорт
ДанныеДляРег = Новый Структура();
ДанныеДляРег.Вставить(«Наименование», «Установка ставки НДС»);
ДанныеДляРег.Вставить(«БезопасныйРежим», Истина);
ДанныеДляРег.Вставить(«Версия», «ver.: 1.001»);
ДанныеДляРег.Вставить(«Информация», «Обработка для установки ставки НДС в справочнике Номенклатура»);
ДанныеДляРег.Вставить(«Вид», «ДополнительнаяОбработка»);
ТабЗнКоманды = Новый ТаблицаЗначений;
ТабЗнКоманды.Колонки.Добавить(«Идентификатор»);
ТабЗнКоманды.Колонки.Добавить(«Использование»);
ТабЗнКоманды.Колонки.Добавить(«Представление»);
НовСтрока = ТабЗнКоманды.Добавить();
НовСтрока.Идентификатор = «ОткрытьОбработку»;
НовСтрока.Использование = «ОткрытиеФормы»;
НовСтрока.Представление = «Открыть обработку»;
ДанныеДляРег.Вставить(«Команды», ТабЗнКоманды);
Чтобы лучше понять, какие поля структуры регистрационных данных нужно использовать, посмотрим реквизиты справочника «Дополнительные отчеты и обработки»:
Как видим, все довольно просто. Не совпадает лишь один реквизит: «ВариантЗапуска» – «Использование». Если посмотреть код одного из общих модулей, то мы увидим, как возникает связка этих полей:
Чтобы определить, какие поля структуры обязательны, можно сначала не описывать ее, просто создать пустую, а далее воспользоваться отладчиком. Если трассировать модули при регистрации обработки, сразу становится ясно, какие поля требуются, а какие нет.
Подключение внешней обработки в 1С 8.3
Перейдем теперь в режим «1С Предприятия» и добавим внешнюю обработку:
После записи обработки в справочник нажатием кнопки «Выполнить» она открывается на выполнение. Здесь же можно указать, в каких разделах (подсистемах) программы будет отображаться данная обработка и для каких пользователей.
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Как открыть внешнюю обработку *.epf, *.erf (1C 8.3) ?
ИНСТРУКЦИЯ 1С 8 → перейти в меню [СТАТЬИ И ИНСТРУКЦИИ]
Для открытия внешних отчетов и/или обработок в 1С 8.3 есть несколько способов. Самый быстрый способ открыть внешнюю обработку или отчет – это перетащить мышкой файл в окно 1С Предприятие. Однако этот способ не всегда удобен.
В меню программы (сверху-справа) жмем на кнопку меню и находим пункт "Файл". Нажимаем "Файл" –> "открыть" :
Выбираем нужный нам файл с расширением *.erf или *.epf (например: ВнешнийОтчетРезультат.erf ) с жёсткого диска или сетевой папки и нажимаем кнопку открыть:
Если платформа не обнаружит синтаксических ошибок или, например недостающих компонент, то внешняя обработка/отчет запустится в окне 1С Предприятия для выполнения своего предназначения.
Если предполагается использование отчета (обработки) для определённого документа, то можно подключить его в меню конфигурации:
В меню начальной страницы выбираем "Администрирование" и открываем "Дополнительные отчеты и обработки":
Система безопасности выдаст следующее предупреждение. Если уверены в происхождении отчета, жмем "Продолжить":
В конфигурации подключена БСП и при отсутствии функции СведенияОВнешнейОбработке, появится следующая ошибка: "Невозможно подключить дополнительный отчет из файла. Возможно, он не подходит для этой версии программы. Техническая информация: Метод объекта не обнаружен (СведенияОВнешнейОбработке)". Для решения этой проблемы нужно создать соответствующую функцию в модуле объекта. См.пример кода!
Когда функция СведенияОВнешнейОбработке в отчете будет определена, программа зарегистрирует отчет в системе и запомнит, для какого документа предназначен отчет (корректно заполнит настройки).
Читайте также: