Внешние обработки 1С

Управляемое приложение. Внешняя обработка. Создание связанных объектов

Условия:

1) До записи нового документа счет-фактура выданный аванс показать его заполненную, по основанию, форму и предложить пользователю интерактивно его записать;

2) Обработку создания документа сделать внешней и подключаемой к форме документа основания.

Нюанс: У документа счет-фактура выданный аванс в конфигурации оснований не задано.

Решение:

Шаг 1.

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

Приведу код в модуле обработки:

Функция СведенияОВнешнейОбработке() Экспорт ПараметрыРегистрации = Новый Структура; МассивНазначений = Новый Массив; МассивНазначений.Добавить(«Документ.ПоступлениеБезналичныхДенежныхСредств»); ПараметрыРегистрации.Вставить(«Вид», «СозданиеСвязанныхОбъектов»); ПараметрыРегистрации.Вставить(«Назначение», МассивНазначений); ПараметрыРегистрации.Вставить(«Наименование», «Создать документ счет-фактура на аванс на основании документа поступление безналичных денежных средств»); ПараметрыРегистрации.Вставить(«Версия», «1.0»); ПараметрыРегистрации.Вставить(«БезопасныйРежим», Истина); ПараметрыРегистрации.Вставить(«Информация», «Дополнительная обработка табличной части к документу счет-фактура выданный аванс»); ТаблицаКоманд = ПолучитьТаблицуКоманд(); ДобавитьКоманду(ТаблицаКоманд, «Счет-фактура на аванс», «Счет-фактура на аванс», «ВызовКлиентскогоМетода», Истина); ПараметрыРегистрации.Вставить(«Команды», ТаблицаКоманд); Возврат ПараметрыРегистрации; КонецФункции Функция ПолучитьТаблицуКоманд() Команды = Новый ТаблицаЗначений; Команды.Колонки.Добавить(«Представление», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«Идентификатор», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«Использование», Новый ОписаниеТипов(«Строка»)); Команды.Колонки.Добавить(«ПоказыватьОповещение», Новый ОписаниеТипов(«Булево»)); Команды.Колонки.Добавить(«Модификатор», Новый ОписаниеТипов(«Строка»)); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Истина, Модификатор = «») НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры

Так как нам придется работать с формами объектов, мы просто вынуждены использовать метод ВызовКлиентскогоМетода для вызова команды внешней обработки.

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

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

Шаг 2.

Так как мы использовали ВызовКлиентскогоМетода, то обязательную процедуру, для внешней подключаемой обработки создания связанных объектов, ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт, необходимо выполнять &НаКлиенте в модуле формы обработки, а значит создадим любую форму обработки, пользователь её всеравно не увидит, и поместим внутрь модуля формы следующий код:

&НаКлиенте Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив, СозданныеОбъекты) Экспорт //Переберем все выбранные документы на основании, которых будет созданы другие новые документы //В нашем случае это всего один документ «Поступление безналичных денежных средств» Для каждого Элемент из ОбъектыНазначенияМассив Цикл //Получая форму объекта создаваемого документа, мы уже создаем этот объект ФормаДок = ПолучитьФорму(«Документ.СчетФактураВыданныйАванс.ФормаОбъекта»); //Далее мы получаем объект только, что созданной формы и помещаем её в переменную //В объекте содержатся все реквизиты (элементы) формы ДанныеФормы = ФормаДок.Объект; //Мы помещаем объект формы в переменную, //так как должны передать её в процедуру на сервере, //где нельзя изменять объект формы, зато можно править переменную содержащую его СоздатьНовыйДокумент(Элемент, ДанныеФормы); //После выполнения процедуры на сервере мы получаем изменную переменную ДанныеФормы, //которую необходимо передать в уже созданную нами форму КопироватьДанныеФормы(ДанныеФормы, ФормаДок.Объект); //Открываем результат выполнения обработки ФормаДок.Открыть(); КонецЦикла; КонецПроцедуры

Ниже приведу код, который у вас может быть совершенно другим, и делать какие-либо другие манипуляции с объектом формы:

&НаСервере Процедура СоздатьНовыйДокумент(Элемент, НовыйОбъект) Основание = Элемент.Ссылка; НовыйОбъект.Дата = ТекущаяДата(); НовыйОбъект.Организация = Основание.Организация; НовыйОбъект.ДокументОснование = Основание; НовыйОбъект.Контрагент = Основание.Контрагент; ДанныеОснования = ПолучитьДанныеОснованияНаСервере(НовыйОбъект.ДокументОснование); ЗаполнитьЗначенияСвойств(НовыйОбъект, ДанныеОснования); Для каждого СтрокаТЧ из Основание.РасшифровкаПлатежа Цикл НоваяСтрока = НовыйОбъект.Авансы.Добавить(); Если ЗначениеЗаполнено(СтрокаТЧ.СчетНаОплату) Тогда НоваяСтрока.Содержание = «Предварительная оплата» + ФормированиеПечатныхФорм.СформироватьЗаголовокДокумента(СтрокаТЧ.СчетНаОплату, НСтр(«ru=’ по счету на оплату'»)); КонецЕсли; НоваяСтрока.Сумма = СтрокаТЧ.Сумма; НоваяСтрока.СтавкаНДС = Перечисления.СтавкиНДС.НДС18_118; ТекПроцентНДС = ЦенообразованиеКлиентСервер.ПолучитьСтавкуНДСЧислом(НоваяСтрока.СтавкаНДС); НоваяСтрока.СуммаНДС = ЦенообразованиеКлиентСервер.РассчитатьСуммуНДС(НоваяСтрока.Сумма, ТекПроцентНДС); КонецЦикла; НовыйОбъект.Сумма = НовыйОбъект.Авансы.Итог(«Сумма»); НовыйОбъект.СуммаНДС = НовыйОбъект.Авансы.Итог(«СуммаНДС»); КонецПроцедуры &НаСервере Функция ПолучитьДанныеОснованияНаСервере(ДокументОснование) ДанныеОснования = Документы.СчетФактураВыданныйАванс.ПолучитьВходящиеНомерДатуДокумента(ДокументОснование); Возврат ДанныеОснования; КонецФункции

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

Если есть более оптимальные, более правильные решения поставленной задачи, сообщайте об этом мне или публикуйтесь самостоятельно, не молчите. На данный момент информации о внешних подключаемых обработках на управляемом приложении почти нет, даже книги Радченко М.Г. дают её в ограниченном объеме.

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

Релиз платформы: 8.2.13.219 Файл-сервер

UPD: Хорошие примеры от Поручик: первый и второй

Печать (Ctrl+P)

Отчеты и обработки

Любая система автоматизации учета только тогда выполняет свои функции, когда она имеет средства обработки накопленной информации и получения сводных данных в удобном для просмотра и анализа виде. Как правило, для решения подобных задач в системе автоматизации учета существует возможность формирования отчетов. Конфигуратор позволяет формировать набор различных отчетов, достаточных для удовлетворения потребности пользователей системы в достоверной и подробной выходной информации.
Для получения отчетной информации в системе «1С:Предприятие» используются объекты конфигурации, расположенные в ветви Отчеты дерева конфигурации. Каждый объект этого типа может содержать алгоритм формирования «бумажного» или «электронного» отчета на внутреннем языке системы «1С:Предприятие» или схему компоновки данных, на основании которой система «1С:Предприятие» может автоматически выполнить отчет . Отчет может содержать одну или несколько форм, с помощью которых, при необходимости, можно организовать ввод каких-либо параметров, влияющих на ход алгоритма. Для вывода результатов выполнения алгоритма на экран и принтер отчет может иметь созданные с помощью конструктора макетов описания печатных форм (макеты).
Редактирование свойств объектов типа Отчет и Обработка и создание подчиненных объектов выполняются в окне редактирования.
Для выполнения различных действий над информацией в системе «1С:Предприятие» используются объекты конфигурации, расположенные в ветви Обработки дерева конфигурации. Например, с их помощью можно выполнять удаление из системы устаревших данных, импорт информации из других систем и многое другое. Характер выполняемых в этом случае действий отражает название объекта конфигурации – Обработка, так как в результате информация, хранящаяся в системе, претерпевает какие-либо изменения.
Обработка может содержать одну или несколько форм, с помощью которых, при необходимости, можно организовать ввод каких-либо параметров, влияющих на ход алгоритма. Вывод результатов выполнения алгоритма на экран и принтер осуществляется с помощью конструктора макетов описания печатных форм (макеты).
Основное отличие отчета от обработки заключается в возможности использования схемы компоновки данных. В остальном обработка не отличается от отчета.
Существует возможность для нескольких (или всех) отчетов прикладного решения использовать единые формы отчета, настроек или варианта отчета.
Для этого необходимо использовать общие формы. В общем случае можно выделить следующие варианты использования:
● Для всех отчетов прикладного решения используется единый набор форм работы с отчетами. В этом случае нужно создать необходимые формы и указать их в свойствах конфигурации (см. здесь). Тогда в самих отчетах формы разрабатывать не нужно, т. к. будут использоваться общие формы.
● Можно выделить наборы отчетов, для каждого из которых необходимо разработать свои формы работы с отчетом. В этом случае создаются общие формы работы с отчетами, которые указываются для каждого отчета «своей» группы. Так можно сделать особый набор форм, например, для бухгалтерских отчетов или для отчетов аналитиков.
Примечание. Если у нескольких отчетов в качестве основной формы указана одна общая форма, то в толстом клиенте (в обычном режиме) одновременно можно будет открыть только один из этих отчетов.
Если в форме отчета используется стандартная команда Открыть новое окно, то следует помнить о том, что в новое окно не передаются те параметры, которые были переданы в форму, из которой использована стандартная команда.

Внешние обработки и отчеты

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

Внешним отчетом в системе «1С:Предприятие» называется отчет, хранящийся вне конфигурации, в отдельном файле внешнего отчета. Внешний отчет
служит для решения тех же задач, что и объекты конфигурации типа Отчет.
Основное назначение внешнего обработки (отчета) заключается в возможности реализовывать, поставлять и обновлять некоторые возможности отдельно от конфигурации.
Внешние обработки и отчеты могут храниться в двух разных форматах:
● Двоичные файлы, имеющие расширение .epf и .erf соответственно. Эти файлы могут использоваться как для редактирования в конфигураторе, так и для использования в режиме 1С:Предприятия. Имеется возможность разработки и отладки в процессе работы системы «1С:Предприятие». В этом случае разработка и отладка обработки (отчета) значительно ускоряются: редактирование и сохранение внешней обработки (отчета) выполняются в режиме Конфигуратор, без сохранения конфигурации в целом, а запуск – в режиме 1С:Предприятие. Для выполнения внешняя обработка (отчет) загружается при помощи пункта Файл – Открыть и работает так же, как и любая другая обработка (отчет) конфигурации.
● XML-файлы в формате, соответствующим файлам, которые используются при выгрузке/загрузке конфигурации в файлы. При использовании этого формата поддерживается только редактирование внешней обработки (отчета) в режиме Конфигуратора. Для использования в режиме 1С:Предприятия внешнюю обработку (отчет) необходимо сохранить в двоичном формате .erf/.epf. Для работы используется формат версии
2.0.
ПРИМЕЧАНИЕ. Внешняя обработка (отчет), открываемые с помощью меню Файл – Открыть, будут исполняться в безопасном режиме, если у пользователя отсутствуют административные права доступа.

Любой объект конфигурации типа Обработка или Отчет может быть сохранен в файл внешней обработки (отчета), и наоборот – существующий объект конфигурации может быть заменен внешней обработкой (отчетом). Для внешней обработки (отчета) может быть создана справочная информация, как и для других объектов конфигурации.
СОВЕТ. Для обеспечения целостности конфигурации внешние обработки (отчеты) рекомендуется использовать в основном в отладочных целях.
После отладки алгоритма формирования обработки (отчета) необходимо включить внешнюю обработку в конфигурацию.
Сохранение внешней обработки (отчета) в XML-формате можно использовать в том случае, если предполагается хранить эту обработку (отчет) во внешней системе контроля версий. XML-формат для этого более удобен, чем двоичный формат .epf (.erf). Конфигуратор позволяет открывать для редактирования внешние обработки (отчеты) в любом формате. При этом запись по умолчанию выполняется ровно в том же формате, в котором внешняя обработка (отчет) была открыта в конфигураторе. Для смены формата хранения необходимо выполнить команду Файл – Сохранить как… или
Файл – Сохранить копию… и в открывшемся диалоге выбрать нужный формат сохранения.

Использование внешних обработок (отчетов)

Для использования внешней обработки (отчета) при работе с системой «1С:Предприятие» ее необходимо открыть так же, как это делается в конфигураторе. Однако следует иметь в виду, что в системе «1С:Предприятие» внешняя обработка (отчет) открывается только для исполнения: пользователь не может его редактировать. При попытке открытия проверяются соответствующие права доступа, и происходит установка безопасного
режима (если у пользователя нет административных прав). Кроме того, для исполнения внешней обработки (отчета) она должна быть сохранена в двоичном формате .epf (.erf).
Компиляция модуля внешней обработки (отчета) выполняется при открытии внешней обработки (отчета), поэтому после редактирования внешней обработки (отчета) в конфигураторе и ее сохранения необходимо вновь открыть эту обработку в режиме 1С:Предприятие.
Кроме того, работа с внешними обработками (отчетами) возможна также на сервере «1С:Предприятия». При этом сохраняются все ограничения на использование интерактивных объектов (форм и т. д.).
Для того чтобы использовать внешнюю обработку (отчет) из встроенного языка, необходимо вначале подключить ее с помощью метода Подключить()
(доступен только на сервере «1С:Предприятия»).

АдресХранилища = “”;
Результат = ПоместитьФайл(АдресХранилища, “ВнешОбработка.epf”, , Ложь);

// На сервере подключаем обработку из созданного ранее
// временного хранилища.
ИмяОбработки = ВнешниеОбработки.Подключить(АдресВременногоХранилища);
В переменную ИмяОбработки будет помещено имя внешней обработки, которое в дальнейшем будет использоваться для обращения к подключенной
внешней обработке. Например, при открытии формы обработки:

// Откроем форму подключенной внешней обработки
ОткрытьФорму(“ВнешняяОбработка.”+ ИмяОбработки +”.Форма”);

Внешняя обработка (отчет) может быть подключена в безопасном режиме (см. здесь). Для этого следует использовать параметр БезопасныйРежим методов подключения Подключить() и Создать(). Режим подключения внешней обработки (отчета) будет зависеть от значения этого параметра:
● Параметр имеет значение Истина: внешняя обработка (отчет) подключаются в безопасном режиме;
● Параметр имеет значение Ложь: внешняя обработка (отчет) подключаются в не безопасном (опасном) режиме;
● В качестве значения параметра указано имя профиля безопасности :
● Имя не указано: внешняя обработка (отчет) подключается в безопасном режиме;
● Имя профиля указано, и для этого профиля параметр Профиль безопасности безопасного режима установлен в значение Истина: внешняя обработка (отчет) будет подключена, но работать будет под управлением профиля безопасности с указанным именем;
● Имя профиля указано, и для этого профиля параметр Профиль безопасности безопасного режима установлен в значение Ложь: внешняя обработка (отчет) будет подключена, но работать будет под управлением профиля безопасности по умолчанию;
● Профиль безопасности с указанным именем отсутствует на сервере «1С:Предприятия»: внешняя обработка (отчет) подключается в безопасном режиме.

Для программной работы внешняя обработка (отчет) может быть расположена:

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

ПРИМЕЧАНИЕ. При работе внешних обработок (отчетов) в толстом клиенте следует учитывать, что при работе в режиме управляемого приложения
возможно открытие только управляемых форм, при работе в обычном режиме – только обычных форм.
При использовании внешних обработок (отчетов) нужно иметь в виду следующие особенности:

● если подключена новая обработка (отчет) с таким же именем, как и подключенная обработка (отчет), то открытые формы от «старой» обработки
(отчета) перестают работать (генерируется ошибка);
● при подключении внешней обработки (отчета), если подключаемая обработка (отчет) двоично идентична уже подключенной и совпадает признак безопасного режима, реального переподключения не происходит, ошибки при этом не выдается. В противном случае ранее подключенная внешняя обработка (отчет) отключается и выполняется новое подключение внешней обработки (отчета);
● при выполнении метода Создать(), параметр метода БезопасныйРежим игнорируется, если ранее было выполнено подключение внешней обработки
(отчета) с помощью метода Подключить(). Если подключение ранее не выполнялось, то будет выполнено подключение внешней обработки (отчета) с
использованием параметра БезопасныйРежим из метода Создать();
● при получении формы для внешней обработки (отчета) будет найдена открытая форма независимо от того, открыта она для подключенной сейчас
обработки или для той, которая была подключена ранее (с тем же именем);
● при открытии обработки (отчета) с помощью команды главного меню Файл – Открыть, форма обработки (отчета) открывается методом ОткрытьФорму() с параметром Уникальность, равным значению Истина, чтобы можно было открыть новую форму обработки в случае ее изменения.
● если явно не указано, то все вышеописанные особенности в равной степени применяются как для внешней обработки (отчета) открытой интерактивно, так и программно.

Редактирование внешней обработки (отчета)

Редактирование внешней обработки (отчета) выполняется в конфигураторе. Чтобы открыть существующую внешнюю обработку (отчет), следует выбрать пункт Файл – Открыть. В выданном на экран стандартном диалоге выбрать тип файла, соответствующий формату сохранения внешней обработки (отчета) и указать имя открываемого файла.
При открытии внешней обработки (отчета) в конфигураторе автоматически открывается окно редактирования объекта. В отличие от других объектов конфигурации, отладка внешней обработки (отчета) может производиться без перезапуска системы «1С:Предприятие». Достаточно после сохранения обработки (отчета) конфигуратором заново вызвать ее на выполнение в режиме 1С:Предприятие (только для обработки (отчета), сохраненной в формате .epf/.erf).
В диалоге редактирования внешней обработки (отчета) имеется возможность сделать копию внешней обработки (отчета) не изменяя собственно редактируемый объект. Для этого необходимо выполнить команды Действия – Выгрузить в файлы. При этом кроме создания копии внешней обработки (отчета) имеет возможность выбрать формат выгрузки. Во время этой операции система по умолчанию предлагает формат выгрузки,
отличный от текущего формата. Т.е. если редактируется внешняя обработка (отчет) в формате .epf/.erf, то будет предложен формат XML и наоборот.
Имеется возможность заместить редактируемую внешнюю обработку (отчет) на другую внешнюю обработку (отчет), которая находится в файле (в любом из поддерживаемых форматов).
При выгрузке/загрузки внешней обработки (отчета) в/из файла предоставляется возможность изменять вид объекта, не меняя его у редактируемого объекта. Например, можно выгрузить редактируемую внешнюю обработку как внешний отчет или наоборот, при этом редактируемый объект останется того вида, каким он был до выполнения операции.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *