Добавление внешнего отчета в базу. Добавление внешнего отчета в базу Внешний отчет в 1с
Необходимость настройки внешних отчетов может возникать в случаях оперативного изменения соответствующих отчетных форм. Ведь государственные органы, утверждающие соответствующие бланки, не всегда учитывают то, что хозяйствующим субъектам нужно время для подготовки отчетной формы. Автор - С.А.Харитонов.
В типовых конфигурациях для "1С:Предприятия 8", выпускаемых фирмой "1С", формы регламентированной отчетности входят в состав конфигураций и выпускаются вместе с релизами конфигураций. Однако когда возникает необходимость - например, вступает в силу новая редакция формы отчетности, - фирма "1С" выпускает такие формы отчетности в виде внешних отчетов "1С:Предприятия 8" (файлов с расширением *.erf).
Использование внешних отчетов является временным решением, которое следует использовать только до выхода релиза конфигурации, в котором будут встроены необходимые изменения. Поэтому на использование внешних отчетов накладываются определенные ограничения:
- при выпуске внешнего отчета оговаривается, с каким релизом конфигурации он может использоваться;
- не гарантируется поддержка внешним отчетом предыдущих релизов конфигурации;
- при работе пользователя с конфигурацией нельзя использовать более одной версии внешнего отчета;
- открытие формы отчета выполняется более продолжительное время, по сравнению с отчетом, реализованным как объект конфигурации;
- выгрузка данных отчета в электронном виде выполняется намного медленнее и др.
Список внешних отчетов, выпущенных для конкретного релиза конфигурации, можно увидеть на странице конфигурации сайта поддержки пользователей программ "1С:Предприятия 8" по адресу www.users.v8.1c.ru (в разделе Сводная информация необходимо в столбце с номерами версий кликнуть на интересующий номер) или в форме Информация об обновлениях (вызывается кнопкой Информация об обновлениях верхней командной формы ), если в информационной базе включен сервис оповещений регламентированной отчетности.
В этой же форме можно щелкнуть по наименованию внешнего отчета, чтобы скачать его к себе на компьютер.
Как правило, отчеты распространяются в виде архива RAR. Для работы с внешним отчетом архив необходимо распаковать.
В архиве вместе с файлом внешнего отчета содержится текстовый файл с описанием назначения отчета и порядка его подключения.
Если внешний отчет предназначен для замены регламентированного отчета, уже существующего в конфигурации, его можно подключить к информационной базе, просто открыв отчет в режиме "1С:Предприятие" (меню Файл - Открыть ).
При открытии будет задан вопрос Зарегистрировать внешний регламентированный отчет в информационной базе ? После ответа Да внешний отчет будет зарегистрирован в информационной базе и сразу открыт для создания нового отчета.
Если ответить Нет , отчет не будет зарегистрирован, но также будет открыт для создания нового отчета. С таким отчетом можно будет выполнить все действия - создание, заполнение, печать - но созданный отчет нельзя будет сохранить в информационной базе.
Если внешний отчет является новым видом регламентированного отчета, автоматически зарегистрироваться в информационной базе отчет не сумеет: такой режим необходимо подключить вручную. Указания по подключению также имеются в текстовом файле, содержащемся в архиве, полученном с сайта "1С".
Для использования внешнего отчета пользователю необходимо указать, что для данного регламентированного отчета будет использоваться не внутренний объект конфигурации, а внешний отчет.
Для регистрации внешнего отчета как нового вида регламентированных отчетов в справочнике Регламентированные отчеты необходимо (см. рис. 1):
1) перейти в группу справочника, в которой будет располагаться отчет нового
вида;
2) создать новый элемент справочника, нажав кнопку Добавить
в верхней
командной панели формы справочника;
3) в форме элемента справочника заполнить наименование, которое будет выдаваться
в справочнике Регламентированные отчеты
и в списке видов отчетов формы
Регламентированная и финансовая отчетность
. Желательно также заполнить
описание вида отчета;
4) переключатель Использовать
установить в положение файл и указать,
какой файл следует использовать в качестве внешнего отчета. После нажатия кнопки
ОК
в диалоге открытия файла в поле файл формы элемента справочника
будет указано полное имя этого внешнего отчета.
Рис. 1. Регистрация внешнего отчета
После нажатия кнопки Записать внешний отчет сохраняется в информационной базе, после этого полное имя внешнего файла заменяется текстом Отчет загружен в ИБ .
То же самое происходит при нажатии кнопки ОК , при этом форма элемента справочника Регламентированные отчеты закрывается.
Для тех элементов справочника, для которых используются внешние отчеты, в форме списка справочника после наименования отчета добавляется строка (внешний).
После того, как внешний отчет загружен в информационную базу, сам файл внешнего отчета уже не нужен, и его можно удалить.
Работа с регламентированным отчетом, использующим внешний отчет, ничем не отличается от работы с объектом конфигурации, кроме "замедленной реакции" при открытии и при выгрузке данных отчетности в электронном виде.
В качестве признака внешнего отчета в правой части верхней командной панели выводится красная информационная надпись Внешний отчет .
В любой момент можно вернуться к использованию "внутреннего" объекта конфигурации. Для этого в форме элемента справочника для требуемого регламентированного отчета необходимо поставить переключатель Использовать в положение объект и сохранить элемент справочника.
Сам внешний отчет не удаляется из информационной базы, поэтому возможно и обратное действие. Для удаления отчета из информационной базы необходимо выполнить следующее:
1) в справочнике Регламентированные отчеты
найти регламентированный
отчет, для которого подключен внешний отчет, - у такого отчета после наименования
отчета будет добавлена строка (внешний);
2) открыть элемент справочника для редактирования обязательно кнопкой Изменить
текущий элемент
;
3) в поле выбора внешнего отчета нажать кнопку Х (Очистить)
. После
ее нажатия текст Отчет загружен в ИБ
очищается, это является признаком
того, что отчет будет удален из информационной базы;
4) закрыть форму элемента справочника нажатием кнопки ОК
.
Удаление отчета выполняется при сохранении элемента справочника.
В случае необходимости отчет, загруженный в информационную базу, можно сохранить в файл на диске. Для этого в форме элемента справочника Регламентированные отчеты необходимо щелкнуть по ссылке с текстом Выгрузить внешний отчет в файл . Будет открыт стандартный диалог сохранения файла. По умолчанию в качестве имени файла предлагается имя соответствующего объекта конфигурации.
Важно отметить, что в одном сеансе работы пользователя с информационной базой нельзя использовать более одной версии внешнего отчета: например, если пользователь уже работает с регламентированным отчетом, который является внешним отчетом, и загрузил в справочник Регламентированные отчеты другую версию этого внешнего отчета (например, с добавленным автозаполнением), для использования этой версии отчета ему нужно завершить сеанс работы в режиме "1С:Предприятие", после чего сразу начать новый сеанс.
Работа с программными продуктами, поставляемыми фирмой 1С предполагает не только ввод и систематизацию первичной информации (заполнение справочников и своевременное внесение документов), но и формирование на основе этих данных различных печатных форм. Для этих целей создан специальный объект – отчеты. Отчеты в 1С помогают провести анализ текущей ситуации в компании в разрезе различных показателей и предоставляют возможность принять на основании этой информации грамотные управленческие решения.
Отчеты и обработки
Вообще говоря, между этими двумя типами объектов нет существенных различий:
- Они могут содержать макеты печатных форм;
- Они могут иметь в своих модулях процедуры для внесения изменения в информацию;
- Они могут быть внутренними и встроенными;
- Внешние отчеты и внешние обработки в типовых конфигурациях хранятся в одном и том же справочнике.
Условно разделить отчет и обработку можно по принципу использования. Компоновка необходима для вывода информации в удобном для пользователя виде, обработка создается для внесения изменений в базу данных. Дополнительно в выводимых таблицах можно указать основную схему компоновки, которая будет служить для формирования внешнего вида возвращаемых документов, а также настройки для хранения параметров.
Физически рассматриваемые в статье объекты от внешней обработки различаются расширением файла:
- Внешняя обработка – epf;
- Внешний отчет – erf.
Внешние и встроенные отчеты
Если внимательно посмотреть на дерево любой конфигурации в 1С, можно заметить, что там также есть ветка отчетов (Рис. 1)
Различий между внешними и внутренними обработчиками практически никаких нет. Более того, любой ert файл можно встроить в конфигурацию и наоборот, встроенный механизм можно выгрузить во внешний ресурс. К примеру, если мы захотим внести изменения в стандартный обработчик «АнализВзносовВФонды», мы должны вызвать контекстное меню соответствующего объекта и выбрать подменю «Сохранить как внешнюю…» (Рис. 2)
Рис. 2
Обратное действие вызывается подменю «Заменить на внешнюю», но для этого конфигурация должна быть открыта для изменения.
Единственное отличие встроенного объекта в том, что к нему можно обратиться из программного кода модулей, для внешнего отчета это достаточно сложно сделать, если не внести его в соответствующий справочник.
Создание внешнего отчета
Создать внешний отчет можно только в режиме Конфигуратора, для этого обязательно понадобится знание встроенного языка программирования и, скорее всего, умение работать с языком и конструктором запроса.
В принципе, у программиста есть две возможности скомпоновать данные, извлеченные из таблиц базы данных:
- Использовать механизм системы компоновки данных (СКД);
- Программно заполнить табличный документ, используя заранее подготовленный макет.
Во втором случае разработчику придется самостоятельно продумывать интерфейс, отборы, группировки и другие вещи, которые в СКД можно создавать по ходу работы пользователя.
Но, независимо от выбранного механизма, начинать надо из меню «Файл», подменю «Новый». Перед разработчиком открывается меню выбора создаваемого объекта (Рис. 3).
Рис. 3
Рис. 4
Здесь мы видим:
- Имя, которое максимально точно резюмирует назначение объекта;
- Синоним и комментарий – предназначены для полного описания;
- Основная схема компоновки – здесь можно задать схему, которая будет использоваться для вывода отчета на печать;
- Кнопка «Открыть схему…» открывает конструктор результата обработки;
- Окно описания форм, реквизитов и макетов.
По кнопке «Действия» можно открыть модуль создаваемого объекта.
Схема компоновки
Использование СКД для создания отчета значительно упрощает работу разработчика:
- Не надо продумывать и создавать форму объекта;
- Отборы, группировки, колонки выводимой формы можно динамически менять в пользовательском режиме;
- Есть возможность создания и хранения нескольких вариантов формирования итоговой таблицы.
Именно поэтому в современных решениях схема компоновки данных пользуется все большей популярностью. Если нажать соответствующую кнопку, перед разработчиком открывается конструктор СКД. (Рис. 5)
Рис.
5
Хранится схема в макетах объекта.
Кроме внутренних и встроенных отчетов, существует еще одна возможность хранения и обращения к этим объектам – справочник «Дополнительные обработки».
Регистрация внешних объектов в базе данных
Для управляемых форм, на которых основаны современные программные продукты 1С, значительно изменилась форма регистрации внешних обработок в базе данных.
Если раньше (на обычных формах) достаточно было в соответствующем справочнике создать новый элемент, указать тип хранимого обработчика и определить путь к файлу формата ert, то на управляемых формах регистрация происходит из модуля регистрируемого объекта.
Для этого в модуле обработчика должна быть определена экспортная функция СведенияОВнешнейОбработке. (Рис. 6)
Рис. 6
На Рис.6 приведен приблизительный набор команд, который позволит зарегистрировать файл в справочнике.
Кроме функцию со сведениями здесь представлены: еще одна процедура (ДобавитьКоманду) и функция (ПолучитьТаблицуКоманд). Их содержание показано на Рис. 7
Рис. 7
Рассмотрим создание внешнего отчета в 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С требуется дополнительный функционал, который не содержится в типовом прикладном решении. Это может быть особая печатная форма документа, отчет, содержащий необходимые данные, заполнение справочников и документов по определенному алгоритму, ввод одних объектов на основании других и т.д. Для выполнения этих и многих других действий не требуется снимать конфигурацию с поддержки и лишаться автоматических обновлений, типовые прикладные решение позволяют решать подобные задачи с помощью внешних отчетов и обработок. Кроме того, внешние обработки можно запускать в базовых версиях, которые не предусматривают внесения изменений в конфигурацию прикладного решения.
Любое прикладное решение (даже пустое, не содержащее объектов), построенное на базе 1С:Предприятие, позволяет использовать внешние отчеты и обработки. Это делается через главное меню: «Файл»-«Открыть». После выбора файла внешнего отчета или обработки открывается его форма и пользователь может использовать требуемый функционал.
Особенность типовых прикладных решений в том, что в них встроены специальные подсистемы, которые расширяют возможности использования внешних отчетов и обработок.
По виду запуска прикладные решения делятся на две группы: построенные на базе обычного или управляемого приложения. К первой группе относятся «Бухгалтерия 2.х», «Управление торговлей 10.х», «Розница 1.х» и т.д. Ко второй группе относятся «Бухгалтерия 3.х», «Управление торговлей 11.х», «Розница 2.х», «Управление нашей фирмой» и т.д. Прикладные решения, построенные на базе обычного приложения, являются устаревшими, но все еще широко используются пользователями.
В данной статье рассмотрим использование внешних отчетов и обработок в обычном интерфейсе на примере типового прикладного решения «1С:Управление торговлей 10.3».
В обычном интерфейсе внешние отчеты и обработки подключаются через главное меню «Сервис» - «Внешние печатные формы и обработки».
Система позволяет использовать внешние отчеты и обработки четырех видов:
- Внешние отчеты
Внешние печатные формы - формирует печатные формы справочников и документов, не предусмотренные в типовом прикладном решении.
При добавлении или редактировании дополнительной печатной формы открывается карточка внешней обработки.
В карточке необходимо указать наименование печатной формы, комментарий и выбрать файл внешней обработки. Если внешняя обработка имеет параметры авторегистрации, таблица «Принадлежность печатной формы» будет заполнена автоматически. Но при необходимости ее можно заполнить или отредактировать вручную.
- Представление объекта - объект, к которому прикрепляется внешняя печатная форма (справочник или документ). При нажатии кнопки выбора открывается форма выбора принадлежности печатной формы.
- Отбор - позволяет подключать внешнюю печатную форму не для всех документов, а для определенных по отбору. Причем отбор настраивается для каждого объекта принадлежности отдельно. Отбор настраивается аналогично типовым отборам в отчетах и обработках.
- Файл печатной формы - позволяет выбирать для каждого объекта принадлежности отдельный файл внешней печатной формы, т.е. это могут быть абсолютно разные по реализации обработки, но одинаковые по смыслу.
- Заменяемая печатная форма - позволяет выбрать типовую печатную форму объекта, которую заменит новая внешняя печатная форма. Это необходимо, чтобы пользователи не путались в случаях, когда вместо типовой формы разработана новая внешняя.
- Параметры обработки - дополнительные параметры, передаваемые в функцию печати. Практически не актуально для внешних печатных форм. Параметры могут принимать значения только простых типов (число, строка, дата, булево).
После подключения дополнительной печатной формы, она будет доступна в указанном документе или справочнике в меню «Печать».
В нашем примере для документа «Счет на оплату покупателю» внешняя печатная форма заменяет типовую с отбором по контрагенту.
Для документа «Реализация товаров и услуг»:
Внешние обработки заполнения табличных частей
Внешние обработки заполнения табличных частей - позволяют заполнять табличные части справочников и документов по заданным алгоритмам.
При добавлении или редактировании обработки по заполнению табличных частей открывается карточка внешней обработки. Она отличается от карточки внешней печатной формы.
В карточке необходимо указать наименование обработки заполнения табличных частей, комментарий и выбрать файл внешней обработки. Если внешняя обработка имеет параметры авторегистрации, таблица «Принадлежность печатной формы» будет заполнена автоматически. Но при необходимости ее можно заполнить или отредактировать вручную.
Таблица содержит следующие колонки:
- Представление объекта - объект, к которому прикрепляется внешняя обработка заполнения табличных частей (справочник или документ). При нажатии кнопки выбора открывается форма выбора принадлежности обработки заполнения табличных частей.
- Табличная часть - табличная часть, которой назначается обработка.
- Представление кнопки - имя кнопки, которая будет запускать обработку заполнения табличных частей.
- Параметры обработки - дополнительные параметры, передаваемые в функцию печати. Параметры могут принимать значения только простых типов (число, строка, дата, булево).
После подключения внешней обработки заполнения табличных частей, она будет доступна в указанном документе или справочнике в меню «Заполнить» выбранной табличной части.
В нашем примере добавляется кнопка «Заполнить по остаткам» в табличную часть «Товары» документа «Приходный ордер на товары».
Внешние обработки - осуществляют обработку данных по произвольному алгоритму.
При добавлении или редактировании внешней обработки открывается ее карточка.
В карточке необходимо указать наименование обработки, комментарий и выбрать файл внешней обработки. Табличная часть «Принадлежность» для внешней обработки не активна.
После подключения внешней обработки, она будет доступна в списке внешних обработок и ее можно будет открыть двойным щелчком.
Внешние отчеты
Внешние отчеты - выводят данные, получение которых не предусмотрено в типовом прикладном решении.
В карточке необходимо указать наименование отчета, комментарий и выбрать файл внешнего отчета. Табличная часть «Принадлежность» для внешнего отчета не активна.
После подключения внешнего отчета, он будет доступен в списке внешних отчетов и его можно будет открыть двойным щелчком.
Как мы видим, использование внешних обработок в обычном интерфейсе расширяет возможности типового прикладного решения и упрощает работу пользователей.
В следующей статье рассмотрим управляемый интерфейс, который дает еще больше возможностей по использованию внешних отчетов и обработок.