1с внешняя обработка открытие формы бсп

Внешняя печатная форма с использованием БСП и вызовом клиентского метода

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

При печати с использованием типа команды «ВызовСерверногоМетода» информации много и никаких трудностей его использование не вызывает. Но, по очевидным причинам, использовать его нельзя, т. к. диалог с пользователем ведется «на клиенте». В этом случае справка по БСП предлагает использовать тип команды «ВызовКлиентскогоМетода» и три варианта его использования. В частности, для внешней печатной формы предлагается создать форму обработки и реализовать в ней процедуру печати следующего вида

В дополнении указано, что в параметре формы «ДополнительнаяОбработкаСсылка», передается ссылка этого объекта с типом Справочники.ДополнительныеОтчетыИОбработки. И на этом все.

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

Но, при прямом вызове этой процедуры с помощью

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

На этом месте я застрял на пару часов. «Гугление» особого результата не принесло. В основном предлагалось сформировать табличный документ и использовать его метод «Показать()». Но, хотелось получить результат аналогичный полученному с помощью «ВызоваСерверногоМетода», т. е. вывести документ в стандартную форму БСП «ПечатьДокументов». Наконец, на просторах интернета наткнулся на статью, где описана передача параметров во «внешнюю» форму обработки. Адаптировав информацию в статье под свою задачу, все получилось.

Итак, для реализации задачи необходимо:

Указать в интерфейсе регистрации обработки использование «ВызвовКлиентскогоМетода»

Реализовать две процедуры «Печать» в соответствии с требованиями БСП, в основной форме обработки «НаКлиенте» и в модуле объекта обработки.

Далее, что бы вызвать процедуру печати из модуля объекта обработки, необходимо заполнить структуру параметров открытия формы и открыть общую форму «ПечатьДокументов».

Код процедуры «Печать» в форме выглядит так:

На этом, в общем то, и все.

В файле пример обработки, использующей данный метод. Обработка печатает «Международную транспортную накладную (CMR)», на основе документов «РеализацияТоваровУслуг» и «ТранспортнаяНакладная». В случае отсутствия транспортных накладных, пользователю выводится предложение их создать и форма со ссылкой на созданный документ в случае согласия, для заполнения транспортной накладной согласно требованиям.

Источник

Как программно открыть внешний отчет из «Дополнительных отчетов и обработок» и передать параметры (при помощи БСП)

Дано: конфигурация на платформе 1С 8.3. В «Дополнительные отчеты и обработки» загружен отчет или обработка.

Задача: открыть данный отчет/обработку программно в коде, например, по кнопке.

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

Далее рассмотрим пример кода, который будет срабатывать по нажатию кнопки и открывать внешний отчет.

В сети интернет много примеров, как открыть внешний отчет или обработку. Большинство из них содержит код загрузки из файла, если это внешний файл отчета.

Итак, в БСП есть модуль работы со справочником «Дополнительные отчеты и обработки» (ДополнительныеОтчетыИОбработки), в частности есть процедура открытия отчета и функция подключения внешнего отчета:

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

Один из вариантов использовать первую процедуру, но он мне не понравился из-за необходимости излишних действий, чтобы заполнить переменную ВыполняемаяКоманда, а также тем, что передать параметры в отчет можно только массивом (ОбъектыНазначения).

Поэтому решила использовать функцию под номером 2, что подключает нужный отчет/обработку, который затем можно открыть по имени, возвращаемому данной функцией.

Итак, сам пример (полный код):

Пример формы с кнопками, вызывающими эти процедуры:

4b41344d712bfaf79d0a74833de955d6

Скачать пример данной формы можно в файлах к статье.

Если вызывается отчет на СКД, то нужно создать для него типовую форму. Подробнее см. Как добавить типовую форму для СКД

Примечание: создавать форму, как оказалось, не обязательно. См. вариант вызова СКД без создания формы

Чтобы сработал код передачи параметров в СКД (ОткрытьВнешнийОтчетСКДсПараметром), нужно в модуле объекта СКД добавить код, принимающий эти параметры:

Скачать пример данного СКД отчета можно в файлах к статье.

Также пробовала передавать параметры в СКД вот так:

Однако возникала ошибка: Невозможно применить фиксированные настройки. Пересекаются элементы отбора.

64c7828a2e0175459c59ac6578d4021b

Поэтому выше описала, как передавала параметры отбора в отчет СКД при котором такой ошибки не было.

Обработки тестировались на демо-базе БСП версии 2.4.5.

См. также Как в СКД по щелчку на какой-либо ячейке в отчете получить значение другой ячейки (там применяется метод, описанный в статье для вызова внешней обработки в качестве расшифровки ячейки СКД)

Источник

Для чего это может понадобиться?

1) Допустим, вы решили складировать все регламенты и настройки для них в одной обработке. Соответственно ваша форма для этой обработки становится все больше и страшнее. Вам придётся что-то скрывать\показывать.

2) Вы собираете форму программно и вдруг заметили, что код по формированию уже стал километровым.

3) У Вас есть универсальные Процедуры\Функции, вы их держите в модуле обработки и вам нужны разные формы для работы с этими процедурами\функциями.

Мысли вслух:

Сам лично я живу с одной формой и мог бы просто ответить не предусмотрено и приложить кусок кода из БСП:

Сам ответ кроется тут: ОткрытьФорму(«ВнешняяОбработка.»+ ИмяОбработки +«.Форма», ПараметрыОбработки, Форма);

В описании функции ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы написано следующее:

То есть открывается форма которая определена в обработке.

74b22ca7f5f5b7f4dbe14f4bc3a829b8

Вообще если посмотреть внимательно видно, что в БСП даже не затевали возможность вывода нескольких форм.

0666835ccb57005f433b0049a097c0d8

В противном случае они бы сделали прикручивание вывода каждой формы к определенной подсистеме.

Такой ответ был бы прост, но.

С другой стороны:

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

8de176289f83d8461fb9254b9b36cdc5

-Есть возможность добавлять формы.

29d36fda13c917797f317dd15c8c7bbb

-Есть возможность добавлять несколько команд с открытием формы.

28bc2fa7ab8b0db992da7431cc8dbe34

В итоге на работе в пятницу час перед уходом сидел и баловался с кодом. По принципу «придумать минимум два решения».

На первый взгляд, задача сводится к тому, что нужно заменить вот этот злополучный кусок кода:

На что его менять?

У нас есть Идентификатор команды с помощью этого идентификатора можно было бы передать название формы:

Можно использовать ВыполняемаяКоманда.Модификатор и загнать сюда название формы:

Как мы видим он занят только для команды с типом «ПечатнаяФорма», следовательно можно для команды «ОткрытиеФормы» использовать его как контейнер для названия формы

А давайте сделаем.

2 Добавил формы с надписью которая говорит какая форма открыта

3 Скачал БСП 3.0.3.48 и развернул демо конфигурацию (Для примера 1.1) использовал платформу 8.3.12.1685

А] Форму передаем через Идентификатор

Создал расширение upBSP:

d3de553324d1b7ed0f077a0ad68e5896

Добавил в расширение модуль ДополнительныеОтчетыИОбработкиКлиент

7fd205a50c98b0603451aaa8a71b6f9c

Собственно все, пробуем и радуемся!

Б] Форму передаем через Модификатор

В Модификатор команды мы будем писать либо название формы, либо путь к форме объекта конфигурации.

Когда мы пишем путь к объекту конфигурации в идентификатор команды добавляем кодовый ключ «upBSP».

НоваяКоманда.Идентификатор = «ДемоБанковскиеСчетаФормаСписка_upBSP«;
НоваяКоманда.Модификатор = «Справочник._ДемоБанковскиеСчета.ФормаСписка«;

Собственно все, пробуем и радуемся!

После чего решил его сделать и остановится. Мало ли, что еще в голову придет.

. Слабонервным просьба не читать.

1 В обработке создаем форму «ФормаРаспределения» и прописываем ее как основную форму.

cb1d50acc3f17d567b391427342bb6b8

309853cc482f027f6781fb7383eafb0a

2 В Функции СведенияОВнешнейОбработке просто описываем команды, без извращений. Как обычно.

Обратите внимание: //Открываем форму «Справочник._ДемоБанковскиеСчета.ФормаСписка»

То есть открывать формы не только обработки мы будем.

3 В форме «ФормаРаспределения» добавляем немного кода

Источник

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