1с отладка внешней обработки в управляемом приложении

Как отладить внешние печатных формы в 1С 8.3 управляемом приложении

Многие сталкиваются с проблемой отладки внешних печатных форм в 1С 8.3 (8.2) в режиме управляемых форм (да порой и в обычном тоже). Связано это в первую очередь с тем, что, запуская такую форму, система создает временный файл, и точки останова не срабатывают.

Можно, конечно, использовать готовые обработки для целей отладки, благо, найти их не составляет проблемы. Например: http://infostart.ru/public/73691/.

Но есть недостатки большинства таких решений:

Рассмотрим пример разработки собственной внешней печатной формы с возможностью отладки.

Создание внешней обработки для отладки печатных форм на управляемом приложении 1С

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

Итак, создаем новую внешнюю обработку. Назовите ее как угодно.

Добавим в обработку реквизит «СсылкаНаОбъект». Тип реквизита может быть составным и зависеть от конфигурации. Я выбрал тип – документ «РеализацияТоваровУслуг». Такой документ есть и в торговле, и в бухгалтерии.

Также добавим форму с единственным полем «Ссылка» и кнопкой «Печать». Кнопку добавим позже, когда создадим команду. Еще добавим макет, в который будем выводить данные документа.

Команду назовем «ПечатьОбъекта» с одноименным действием на клиенте:

FORMA DLYA OTLADKI

Создадим простой Макет:

novyiy maket

Выборку данных из объекта будем производить запросом, поэтому вызовем функцию на сервере. В функцию передадим нашу ссылку на объект, которая будет использоваться в качестве параметра в запросе. Функция будет возвращать заполненный табличный документ, так как показ его возможен только на клиенте:

Пример функции на сервере:

Для отладки ставим точку останова в нужном нам месте и запускаем обработку в режиме предприятия.

Скачать получившуюся обработку для примера можно по ссылке — ОтладкаВнешнихПечатныхФорм. Обработку можно использовать как шаблон.

Важно: Если база данных находится на сервере, для отладки на сервере нужно запустить с параметром «-debug».

После отладки макет и код процедуры и функции можно вставить в нужный объект и пользоваться.

Создание внешних печатных форм в 1С 8.3 (Управляемое приложение) с нуля:

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

Отладка в 1С

В этой статье рассматриваются ситуации, в которых процесс отладки (или процесс запуска отладки) проходит каким-либо особенным образом.

Кроме этого отмечу, что эта статья входит в небольшую серию статей об отладке в 1С:

Отладка внешних объектов

Отладка обычных внешних обработок и отчетов, как правило, не вызывает трудностей — главное открывать в конфигураторе и предприятии один и тот же файл внешней обработки/отчета.

Отладка внешних печатных форм

Отладка внешних печатных форм отличается от отладки обычных внешних обработок. Это связано с тем что, во-первых, выполнение кода происходит не сразу после запуска печатной формы, а при вызове соответствующей процедуры, и, во-вторых, при вызове внешней печатной формы система создает временный файл и точки останова не срабатывают. Более подробно о внешних печатных формах можно прочитать в этой статье.

В обычном приложении внешняя печатная форма имеет реквизит «СсылкаНаОбъект» и функцию «Печать», которая вызывается без параметров. Следовательно наиболее простым вариантом будет создать форму обработки, вывести на эту форму реквизит «СсылкаНаОбъект» (что бы его можно было заполнить) и по нажатию кнопки (или при другом событии) вызвать процедуру «Печать». В этом варианте внешняя печатная форма превращается в обычную внешнюю обработку и отлаживается также.

Для управляемого приложения нужно сделать примерно тоже самое — эмулировать вызов функции «Печать», для этого создать форму обработки, добавим ей реквизит «СсылкаНаОбъект» (и выведем его на форму) и команду с примерно таким кодом:

Отладка внешних обработок табличных частей

Трудности при отладке внешних обработок табличных частей (внешних обработок заполнения объекта) возникают по той же причине, что и случае с внешними печатными формами. Подробнее о внешних обработках табличных частей можно прочитать в этой статье.

В обычном приложении внешние обработки табличных частей имеют экспортную функцию «Инициализировать» которой в качестве параметров передаются объект, имя табличной части и табличное поле объекта. Таким образом для отладки нам требуется добавить основную форму обработки, разместить на ней поле для выбора объекта и реализовать вызов функции «Инициализировать» с нужными параметрами.

Отладка внешней обработки заполнения в управляемом приложении немного отличается от внешних печатных форм, так как обработка заполнения уже может иметь основную форму, в этом случае можно создать еще одну форму (такую же как для внешних печатных форм), назначить ее основной и эмулировать вызов команды заполнения, например так:

Кроме этого имеется прекрасная обработка, которая помогает отлаживать внешние обработки заполнения: ссылка.

Отладка Web-сервисов, HTTP-сервисов и интерфейса OData

Для отладки Web-сервисов, HTTP-сервисов и интерфейса OData нужно разрешить соответствующую возможность при публикации сервиса/интерфейса на веб-сервере, например:

После этого нужно настроить автоматическое подключение соответствующих предметов отладки. Для этого нужно выбрать пункт меню «Отладка»-«Подключение…», открыть окно настройки автоматического подключения и выбрать нужные предметы отладки, например:

Напомню, что при клиент-серверном варианте работы сервер должен быть запущен в режиме отладки.

Отладка регламентных/фоновых заданий

Напомню, что регламентные задания — это механизм 1С, предназначенный для каких-либо действий по расписанию. А фоновое задание — это объект, который создается регламентным заданием и непосредственно выполняет требуемые действия. Стало быть в отладке нуждаются именно фоновые задания, а регламентные задания просто настраиваются (расписание, пользователь и тд.).

При клиент-серверном варианте работы сервер должен быть запущен в режиме отладки. При файловом варианте работы база данных должна быть запущена в режиме предприятия.

Отладка мобильного приложения

Отладка мобильного приложения возможна только по протоколу HTTP. Хотя для устройств на Android-е возможен вариант с подключением по USB-кабелю и использованием Android Debug Bridge, но это частный случай. В общем же случае нужно переключиться на отладку по протоколу HTTP (подробнее об этом в предыдущих статьях цикла). Затем в настройках мобильного приложения нужно разрешить настройку и указать адрес отладчика, например так:

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

Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Универсальная отладка внешней обработки заполнения (типовые механизмы, без внешних файлов, расширений или вызова внешних файлов)

Буду краток, без излишней воды. Если будут вопросы, прошу писать в комментариях к публикации. Спасибо!

ЗАМЕТКА. В скриншотах использована ДЕМОНСТРАЦИОННАЯ база 1С: ERP релиз 2.5.5.104

Сама обработка будет подходить для любых релизов ERP.

Почему я так уверен?

Так как используется типовой код команды формы документа ЗаказКлиента, который не меняется от релиза к релизу.

А1. Создать обработку заполнения табличной части документа

А2. Обработку необходимо добавить как внешнюю обработку. В форме документа Заказ Клиента должен появится пункт меню Форма-Еще-Обновление цены в строке по виду цен

А3. При разработке обработки должен использоваться типовой код (форма документа, модуль документа, общие модули).

А4. Заимствование и изменение типового кода можно делать в модуле обработки (или в форме обработки).

А5. ЖЕЛАТЕЛЬНО, использование и изменение типового кода свести к минимуму (для того, чтобы обработка поддерживалась на максимальном количестве релизов и версий конфигурации).

Б. Демонстрирую выполнение задачи А по пунктам.

Б1.1. Создаем новую внешнюю обработку в конфигураторе.

Б1.2. Заполняем код в модуле обработки.

Код достаточно типовой, комментировать думаю излишне. На тему данного кода полно других публикаций.

Если появятся вопросы по коду, задавайте в комментариях к публикации.

69d9f2a26a433b6f6d36a008406bfbf6

Б1.3. В обработке добавляем реквизит Ссылка с типом = СписокЗначений

eaae19b9634eb7911595e2713e0c3491

Б1.4. Создаем форму обработки.

В форме обработки переносим реквизит формы Объект.ссылка на форму. Таким образом должно появится поле формы «Ссылка».

У реквизита формы «Объект.Ссылка» тип = СписокЗначений

6ee91cc4fc149c1739cadb583da40607

Б1.5. В коде формы обработки переопределяем процедуру ПриСозданииНаСервере

Важно не просто написать код. Важно в конфигураторе нажать на кнопку «Процедуры и функции» и выбрать нужную типовую функцию модуля формы.

6e21524ca5de14e55b059b04758a5efa

В данной процедуре мы заполняем реквизит Ссылка конкретным документом ЗаказКлиента.

При открытии формы обработки как внешний файл, будет автоматически выбираться данный документ

a8c86e10abf575b4f5b6632face4adfa

95c1995ca0f4e002d1ccae427dee2fbb

Б1.6. В коде формы обработки определяем процедуру ВыполнитьКоманду

В данную процедуру передается управление, когда данная обработка запускается из формы документа ЗаказКлиента как пункт меню.

Кроме того, мы будем программно передавать в нее управление с заполнение параметров.

52f040b0fbf10dfea26bbe61b48303d2

Объясняю по порядку.

Б1.7. Если данную обработку поместить во внешние обработки в режиме 1с Предприятие

439f0806a6ecea10eefd00910561f86d

756a238e69993a578d96d640c501a1a5

то в Заказе Клиента появится пункт меню меню Форма-Еще-Обновление цены в строке по виду цен

a33aa8578b63f838dfd69faa9e23494c

Теперь, если запустить обработку по клику на меню в форме документа, запустится код в форме обработки, в процедуре ВыполнитьКоманду(. ).

ПРОБЛЕМА в том, что такой код НЕ ОТЛАДИТЬ. Точки останова в конфигураторе срабатывать не будут!

В. КАК Сделать отладку в модуле обработки?

В.1. Мы будем запускать форму обработки как внешний файл в режиме 1С: Предприятие.

В.2. При открытии формы обработки будет срабатывать код процедуры ПриСозданииНаСервере

Будет открываться форма обработки с выбранным ЗаказомКлиента в поле формы Ссылка

95c1995ca0f4e002d1ccae427dee2fbb

В.3. У нас на форме есть кнопка «Выполнить команду».

Определим обработчик команды, которая вызывается нажатием на данную кнопку

9e772aa1cd52da3d0eafa0b3c21da632

Команда «Выполнить команду» (закладка Команды формы обработки) выполняет код процедуры «ВыполнитьКоманду1»

Почему именно такое наименование? Потому что процедура «ВыполнитьКоманду» уже зарезервирована типовым механизмом.

63c4ecf20a2782d48c3e8bc331828a32

В обработчике команды «ВыполнитьКоманду1» мы выполняем код:

dcefbf7919091078ab0e7af1ee76af56

1. Мы создаем и заполняем параметры для запуска типовой процедуры «ВыполнитьКоманду»

2. Мы создаем и заполняем Массив, в который помещаем ссылку на документ, который находится в поле Ссылка.

Этот документ мы могли перезаполнить вручную, либо выбрать несколько документов.

В.4. Далее выполнение кода передается в процедуру «ВыполнитьКоманду»

1. Данная процедура Может запускаться типовым механизмом (см. пункт Б1.7)

а также программным механизмом (пункт В.4.)

2. В коде процедуры мы должны сделать определенные телодвижения, чтобы запуск процедуры обоими методами ничем не отличался (был универсальным)!

838117ff24e2b35e7a12946c9799e6c6

1. В начале выполнения процедуры мы проверяем типовой реквизит ВладелецФормы.

2. Если данная процедура запущена типовым механизмом (см. пункт Б1.7) то ВладелецФормы = форма документа из которого запускается пункт меню.

3. Если данная процедура запущена программным механизмом (см. пункт В.4.), то ВладелецФормы = неопределено.

В этом случае, в режиме 1с Предприятие у нас открыта форма обработки.

Нам необходимо открыть форму документа (либо открыть существующую форму документа, если она ранее уже была открыта в 1с режиме предприятие).

После открытия формы, в переменную ФормаДок заполняется ссылка на данную форму.

4. После предыдущих пунктов в переменной ФормаДок у нас есть ссылка на форму документа.

ВАЖНО. САМОЕ ГЛАВНОЕ! ВОЗМОЖНА ОТЛАДКА КОДА!

Если поставить точку останова в коде и запустить обработку как внешний файл, то точка останова сработает!

Далее мы на выбор используем ПОДХОДЫ К РАЗРАБОТКЕ:

1. запускаем типовой код формы документа (экспортные процедуры и функции)

2. модуля документа (экспортные процедуры и функции)

3. либо заимствуем код документа в обработку.

Я в большинстве случаев использую подход 3. Потому что экспортных процедур очень мало (спасибо разработчикам типовых конфигураций). Изменять код формы документа или модуля я не практикую.

1. Находим нужный кусок кода или несколько кусков. Собираем нужный нам алгоритм с использованием типовых процедур.

Количество использованных процедур сводим к минимуму.

Для этого желательно найти кусок кода который выполняет большинство нужных операций.

2. Копируем текст Процедур в форму обработки.

3. Заменяем переменные.

Например. Если скопированный код из модуля формы то заменяем переменные

Объект на ТекОбъект (в него передаем данные Объект формы документа).

ЭтотОбъект на ФормаДок (передаем ссылку на форму документа)

Источник

Отладка внешней обработки

Использование внешних обработок — довольно популярный механизм расширения функциональности стандартной конфигурации, который часто используют разработчики. Кроме того, специалистам приходится самостоятельно осуществлять их дальнейшую поддержку, это же Ваша обработка и компания 1С за Вас этого делать не будет. Разумеется, во время написания внешней обработки и в дальнейшем при ее сопровождении возникает необходимость отладки и исправления ошибок (куда же без них). Предлагаю следующую технологию, которая, с моей точки зрения, упрощает этот процесс.

Сразу скажу, что особенность данного способа в ускорении процесса отладки и отсутствии внесения каких-либо изменений непосредственно в исходном коде стандартной конфигурации. Рассмотрим весь процесс на примере 1С 8 ЗУП 3.1.

1. Изменение стандартной загрузки внешней обработки через расширение

Создаем новое расширение через меню «Конфигурация»→«Расширение конфигурации» 1С 8.3 →«Действия»→«Добавить». Новое расширение я так и назвал «ОтладкаВнешнейОбработки».

1

Далее в дереве основной конфигурации находим «Общие модули» 1С 8.3→«ДополнительныеОтчетыИОбработки», в котором есть два интересующие нас объекта:

Добавляем их в наше расширение методом «Вместо» и, соответственно, копируем в расширение все их содержимое.

2

Далее в функции «ПодключитьВнешнююОбработку» нужно чтобы в соответствующем месте был задан полный путь к файлу обработки, которую мы собираемся отлаживать, например:

Напомню, что для быстрого копирования полного имени файла достаточно в «Проводнике» щелкнуть правой кнопкой мышки при нажатой клавише «Shift».

Далее ищем то место в конце модуля функции 1С, которое нам необходимо откорректировать. Вот оно:

3

Заменяем этот текст следующим:

4

Замечу, что имя обработки «НашаОбработка» то же, что прописано в главном окне редактирования обработки:

5

Далее в процедуре «ПриПолученииРегистрационныхДанных» необходимо заменить этот код:

6

на аналогичный предыдущему:

7

Это весь подготовительный этап.

2. Подключение обработки к основной конфигурации 1С

8

Эта процедура выполняется стандартными средствами. В стандартной конфигурации 1С 8 ЗУП 3.1, например так: «Администрирование»→«Печатные формы, отчеты и обработки»»→«Дополнительные отчеты и обработки»→«Добавить из файла. ».

9

Далее нажимаем кнопку «Выполнить» и приступаем к отладке. В нужном месте ставим точку останова, и при ее достижении система проваливается в код модуля 1С.

Замечу, что при внесении изменений достаточно сохранить (Ctrl + S) и перезапустить только обработку. Перезагружать всю конфигурацию не нужно. Теперь, после внесения изменений в модуль «ДополнительныеОтчетыИОбработки» система всякий раз будет заново загружать ваш файл с обработкой 1С, что гораздо быстрее перезагрузки всей конфигурации.

10

При первом старте после каждого изменения и отладки внешней обработки 1С система «предупредит» вас об огромной опасности использования посторонних обработок, а потом «попросит» выполнить обработку еще раз. Нажимаем «Выполнить» повторно и все работает.

По окончании работы не забудьте отключить расширение, сняв галочку «Активно» в окне расширений. Иначе система не выполнит никакую другую обработку!

Источник

Отладка внешних подключаемых обработок

Описание работы с расширением «ОтладкаДополнительныхОтчетовИОбработок»:

1) При подключении расширения должны быть сняты галочки Защита от опасных действий и безопасный режим(Делается в Конфигураторе )

2) Размешаем файл подключаемой обработки в корне диска С

3) Обработка на время отладки должна обязательно называться «Обработка» (Имя должно быть как у обработки так и у файла) C:\Обработка.epf

4) Подключаем обработку в пользовательском режиме.

5) Открываем нашу обработку C:\Обработка.epf и ставим точку останова там где хотим отладить.

6) Запускаем обработку в пользовательском режиме и если сделали все правильно сработает точка останова

Расширение тестировалось на Бухгалтерии версии 3.0.72.60.

Расширение будет работать со всеми конфигурациями на базе БСП (СтандартныеПодсистемы 3.0.3.43)

В расширении ОтладкаДополнительныхОтчетовИОбработок v2.0 реализована возможность указания пути к файлу в комментарии подключенной обработке

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

Специальные предложения

f71a8c4e70c0ff03708038e2b0210df8

9c2808762ec294cd4c55532520b9c521

895fb1e0f7afc3c0ed0d73bf5ee9d9d0

egais promo

b34b292ed32e9501f98cc31df406353e

789363929b9f37ddc5641a069a5fe52e

5b19cd6c4494a88b2abefce64a1b7565

199e2be4fd21dd8f4209d8ec34616c76

2) Размешаем файл подключаемой обработки в корне диска С

3) Обработка на время отладки должна обязательно называться «Обработка» (Имя должно быть как у обработки так и у файла) C:\Обработка.epf

4) Подключаем обработку в пользовательском режиме.

5) Открываем нашу обработку C:\Обработка.epf и ставим точку останова там где хотим отладить.

2) Размешаем файл подключаемой обработки в корне диска С На фига? А если у меня диск С запрещен? Можно указать путь, например в комментарии подключенной обработки и если она в режиме отладке, то вызывать ее из файла по указному пути.

3) Обработка на время отладки должна обязательно называться «Обработка»
На фига? А если я ее назвал в файле «Моя нящечка в отладке», то что ее нельзя открыть из файла?

4) Подключаем обработку в пользовательском режиме. Ну ясен пень

5) Открываем нашу обработку C:\Обработка.epf и ставим точку останова там где хотим отладить Ну ясен пень.

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • 1с открыть форму элемента справочника по ссылке
  • 1с открыть форму только для просмотра