как запустить отладку внешней печатной формы 1с 83
Как отладить внешние печатных формы в 1С 8.3 управляемом приложении
Многие сталкиваются с проблемой отладки внешних печатных форм в 1С 8.3 (8.2) в режиме управляемых форм (да порой и в обычном тоже). Связано это в первую очередь с тем, что, запуская такую форму, система создает временный файл, и точки останова не срабатывают.
Можно, конечно, использовать готовые обработки для целей отладки, благо, найти их не составляет проблемы. Например: http://infostart.ru/public/73691/.
Но есть недостатки большинства таких решений:
Рассмотрим пример разработки собственной внешней печатной формы с возможностью отладки.
Создание внешней обработки для отладки печатных форм на управляемом приложении 1С
Суть разработки заключается в том, что мы создадим обычную внешнюю обработку с макетом и процедурой печати, а в форму обработки будем передавать нужный объект.
Итак, создаем новую внешнюю обработку. Назовите ее как угодно.
Добавим в обработку реквизит «СсылкаНаОбъект». Тип реквизита может быть составным и зависеть от конфигурации. Я выбрал тип – документ «РеализацияТоваровУслуг». Такой документ есть и в торговле, и в бухгалтерии.
Также добавим форму с единственным полем «Ссылка» и кнопкой «Печать». Кнопку добавим позже, когда создадим команду. Еще добавим макет, в который будем выводить данные документа.
Команду назовем «ПечатьОбъекта» с одноименным действием на клиенте:
Создадим простой Макет:
Выборку данных из объекта будем производить запросом, поэтому вызовем функцию на сервере. В функцию передадим нашу ссылку на объект, которая будет использоваться в качестве параметра в запросе. Функция будет возвращать заполненный табличный документ, так как показ его возможен только на клиенте:
Пример функции на сервере:
Для отладки ставим точку останова в нужном нам месте и запускаем обработку в режиме предприятия.
Скачать получившуюся обработку для примера можно по ссылке — ОтладкаВнешнихПечатныхФорм. Обработку можно использовать как шаблон.
Важно: Если база данных находится на сервере, для отладки на сервере нужно запустить с параметром «-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. Заполняем код в модуле обработки.
Код достаточно типовой, комментировать думаю излишне. На тему данного кода полно других публикаций.
Если появятся вопросы по коду, задавайте в комментариях к публикации.
Б1.3. В обработке добавляем реквизит Ссылка с типом = СписокЗначений
Б1.4. Создаем форму обработки.
В форме обработки переносим реквизит формы Объект.ссылка на форму. Таким образом должно появится поле формы «Ссылка».
У реквизита формы «Объект.Ссылка» тип = СписокЗначений
Б1.5. В коде формы обработки переопределяем процедуру ПриСозданииНаСервере
Важно не просто написать код. Важно в конфигураторе нажать на кнопку «Процедуры и функции» и выбрать нужную типовую функцию модуля формы.
В данной процедуре мы заполняем реквизит Ссылка конкретным документом ЗаказКлиента.
При открытии формы обработки как внешний файл, будет автоматически выбираться данный документ
Б1.6. В коде формы обработки определяем процедуру ВыполнитьКоманду
В данную процедуру передается управление, когда данная обработка запускается из формы документа ЗаказКлиента как пункт меню.
Кроме того, мы будем программно передавать в нее управление с заполнение параметров.
Объясняю по порядку.
Б1.7. Если данную обработку поместить во внешние обработки в режиме 1с Предприятие
то в Заказе Клиента появится пункт меню меню Форма-Еще-Обновление цены в строке по виду цен
Теперь, если запустить обработку по клику на меню в форме документа, запустится код в форме обработки, в процедуре ВыполнитьКоманду(. ).
ПРОБЛЕМА в том, что такой код НЕ ОТЛАДИТЬ. Точки останова в конфигураторе срабатывать не будут!
В. КАК Сделать отладку в модуле обработки?
В.1. Мы будем запускать форму обработки как внешний файл в режиме 1С: Предприятие.
В.2. При открытии формы обработки будет срабатывать код процедуры ПриСозданииНаСервере
Будет открываться форма обработки с выбранным ЗаказомКлиента в поле формы Ссылка
В.3. У нас на форме есть кнопка «Выполнить команду».
Определим обработчик команды, которая вызывается нажатием на данную кнопку
Команда «Выполнить команду» (закладка Команды формы обработки) выполняет код процедуры «ВыполнитьКоманду1»
Почему именно такое наименование? Потому что процедура «ВыполнитьКоманду» уже зарезервирована типовым механизмом.
В обработчике команды «ВыполнитьКоманду1» мы выполняем код:
1. Мы создаем и заполняем параметры для запуска типовой процедуры «ВыполнитьКоманду»
2. Мы создаем и заполняем Массив, в который помещаем ссылку на документ, который находится в поле Ссылка.
Этот документ мы могли перезаполнить вручную, либо выбрать несколько документов.
В.4. Далее выполнение кода передается в процедуру «ВыполнитьКоманду»
1. Данная процедура Может запускаться типовым механизмом (см. пункт Б1.7)
а также программным механизмом (пункт В.4.)
2. В коде процедуры мы должны сделать определенные телодвижения, чтобы запуск процедуры обоими методами ничем не отличался (был универсальным)!
1. В начале выполнения процедуры мы проверяем типовой реквизит ВладелецФормы.
2. Если данная процедура запущена типовым механизмом (см. пункт Б1.7) то ВладелецФормы = форма документа из которого запускается пункт меню.
3. Если данная процедура запущена программным механизмом (см. пункт В.4.), то ВладелецФормы = неопределено.
В этом случае, в режиме 1с Предприятие у нас открыта форма обработки.
Нам необходимо открыть форму документа (либо открыть существующую форму документа, если она ранее уже была открыта в 1с режиме предприятие).
После открытия формы, в переменную ФормаДок заполняется ссылка на данную форму.
4. После предыдущих пунктов в переменной ФормаДок у нас есть ссылка на форму документа.
ВАЖНО. САМОЕ ГЛАВНОЕ! ВОЗМОЖНА ОТЛАДКА КОДА!
Если поставить точку останова в коде и запустить обработку как внешний файл, то точка останова сработает!
Далее мы на выбор используем ПОДХОДЫ К РАЗРАБОТКЕ:
1. запускаем типовой код формы документа (экспортные процедуры и функции)
2. модуля документа (экспортные процедуры и функции)
3. либо заимствуем код документа в обработку.
Я в большинстве случаев использую подход 3. Потому что экспортных процедур очень мало (спасибо разработчикам типовых конфигураций). Изменять код формы документа или модуля я не практикую.
1. Находим нужный кусок кода или несколько кусков. Собираем нужный нам алгоритм с использованием типовых процедур.
Количество использованных процедур сводим к минимуму.
Для этого желательно найти кусок кода который выполняет большинство нужных операций.
2. Копируем текст Процедур в форму обработки.
3. Заменяем переменные.
Например. Если скопированный код из модуля формы то заменяем переменные
Объект на ТекОбъект (в него передаем данные Объект формы документа).
ЭтотОбъект на ФормаДок (передаем ссылку на форму документа)
Подключаем внешнюю печатную форму в режиме отладчика
Конфигурация у меня УТ 11.4 + CRM, короче УТ11.4, я сделал выгрузил рабочую базу через конфигуратор в файл dt. Затем создал папку тестовая база, открыл программу и создал новую базу без конфигурации, каталогом разумеется указал, выше созданную папку, далее открыл новую базу в режиме конфигуратора и загрузил тот dt файл который мы выгрузили, кстати, все это я сделал на учебной (демо) платформе.
Но этот метод можно использовать и на серверной базе.
База у нас находится нп поддержке 1с, т.е. она типовая, следовательно изменять конфигурацию мы не будем, но для решения моего метода, нужно внести изменения в код конфигурации и что же блин делать, а вот что создаем расширение: нажимаем Конфигурация-Расширения конфигурации, далее нажимаем на беленький плюсик на зеленом фоне (добавить) в открывшемся окне пишем как будем называть свое расширение у меня VID назначение оставляем адаптация.
После этого у нас помимо окна конфигурации появится и окно с нашим расширением, но оно пустое, если конечно у Вас уже есть расширение, то создавать не нужно пропустите этот шаг.
После этого у нас откроется пустое окно, а именно это модуль который мы добавили, но только он в расширении и он пустой, поэтому теперь ищем в том же модуле конфигурации функцию ПодключитьВнешнююОбработку и процедуру ПриПолученииРегистрационныхДанных, над функцией добавляем атрибут Вместо, а над процедурой После, а также переименовываем процедуру и функцию, чтобы они не дублировались с основной конфигурации, я добавил свой идентификатор и сокращение расширение, т.е. VID_Расш
Далее открываем данную функцию и меняем часть кода на этот, а оригинальный код комментируем:
Далее открываете процедуру и также вносите изменения в код:
После этого нужно изменить режим совместимости на Вашем расширении, некоторые говорят, что нужно менять и на расширении и на самой конфигурации, но у меня все работает и без изменения режима совместимости на конфигурации, для изменения режима правой кнопкой мыши нажмите на название вашего расширения у меня это VID, в самом вверху окна конфигурации и далее свойства, справа у Вас откроется вкладка со свойствами расширения: в самом низу измените режим совместимости на «не использовать», сомтрите рисунок, также второй рисунок показывает то, что в самой конфигурации у меня по прежнему остался режим совместимости.
Разумеется из-за того, что точку мы установили на функцию СведенияОВнешнейОбработке, то при добавлении обработки, нас сразу перенесло в режим конфигуратора и появилась та нужная нам белая стрелка на красном кружке.
Не обессудьте, хорошего всем дня и главное не болеть!
Отладчик внешних печатных форм (обычное и управляемое приложение)
Обработка предназначена для отладки внешних печатных форм (ВПФ) в обычном и управляемом приложении.
В Конфигураторе открываем ВПФ, ставим точку останова в модуле.
Запускаем обработка в Предприятии и заполняем данные.
выводится табличный документ.
Тестирование проводилось в:
Скачать файлы
Специальные предложения
Автор запретил комментарии
Обновление 12.02.20 20:07
См. также
Внешний регламент для 1С Промо
Внешний регламент сделан для тех, кто ценит свое время и время заказчика. После одноразового встраивания в конфигурацию, внешний регламент на лету позволяет добавлять, изменять внешние модули, которые могут выполнятся как регламентные задачи с указанным интервалом или запускаться в ручном режиме для отладки. Все модули (внешние обработки) находятся и выполняются на стороне сервера, что позволяет исключить подмену алгоритмов со стороны клиента.
05.03.2020 8581 9 moolex 11
Конструктор запросов для пользователей
Конструктор запросов на языке 1С 8.3 (УФ) совместно с СКД, ориентированный для пользователей и бизнес аналитиков BI систем, доступный и понятный, результатом является текст запроса.
19.10.2021 890 2 serovmsk 0
JКоннектор (jc1c), Java
04.10.2021 1005 1 kaliuzhnyi 4
Табличная часть как поле ввода
Табличная часть как поле ввода с программным добавлением строк.
20.09.2021 3140 4 harchenko_pavel 87
Подсистема «Показатели объектов» Промо
06.03.2021 6928 6 pila86 16