1с добавить отчет в подменю отчеты
Приветствую, мои маленькие любители длинных запросов … и отчетов 1C на СКД.
Сегодня мы на готовом примере рассмотрим следующую задачу: использовать несколько схем данных в одном отчете СКД.
Стоить заметить, что данная реализация не является единственно возможной и не претендует на «истину в последней инстанции». Выбор конкретного способа определяется нюансами конкретной задачи.
Синтетический пример будет реализован в демо-конфигурации Управление торговлей, редакция 11.
- Для начала создадим внешний отчет и добавим его реквизит ИмяМакета, тип Строка. В данном реквизите мы будем хранить имя текущего активного макета. Оно нам потребуется при формировании отчета.
- Добавим форму отчета. Она необходима для выбора активного макета. Данную форму можно (и нужно) скопировать из состава БСП, ОбщиеФормы — ФормаОтчета. Так мы получим все возможности типовых отчетов СКД с минимальным затратами (хотя и потребуются некоторые доработки), но автоматически генерируемая форма также подойдет.
- Добавим 2 макета, тип СхемаКомпоновкиДанных.
Первый макет СхемаПроизводственныйКалендарь, куда выберем данные из регистра ДанныеПроизводственногоКалендаря с отбором по параметру &Дата.
Второй макет СхемаФизЛица, куда выберем данные из справочника ФизическиеЛица с отбором по полу
Как видим, ни параметры, ни поля, ни данные в этих макетах не совпадают. Укажем использование обоих параметров «Всегда» и добавим их для наглядности в пользовательские настройки.
Стоит заметить, что мы не указываем основную схему в отчете.
Заготовка отчета готова. Теперь перейдем непосредственно к коду выбора, смены и формирования макета
Для начала необходимо в процедуре формы ПриСозданииНаСервере нарисовать кнопку, заполнить список макетов и выбрать один из макетов в качестве «начального».
Вот так это выглядит на форме:
Затем пропишем обработчик для команды «ВыбратьМакет».
Думаю, из построчного комментария к листингу кода все предельно понятно. Самый интересный момент, это «подмена» пользовательских настроек настройками по умолчанию из схемы. Для этого используется объект ИсточникДоступныхНастроекКомпоновкиДанных. В результате инициализации компоновщика настроек будут заменены все пользовательские настройки, а именно отборы, группировки, выбранные поля и т.д.
Как видим, пользовательские отборы при смене макета так же изменились.
Остается лишь подменить стандартную процедуру формирования отчета. Для этого открываем модуль объекта и формируем СКД программно в процедуре ПриКомпоновкеРезультата.
Таким образом, мы получили два несвязанных макета СКД в одном внешнем отчете, между которыми пользователь может произвольно переключаться.
Прикладные объекты, предназначенные для получения всевозможных сводных таблиц , для организации данных в вид удобный для анализа и просмотра в конфигурациях 1С принято называть отчетами. Как в 1С добавить отчет, различные варианты добавления, эти и некоторые другие вопросы мы постараемся раскрыть в этой статье.
Отчеты и обработки: различия
При этом от других подобных объектов – обработок, их отличает:
- Возможность использования СКД (системы компановки данных);
- С помощью обработки можно вводить информацию, отчет служит для вывода и организации данных;
- Разница в формате файлов: расширение epf говорит о том, что мы имеем дело с обработкой, erf характерно для внешних отчетов.
С точки зрения программиста, использование этих объектов очень удобно, ведь оно не требует внесения изменений в метаданные конфигурации, а, следовательно, не надо выгонять пользователей из базы для проведения её обновления.
Способы добавления отчета в базу
С помощью специального справочника
В большинстве конфигураций, предоставляемых фирмой 1С, есть справочник «Внешние обработки», который позволяет сохранить обработку в базе, не внося изменения в метаданные. Попасть в этот справочник можно двумя способами:
- Для Полного и Административного интерфейсов, перейдя по адресу: Операции->Справочники->Внешние обработки;
- Все остальные через: Сервис->Дополнительные отчеты и обработки.
- Дальше надо выбрать вид формы, которую необходимо получить.
Итак, как добавить компановку в справочник через форму, вид которой представлен на рис.1
Рис.1 Форма регистрации отчета или обработки
В первую очередь необходимо придумать оригинальное название для элемента справочника, которое бы максимально отражало суть формируемой таблицы. Вторым этапом выбирается вид добавляемой формы. Это может быть:
- Печатная форма, вызываемая по кнопке Печать или другой кнопке в тех объектах, которые указаны в табличной части «Принадлежность печатной формы»;
- Заполнение табличных частей, для табличных частей документов и справочников, представленных в Табличной части «Принадлежность обработки по заполнению табличных частей»;
- Обработка;
- Отчет.
Рис. 2 Поле выбора вида отчета
На завершающем этапе необходимо выбрать файл, содержащий обрабатываемый код, из тех, что сохранены на диске.
Рис.3 Надпись, говорящая о необходимости выбора файла отчета
Записав элемент, вы сохраните его в базе. При восстановлении и переносе базы, элементы, сохраненные таким образом, также будут переноситься.
Добавление в конфигурацию
Действия, приведенные ниже, требуют монопольного доступа к базе.
Зайдя в конфигуратор и открыв конфигурацию, можно приступить к добавлению обработки.
Если конфигурация закрыта для редактирования, необходимо зайти в пункт меню Конфигурация->Поддержка->Настройка поддержки. Откроется окно, как на Рис.4
Рис. 4 Окно редактирования поддержки
- Нажать кнопку «Включить возможность изменения»;
- Положительно ответить на вопрос системы.
Таким образом, Вы получите возможность добавления собственных элементов в метаданные базы данных.
Теперь кликнув правой кнопкой мышки по строке «Отчеты» дерева конфигурации можно добавить внешний компановщик данных в конфигурацию Рис.5.
Рис. 5 Подменю добавления отчета в конфигурацию
Особенности размещения обработки на управляемых формах
Интерфейс, построенный на управляемых формах, накладывает свои ограничения на отображение дополнительных обработчиков, добавленных в базу.
Перед тем, как в 1С добавить отчет в управляемую форму, необходимо убедиться, что он создан с использованием СКД, в противном случае форма будет отражаться некорректно.
Открыв программу в режиме Администрирования, необходимо в Панели навигации найти пункт «Печатные формы, отчеты и обработки»
Рис. 6 Панель навигации 1С 8.3
Установив в открывшемся окне флажок «Дополнительные отчеты и обработки», вы получите возможность добавлять в базу ваши разработки для управляемой формы.
На форме нажмите кнопку «Создать». Проигнорировав окно предупреждения, можете приступать к выбору файла.
Очень часто в последних версиях программы, добавление вылетает с ошибкой о том что: «Метод объекта не обнаружен». Дело в том, что после создания обработчика с помощью системы компановки данных, необходимо в его модуле прописать функцию СведенияОВнешнейОбработке() с пометкой Экспорт, эта функция должна вернуть параметры регистрации:
После этого можно приступать к размещению отчета в интерфейсе. Для этого надо щелкнуть по команде «Размещение».
Рис. 7 Размещение
При этом активность элемента регулируется выбором соответствующего значения в поле «Публикация».
Добавление без размещения
Перезаписывать элемент справочника каждый раз, когда в код вносятся какие-либо изменения, тем более регистрировать этот обработчик в конфигурации – достаточно муторное дело. Обойтись без этого можно. Достаточно просто открывать файл, содержащий обработку через меню Файл->Открыть файл. Последние открытые объекты хранятся в виде списка в нижней части подменю Файл.
Регламентированные отчеты
Кроме внешних файлов и обработчиков, предусмотренных конфигурацией, в 1С существует еще один вид отчетов – регламентированные. Это те компановки данных, работа с которыми регламентируются налоговыми органами.
По характеру работы эти формы больше напоминают документ. Срок действия таких обработчиков редко превышает один квартал, обновления к ним фирма 1С выпускает регулярно.
Открыть их можно из меню Отчеты->Регламентированные отчеты. После выбора варианта отчета, программа проведет его заполнение данными из базы. Если данных будет не хватать, программа предложит довнести недостающие данные вручную.
Не до конца заполненные формы сохраняются с возможностью дозаполнения. Полностью заполненный и проверенный документ можно распечатать на бумаге или сдать в налоговую в электронном виде.
Работа с программными продуктами, поставляемыми фирмой 1С предполагает не только ввод и систематизацию первичной информации (заполнение справочников и своевременное внесение документов), но и формирование на основе этих данных различных печатных форм. Для этих целей создан специальный объект – отчеты. Отчеты в 1С помогают провести анализ текущей ситуации в компании в разрезе различных показателей и предоставляют возможность принять на основании этой информации грамотные управленческие решения.
Отчеты и обработки
Вообще говоря, между этими двумя типами объектов нет существенных различий:
- Они могут содержать макеты печатных форм;
- Они могут иметь в своих модулях процедуры для внесения изменения в информацию;
- Они могут быть внутренними и встроенными;
- Внешние отчеты и внешние обработки в типовых конфигурациях хранятся в одном и том же справочнике.
Условно разделить отчет и обработку можно по принципу использования. Компоновка необходима для вывода информации в удобном для пользователя виде, обработка создается для внесения изменений в базу данных. Дополнительно в выводимых таблицах можно указать основную схему компоновки, которая будет служить для формирования внешнего вида возвращаемых документов, а также настройки для хранения параметров.
Физически рассматриваемые в статье объекты от внешней обработки различаются расширением файла:
- Внешняя обработка – epf;
- Внешний отчет – erf.
Внешние и встроенные отчеты
Если внимательно посмотреть на дерево любой конфигурации в 1С, можно заметить, что там также есть ветка отчетов (Рис. 1)
Различий между внешними и внутренними обработчиками практически никаких нет. Более того, любой ert файл можно встроить в конфигурацию и наоборот, встроенный механизм можно выгрузить во внешний ресурс. К примеру, если мы захотим внести изменения в стандартный обработчик «АнализВзносовВФонды», мы должны вызвать контекстное меню соответствующего объекта и выбрать подменю «Сохранить как внешнюю…» (Рис. 2)
Обратное действие вызывается подменю «Заменить на внешнюю», но для этого конфигурация должна быть открыта для изменения.
Единственное отличие встроенного объекта в том, что к нему можно обратиться из программного кода модулей, для внешнего отчета это достаточно сложно сделать, если не внести его в соответствующий справочник.
Создание внешнего отчета
Создать внешний отчет можно только в режиме Конфигуратора, для этого обязательно понадобится знание встроенного языка программирования и, скорее всего, умение работать с языком и конструктором запроса.
В принципе, у программиста есть две возможности скомпоновать данные, извлеченные из таблиц базы данных:
- Использовать механизм системы компоновки данных (СКД);
- Программно заполнить табличный документ, используя заранее подготовленный макет.
Во втором случае разработчику придется самостоятельно продумывать интерфейс, отборы, группировки и другие вещи, которые в СКД можно создавать по ходу работы пользователя.
Но, независимо от выбранного механизма, начинать надо из меню «Файл», подменю «Новый». Перед разработчиком открывается меню выбора создаваемого объекта (Рис. 3).
Далее мы переходим к форме создания нового объекта (Рис. 4)
- Имя, которое максимально точно резюмирует назначение объекта;
- Синоним и комментарий – предназначены для полного описания;
- Основная схема компоновки – здесь можно задать схему, которая будет использоваться для вывода отчета на печать;
- Кнопка «Открыть схему…» открывает конструктор результата обработки;
- Окно описания форм, реквизитов и макетов.
По кнопке «Действия» можно открыть модуль создаваемого объекта.
Схема компоновки
Использование СКД для создания отчета значительно упрощает работу разработчика:
- Не надо продумывать и создавать форму объекта;
- Отборы, группировки, колонки выводимой формы можно динамически менять в пользовательском режиме;
- Есть возможность создания и хранения нескольких вариантов формирования итоговой таблицы.
Именно поэтому в современных решениях схема компоновки данных пользуется все большей популярностью. Если нажать соответствующую кнопку, перед разработчиком открывается конструктор СКД. (Рис. 5)
Хранится схема в макетах объекта.
Кроме внутренних и встроенных отчетов, существует еще одна возможность хранения и обращения к этим объектам – справочник «Дополнительные обработки».
Для управляемых форм, на которых основаны современные программные продукты 1С, значительно изменилась форма регистрации внешних обработок в базе данных.
Если раньше (на обычных формах) достаточно было в соответствующем справочнике создать новый элемент, указать тип хранимого обработчика и определить путь к файлу формата ert, то на управляемых формах регистрация происходит из модуля регистрируемого объекта.
Для этого в модуле обработчика должна быть определена экспортная функция СведенияОВнешнейОбработке. (Рис. 6)
На Рис.6 приведен приблизительный набор команд, который позволит зарегистрировать файл в справочнике.
Кроме функцию со сведениями здесь представлены: еще одна процедура (ДобавитьКоманду) и функция (ПолучитьТаблицуКоманд). Их содержание показано на Рис. 7
В 1С Предприятии 8.2 внешний вид формы определяется расположением и свойствами элементов в дереве элементов формы. На основе этих свойств система сама «рисует» форму, в частности, командную панель формы.
Любая группа кнопок (командная панель, подменю, группа кнопок, контекстное меню) заполняется по одинаковым правилам:
- сначала идут кнопки, предоставляемые источником команд, с которым связана данная группа;
- затем идёт фрагмент командного интерфейса, если источник команд подразумевает его включение;
- затем идут пользовательские команды, добавленные в данную группу;
- затем идёт подменю Все действия (только для командной панели);
- и в конце идёт кнопка Справка в том случае если она была предоставлена источником команд.
Рассмотрим самый простой вариант, когда в форме элемента справочника созданы две команды и помещены в командную панель формы.
В результате в режиме 1С:Предприятия расположение кнопок, соответствующих созданным командам Команда1, Команда2 соответствует описанному выше алгоритму: в командной панели формы и в подменю Все действия сначала расположены команды, предоставляемые источником команд — формой элемента
справочника (например, Записать и закрыть), затем команды, созданные
разработчиком (Команда1, Команда2), и затем команды Изменить форму и Справка.
Есть несколько способов вмешаться в процесс расположения команд.
1. Можно отделить команды, созданные пользователем, от других команд разделителем. Для этого нужно создать в командной панели группу вида Группа кнопок и перенести в нее эти команды.
2. Можно расположить какие-то команды разработчика в начале группы команд.
Для этого нужно отменить у группы источник команд (для контекстного меню и автоматической командной панели нужно выключить флажок Автозаполнение), затем добавить в группу свою кнопку, после нее добавить группу вида Группа кнопок и у этой группы установить источник команд — например, Форма.
В результате в режиме 1С:Предприятия командная панель формы и подменю Все действия будут иметь следующий вид.
3. Можно переместить автоматически заполняемые кнопки. Для этого нужно поместить в дерево командной панели или контекстного меню кнопку, связанную с той же командой, которая заполняется из источника данных (например, Удалить, Изменить и др.). Автоматически такая кнопка не будет размещена среди стандартных команд и, таким образом, можно переместить стандартную
команду в другое место. В результате командная панель формы и подменю Все действия будут иметь следующий вид.
Чтобы пиктограмма команды Удалить отображалась в командной панели формы, нужно установить свойство этой кнопки ТолькоВоВсехДействиях в значение Нет.
4. Можно включить/выключить видимость стандартных команд, предоставляемых источником команд, например — Форма. Для этого нужно открыть окно Состав команд в палитре свойств формы.
Возможности изменить порядок кнопок, предоставляемых источником команд, нет.
Если такая необходимость появится, нужно отменить источник у группы команд, и полностью заполнить группу вручную.
При переходе на версию 1С БСП 2.4, приходится переписывать процедуру инициализации подключения стандартной подсистемы «Подключаемые команды». Если в предыдущих версиях использовались процедуры общих модулей «УправлениеПечатью», «ВводНаОснование», «МенюОтчеты», то в версии 2.4 требуется вызывать процедуры одного общего модуля «ПодключаемыеКоманды».
Рассмотрим по шагам, что надо сделать, чтобы подключаемые команды появились на формах добавленных (нетиповых) документов или справочников.
Далее приводятся примеры кода для версии БСП 2.4. Закомментированный код использовался для предыдущих версий БСП .
Инициализация подключаемых команд в процедуре «ПриСозданииНаСервере» в модуле формы объекта (или списка):
В вызываемой процедуре «ПодключаемыеКоманды.ПриСозданииНаСервере()» происходит:
а) программное добавление всех необходимых команд формы
б) расположение их в нужных подменю
Описание подключаемых команд в модуле формы объекта (списка).
В командной панели формы объекта (списка) должны присутствовать отмеченные пункты подменю. Это требование не изменилось в версии 2.4
В модуле менеджера объекта создаются экспортные процедуры для добавления нужных команды на формы объектов. В версии БСП 2.4 есть небольшие изменения, касающиеся параметров процедур.
ДобавитьКомандыСозданияНаОсновании() — экспортная процедура, в которой заполняется таблица «КомандыСозданияНаОсновании». Команды из этой таблицы выводятся на форму в «ПодменюСоздатьНаОсновании».
ДобавитьКомандуСоздатьНаОсновании() — экспортная функция, которая используется для добавления команды создания текущего объекта на основании других объектов.
ДобавитьКомандыОтчетов() — экспортная процедура, в которой заполняется таблица «КомандыОтчетов». Команды из этой таблицы выводятся на форму в «ПодменюОтчеты».
ДобавитьКомандыПечати() — экспортная процедура, в которой заполняется таблица «КомандыПечати». Команды из этой таблицы выводятся на форму в «ПодменюПечать».
Все предыдущие шаги можно сделать по аналогии типовых объектов. При переходе на версию БСП 2.4 во всех типовых объектах разработчики проводят указанные выше модификации. Но для вывода на форму своих (добавленных) объектов этого будет не достаточно, подключаемые команды не появятся на формах. В версии БСП 2.4 необходимо сделать еще следующие доработки:
Читайте также: