Опубликован: 06.12.2011 | Уровень: для всех | Доступ: платный
Лекция 6:

Программная работа со справочниками, обработки, простые отчеты

Простой отчет

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

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

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

Создадим в ветви дерева конфигурации Отчеты новый отчет, дадим ему имя СписокКонтрагентов, рис. 5.13.

Создание нового отчета

Рис. 5.13. Создание нового отчета

Первым этапом работы над отчетом станет создание макета отчета. Макет позволяет заранее определить и оформить "блоки", из которых будет построен отчет.

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

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

Создание макета для отчета

Рис. 5.14. Создание макета для отчета

После нажатия на кнопку Готово, мы видим табличный редактор, рис. 5.15., очень напоминающий Microsoft Excel. Работая с ним, мы можем пользоваться стандартной палитрой свойств, а так же – панелями инструментов, в частности – Форматирование, Табличный документ, Имена. Наша задача сейчас – создать и отформатировать области, которые позже будут использованы для формирования готового отчета.

Средства редактирования макета отчета

увеличить изображение
Рис. 5.15. Средства редактирования макета отчета

При создании макета мы можем вводить в ячейки обычный текст – такой текст отображается в ячейке без каких-либо дополнительных знаков. Ячейка может содержать именованный параметр, который будет заполнен при формировании отчета. Так же ячейки могут содержать шаблоны, состоящие из обычного текста и параметров, которые так же можно заполнить.

На рис. 5.16. показан готовый макет.

Готовый макет отчета

увеличить изображение
Рис. 5.16. Готовый макет отчета

Ячейка 2,2 заполнена следующим образом: в нее сначала введен текст "Список контрагентов на [ДатаФормированияОтчета]", после чего вызвано окно свойств этой ячейки, в которых, в свойстве Заполнение выбрано Шаблон, рис. 5.17.

Настройка ячейки, содержащей шаблон

увеличить изображение
Рис. 5.17. Настройка ячейки, содержащей шаблон

Параметр ДатаФормированияОтчета мы установим в текущую дату программно при формировании отчета.

Ячейки с 4,2 по 4,4 содержат обычный текст – он будет выводиться в качестве шапки таблицы.

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

Область Элемент содержит три параметра – Наименование, ОсновноеКонтактноеЛицо и ТелефонКонтактногоЛица. После ввода в каждую из ячеек имен параметров, нужно выделить их (все вместе или по одной) и в окне свойств в поле Заполнение указать Параметр. К тексту в ячейках будут автоматически добавлены угловые скобки (<>), что позволяет визуально определить наличие в ячейке параметра.

Область Группа содержит лишь параметр Наименование.

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

Ячейки в шаблоне можно форматировать – задавать их границы, оформление текста, выравнивание и т.д.

Теперь приступим к созданию формы отчета. Перейдем на вкладку Формы окна редактирования объекта, добавим новую форму отчета, оставим все настройки в состоянии по умолчанию и нажмем Готово. Добавим, на вкладке Реквизиты редактора форм новый реквизит, назовем его ТабличныйДокумент, выберем для него тип ТабличныйДокумент. Перетащим созданный реквизит в поле Элементы. В состав команд формы добавим новую команду, зададим ей имя СформироватьОтчет и так же переместим в поле Элементы. В итоге у нас получится форма, выглядящая так, как показано на рис. 5.18.

Настройка формы отчета

Рис. 5.18. Настройка формы отчета
Лариса Дятчина
Лариса Дятчина

Код 

&НаКлиенте

Процедура ОсновноеКонтактноеЛицоПриИзменении(Элемент)

Если НЕ ПроверитьЗаполнениеРеквизита() Тогда

 Сообщить("Выбранное контактное лицо, "+Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента.");

КонецЕсли;

КонецПроцедуры

 

&НаСервере

Функция ПроверитьЗаполнениеРеквизита()

 Возврат (Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);  

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

&НаСервере

Процедура УстановитьНомерПредставителя()

 

 Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения;

КонецПроцедуры

При проверке выдает ошибку:

{Справочник.Контрагенты.Форма.ФормаСписка.Форма(12,11)}: Переменная не определена (Объект)
 Возврат (<<?>>Объект.ОсновноеКонтактноеЛицо.ПредставительРаботает);   (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,2)}: Переменная не определена (Объект)
 <<?>>Объект.ТелефонКонтактногоЛица=Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(17,32)}: Переменная не определена (Объект)
 Объект.ТелефонКонтактногоЛица=<<?>>Объект.ОсновноеКонтактноеЛицо.КонтактныеСведения; (Проверка: Сервер)
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(6,41)}: Переменная не определена (Объект)
 Сообщить("Выбранное контактное лицо, "+<<?>>Объект.ОсновноеКонтактноеЛицо+",не работает у контрагента."); (Проверка: Тонкий клиент)

 

работаю на версии 1С:Предприятие 8.3 (8.3.10.2650)

максим матасов
максим матасов
Леонид Альбрехт
Леонид Альбрехт
Россия, Екатеринбург, 10, 2004
Оксана Максимова
Оксана Максимова
Россия, Екатеринбург, Уральский государственный университет им. А. М. Горького, 1995