1С 8 3 внешний отчет

1. Постановка задачи

В этой статье рассмотрим процесс написания простейшей внешней обработки заполнения табличной части в 1С 8 для конфигураций, использующих обычное приложение. Для примера возьмем такую задачу: «В конфигурации 1С:Бухгалтерия 2.0 создать внешнюю обработку заполнения табличной части Товарыдокумента Реализация товаров и услуг, данные для заполнения взять из табличной части Товары документаПоступление товаров и услуг”. Таким образом нам необходимо заполнить товары реализации на основании товаров поступления, такая задача довольно часто встречается в реальной практике программиста 1С.

2. Создание внешней обработки

Зайдем в 1С 8 в режиме Конфигуратор. При помощи меню Файл -> Новый или пиктограммы Новый документсоздадим новую внешнюю обработку.

В поле Имя укажем: «ПростейшееЗаполнениеТабличнойЧасти” и сохраним внешнюю обработку на жесткий диск используя меню Файл -> Сохранить или пиктограмму Сохранить или сочетание клавиш Ctrl + S.

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

Для выбора документа поступления нам понадобится отдельная форма. Выделив ветку Формы и используя ту же кнопку — Добавить создадим форму внешней обработки. Откроется окно конструктора формы , на первой странице конструктора никаких изменений делать не нужно, поэтому просто нажмем кнопку Далее.

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

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

3. Программирование

Приступим к программированию обработки заполнения табличной части. Перейдем в Модуль объектавнешней обработки(на нижней панели обработки кнопка Действия -> Открыть модуль объекта).

В нем нам необходимо создать экспортную процедуру Инициализировать.

Процедура Инициализировать(Объект, ИмяТабличнойЧасти = Неопределено, ТабличноеПолеОбъекта = Неопределено) Экспорт КонецПроцедуры

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

Теперь приступим к написанию программного кода. В первую очередь создадим переменную для табличной части документа Реализация товаров и услуг, которую мы будем заполнять.

ТабличнаяЧасть = Объект;

При выполнении процедуры в параметре Объект будет содержаться объект документа, который мы заполняем, а в параметре ИмяТабличнойЧасти строка с именем табличной части, которую мы заполняем. Таким образом эта строчка кода получает табличную часть заполняемого документа по ее имени.

Нам необходимо что бы пользователь выбрал документ Поступление товаров и услуг, поэтому напишем код открытия формы выбора документа. Для начала получим эту форму в переменную, используя метод внешней обработки ПолучитьФорму(<Форма>, <Владелец>, <КлючУникальности>). Нам достаточно заполнить только первый параметр этого метода, передав туда строку с именем нашей формы.

ФормаВыбораПоступления = ПолучитьФорму(«Форма»);

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

ФормаВыбораПоступления.ОткрытьМодально();

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

Если НЕ ЗначениеЗаполнено(ДокументПоступления) Тогда Сообщить(«Не выбран документ поступления»); Возврат; КонецЕсли;

Для проверки заполненности реквизита здесь используется функция глобального контекстаЗначениеЗаполнено(<Значение>), она проверяет отличатся ли значение переданное в параметре от значения по умолчанию того же типа. Процедура Сообщить выводит указанный текст в окно сообщений 1С 8. Ключевое слово Возврат прерывает выполнение процедуры.

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

Запрос = Новый Запрос;

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

Запрос.УстановитьПараметр(«ДокументПоступления»,ДокументПоступления);

Напишем текст запроса, будем делать это при помощи Конструктора запроса. Писать текст запроса вручную не рекомендуется, это не эффективно и отнимает кучу времени. Для начала напишем строку:

Запрос.Текст = «»;

Поставим курсор между символами кавычек, нажмем правую кнопку мыши и выберем пунк Конструктор запроса…. После этого появится предложение создать новый запрос, нажмем кнопку «ОК”. Откроется окно конструктора, в левой его части расположены все доступные таблицы базы данных, нам необходим документ ПоступлениеТоваровУслуг. Найдем его и раскроем при помощи символа «+”, выберем табличную часть Товары и перетащим ее во вторую часть экрана конструктора, которая называется Таблицы(Также переместить нужную таблицу можно при помощи кнопки «>”).

Теперь раскроем по «+” выбранную нами таблицу(ПоступлениеТоваровУслугТовары) и перетащим необходимые для нашего заполнения табчасти поля в третью часть экрана конструктора, которая так и называется — Поля. Все доступные поля выбирать не будем, ограничимся таким набором: Номенклатура, Количество, Цена, Сумма, СтавкаНДС, СуммаНДС.

Так как нам нужны данные только одного документа поступления(который мы выбрали перед началом заполнения), то в на закладке «Условия” наложим условие на ссылку документа при помощи переданного нами параметра.

Создание текста запроса в конструкторе на этом завершено, нажмем кнопку «ОК”. В итоге у нас получился следующий текст запроса:

Запрос.Текст = «ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.Количество, | ПоступлениеТоваровУслугТовары.СтавкаНДС, | ПоступлениеТоваровУслугТовары.Сумма, | ПоступлениеТоваровУслугТовары.СуммаНДС, | ПоступлениеТоваровУслугТовары.Цена |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &ДокументПоступления»;

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

Результат = Запрос.Выполнить().Выгрузить();

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

ТабличнаяЧасть.Очистить();

При помощи цикла Для каждого обойдем таблицу значений с результатами запроса.

Для Каждого ЭлементРезультата из Результат Цикл КонецЦикла;

В этом цикле создадим и заполним строки табличной части документа Реализация товаров и услуг. Создать новую строку мы можем при помощи переменной ТабличнаяЧасть, через которую можно совершать с ней любые действия.

НоваяСтрокаТЧ = ТабличнаяЧасть.Добавить();

Заполним созданную строку таб. части данными из строки результата запроса используя процедуруГлобального контекста — ЗаполнитьЗначенияСвойств(<Приемник>, <Источник>).

ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ,ЭлементРезультата);

Но заполненных нами данных не достаточно, для того что бы документ провелся, необходимо заполнить еще счета учета номенклатуры. Для этого воспользуемся экспортной

процедурой ЗаполнитьСчетаУчетаВСтрокеТабЧасти из модуля объекта документа Реализация товаров и услуг. Вызовем ее при помощи параметра Объект(следует заметить,

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

Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(НоваяСтрокаТЧ, ИмяТабличнойЧасти, Истина);

На этом программирование заполнения табличной части для 1С 8 завершено. Обработку можно использовать. Полный текст процедуры Инициализировать, выглядит так:

Процедура Инициализировать(Объект, ИмяТабличнойЧасти = Неопределено, ТабличноеПолеОбъекта = Неопределено) Экспорт ТабличнаяЧасть = Объект; ФормаВыбораПоступления = ПолучитьФорму(«Форма»); ФормаВыбораПоступления.ОткрытьМодально(); Если НЕ ЗначениеЗаполнено(ДокументПоступления) Тогда Сообщить(«Не выбран документ поступления»); Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.УстановитьПараметр(«ДокументПоступления»,ДокументПоступления); Запрос.Текст = «ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.Количество, | ПоступлениеТоваровУслугТовары.СтавкаНДС, | ПоступлениеТоваровУслугТовары.Сумма, | ПоступлениеТоваровУслугТовары.СуммаНДС, | ПоступлениеТоваровУслугТовары.Цена |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка = &ДокументПоступления»; Результат = Запрос.Выполнить().Выгрузить(); ТабличнаяЧасть.Очистить(); Для Каждого ЭлементРезультата из Результат Цикл НоваяСтрокаТЧ = ТабличнаяЧасть.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧ,ЭлементРезультата); Объект.ЗаполнитьСчетаУчетаВСтрокеТабЧасти(НоваяСтрокаТЧ, ИмяТабличнойЧасти, Истина); КонецЦикла; КонецПроцедуры

В следующей части стать будет рассказано, как отладить обработку заполнения табличной части и как подключить ее к документу.

4. Отладка

Довольно часто требуется отлаживать код, который вы пишите. Для того что бы отладить обработку заполнения табличной части в 1С 8 создадим у нее реквизит СсылкаНаОбъект типаДокументСсылка.РеализацияТоваровУслуг

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

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

Процедура КнопкаВыполнитьНажатие(Кнопка) Инициализировать(СсылкаНаОбъект.ПолучитьОбъект(), «Товары»); КонецПроцедуры

Теперь необходимо сделать созданную форму основной формой обработки. Для этого выберем ее в поле «Форма обработки”.

Теперь вы можете ставить точку останова в нужном месте процедуры Инициализировать или процедурыКнопкаВыполнитьНажатие формы отладки, и запускать обработку заполнения табличной части в режиме отладки 1С:Предприятия.

5. Подключение к документу

После того как обработка заполнения написана и отлажена следует подключить ее к документу из которого она будет выполняться. Для этого зайдем в 1С 8 в режиме Предприятие, перейдем в меню Сервис -> Дополнительные отчеты и обработки -> Дополнительные внешние обработки табличных частей и добавим новый элемент справочника. При помощи кнопки Заменить файл внешней обработки добавим файл созданной нами обработки заполнения табличной части.

Заполним принадлежность обработки, для этого воспользовавшись кнопкой Подбор выберем документРеализация товаров и услуг

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

Нажимаем кнопку ОК и на этом все, обработка заполнения будет доступна в меню Заполнить табличной части Товары документа Реализация товаров и услуг. Скачать обработку использованную для этого примера вы можете внизу статьи.

1. Как запустить вручную обработку

2. Обработка из файла

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

Считаю, что всю информацию по данной теме нужно собрать в одном месте.

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

Чтобы не возникло путаницы, далее будем называть Главной обработкой ту, которую планируем запускать с помощью регламентной, а Фоновой обработкой ту, которая будет выполнять функцию регламентного задания для запуска Главной обработки.

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

Затем создаем Фоновую внешнюю обработку, которая будет работать как регламентное задание. Для этого в Сведениях о внешней обработке указываем следующий код:

Функция СведенияОВнешнейОбработке() Экспорт

Параметры Регистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(«2.4.5.71»);

Возврат ПараметрыРегистрации;

КонецФункции

Важно чтобы в функции СведенияОВнешнейОбработке не было команды НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Эта команда не позволит использовать внешнюю обработку 1С как регламентное задание.

Далее создаем в модуле объекта Фоновой обработки процедуру ВыполнитьКоманду(Идентификатор, ОбъектыНазначения) Экспорт

В таком варианте обработки не нужно добавлять никаких форм.

Далее есть два варианта вызова Главной обработки.

1. Как запустить вручную обработку

Если вы планируете прикрепить свою Главную обработку к конфигурации, тогда в Фоновой обработке в функции ВыполнитьКоманду можно использовать указанный ниже вызов Главной обработки:

ВнешняяОбработка = Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию(«Выгрузка и загрузка данных XML»);
ДвоичныеДанные = ВнешняяОбработка.ХранилищеОбработки.Получить();
ИмяВременногоФайла = КаталогВременныхФайлов()+»ОбработкаХМЛ.epf»;
ДвоичныеДанные.Записать(ИмяВременногоФайла);
СтруктураЗащита=новый ОписаниеЗащитыОтОпасныхДействий;
СтруктураЗащита.ПредупреждатьОбОпасныхДействиях=ложь;
//Создаем структуру защиты от опасных действий
Обработка = ВнешниеОбработки.Создать(ИмяВременногоФайла,Ложь,СтруктураЗащита);
Обработка.Инициализация();

Это ответ на вопрос как запустить вручную.

2. Обработка из файла

Если вы планируете запускать внешнюю обработку из файла, тогда можно использовать такой код:

Очень важно при запуске из файла указать и задать полный путь к файлу. Также важно чтобы папка, в которой будет храниться Главная обработка, была доступна по сети. Все дело в том, что фоновое задание будет выполняться на сервере. Если настроена клиент-серверная система работы, у сервера может не быть доступа к тем папкам, к которым есть доступ у клиента и у пользователя с его локальной машины. Также и при указании локальных папок, к примеру, «С:\имяГлавнойОбработки.epf» — можно получить ошибку, потому что у сервера может быть свой диск С, на котором он и будет искать папку при запуске Фоновой обработки. Поэтому лучше конкретизировать путь с указанием ip-адреса.

Также очень важно при создании обработки ставить параметр ПредупреждатьОбОпасныхДействиях в значение ложь. Далее скажу об этом подробнее.

После нужно подключить Фоновую обработку и настроить ее выполнение в фоне

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

И здесь, в списке фоновых заданий, иногда можно получить ошибку такого вида:
Предупреждение безопасности
Открывается «Выгрузка и загрузка данных XML» из файла «C:\Users\tempout\AppData\Local\Temp\ОбработкаХМЛ.epf».

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

Мы поставили параметр ПредупреждатьОбОпасныхДействиях в значение ложь для Главной обработки программно. Для Фоновой обработки нужно сделать следующее:

1) Указать в регламентном задании пользователя с полными правами можно и с правом на открытие внешних обработок, если это предусмотрено конфигурацией.

2) Снять у выбранного пользователя галку «Защита от опасных действий» в конфигураторе.

Готово! Вы потрясающие!

Специалист компании ООО «Кодерлайн»

Евгения Скунцева.

Возможность добавления отчетов и обработок в типовую конфигурацию 1С без изменения ее структуры реализована через встроенный механизм БСП. Каждая типовая база от 1С, написанная на управляемых формах, содержит в себе данный механизм. Это позволяет добавлять собственный функционал, не переживая за сохранение целостности структуры ИБ, что будет особенно ценно, если используется сложная конфигурация. Добавление дополнительных отчетов и обработок пригодиться не только начинающим программистам, но из-за возможности значительно повысить скорость также заинтересует и опытных разработчиков.

Пример разработки дополнительного отчета

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

Чтобы создать эту функцию, необходимо открыть режим конфигуратора и через основное меню «Файл» — «Новый…», создать внешний отчет. Открыть модуль объекта и добавить функцию «СведенияОВнешнейОбработке» с отметкой «Экспорт». В каждом дополнительном внешнем отчете в 1С 8.3 эта экспортная функция должна возвращать структуру с определенными ключами и значениями:

Рис.1 Внешний отчет

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(«2.1.3.1»); ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет(); ПараметрыРегистрации.Версия = «1.0»; ПараметрыРегистрации.БезопасныйРежим = Ложь; НоваяКоманда = ПараметрыРегистрации.Команды.Добавить(); НоваяКоманда.Представление = НСтр(«ru = ‘Лицевая Карточка Рабочего1′»); НоваяКоманда.Идентификатор = «ЛицеваяКарточкаРабочего»; НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы(); НоваяКоманда.ПоказыватьОповещение = Истина; Возврат ПараметрыРегистрации;

  • Вид – определение типа доработки. Может принимать значения «ЗаполнениеОбъекта», «ДополнительнаяОбработка», «СозданиеСвязанныхОбъектов», «ДополнительныйОтчет» и многие другие;
  • Назначение – задается в случае, если мы добавляем функционал к конкретному документу или справочнику. Указывается 1 или перечень объектов конфигурации, к которым предназначен новый функционал. В случае обычного отчета не прописывают;

МасНазначений = Новый Массив; МасНазначений.Добавить(«Справочник.ДоговорыКонтрагентов»); МасНазначений.Добавить(«Документ.ПриобретениеТоваровУслуг»); МасНазначений.Добавить(«Документ.ПриобретениеУслугПрочихАктивов»); МасНазначений.Добавить(«Документ.ПриобретениеУслугПоЛизингу»); МасНазначений.Добавить(«Документ.ЗаказПоставщику»); МасНазначений.Добавить(«Документ.РеализацияУслугПрочихАктивов»); МасНазначений.Добавить(«Документ.РеализацияТоваровУслуг»); МасНазначений.Добавить(«Документ.АктВыполненныхРабот»); ПараметрыРегистрации.Назначение = МасНазначений;

  • Команды – таблица, содержащая все необходимые команды с определенным набором характеристик. Отвечает за кнопку, запускающую обработку или отчет;
  • БезопасныйРежим – принимает значения «Истина» или «Ложь», отвечает за безопасный режим запуска. Это специальный режим, когда для пользователя ограничиваются возможности. Если его включить, то в процессе работы отчета будут недоступны:
    • Привилегированный режим;
    • Библиотеки Dll;
    • COM-соединение;
    • Доступ к файлам и интернету.
  • Версия – данные строкового типа для поддержания версионирования дополнительного отчета или обработки. Вспомогательный параметр;
  • ВерсияБСП – иногда указывают для контроля совместимости механизма библиотеки стандартных подсистем. Зачастую не указывается;
  • Информация – комментарий, дающий определение дополнительному отчету или обработке. Вспомогательный параметр.

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

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

Рис.2 Основная схема компоновки данныхРис.3 Основная схема компоновки данных

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

Рис.4 НастройкиРис.5 Настройки

Именно так устанавливается то, откуда брать данные, по каким критериям и каким образом их выводить. Остается лишь заполнить реквизит «Имя» нового внешнего отчета и сохранить файл на компьютере или на сетевом ресурсе. Обычно компании выделяют специальное место и называют его «Хранилище дополнительных отчетов и обработок» и сохраняют туда все подобные файлы.

Рис.6 Хранилище дополнительных отчетов и обработок Бесплатная
консультация
эксперта Наталья Севорина Консультант-аналитик 1С Спасибо за Ваше обращение! Специалист 1С свяжется с вами в течение 15 минут.

Подключение дополнительного внешнего отчета к конфигурации

Чтобы подключить созданный дополнительный отчет в 1С, придется включить его в состав дополнительных отчетов и обработок. В большинстве типовых конфигураций этот перечень находится в разделе «НСИ и администрирование» — «Печатные формы, отчеты и обработки». Здесь расположена опция «Дополнительные обработки и отчеты». Обычно она включена, но может быть и отключенной, если не пользовались этим инструментом. При включении активизируется ссылка справа на нужный нам список внешних доработок системного функционала в виде обработок и отчетов.

Рис.7 Подключение дополнительного внешнего отчета к конфигурации

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

Рис.8 При выборе 1С считывает информацию из экспортной функции «СведенияОВнешнейОбработки» и отражает информацию на форме

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

Рис.9 Остается лишь записать новый дополнительный отчет, чтобы он добавиться в перечень, а пользователи смогут найти вариант отчета в выбранных разделах

В итоге мы видим, что добавить дополнительный отчет в 1С достаточно просто и этот процесс не требует углубленного знания базы. Именно безопасность структуры конфигурации и стала ключевой особенностью, благодаря которой разработчики полюбили дополнительные внешние отчеты и обработки в 1С 8.3. Для других видов доработки в процессе подключения к системе 1С может потребоваться указать другие настройки. К примеру, для типа «СозданиеСвязанныхОбъектов» или «ЗаполнениеОбъекта» нужно указать, где показывать доработку – в списке документов или только внутри конкретного объекта.

Чтобы внести изменения в добавленную обработку или отчет, не потребуется завершать работу всех пользователей. Достаточно просто выгрузить внешнюю обработку на компьютер, внести изменения в нее через конфигуратор и загрузить обратно. Для этого в перечне дополнительных обработок существуют специальные кнопки «Выгрузить в файл…» и «Загрузить из файла…». Чтобы пользователи увидели изменения, достаточно закрыть и снова открыть объект – отчет, документ или справочник.

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

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

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

В данной статье рассмотрим использования внешних отчетов и обработок в управляемом интерфейсе на примере типового прикладного решения «1С:Управление торговлей 11.3».

В управляемом интерфейсе внешние отчеты и обработки подключаются через подсистему «НСИ и администрирование» — «Печатные формы, отчеты и обработки». Здесь необходимо установить флажок «Дополнительные отчеты и обработки», тогда станет доступна гиперссылка «Дополнительные отчеты и обработки».

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

При нажатии на гиперссылку «Дополнительные отчеты и обработки» открывается список внешних отчетов и обработок.

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

Система позволяет использовать внешние отчеты и обработки девяти видов.

Печатная форма

Печатная форма – формирует печатные формы справочников и документов, не предусмотренные в типовом прикладном решении.

Карточка печатной формы содержит следующие поля:

  • Наименование – имя элемента справочника «Дополнительные отчеты и обработки».
  • Публикация – вариант публикации печатной формы. Используется – обработка доступна для использования. Режим отладки – обработка доступна не всем пользователям, используется в случае, когда дополнительный отчет или обработка нуждается в проверке. Отключена – обработка недоступна для использования.
  • Ответственный – пользователь, загрузивший внешний отчет или обработку.
  • Комментарий – дополнительная информация по отчету или обработке.

Данные поля содержат все внешние отчеты и обработки.

Также карточка печатной формы содержит три вкладки:

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

Над таблицей команд располагается гиперссылка «Размещение». При нажатии на нее открывается форма выбора принадлежности печатной формы объектам базы (справочникам или документам).

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

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

После подключения внешней печатной формы, она будет доступна в подменю «Печать» соответствующего объекта (в форме списка и в форме объекта). В нашем случае мы добавили три новых команды печати для документа «Заказ клиента».

Заполнение объекта

Заполнение объекта – позволяют заполнять объекты по заданным алгоритмам.

Режим работы – отражает возможность выполнения внешним отчетом или обработкой опасных действий. Безопасный – опасные действия запрещены. Не безопасный – разрешены.

Обработка заполнения объекта содержит две вкладки:

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

После подключения внешней обработки заполнения объекта, она будет доступна в подменю «Заполнение» соответствующего объекта (в форме списка и в форме объекта). В нашем случае мы добавили пять новых команд заполнения для справочника «Контрагенты».

Создание связанных объектов

Создание связанных объектов – реализует создание объектов на основании других.

Карточка внешней обработки создания связанных объектов аналогична карточке обработки заполнения объектов. Все реквизиты и вкладки полностью совпадают.

После подключения внешней обработки создания связанных объектов, она будет доступна в подменю «Создать на основании»-«Создание связанных объектов…» соответствующего объекта (в форме списка и в форме объекта). В нашем случае мы добавили три новые команды создания связанных объектов для справочника «Контрагенты».

Шаблон сообщения

Шаблон сообщения – описывает алгоритм заполнения шаблона электронного письма или SMS.

Карточка внешней обработки шаблона сообщения не содержит вкладок, только общие реквизиты.

После подключения внешней обработки шаблона сообщения, она будет доступна при создании шаблонов электронных писем и СМС.

Отчет

Отчет – выводит отчет, прикрепляемый к объектам конфигурации (справочникам, документам).

Карточка внешней обработки создания связанных объектов аналогична карточкам обработок заполнения объектов и создания связанных объектов. Все реквизиты и вкладки полностью совпадают.

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

Проверка условия предоставления скидки (наценки)

Проверка условия предоставления скидки (наценки) – позволяет добавить пользовательские условия предоставления скидок/наценок.

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

После подключения внешней обработки проверки условия предоставления скидки (наценки), она будет доступна при создании условий предоставления скидки (наценки).

При нажатии кнопки «Настроить» откроется форма настроек, если она предусмотрена разработчиком.

Расчет скидки (наценки)

Расчет скидки (наценки) – добавляет пользовательские алгоритмы расчета скидок/наценок.

Карточка внешней обработки расчет скидки (наценки) не содержит вкладок, только общие реквизиты.

После подключения внешней обработки расчет скидки (наценки), она будет доступна при создании скидки (наценки) в поле «Тип скидки».

При нажатии кнопки «Настроить» откроется форма настроек, если она предусмотрена разработчиком.

Дополнительная обработка

Дополнительная обработка – осуществляет обработку данных по произвольному алгоритму.

Карточка внешней дополнительной обработки имеет некоторые особенности.

  • Вкладка «Команды» имеет кнопку «Выполнить» для выполнения выбранной команды.
  • При нажатии на гиперссылку «Размещение выбирается не объект, а раздел командного интерфейса.
  • Таблица команд имеет колонку «Быстрый доступ», в которой настраиваются пользователи, которые имеют быстрый доступ к выбранной команде.
  • Таблица команд имеет колонку «Выполнять команду по расписанию», в которой указывается, что данная команда выполняется по расписанию.
  • Таблица команд имеет колонку «Расписание», в которой настраивается расписание выполнения команды.

Вкладки «Разрешения» и «Дополнительная информация» типовые и не отличаются от аналогичных в других внешних обработках.

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

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

Дополнительный отчет

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

Карточка внешнего дополнительного отчета аналогична карточке внешней дополнительной обработки. Единственное различие: наличие вкладки «Варианты отчета». Данная вкладка содержит таблицу вариантов внешнего отчета.

Над таблицей находятся кнопки действий, которые можно выполнить над вариантами отчета:

  • «Открыть…» — открывается форма отчета с выбранным вариантом.
  • «Изменить…» — открывается форма настроек варианта отчета. В данной форме можно изменить наименование и описание варианта отчета, выбрать автора, установить доступность варианта (только автору или всем пользователям) и установить размещение в панелях отчетов разделов командного интерфейса.
  • «Разместить в разделах…» — открывается форма быстрого размещения варианта отчета в разделах командного интерфейса.

Вкладки «Команды» и «Дополнительная информация» аналогичны вкладкам элемента внешних дополнительных обработок.

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

Если было выбрано размещение варианта отчета в одном из разделов, отчет будет доступен в этом разделе по ссылке «Отчеты по…». Например, мы разместили наш отчет в разделе «Продажи», он появился по ссылке «Отчеты по продажам» в списке вместе со стандартными отчетами.

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

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

Смотри также:

  • Подключение внешних отчетов и обработок в 1С. Часть 1 (обычное приложение)

Заполняет строки таблицы значений указанным значением

Синтаксис

Метод ЗаполнитьЗначения() имеет следующий синтаксис:

ЗаполнитьЗначения(Значение, )

А также альтернативный англоязычный синтаксис:

FillValues(Value, )

Параметры

Описание параметров метода ЗаполнитьЗначения():

Имя параметра Тип Описание
Значение Произвольный Значение, которым необходимо заполнить строки таблицы.
Колонки (необязательный) Строка Перечисление имен колонок, разделенных запятыми, по которым необходимо произвести заполнение строк.
Жирным шрифтом выделены обязательные параметры

Описание

Метод ЗаполнитьЗначения() заполняет все строки таблицы значений указанным значением. Если указан параметр Колонки, заполнение будет производиться в строках только по указанным колонкам.

Доступность

Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).

Пример использования

Пример кода с использованием метода ЗаполнитьЗначения():

//создаем таблицу остатков по городам тз = Новый ТаблицаЗначений; тз.Колонки.Добавить(«Код»); тз.Колонки.Добавить(«Наименование»); тз.Колонки.Добавить(«Москва» , Новый ОписаниеТипов(«Булево»)); тз.Колонки.Добавить(«Новосибирск», Новый ОписаниеТипов(«Булево»)); //заполняем таблицу значений НоваяСтрока = тз.Добавить(); НоваяСтрока.Код = «001»; НоваяСтрока.Наименование = «Стул деревянный»; НоваяСтрока = тз.Вставить(0); НоваяСтрока.Код = «002»; НоваяСтрока.Наименование = «Стол деревянный»; //теперь заполняем разом наличие во всех городах тз.ЗаполнитьЗначения(Истина, «Москва,Новосибирск»);

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

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