Внешний отчет 1с. Добавление внешней обработки в базу. Дополнительные внешние печатные формы

Рассмотрим создание внешнего отчета в 1с 8 без использования системы компоновки данных. Для создания внешнего отчета будем использовать конфигурацию Бухгалтерия 2.0, исходные данные: “Написать отчет по 62 счету бухгалтерского учета в который будут выводится обороты за указанный период в разрезе Контрагентов и Договоров контрагентов .

1. Создание отчета

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

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

2. Создание макета внешнего отчета

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

В нашем макете будет 4 области:

  • Шапка — в эту область мы будем выводить наименование отчета, период за который он сформирован и шапку таблицы;
  • ДанныеКонтрагент — в эту область мы будем выводит в таблицу данные по контрагенту;
  • ДанныеДоговорКонтрагента — в эту область мы будем выводит в таблицу данные по договору контрагента;
  • Подвал — в эту область мы будем выводить итоговые значения по всему отчету для полей Приход и Расход.

Приступим к созданию областей макета. Для того что бы создать область в макете выделите нужное количество строк и нажмите Меню Таблица -> Имена -> Назначить имя (Либо Ctrl + Shift + N ). В область Шапка напишем наименование отчета: Обороты 62 счета , нарисуем при помощи инструмента Границы шапку отчета, а так же зададим параметры НачалоПериода и КонецПериода . При помощи параметров в отчет можно выводить нужные данные, мы будем заниматься эти на следующем этапе разработки, а именно при написании программного кода отчета. Что бы создать параметр в макете выберите нужную ячейку, напишите в ней наименование параметра(без пробелов), щелкните по ней правой кнопкой мыши, в открывшемся меню выберите пункт Свойства . В свойствах ячейки на закладке Макет выберите заполнение Параметр .

После этого, в ячейке имя параметра будет заключено в угловые скобки(”<>“). В итоге область Шапка должна выглядеть так:

В области ДанныеКонтрагент создадим параметры для вывода наименования контрагента, а так же для прихода и расхода по 62 счету, при помощи инструмента Границы оформим область в виде строки таблицы.

В области ДанныеДоговорКонтрагента создадим параметры для вывода наименования договора, а так же для прихода и расхода по 62 счету, при помощи инструмента Границы оформим область в виде строки таблицы. Сделаем небольшой отступ перед параметром ДоговорКонтрагента (это можно сделать при помощи разбиения и объединения ячеек. Правой кнопкой мыши по ячейке -> Объединить или Разбить ячейку ), он нужен для того что бы в отчете было видно, что строка по договору находится ниже по иерархии чем строка по контрагенту.

В области Подвал создадим параметры для итогов по приходу и расходу.

В итоге мы должны получить такой макет:

3. Создание формы отчета

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

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

В итоге у нас получится вот такая форма:

Но в таком виде она нас не устраивает, внесем в нее некоторые изменения:

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

В итоге наша форма будет иметь такой вид:

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

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

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

Для вызова формы выбора периода воспользуемся типовой процедурой Бухгалтерии 2.0 из общего модуля РаботаСДиалогами — ОбработчикНастройкаПериодаНажатие , в нее в качестве параметров нужно передать реквизиты отчета НачалоПериода и КонецПериода .

Процедура Кнопка1Нажатие(Элемент) РаботаСДиалогами.ОбработчикНастройкаПериодаНажатие(НачалоПериода,КонецПериода); КонецПроцедуры

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

ТабДок = ЭлементыФормы.ТабДок;

Получим макет внешнего отчета воспользовавшись функцией ПолучитьМакет(<ИмяМакета>) , в параметр ему передадим имя макета, и если такой макет существует, то функция его найдет.

Макет = ПолучитьМакет("Макет" );

После того как макет получен, создадим переменные для каждой из его областей, воспользуемся для этого методом макета ПолучитьОбласть(<ИмяОбласти>) .

ОбластьШапка = Макет.ПолучитьОбласть("Шапка" ); ОбластьДанныеКонтрагент = Макет.ПолучитьОбласть("ДанныеКонтрагент" ); ОбластьДанныеДоговор = Макет.ПолучитьОбласть("ДанныеДоговор" ); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал" );

Очистим поле табличного документа. Это нужно для того что бы при каждом новом формировании отчета старые данные удалялись.

ТабДок.Очистить();

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

ОбластьШапка.Параметры.НачалоПериода = НачалоПериода; ОбластьШапка.Параметры.КонецПериода = КонецПериода;

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

ТабДок.Вывести(ОбластьШапка);

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

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

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

Запрос.УстановитьПараметр("Счет62" ,ПланыСчетов.Хозрасчетный.НайтиПоКоду("62" ));

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

Запрос.УстановитьПараметр("НачалоПериода" ,НачалоПериода); Запрос.УстановитьПараметр("КонецПериода" ,КонецПериода);

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

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

После этого поставим курсор между кавычками, нажмем правую кнопку мыши и выберем пункт Конструктор запроса. Откроется окно конструктора запроса.

Теперь необходимо выбрать нужную нам таблицу базы данных 1С 8. Нам необходима виртуальная таблица Обороты регистра бухгалтерии Хозрасчетный . Найдем ее в левой части окна конструктора

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

Заполним параметры, периода которые мы передали в запрос. Что бы в тексте запроса использовать параметр следует перед его именем писать символ амперсанда(&)

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

Счет В ИЕРАРХИИ (&Счет62)

Также можно воспользоваться конструктором составления условий нажав на кнопку с тремя точками.

Больше никаких условий на виртуальную таблицу налагать не требуется, поэтому нажмем кнопку ОК в окне параметров виртуальной таблицы. Далее необходимо выбрать нужные нам поля из таблицы Хозрасчетной.Обороты (а именно: Контрагент, Договор контрагента, Приход и Расход ). Что бы посмотреть список полей доступных в выбранной нами таблице нажмет символ ”+“ возле ее названия. После этого перетащим нужные поля в самую правую область конструктора запросов, которая так и называется: Поля. Если открыть план счетов бухгалтерского учета, то мы увидим, что для счета 62 аналитика по Контрагенту — это Субконто1 , а по ДоговоруКонтрагента — Субконто2 .

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

Заполним псевдонимы выбранных нами полей, для этого перейдем на закладку Объединения/Псевдонимы и зададим нужные имена полей.

Так как в нашем отчете данные будут выводиться иерархично(Контрагент на первом уровне, а все его договоры на втором), то настроим вывод данных в иерархии при помощи Итогов. Перейдем в конструкторе на закладку Итоги . В группировочные поля перетащим последовательно Контрагент и ДоговорКонтрагента , а в итоговые Приход и Расход .

На этом работа в конструкторе запроса завершена, нажимаем кнопку ОК и видим, что текст нашего запроса появился в программном коде.

Запрос.Текст = "ВЫБРАТЬ | ХозрасчетныйОбороты.Субконто1 КАК Контрагент, | ХозрасчетныйОбороты.Субконто2 КАК ДоговорКонтрагента, | ХозрасчетныйОбороты.СуммаОборотДт КАК Приход, | ХозрасчетныйОбороты.СуммаОборотКт КАК Расход |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Счет В ИЕРАРХИИ (&Счет62),) КАК ХозрасчетныйОбороты |ИТОГИ | СУММА(Приход), | СУММА(Расход) |ПО | Контрагент, | ДоговорКонтрагента" ;

После того как мы закончили написание запроса, приступим к заполнению областей ДанныеКонтрагент , ДанныеДоговорКонтрагент и Подвал . Все эти области мы заполним данными полученными при выполнении запроса. Так как наш запрос содержит группировки(Контрагент и ДоговорКонтрагента ) выберем из него данные следующим образом:

ВыборкаКонтрагент = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Таким образом мы получим записи с итогами по всем контрагентам.

Перед тем как обходить данные выборки при помощи цикла инициализируем переменные предназначенные для подсчета общих итогов по отчету:

ИтогоПриход = 0; ИтогоРасход = 0;

Для того чтобы данные отчета выводились с иерархией(и разворотами по ”+“) зададим начало автогруппировки строк табличного документа:

ТабДок.НачатьАвтогруппировкуСтрок();

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

Пока ВыборкаКонтрагент.Следующий() Цикл КонецЦикла ;

В начале цикла обнулим параметры Приход и Расход области ДанныеКонтрагент . Для чего это нужно? Представим ситуацию, что по контрагенту Дядя Вася , приход 10, а расход 5, а для за ним следующего контрагента Дядя Петя нет ни прихода ни расхода, в таком случае если мы не обнулим параметры Приход и Расход , то по в строке по контрагенту Дядя Петя попадет приход 5 и расход 10.

ОбластьДанныеКонтрагент.Параметры.Приход = 0; ОбластьДанныеКонтрагент.Параметры.Расход = 0;

После этого заполняем область ДанныеКонтрагент данными элемента выборки

ЗаполнитьЗначенияСвойств(ОбластьДанныеКонтрагент.Параметры,ВыборкаКонтрагент);

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

ТабДок.Вывести(ОбластьДанныеКонтрагент,1);

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

ВыборкаДоговорКонтрагента = ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Обход будем осуществлять при помощи цикла Пока .

Пока ВыборкаДоговорКонтрагента.Следующий() Цикл КонецЦикла ;

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

ОбластьДанныеДоговор.Параметры.Приход = 0; ОбластьДанныеДоговор.Параметры.Расход = 0; ЗаполнитьЗначенияСвойств(ОбластьДанныеДоговор.Параметры,ВыборкаДоговорКонтрагента); ТабДок.Вывести(ОбластьДанныеДоговор,2);

Также в этом цикле к переменным расчета итоговых значений по приходу и расходу прибавим текущие значения.

ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента.Приход; ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента.Расход;

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

ТабДок.ЗакончитьАвтогруппировкуСтрок();

Полностью циклы отвечающие за вывод данных в области ДанныеКонтрагент и ДанныеДоговорКонтрагент выглядят так:

ТабДок.НачатьАвтогруппировкуСтрок(); Пока ВыборкаКонтрагент.Следующий() Цикл ОбластьДанныеКонтрагент.Параметры.Приход = 0 ; ОбластьДанныеКонтрагент.Параметры.Расход = 0 ; ЗаполнитьЗначенияСвойств(ОбластьДанныеКонтрагент.Параметры,ВыборкаКонтрагент); ТабДок.Вывести(ОбластьДанныеКонтрагент,1 ); ВыборкаДоговорКонтрагента = ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДоговорКонтрагента.Следующий() Цикл ОбластьДанныеДоговор.Параметры.Приход = 0 ; ОбластьДанныеДоговор.Параметры.Расход = 0 ; ЗаполнитьЗначенияСвойств(ОбластьДанныеДоговор.Параметры,ВыборкаДоговорКонтрагента); ТабДок.Вывести(ОбластьДанныеДоговор,2 ); ИтогоПриход = ИтогоПриход + ВыборкаДоговорКонтрагента.Приход; ИтогоРасход = ИтогоРасход + ВыборкаДоговорКонтрагента.Расход; КонецЦикла ; КонецЦикла ; ТабДок.ЗакончитьАвтогруппировкуСтрок();

Осталось вывести итоговые данные в область Подвал и вывести саму область в Табличный документ .

ОбластьПодвал.Параметры.ИтогоПриход = ИтогоПриход; ОбластьПодвал.Параметры.ИтогоРасход = ИтогоРасход; ТабДок.Вывести(ОбластьПодвал);

На этом процесс написания внешнего отчета для 1С 8 без использования СКД завершен. Теперь его можно сформировать в режиме 1С:Предприятие 8 и добавить в справочник ВнешниеОбработки Файл отчета рассмотренного в статье вы можете скачать по .

Смотрите видео по созданию внешней печатной формы для управляемого приложения:

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

    Расширен вид обработок: заполнение объекта, создание связанных объектов. Теперь в документах можно добавлять свои кнопки по заполнению всего документа, а также свои кнопки по вводу на основании.

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

    Можно вводить на основании и заполнять объекты сразу на основании нескольких объектов, а не одного

    Можно задавать расписание выполнение серверных команд (на сервере).

    Можно задавать режим «Безопасный» или «Небезопасный», т.е. запускать обработку с учетом ограничением прав или игнорировать их (как под полными правами)

    Можно задать режим использования: Не использовать, отладка, использовать. «Не использовать» - не в работе, «Отладка» - видно только администраторам, «Использовать в работе».

    Можно включить использование в формах объекта и в форма списков

    Можно привязать сразу ко всем объектам обработку или отчет.

    Можно настроить быстрый доступ к определенным командам внешних обработок.

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

Итак, что можно подключить к стандартным конфигурациям?

С точки зрения платформы можно подключать:

  • внешние обработки (файлы с расширением “epf”) ;
  • внешние отчеты (файлы с раширением «erf»).

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

  • Дополнительная обработка
    • Просто дополнительная обработка. Есть возможность настроить
  • Дополнительный отчет
    • Просто дополнительный отчет
  • Заполнение объекта
    • Свои кнопки по заполнению объектов (документа), ранее были только кнопки по заполнению табличной части.
  • Печатная форма
    • Дополнительная печатная форма (добаляется кнопка «Дополнительные печатные формы»)
  • Отчет
    • Отчет, прикрепляемый к объектам (к справочникам и документам).
  • Создание связанных объектов
    • Свой ввод на основании (в пункт меню «Ввод на основании» добавляется кнопка «Создание связанных объектов…»)

*на примере редакции «Управление небольшой фирмой ред. 1.2»

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

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

Функция СведенияОВнешнейОбработке() Экспорт
РегистрационныеДанные = Новый Структура;
РегистрационныеДанные.Вставить("Наименование", "Пример использование внешних обработок 8.2.");
РегистрационныеДанные.Вставить("БезопасныйРежим", Истина);
РегистрационныеДанные.Вставить("Версия", "1.0");

//ДополнительнаяОбработка
//ДополнительныйОтчет
//ЗаполнениеОбъекта
//Отчет
//ПечатнаяФорма
//СозданиеСвязанныхОбъектов
РегистрационныеДанные.Вставить("Вид", "ДополнительнаяОбработка");

РегистрационныеДанные.Вставить("Информация", "Обработка сделано по новому стандарту подключения внешних обработок 8.2. Пример обработки ""Hello Word"" ");

///////////// команды /////////////////////////
тзКоманд = Новый ТаблицаЗначений;
тзКоманд.Колонки.Добавить("Идентификатор");
тзКоманд.Колонки.Добавить("Представление");
тзКоманд.Колонки.Добавить("Модификатор");
тзКоманд.Колонки.Добавить("ПоказыватьОповещение");
тзКоманд.Колонки.Добавить("Использование");


строкаКоманды.Идентификатор = "1";
строкаКоманды.Представление = "команда ""Hello Word"" (ОткрытиеФормы)";

строкаКоманды.Использование = "ОткрытиеФормы";

СтрокаКоманды = тзКоманд.Добавить();
строкаКоманды.Идентификатор = "2";
строкаКоманды.Представление = "команда ""Hello Word"" (ВызовКлиентскогоМетода)";
строкаКоманды.ПоказыватьОповещение = Истина;
строкаКоманды.Использование = "ВызовКлиентскогоМетода";

СтрокаКоманды = тзКоманд.Добавить();
строкаКоманды.Идентификатор = "3";
строкаКоманды.Представление = "команда ""Hello Word"" (ВызовСерверногоМетода)";
строкаКоманды.ПоказыватьОповещение = Истина;
строкаКоманды.Использование = "ВызовСерверногоМетода";

РегистрационныеДанные.Вставить("Команды", тзКоманд);

////////////// назначение (в каких объектах используется) /////////////////////////
//для печ.форм, заполнения, ввода свазанных объектов
//МассивНазначений = Новый Массив;
//МассивНазначений.Добавить("Документ.*"); // все документы назначаются
//МассивНазначений.Добавить("Документ.АвансовыйОтчет");
//МассивНазначений.Добавить("Документ.ЗаказПокупателя");
//РегистрационныеДанные.Вставить("Назначение", МассивНазначений);

Возврат РегистрационныеДанные;

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

Итак как видно функция заполняет структуру РегистрационныеДанные, которая имеет следующие элементы (параметры):

    Наименование – краткое наименование обработки

    Версия - информация о версии обработки

    Безопасный режим – отвечает за то, должна ли обработка выполняться учитывая права пользователя. Если поставить значение «Ложь», то обработка или отчет будут выполняться без учета ограничений прав (как под полными правами). Это возможность появилась именно в 8.2, где при создании внешних обработок и отчетов вторым параметром указывается режим.

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

  • Команды – таблица значений, в которой перечисляются используемые команды. Колонки таблицы значений:
    • Идентификатор – любая строка (идентификатор команды)
    • Представление – описание команды
    • Модификатор - строка (используется для дополнительных печатных форм)
    • ПоказыватьОповещение – окно оповещение будет появляться перед началом и после окончание выполнения (для команд клиентских и серверных без формы)
    • Использование – режим запуска обработки:
      • ОткрытиеФормы – откроется форма обработки
      • ВызовКлиентскогоМетода – вызов клиентского экспортного метода форма
      • ВызовСерверногоМетода – вызов экспортной метода из модуля обработки

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

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

Подбор и обработка объектов. (Универсальная)

Осуществляет поиск объектов в документах и справочниках, соответствующих определённым условиям. Обрабатывает итоги поиска.

Свёртка информационной базы. (Универсальная)

Производит свёртку ИБ типовых конфигураций:

  • УПП 3.1.
  • БП 1.6.
  • УТ 10.3.

Регистрация изменений для обмена. (Универсальная)

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

Преобразование журнала действий пользователя. (Универсальная)

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

Полнотекстовый поиск в данных. (Универсальная)

Индексирование и поиск в данных.

Поиск и замена значений. (Универсальная)

Ищет и производит замену ссылочных значений в объектах ИБ.

Настройка технологического журнала. (Универсальная)

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

Консоль заданий. (Универсальная)

Мониторит фоновые и регламентные задания. Удаляет, создаёт новые.

Конвертация внешних обработок. (Универсальная)

Изменение конфиденциальной информации. (Универсальная)

Выборочное изменение или очистка ИБ от определённой информации.

Групповое изменение реквизитов. (Универсальная)

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

Выгрузка и загрузка пользователей. (Универсальная)

Выгружает и загружает пользователей ИБ в файл XML.

Выгрузка данных во внешние базы данных. (Универсальная)

Выгружает структуры данных во внешние СУБД, посредством ADO в двух режимах:

  • Выгрузить всё
  • Выгрузить изменения (используется для синхронизации изменений рабочей ИБ, с ИБ – приемником). Этот режим использует механизмы плана обмена.

Поддерживает следующие СУБД:

  • Microsoft SQL
  • IBM DB2
  • Oracle
  • PostgreSQL
  • MySQL

Выгрузка и загрузка данных XML. (Универсальная)

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

Загрузка данных из табличного документа. (Универсальная)

Производит загрузку данных в справочники и табличные части из табличных документов.

Работает в толстом клиенте в режиме обычного приложения.

Консоль запросов. (Универсальная)

Оказывает огромную помощь при составлении отчётов и создании запросов.

В верхем меню заходим Сервис ->->.

Появляется форма списка справочника внешних обработок. В верхнем меню нажимаем кнопку Добавить .

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

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

На этом все! Процесс добавления обработки в конфигурацию завершен. Чтобы впоследствии открывать эту обработку, заходите по старому пути: Сервис ->Дополнительные отчеты и обработки ->Дополнительные внешние обработки .

Для БП 3.0, ЗУП 3.0, УТ 11, ERP 2.0.

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

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

Переходим в соответствующий раздел программы:


Необходимо, чтобы был установлен признак использования дополнительных отчетов и обработок, переходим по гиперссылке в список внешних объектов:

В списке нажимаем Создать :


В открывшемся диалоговом окне выбираем нужный файл с обработкой:


Заполнилась карточка нового внешнего объекта в программе, осталось только настроить размещение (разделы программы, из которых будет доступна обработка):


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


Записываем и закрываем карточку внешнего объекта:


Теперь откроем обработку из интерфейса:


Список пустой, нажимаем Настроить список :


Выбираем нашу обработку:


Теперь она доступна для выбора. Чтобы открыть обработку, нужно нажать Выполнить :


Теперь посмотрим, как добавляется обработка по заполнению (модификации) конкретных объектов. Для примера возьмем внешнюю обработку, которая прикрепляет сканы к выбранным элементам справочников или документам системы. Начало добавления такой обработки не отличается от предыдущего варианта. Различие в том, что в данном случае размещение заполняется автоматически (и не разделом программы, а типами объектов базы):


При желании список размещения можно скорректировать (не добавить дополнительное размещение, а убрать лишнее ):


Для принятия изменения карточку внешнего объекта также нужно записать.

Для того, чтобы воспользоваться обработкой, необходимо зайти в конкретный объект базы (из списка размещения), нажать пункт Заполнить в командной панели и выбрать команду:

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

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

В статье пойдет речь о следующих вариантах дополнительных внешних подключаемых объектах:

  • Дополнительные внешние обработки табличных частей;
  • Дополнительные внешние печатные формы;
  • Дополнительные внешние отчеты;
  • Дополнительные внешние обработки.

Что такое дополнительные внешние обработки, отчеты и печатные формы




Для начала мне хотелось бы рассказать в целом о том, что же такое эти внешние обработки, отчеты и печатные формы . Довольно часто при работе с типовой конфигурацией будь то 1С ЗУП или 1С Бухгалтерия Предприятия или какая-то другая конфигурация, возникает необходимость в каком-то функционале, который не предусмотрен разработчиками 1С. Например, может потребоваться печатная форма , которая не является регламентированной, но используется для внутренних нужд организации. Или требуется определенным образом обработать (изменить, скорректировать) имеющиеся в базе данные. Например, изменить определенный реквизит в документах за требуемый период, что делать вручную неудобно при больших объемах информации.

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

Дополнительные внешние обработки по заполнению табличных частей

Семинар «Лайфхаки по 1C ЗУП 3.1»
Разбор 15-ти лайфхаков по учету в 1с зуп 3.1:

ЧЕК-ЛИСТ по проверке расчета зарплаты в 1С ЗУП 3.1
ВИДЕО - ежемесячная самостоятельная проверка учета:

Начисление зарплаты в 1С ЗУП 3.1
Пошаговая инструкция для начинающих:

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

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

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

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

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

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

Дополнительные внешние печатные формы

Семинар «Лайфхаки по 1C ЗУП 3.1»
Разбор 15-ти лайфхаков по учету в 1с зуп 3.1:

ЧЕК-ЛИСТ по проверке расчета зарплаты в 1С ЗУП 3.1
ВИДЕО - ежемесячная самостоятельная проверка учета:

Начисление зарплаты в 1С ЗУП 3.1
Пошаговая инструкция для начинающих:

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

В состав этих печатных форм справочника можно добавить и свои собственные. Для этого создается внешняя печатная форма, имеющая расширение “.epf”. Затем для неё создается элемент справочника«Дополнительные внешние печатные формы» (пункт меню «Сервис» -> «Дополнительные отчеты и обработки») и файлик с расширением “.epf” добавляется в этот элемент справочника. Также необходимо указать для какого документа или справочника добавляется обработка.

В результате в составе печатных форм элементов справочника «Сотрудники» появится ещё одна форма – «Трудовой договор (ООО Альфа)», которой до этого не было. А её внешний вид и заполнение данными определяет программист в файле “.epf”.

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

Дополнительные внешние отчеты

В этом случае можно разработать внешний отчет . Это файл формата “.erf”. Именно этот файл будет определять внешний вид отчета, то, какие данные конфигурации он будет использовать, а какие запрашивать у пользователя (например, период, отбор по сотрудникам или по подразделениям). Файл создается в конфигураторе 1С на языке программирования 1С.

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

При таком варианте хранения, отчет запускается из этого же справочника (двойным щелчком).

Запустить внешний отчет можно и используя пункт меню «Файл» -> «Открыть». Этот вариант можно использовать, если Вам удобнее хранить внешние отчеты не в составе программы, а просто в папках компьютера.

Дополнительные внешние обработки

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

Например , обработка для выгрузки ведомостей на выплату заработной платы. Не смотря на наличие в ЗУП типовой обработки (про неё читайте ), иногда она может не подойти для конкретного банка и разрабатывается внешняя обработка, которая преобразует и выгружает сведения в нужном формате.

Приведу ещё один пример совершенно простенькой, но довольно востребованной обработки. Если в 1С ЗУП в течение года не вести документ «Перечисление НДФЛ в бюджет», то при формировании 2-НДФЛ за год поле «Перечислено» у каждого сотрудника будет нулевым, что как правило фактически неверно. Вводить документ «Перечисление НДФЛ в бюджет» за весь год бывает довольно утомительно, учитывая особенности самого документа. Но можно сделать внешнюю обработку, которая в сформированном 2-НДФЛ просто заполнит поле «Перечислено» у каждого сотрудника, на основании значений в поле «Исчислено». Обычно бухгалтерам очень нравится такой вариант.

Внешние обработки имеют точно такие же два варианта хранения и запуска: либо использовать справочник «Дополнительные внешние обработки» (пункт меню «Сервис» -> «Дополнительные отчеты и обработки»), либо пункт главного меню «Файл» -> «Открыть».

На этом сегодня всё!

Чтобы узнать первыми о новых публикациях подписывайтесь на обновления моего блога: