1с ошибка при выполнении метода подключить обработку
Программа IT Audit поддерживает несколько платформ 1С. Поэтому при выборе файла внешней обработки необходимо учитывать используемую конфигурацию и платформу 1С. В наименовании файла внешней обработки приводится информация о номере конфигурации, для которой предназначена обработка.
Внешние обработки 1С загружаются на странице Загрузить
Проверьте, поддерживается ли разработчиками IT Audit используемая конфигурация 1С
При открытии внешней обработки в 1С возникает ошибка "Нарушение прав доступа"
Использование внешних обработок требует наличия у пользователя 1С установленного права Использование в качестве OLE Automation сервера. При отсутствии прав может возникать ошибка "Нарушение прав доступа" или иная аналогичная ошибка.
Порядок настройки прав пользователей приведен в пользовательской документации программы 1С: Предприятие. В данной справке приводится краткое описание
Режим 1С: Предприятие
В разделе "Администрирование" откройте ссылку "Настройки пользователей и прав". Затем нажмите на ссылку "Пользователи".
Режим Конфигуратор
-
Зайдите в программу в режиме Конфигуратор.
В пункте "Администрирование" откройте список пользователей и откройте учетную запись необходимого пользователя.
Ошибка загрузки файла внешней обработки в результате настроек защиты 1С от опасных действий
Начиная с платформы 1С 8.3.9.x в настройках пользователя программы 1С по умолчанию включен запрет на выполнение опасных действий. Поэтому перед выполнением обращения к платформе 1С для пользователя 1С необходимо выполнить следующие настройки в конфигурации 1С.
-
В программе 1С: Предприятие откройте необходимую конфигурацию в режиме Конфигуратор.
В строке меню открывшейся конфигурации 1С нажмите Администрирование и выберите пункт Пользователи. Откроется форма Список пользователей.
Подключение к 1С в режиме интеграции занимает длительное время
При открытии отчета 1С в режиме интеграции возникает ошибка: "недопустимая строка с указанием класса", "не удалось подключить фабрику класса COM для компонента" и т.п.
Если необходимо указать другую платформу, то в командной строке Windows от имени администратора выполните команду для регистрации 1С: Предприятия в качестве OLE-сервера: например,
"C:\Program Files\1cv83\bin\1cv8.exe" /regserver
regsvr32 "C:\Program Files\1cv83\bin\comcntr.dll"
Отсутствует лицензия на использование 1С
См. также
Бесплатные обучающие вебинары по IT Audit
Ответим на вопросы действующих и потенциальных пользователей. Покажем работу программы и рабочие документы по МСА.
Если Вам интересна эта тема, то вы уже знаете, какие есть возможности по защите кода модулей, внешних обработок и отчетов. Это расширение конфигурации для защиты внешних обработок от просмотра и редактирования кода.
Каждый из Вас сам решает, где ставить запятую. Те, кто ставит запятую после первого слова, могут посмотреть и оставить свои комментарии. Те же, кому приходилось сталкиваться с "хитрым" заказчиком, могут воспользоваться этим расширением.
Расширение для защиты внешних обработок. Несмотря на свой столь малый размер и количество кода, решает часть вопросов исполнения и защиты внешних обработок:
- Обработка, передаваемая заказчику, закодирована;
- Кодер/Декодер закодирован (обфусцирован, байт код защищен, тексты удалены);
- Исходный текст обработки при выполнении не изменен (что позволяет быстро идентифицировать ошибки);
Теперь коротко о том, как это работает:
- Необходимо установить обработку в любую конфигурацию в режиме управляемого приложения, интерфейс управляемых форм (если проект будет развиваться, будут и обычные формы);
- Если считаете необходимым, настройте безопасный режим и защиту от опасных действий (если такой необходимости нет, отключите их);
- Используя обработку «МиниБлок» включенную расширение закодируйте Вашу обработку (в архиве есть тестовая обработка);
- Используя обработку «МиниБлок» включенную расширение откройте Вашу закодированную обработку;
Логика открытия кодированной обработки:
Модуль формы обработки открыт. Ниже приводится только фрагмент позволяющий понять как происходит работа с закодированной обработкой:
Модуль менеджера объекта закодирован. Листинг этого модуля без алгоритма кодирования/декодирования предоставлен в полном объеме ниже:
Модуль объекта пустой, но так как поставка не разделяет типы модулей, он оказался тоже без текста.
Механизм защиты реализован в модуле обработки в связи с тем, что некоторые приложения работают в режиме совместимости версии 8.3.8 в котором нет возможности расширениями добавлять свои общие модули. Тестировалось на версии 8.3.10.2252 в обычном режиме работы и в режиме совместимости 8.3.8.
В данном расширении реализован только функционал работы с внешними обработками.
Востребована ли эта тема и нужно ли ее развивать?
Если тема будет интересна, то легким движением руки функционал расширяется для отчетов. А как максимальное развитие – расширение БСП для работы с кодированными обработками и отчетами.
Как вы видите функционирование кодера в данном расширении ограничено датой 31.12.2018.
Задача: В "1С:Управление торговлей 11" (релиз 11.06.7). В форме документа счет-фактура выданный аванс заполнить табличную часть Авансы на основании документа поступление безналичных денежных средств.
1) Перед заполнением табличной части документа получить от пользователя подтверждение на это действие;
2) Обработку создания документа сделать внешней и подключаемой к форме документа счет-фактура на аванс выданный;
3) После заполнения табличной части не записывать документ, а разрешить пользователю продолжить редактирование изменной табличной части или самостоятельно записать документ.
Пункты 1 и 2 не представляют особой сложности, но пункт 3 заставил меня задуматься и написать, по-моему мнению, топорный, но исправно действующий код.
Понятно, что от нас требуется создать внешнюю обработку вида "ЗаполнениеОбъекта" и подключить её в информационную базу.
Приведу код в модуле обработки:
Так как нам придется работать с формами объектов, мы просто вынуждены использовать метод ВызовКлиентскогоМетода для вызова команды внешней обработки.
Напомню, при использовании ВызовСерверногоМетода с формами объектов работать не получится.
Подробнее о типовых принципах создания внешних подключаемых обработок и печатных форм вы можете почитать здесь.
Так как мы использовали ВызовКлиентскогоМетода, то обязательную процедуру, для внешней подключаемой обработки заполнения объектов, ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт, необходимо выполнять &НаКлиенте в модуле формы обработки, а значит создадим любую форму обработки, пользователь её всеравно не увидит, и поместим внутрь модуля формы следующий код:
Ниже приведу код, который у вас может быть совершенно другим и делать какие-либо другие манипуляции с объектом формы:
Как можно заметить, представленное решение заполнения объекта из внешней подключаемой обработки с отображением изменений до записи объекта не является изящным, но другого способа мне найти не удалось. В Интернетах на эту тему тоже очень мало информации.
Поэтому если есть другое решение поставленной задачи, то обязательно сообщите о нем.
Специальные предложения
(1) Не разбираешься, не лезь. И описывать различия не требуется, кто в теме, в курсе.
Разница такая, что в этой статье описана методика заполнения объекта (аналог из УПП 1.2 или УТ 10.3 - заполнение табличных частей), а в другой - описание создания связанных объектов или ввода на основании.
Статья полезная, сам думал, как бы это сделать пооптимальней. Намудили Намудрили разработчики с БСП.
criptid; cheburashka; Denis_Lebedinsky; Serg3141; stoptime; Enyel; hromovanton; Dmitri93; Krasnyj; klmop; MarinaLed; Lo1jke; dbachinsky; Spacer; tkv44; shard; biz-intel; KazeNoYaida; ShyThun; kote; Cobalt River; Nuobu; Denizzz; + 23 – 2 Ответить
Вроде как в первом случае используется СозданиеСвязанныхОбъектов
а во втором ЗаполнениеОбъекта
в принципе задача то одна, а вот решения разные. Обратил внимание на ВыполнитьКоманду
В данном контексте читать как "Результат один"
Понимаю, что основной задаче для автора является ее реализация.
(0) Автор, все еще жду ответа и исправления в описании!
(3) 1. Будь вежливее.
2. Цель моего предложения в (1) - автор ДОЛЖЕН расписать отличие одной обработки от другой, чтобы пользователь сайта, который не разбирается в этом (а ведь статья именно для таких пользователей! ), мог понять отличие и назначение каждой статьи.
Если ТЕБЕ эта моя цель непонятна/недоступна, это твои проблемы!
Уважаю тебя за твои работы, но здесь ты неправ.
ЗЫ На будущее - Не лезь и не обсуждай работу Модераторов.
user1725319; Ляль Дикий; echo77; 1c.pro.fun; Lyolik; copperfox; pipetkabeatboo; www2000; altimait; + 9 – 3 Ответить
Разница публикаций очевидна из их названия.
Поясню:
1) Создание связанных объектов
2) Заполнение объекта
Задачи поставлены разные.
1) Создать документ счет-фактура выданный аванс на основании документа поступление безналичных денежных средств
2) В форме документа счет-фактура выданный аванс заполнить табличную часть Авансы
Частично одинаков код модуля обработок, он приведен на тот случай, если человек не делал до этого внешних обработок на управляемом приложении и читает публикацию по этой теме впервые.
Я мог конечно написать только суть и даже не публиковать обработку, но тогда по собственному опыту скажу, что были бы только вопросы и плевки в мою сторону, особенно у новичков.
user1725319; TaTaPuH-Magic; taasha25; baracuda; KarV; svartemov; drcrasher; Denizzz; Поручик; + 9 – Ответить
(10) Успокойся, здесь люди всё таки адекватные, статью не удалят.
Это две разные публикации о разных задачах. Заявляю, как человек постоянно с прошлого года работающий с УТ 11 и вообще с БСП.
- это вполне может быть, здесь полно таких, вот я, к примеру. Поэтому Вам предложили только более понятно описать, о чем материал в статье, чтобы нам, "чайникам", было понятно. Удалять статьи никто не собирался.
Подскажите можно ли как то делать отладку внешней подключаемой обработки?
И как какая тут последовательность надо вначале создать документ "счет-фактура выданный аванс" потом выбрать у него в основание "поступление безналичных денежных средств" а потом нажать заполнение?
Хм, а если после выполнения обработки при любой попытке изменить реквизит или просто сохранить пишет «Ошибка блокировки объекта. Объект уже заблокирован <наименование сеанса>» ?наименование>
Разобрался.
Опа, нет ещё.
Короче, нифига не выходит с заполнением формы без сохранения данных в объекте: форма заполняется - но больше с ней ничего не сделать: «Ошибка блокировки объекта. Объект уже заблокирован». Пришлось в серверной процедуре записывать объект с помощью ДанныеФормыВЗначение. Пытался прикрутить к УТ 11.0.6.7 заполнение графы «Основание» в ПКО описанием документа-основания ПКО.
Кстати, а зачем обработка заполнения ТЧ счета-фактуры на аванс?
На мой взгляд правильней заполнять с/ф в обработке формирования с/ф на аванс.
Кстати, а зачем обработка заполнения ТЧ счета-фактуры на аванс?
На мой взгляд правильней заполнять с/ф в обработке формирования с/ф на аванс.
Это лишь пример реализации интерактивного заполнения ТЧ. Можно было бы заполнять другую ТЧ, но суть решения не изменилась бы.
Хм, а если после выполнения обработки при любой попытке изменить реквизит или просто сохранить пишет «Ошибка блокировки объекта. Объект уже заблокирован » ?
Верно подмечено. Разбираюсь в этой проблемой в данный момент.
Сталкнулся с проблемой когда созданная внешняя обработка по загрузке прайса из XLS в док заказ клиента - выдавал в документе что он заблокирован, и в результате после заполнения таблич части документа нельзя было его не записать не сохранить - это безусловно баг УТ 11 и пофиксят непонятно в каких релизах потом - но проблема осталась!
Короче, нифига не выходит с заполнением формы без сохранения данных в объекте: форма заполняется - но больше с ней ничего не сделать: «Ошибка блокировки объекта. Объект уже заблокирован». Пришлось в серверной процедуре записывать объект с помощью ДанныеФормыВЗначение. Пытался прикрутить к УТ 11.0.6.7 заполнение графы «Основание» в ПКО описанием документа-основания ПКО.
Вопрос блокировок конечно очень обширный, поэтому я хотел бы для себя разобраться для начала в каком то одном частном вопросе. А именно как работает свойство БлокироватьДляИзменения у набора записей в 8.2 в управляемом режиме (SQL). Если для предыдущих версий платформы все достаточно понятно, так например:
Для 8.1 (Автоматический режим) ответы будут следующие:
1) Когда читаются данные, которые необходимо изменять в текущей транзакции необходимо в запросе указывать "ДЛЯИЗМЕНЕНИЯ"
2) Блокировка накладывается в момент выполнения запроса, диапазон блокируемых данных определяется условиями в запросе.
3) Блокируется запись, а так же чтение другими транзакциями, запросы которых используют директиву "ДЛЯИЗМЕНЕНИЯ"
Для 8.1 (Управляемый режим)
1) Когда читаются данные которые необходимо изменять в текущей транзакции нужно установить исключительную блокировку, когда необходимо просто обеспечить неизменность прочитанных данных - разделяемую.
2) Блокировка устанавливается явно, методом Заблокировать() блокируемые записи так же явно указываем в коде.
3) Разделяемая - запрещает запись, Исключительная - Чтение и запись
Для 8.2 (Управляемый режим) в принципе верно тоже что и для 8.1 (Управляемый),
но это если использовать старую методику - сначала контроль остатков, потом проведение.
Как действовать при новой методике, непонятно. ответ судя по всему кроется в понимании принципов работы этой самой "БлокироватьДляИзменения"
я так думаю нужно переделать в обработке каркас а именно это
Форма = ОткрытьФорму("Документ.СчетФактураВыданныйАванс.Форма.ФормаДокумента",КлючПоиска. Окно);
//Далее мы получаем объект только, что повторно открытой формы и помещаем её в переменную
//В объекте содержатся все реквизиты (элементы) формы
НовыйОбъект = Форма.Объект;
Ошибка при вызове метода контекста (Подключить)
Имя = ВнешниеОтчеты.Подключить(АдресВХранилище);
по причине:
Ошибка подключения внешних метаданных
по причине:
Неправильный путь к файлу 'e1cib/tempstorage/dfbfec9b-2d93-496e-8f17-7c8429312d6
Что я делаю не так?
(2) demarine,
Адрес собственно вот e1cib/tempstorage/dfbfec9b-2d93-496e-8f17-7c8429312d6 Тип Строка
В синтакс-помощнике на эту тему:
ВнешниеОтчетыМенеджер (ExternalReportsManager)
Подключить(, , )
.
(обязательный) Тип: Строка.
.
Выполняет подключение внешнего отчета по указанному пути. В качестве пути может использоваться только путь к данным в конфигурации и базе данных.
Возвращает имя подключенного внешнего отчета.
.
Я так понимаю что e1cib/tempstorage/dfbfec9b-2d93-496e-8f17-7c8429312d6 и есть путь в базе данных. Или я не прав?
Я так понимаю что e1cib/tempstorage/dfbfec9b-2d93-496e-8f17-7c8429312d6 и есть путь в базе данных. Или я не прав
Да это типо Навигационная ссылка.
НавигационнаяСсылка (URL)
Использование:
Чтение и запись.
Описание:
Сервер, толстый клиент, внешнее соединение.
В управляемом приложении этот метод ВнешниеОбработки.Подключить(АдресХранилища); работал но если его запустить в обычном выдавало туже ошибку.
(5) lehis_S, Действительно, только что проверил тот же самый код в управляемом приложении работает. Странно что нигде нет упоминания что это фишка только управляемого приложения.
(5) lehis_S, (6) invertercant, (7) unknownDaemon,
для Толстого клиента похоже не нужен метод Подключить ()
Ты не адрес а путь указывай:
ИмяФайлаОбработки = ПолучитьИмяВременногоФайла("epf);
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВХранилище);
ДвоичныеДанные.Записать(ИмяФайлаОбработки);
ИмяОбработки = ВнешниеОбработки.Подключить(ИмяФайлаОбработки);
Обработка = ВнешниеОбработки.ИмяОбработки.Создать();
На первом шаге выбираю каталог, нажимаю далее.
После этого вываливается ошибка:
ошибка подключения внешних метаданных по причине файл не обнаружен "D:\Enterprise20_2_4_6_230_DataUload_BP3.epf"
Моя обработка, которую я запускаю, как раз и находится в корне диска D.
Возможно кто-то сталкивался с подобной проблемой?
(1) никогда не ставьте обработки в корень какого-то диска. Лучше куда-нибудь в расшаренную папку. И сходите на сервер, гляньте может там нет этой обработки на вашем сервере.
(2) Ну изначально она не в корне была. Тогда ошибка выглядит так:
А вот по поводу сервера поподробнее. Что вы имеете ввиду?
(6) Каталог есть. Я же из него запускаю обработку.
А когда ее помещаю в корень, уже пишет не про каталог, а про файл.
Помещаю в этот же каталог другую обработку самописную - работает.
Более того, эта обработка же открывается, форма основная появляется, а эта ошибка уже вываливается в процессе ее работы.
(7) как рабочий каталог называете?
D:\ . или С:\мой путь\ . слеши нигде не забыли?
(8) Да я как угодно могу назвать его. На рабочем столе создаю папку "Моя папка" и в нее помещаю обработку. В предприятии нажимаю "файл" - "открыть" - выбираю эту папку, файл, нажимаю открыть. Открывается форма обработки. В ней я выбираю папку (ту же самую "Моя папка") и вылезает ошибка, которая сообщает путь обработки, которую я выбрал и которая открывалась! Я никаких слешей не пишу нигде в 1с.
(10) Выбираю папку на диске С на рабочем столе. Та же ошибка.
Вот полный текст ошибки:
Ошибка подключения внешних метаданных
по причине:
(13) значит в других нет "подключения внешних метаданных", они не такие хитрожопые как эта обработка. Которая в процессе вызывает сама себя.
В общем, разобрался в проблеме.
В процессе выполнения обработки создается фоновое задание. И фоновое задание исполняется только на сервере. Соответственно, сервер ищет обработку по этому адресу не на моем локальном компьютере, а на самом сервере.
Поместил саму обработку на сервер, все заработало.
hhhh - с самого начала подсказывали мне правильно, а я Вас не понял. Спасибо.
Читайте также: