1с как отладить внешнюю обработку
Использование внешних обработок — довольно популярный механизм расширения функциональности стандартной конфигурации, который часто используют разработчики. Кроме того, специалистам приходится самостоятельно осуществлять их дальнейшую поддержку, это же Ваша обработка и компания 1С за Вас этого делать не будет. Разумеется, во время написания внешней обработки и в дальнейшем при ее сопровождении возникает необходимость отладки и исправления ошибок (куда же без них). Предлагаю следующую технологию, которая, с моей точки зрения, упрощает этот процесс.
Сразу скажу, что особенность данного способа в ускорении процесса отладки и отсутствии внесения каких-либо изменений непосредственно в исходном коде стандартной конфигурации. Рассмотрим весь процесс на примере 1С 8 ЗУП 3.1.
1. Изменение стандартной загрузки внешней обработки через расширение
Для начала нам необходимо изменить стандартную загрузку - функцию управления загрузкой внешних обработок. Поскольку одна из наших задач не изменять стандартную конфигурацию, делаем это через механизм «Расширений».
Создаем новое расширение через меню «Конфигурация»→«Расширение конфигурации» 1С 8.3 →«Действия»→«Добавить». Новое расширение я так и назвал «ОтладкаВнешнейОбработки».
Далее в дереве основной конфигурации находим «Общие модули» 1С 8.3→«ДополнительныеОтчетыИОбработки», в котором есть два интересующие нас объекта:
Добавляем их в наше расширение методом «Вместо» и, соответственно, копируем в расширение все их содержимое.
Далее в функции «ПодключитьВнешнююОбработку» нужно чтобы в соответствующем месте был задан полный путь к файлу обработки, которую мы собираемся отлаживать, например:
Напомню, что для быстрого копирования полного имени файла достаточно в «Проводнике» щелкнуть правой кнопкой мышки при нажатой клавише «Shift».
Далее ищем то место в конце модуля функции 1С, которое нам необходимо откорректировать. Вот оно:
Заменяем этот текст следующим:
Замечу, что имя обработки «НашаОбработка» то же, что прописано в главном окне редактирования обработки:
Далее в процедуре «ПриПолученииРегистрационныхДанных» необходимо заменить этот код:
на аналогичный предыдущему:
Это весь подготовительный этап.
2. Подключение обработки к основной конфигурации 1С
Эта процедура выполняется стандартными средствами. В стандартной конфигурации 1С 8 ЗУП 3.1, например так: «Администрирование»→«Печатные формы, отчеты и обработки»»→«Дополнительные отчеты и обработки»→«Добавить из файла. ».
Далее нажимаем кнопку «Выполнить» и приступаем к отладке. В нужном месте ставим точку останова, и при ее достижении система проваливается в код модуля 1С.
Замечу, что при внесении изменений достаточно сохранить (Ctrl + S) и перезапустить только обработку. Перезагружать всю конфигурацию не нужно. Теперь, после внесения изменений в модуль «ДополнительныеОтчетыИОбработки» система всякий раз будет заново загружать ваш файл с обработкой 1С, что гораздо быстрее перезагрузки всей конфигурации.
При первом старте после каждого изменения и отладки внешней обработки 1С система «предупредит» вас об огромной опасности использования посторонних обработок, а потом «попросит» выполнить обработку еще раз. Нажимаем «Выполнить» повторно и все работает.
По окончании работы не забудьте отключить расширение, сняв галочку «Активно» в окне расширений. Иначе система не выполнит никакую другую обработку!
Доброго всем времени суток. Хотел бы поделиться способом отладки обработок БСП. Нового для себя Знатоки ничего не узнают, а вот новичкам, возможно, будет интересно. Метод заезженный, но здесь не встречал. При данном методе точки останова срабатывают всегда, проблем в своей практике не встречал (раз сделал и работает).
Те, кто не любит читать, могут посмотреть изображения и (думаю) все будет понятно без слов!
1. Снимаем конфигурацию с поддержки (делаем копию и снимаем, мы же все делаем на копиях?! :) )
Конфигурация -> Поддержка -> Настройка поддержки -> Включить возможность изменения
2. Открываем Конфигурацию и ищем Общий модуль: ДополнительныеОтчетыИОбработки
3. Редактируем функцию и процедуру:
Функция
Текст для копирования
Процедура
Текст для копирования
4. Сохраняем и обновляем Конфигурацию
5. Создаем или переименовываем свою обработку, которую будем отлаживать. Задаем имя qwe и разместим ее в корне диска C:
6. Открываем ее в Конфигураторе и ставим Безопасный режим - Ложь
7. Запускаем 1С Предприятие и добавляем обработку в список, сохраняем.
8. Ставим точки останова в обработке
9. Запускаем нашу обработку на исполнение (вернее ту часть где стоит точка останова)
10. При нажатии попадаем в место отладки!
После успешной отладки, не забываем задать правильное имя обработки ( и Безопасный режим - Истина, если это необходимо)
Привык к данному методу и пользуюсь таковым.
Специальные предложения
А по проще то ни как?
Там статья про регламенты с использованием БСП: Дополнительная обработка и отчеты просто, а в самом низу 4 пункт "Отладка" с ссылкой на статью где около 10 строчек кода и с одной строкой в случае если вы в доп обработке храните параметры и вам надо протестировать с сохраненными параметрами .
Просто данная статья как я думал будет о том как тестировать доп обработки которые могут быть Командой, регламентом, формой, отчетом. А тут только про команду, да еще и метод который снимает с поддержки.
Команды вообще тестировать проще до добавления в допы. На форму ссылку на документ вывести и все протестировать, после чего уже добавлять обработку в допы.
(7) Нет, ваш способ мне не нравиться, и вот почему:
Все-таки у вас процедура вызывается не через стандартные механизмы, соответственно будут "пробелы" в отладке, что, на мой взгляд, не очень удобно., для обычных форм была такая штука, ВнешниеПечатныеФормы.epf, вещь отличная, но не на БСП. Я сделал вот такое расширение, первый раз промаялся долго, в районе получаса часа, затем по аналогии для других конфигураций.
Пользоваться очень просто:
1. Подключаем расширение
2. Загружаем форму во внешние (при этом в коментарии прописывается путь к файлу, который и будет вызывать)
3. ТЕстируем.
Все механизмы стандартные, т.е. все параметры передаются как при реальной печати.
(10)На вкус и цвет как говорится.
П.С. Если все комменты собрать и нормально заилюстрировать и по типам команд разбить отличная статья выйдет
Не слышал, поведайте на примере?
В первом комментарии ссылка на 1с с подробной документацией, даже с картинками.
(9) Осваивать этот большой инструмент только ради отладки внешних обработок?
Ничего посложнее не нашлось? ;)
(13)Весь не нужно (хотя полезно со все точек зрения), а в части отладки его установка и запуск проще и лучше документированы чем текущий способ. Обычно следующий вопрос, "а как отладить запрос"
(15) Все зависит от характера работы прогера - если дорабатывает конфиги внешних заказчиков (аутсорс или фриланс), то использование данной подсистемы будет нецелесообразным (для доработок зачастую достаточно пары-тройки внешних консолей и далеко не всегда есть возможность ее встраивания в конфу заказчика), если идет разработка крупного проекта или постоянные доработки своих конфигов (штатный прогер) - другое дело, подсистема будет полезна, а встраивать ее во все базы только ради использования тех же внешних 2-3 консолей - ну как бы и нафиг оно нужно?
p.s. Плюс подсистема реализована на обычных формах, каждый раз запускать обычный режим приложения для ее использования тоже постепенно начинает вымораживать, нежели простое открытие внешних консолей.
(16)Похоже вы давно ИР не пользовались. Есть вариант в виде расширения, для отладки достаточно работать под толстым клиентом.
(17) Не всегда ИР можно воспользоваться: То прав не хватает, то по политике компании нельзя, то разработчик совтины вырезал поддержку расширения. Всякие случаи в жизни бывают.
Это всего лишь Ваше мнение, а не реальность.
1 Более менее дорабатывать можно в расшерении с версии 8.3.9, а что делать если режим совместимости 8.3.8 или младше?
2 Доп обработки позволяют создавать команды, регламенты, формы и т.д. с хранимыми параметрами без добавления констант и прочих прелестей.
3 Позволяют делать горячее обновление которое не требует перезахода клиентом.
4 Позволяет легко настраивать видимость под конкретных пользователей.
П.С. Сам я использую расширения уже более 3-х лет и очень уважаю данную возможность и слежу за развитием, но доп отчеты и обработки в плане регламентов и добавления формы обработки использую регулярно.
(18)Нет не проще. Вы таким образом никогда не поймете какие параметры передает БСП текущей версии в обработки и/или наоборот почеу не передает.
Любопытно посмотреть применение этого метода на компьютере с базовой версией ) без патчей и кряков ))
Спасибо Вам, сейчас есть методы попроще)
Хороший совет по данной теме. Я сделал в расширении. Сейчас уже работает аннотация &ИзменениеИКонтроль, у кого еще нет совместимости, можно и &Вместо. Кто-то писал, что с базовой не прокатит. Ну это да. А для всего остального сработает.
Во модуле объекта внешней обработки достаточно создать экспортную переменную ПутьДляОтладки.
Пример:
Для отладки нужно запустить 1С в режиме отладки с параметром запуска /C "РежимОтладки".
И все. Обработка будет отлаживаться в режиме отладки. А в рабочем режиме работать как обычно из справочника доп обработки.
skype: live:di-sem
@programmist_1C
Ошибка "Внешняя обработка отладки, загружаемая из файла на диске, не поддерживается." Ошибка при отладке правил конвертации 2.1 в новых конфигурациях
Сделал я правила обмена в КД2.
Решил их отладить и получаю ошибку:
Искал решение в интернете, но как-то неудачно.
А отлаживать-то нужно.
Решение:
Обработка "УниверсальныйОбменДаннымиXML.epf". То есть та обработка, с помощью которой мы хотим отлаживать.
Идем в модуль обработки, в процедуру
Процедура ИнициализацияВнешнейОбработкиОбработчиковСобытий(РаботаВозможна, ОбъектВладелец) Экспорт
Ищем где вызывается исключение "Внешняя обработка отладки, загружаемая из файла на диске, не поддерживается".
На всякий случай скрин:
Результат:
Использование внешних обработок — довольно популярный механизм расширения функциональности стандартной конфигурации, который часто используют разработчики. Кроме того, специалистам приходится самостоятельно осуществлять их дальнейшую поддержку, это же Ваша обработка и компания 1С за Вас этого делать не будет. Разумеется, во время написания внешней обработки и в дальнейшем при ее сопровождении возникает необходимость отладки и исправления ошибок (куда же без них). Предлагаю следующую технологию, которая, с моей точки зрения, упрощает этот процесс.
Сразу скажу, что особенность данного способа в ускорении процесса отладки и отсутствии внесения каких-либо изменений непосредственно в исходном коде стандартной конфигурации. Рассмотрим весь процесс на примере 1С 8 ЗУП 3.1.
1. Изменение стандартной загрузки внешней обработки через расширение
Для начала нам необходимо изменить стандартную загрузку - функцию управления загрузкой внешних обработок. Поскольку одна из наших задач не изменять стандартную конфигурацию, делаем это через механизм «Расширений».
Создаем новое расширение через меню «Конфигурация»→«Расширение конфигурации» 1С 8.3 →«Действия»→«Добавить». Новое расширение я так и назвал «ОтладкаВнешнейОбработки».
Далее в дереве основной конфигурации находим «Общие модули» 1С 8.3→«ДополнительныеОтчетыИОбработки», в котором есть два интересующие нас объекта:
Добавляем их в наше расширение методом «Вместо» и, соответственно, копируем в расширение все их содержимое.
Далее в функции «ПодключитьВнешнююОбработку» нужно чтобы в соответствующем месте был задан полный путь к файлу обработки, которую мы собираемся отлаживать, например:
Напомню, что для быстрого копирования полного имени файла достаточно в «Проводнике» щелкнуть правой кнопкой мышки при нажатой клавише «Shift».
Далее ищем то место в конце модуля функции 1С, которое нам необходимо откорректировать. Вот оно:
Заменяем этот текст следующим:
Замечу, что имя обработки «НашаОбработка» то же, что прописано в главном окне редактирования обработки:
Далее в процедуре «ПриПолученииРегистрационныхДанных» необходимо заменить этот код:
на аналогичный предыдущему:
Это весь подготовительный этап.
2. Подключение обработки к основной конфигурации 1С
Эта процедура выполняется стандартными средствами. В стандартной конфигурации 1С 8 ЗУП 3.1, например так: «Администрирование»→«Печатные формы, отчеты и обработки»»→«Дополнительные отчеты и обработки»→«Добавить из файла. ».
Далее нажимаем кнопку «Выполнить» и приступаем к отладке. В нужном месте ставим точку останова, и при ее достижении система проваливается в код модуля 1С.
Замечу, что при внесении изменений достаточно сохранить (Ctrl + S) и перезапустить только обработку. Перезагружать всю конфигурацию не нужно. Теперь, после внесения изменений в модуль «ДополнительныеОтчетыИОбработки» система всякий раз будет заново загружать ваш файл с обработкой 1С, что гораздо быстрее перезагрузки всей конфигурации.
При первом старте после каждого изменения и отладки внешней обработки 1С система «предупредит» вас об огромной опасности использования посторонних обработок, а потом «попросит» выполнить обработку еще раз. Нажимаем «Выполнить» повторно и все работает.
По окончании работы не забудьте отключить расширение, сняв галочку «Активно» в окне расширений. Иначе система не выполнит никакую другую обработку!
Эта статья появилась в результате решения интересной задачи. Мы захотели поделиться опытом. Итак задача: нужно запускать по регламенту существующую уже обработку Выгрузка данных и загрузка данных в формате XML с определенными параметрами, но так, чтобы не менять типовую конфигурацию. Она могла бы называться «Программный запуск внешних обработок по регламенту в 1С 8.3».
Считаю, что всю информацию по данной теме нужно собрать в одном месте.
Для реализации задачи было принято решение написать внешнюю обработку 1С для запуска типовой обработки и настроить ее как фоновое задание. Кому-то может хватить и этой информации, а подробности для остальных будут ниже.
Чтобы не возникло путаницы, далее будем называть Главной обработкой ту, которую планируем запускать с помощью регламентной, а Фоновой обработкой ту, которая будет выполнять функцию регламентного задания для запуска Главной обработки.
Первым делом готовим Главную обработку. Все функции, которые вы планируете использовать при запуске Главной обработки в фоне, должны быть экспортными и должны находиться в модуле объекта данной Главной обработки.
Затем создаем Фоновую внешнюю обработку, которая будет работать как регламентное задание. Для этого в Сведениях о внешней обработке указываем следующий код:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.4.5.71");
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка"); ПараметрыРегистрации.Вставить("Наименование", "Автоматическая выгрузка XML");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Информация", "Автоматическая выгрузка XML");
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление=НСтр("ru = 'Автоматическая выгрузка XML'");
НоваяКоманда.Идентификатор="АвтоматическаяВыгрузкаХМЛ";
НоваяКоманда.Использование="ВызовСерверногоМетода";
НоваяКоманда.ПоказыватьОповещение=Истина;
НоваяКоманда.Модификатор="";
Возврат ПараметрыРегистрации;
КонецФункции
Важно чтобы в функции СведенияОВнешнейОбработке не было команды НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Эта команда не позволит использовать внешнюю обработку 1С как регламентное задание.
Далее создаем в модуле объекта Фоновой обработки процедуру ВыполнитьКоманду(Идентификатор, ОбъектыНазначения) Экспорт
В таком варианте обработки не нужно добавлять никаких форм.
Далее есть два варианта вызова Главной обработки.
1. Как запустить вручную обработку
Если вы планируете прикрепить свою Главную обработку к конфигурации, тогда в Фоновой обработке в функции ВыполнитьКоманду можно использовать указанный ниже вызов Главной обработки:
ВнешняяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Выгрузка и загрузка данных XML");
ДвоичныеДанные = ВнешняяОбработка.ХранилищеОбработки.Получить();
ИмяВременногоФайла = КаталогВременныхФайлов()+"ОбработкаХМЛ.epf";
ДвоичныеДанные.Записать(ИмяВременногоФайла);
СтруктураЗащита=новый ОписаниеЗащитыОтОпасныхДействий;
СтруктураЗащита.ПредупреждатьОбОпасныхДействиях=ложь;
//Создаем структуру защиты от опасных действий
Обработка = ВнешниеОбработки.Создать(ИмяВременногоФайла,Ложь,СтруктураЗащита);
Обработка.Инициализация();
Это ответ на вопрос как запустить вручную.
2. Обработка из файла
Если вы планируете запускать внешнюю обработку из файла, тогда можно использовать такой код:
АдресХранилища = "";
СтруктураЗащита=новый ОписаниеЗащитыОтОпасныхДействий;
СтруктураЗащита.ПредупреждатьОбОпасныхДействиях=ложь;
Обработка = ВнешниеОбработки.Создать("\\192.168./ваш ip/\Выгрузка и загрузка данных XML_3_0.epf",ложь,СтруктураЗащита);
Обработка.Инициализация();
Очень важно при запуске из файла указать и задать полный путь к файлу. Также важно чтобы папка, в которой будет храниться Главная обработка, была доступна по сети. Все дело в том, что фоновое задание будет выполняться на сервере. Если настроена клиент-серверная система работы, у сервера может не быть доступа к тем папкам, к которым есть доступ у клиента и у пользователя с его локальной машины. Также и при указании локальных папок, к примеру, «С:\имяГлавнойОбработки.epf» - можно получить ошибку, потому что у сервера может быть свой диск С, на котором он и будет искать папку при запуске Фоновой обработки. Поэтому лучше конкретизировать путь с указанием ip-адреса.
Также очень важно при создании обработки ставить параметр ПредупреждатьОбОпасныхДействиях в значение ложь. Далее скажу об этом подробнее.
После нужно подключить Фоновую обработку и настроить ее выполнение в фоне
После можно найти свою внешнюю обработку в списке Регламентный заданий. Для этого нужно открыть Администрирование – Обслуживание - Регламентные операции - Регламентные и фоновые задания.
И здесь, в списке фоновых заданий, иногда можно получить ошибку такого вида:
Предупреждение безопасности
Открывается "Выгрузка и загрузка данных XML" из файла "C:\Users\tempout\AppData\Local\Temp\ОбработкаХМЛ.epf".
Рекомендуется обращать внимание на источник, из которого был получен данный файл. Если с источником нет договоренности о разработке дополнительных модулей или есть сомнения в содержимом файла, то его не рекомендуется открывать, поскольку это может нанести вред компьютеру и данным.
Разрешить открывать данный файл?
Мы поставили параметр ПредупреждатьОбОпасныхДействиях в значение ложь для Главной обработки программно. Для Фоновой обработки нужно сделать следующее:
1) Указать в регламентном задании пользователя с полными правами можно и с правом на открытие внешних обработок, если это предусмотрено конфигурацией.
2) Снять у выбранного пользователя галку «Защита от опасных действий» в конфигураторе.
Читайте также: