Каталог решений - Отправка ссылки на документ в обработку вызовом из формы документа, управляемая и обычная формы

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

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

В наличии

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

Категория:

Описание

Казалось бы, простая задача… но все равно вызывает вопросы у пользователей. Публикация для неопытных и начинающих программистов 1С8. Целью публикации можно считать попытку объяснения решения задачи обычным пользователям (не программистам), но и программистам тоже может быть полезна.

Задача: вызов из формы документа формы обработки, которая реализует на основе ссылки документа собственные функции.

Рассматривается открытие обработки встроенной в конфигурацию. Настройка на основе решения из публикации — формирование ссылки на оплату.

Управляемая форма

Для примера, используем конфигурацию "Управление нашей фирмой, редакция 1.6 (1.6.24.201)".

Как должно работать?

В документе "Заказ покупателя" будет команда, которая открывает форму обработки. Подойдёт любой способ — например, кнопка в шапке документа:

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

Далее обработка решает свою задачу запрограммированным в неё способом.

Команда запуска обработки

Если обработка отсутствует в метаданных конфигурации, то сперва интегрируем её:

Есть много способов добавить команду вызова формы обработки. Рассмотрим пример:

Двойной клик по команде открывает модуль команды, в который добавим алгоритм запуска обработки:

  &НаКлиенте
  Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
  	
  	СтруктураРезультат = Новый Структура;
  	СтруктураРезультат.Вставить("СсылкаНаДокумент", ПараметрыВыполненияКоманды.Источник.Объект.Ссылка);
  	АдресВХранилище = ПоместитьВоВременноеХранилище(СтруктураРезультат);
  	СтруктураПараметры = Новый Структура("АдресВХранилище", АдресВХранилище);
  	ОткрытьФорму("Обработка.ВыставлениеСчетаСсылкой.Форма.Форма", СтруктураПараметры, , Новый УникальныйИдентификатор);
  	
  КонецПроцедуры

Реализация команды основана на механизме типовых конфигураций платформы 1С8.

Помещение во временное хранилище структуры и элемента с ключом СсылкаНаДокумент будут нужны для открываемой формы обработки, в которой объявлен ключевой параметр АдресВХранилище:

В модуле формы обработки должна быть серверная процедура ПриСозданииНаСервере, в которой обрабатывается параметр АдресВХранилище:

Свойство СсылкаНаДокумент представлено типом данных ДокументСсылка, поэтому реквизит ДокументОснование объекта обработки должен быть того же типа.

  &НаСервере
  Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
      СтруктураДанных = Новый Структура;
      Если ЗначениеЗаполнено(Параметры.АдресВХранилище) Тогда
          СтруктураДанных = ПолучитьИзВременногоХранилища(Параметры.АдресВХранилище);        
          Если СтруктураДанных.Свойство("СсылкаНаДокумент") Тогда
              Если ЗначениеЗаполнено(СтруктураДанных.СсылкаНаДокумент) Тогда
                  Объект.ДокументОснование = СтруктураДанных.СсылкаНаДокумент;
              КонецЕсли;
          КонецЕсли;
      КонецЕсли;
  КонецПроцедуры

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

  &НаКлиенте
  Процедура ПриОткрытии(Отказ)
  	Если ЗначениеЗаполнено(Объект.ДокументОснование) Тогда
  		ДокументОснование = Объект.ДокументОснование;
  		СформироватьПлатеж();
  		СсылкаПлатежныйШлюз(0);
  	КонецЕсли;
  КонецПроцедуры

Далее можно перейти к тестированию.

Обычная форма

Для примера, используем конфигурацию "Управление производственным предприятием, редакция 1.3 (1.3.143.1)".

Как должно работать?

В документе "Заказ покупателя" будет команда, которая открывает форму обработки. Пункт меню в командной панели документа:

Выполнение команды должно приводить к автоматической подстановке документа в реквизит обработки ДокументОснование:

Далее обработка решает свою задачу запрограммированным в неё способом.

Команда запуска обработки

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

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

В модуле формы документа будет добавлен метод ДействияФормыСбер, в котором нужно выполнить вызов формы обработки с отправкой ссылки документа через реквизит ДокументОбъект:

  Процедура ДействияФормыСбер(Кнопка)
  	//Получение объекта формы обработки
  	ВыставлениеСчетаСсылкой = Обработки.ВыставлениеСчетаСсылкой.Создать();
  	ФормаВыставлениеСчетаСсылкой = ВыставлениеСчетаСсылкой.ПолучитьФорму("ФормаОбычныйРежим",ЭтаФорма);
  	//Отправка ссылки на текущий документ
  	ФормаВыставлениеСчетаСсылкой.ДокументОбъект = ЭтотОбъект.Ссылка;	
  	//Открытие формы обработки
  	ФормаВыставлениеСчетаСсылкой.Открыть();
  КонецПроцедуры

Для получения ссылки на документ со стороны обработки в модуле открываемой формы необходимо добавить экспортную переменную и алгоритм заполнения реквизита ДокументОснование в процедуре ПриОткрытии:

  // ПЕРЕМЕННЫЕ МОДУЛЯ
  Перем ДокументОбъект Экспорт;
  
  Процедура ПриОткрытии(Отказ)
  	Если Не ДокументОбъект = Неопределено Тогда
  		ЭтотОбъект.ДокументОснование = ДокументОбъект;
  	КонецЕсли;
  	СформироватьПлатеж();
  	СсылкаПлатежныйШлюз(0);
  КонецПроцедуры

Далее можно перейти к тестированию.

Сообщите о любых недочётах публикации в комментариях. Спасибо!

has been added to your cart:
Оформление заказа