Печатные формы
Для
формирования печатных форм в системе используются два объекта: «Макет» и
«Табличный документ». Следует отметить, что «Макет» является объектом
метаданных, чаще всего содержащим внутри себя «Табличный документ».
Табличный
документ, как и любая другая таблица, представляет собой совокупность ячеек
прямоугольной формы, организованных в строки и колонки. Каждая колонка и каждая
строка имеет свой уникальный номер. Столбцы в строках могут иметь
индивидуальную ширину (разную в различных строках).
Табличный
документ представляет «готовую» печатную форму и используется самостоятельно.
Элемент управления типа «Поле табличного документа» может располагаться в
форме. В этом режиме в табличный документ можно вставить другие элементы
управления.
Макет
предназначен для определения «кирпичиков», на основании которых строится
готовая выходная форма. Проектирование макета заключается в «рисовании» этих
составных частей: именованных областей. Макет располагается внутри
конфигурации.
Определение
имени производится через свойство «Имя» после выделения нужной области.
«Содержимое»
ячейки зависит от значения свойства «Заполнение».
Сам
процесс построения печатной формы выглядит следующим образом.
В
начале создается пустой табличный документ. Далее в процессе обработки
алгоритма из макета в нужном порядке извлекаются поименованные области,
заполняются (вместо имен параметров подставляются их значения) и копируются в
табличный документ готового отчета. Средства языка позволяют наращивать отчет
как вниз, так и вправо.
Реализуем
с помощью конструктора возможность печати списка элементов справочника «Контрагенты».
Задание:
создать печатную форму справочника «Номенклатура».
Подчиненные справочники. Форма,
содержащая списки элементов двух справочников
Создайте
справочники «Контрагенты» и «КонтактныеЛица». Справочник «Контрагенты» имеет реквизит
«Полное наименование», редактируется в списке, используется иерархия групп и
элементов.
Справочник
«Контактные лица» должен быть подчиненным справочнику «Контрагенты». В свойство
«Использование подчинения» необходимо выбрать значение «Элементам».
У справочника
определен реквизит «Телефон», тип «Строка». Редактирование производится в
списке, иерархия отсутствует.
При
настройке формы списка справочника «Контрагенты» в диалог формы необходимо
поместить элемент диалога «Табличное поле», определив имя элемента в
«Подчиненный», тип «СправочникСписок. КонтактныеЛица». После выполнения этого
действия табличное поле отобразит колонки, содержащие код и наименование. Для
того, чтобы «вывести» колонку «Телефон», необходимо, сделав щелчок правой
кнопкой мыши, либо выбрать пункт «Добавить колонку», либо «Размещение данных».
Далее,
в свойстве «Связь по владельцу» табличного поля («Подчиненный» выбрать событие
«СправочникСписок.ПриАктивизацииСтроки» (закладка «События»).
Для
полноты картины остается добавить командную панель управления для работы с
подчиненным справочником. Для этого необходимо в диалог добавить элемент
управления «командная панель», в качестве источника указать табличное поле
«Подчиненный» и поставить флажок «Автозаполнение».
Документы
Документ
-ОДНО ИЗ ОСНОВНЫХ ПОНЯТИЙ СИСТЕМЫ «1С:Предприятие».
При
ПОМОЩИ ДОКУМЕНТОВ организуется ввод в систему первичной информации о
совершаемых хозяйственных операциях.
В
большинстве своем документы, которые создаются в процессе настройки
конфигурации, являются электронными аналогами стандартных бумажных документов,
однако, использование этого типа данных может выходить далеко за рамки простой
фиксации информации о хозяйственных Операциях.
Дата
и время — наиболее важные характеристики документов, так как позволяют
устанавливать строгую временную последовательность совершения Операций. У
документа может быть любое количество табличных частей.
документ «Приходная»
В
рамках нашей задачи создадим документ «Приходная». Он будет являться
электронным аналогом расходной накладной поставщика. Для простоты будем полагать,
что у него четыре реквизита:
•
«Контрагент» (тип «СправочникСсылка.Контрагенты»)
•
«Контакт» (тип «СправочникСсылка .КонтактныеЛица»)
•
«Сотрудник» тип «СправочникСсылка.ФизическиеЛица»)
•
«СуммаДокумента» (тип «Число» длина 15, точность 2) Определим одну табличную
часть «Товары», ее состав:
•
Номенклатура (тип СправочникСсьтлка.Номенклатура)
•
Количество (тип «Число» длина 10, точность 0)
•
Цена (тип «Число» длина 1 0, точность 2)
•
Сумма (тип «Число» длина 10, точность 2)
На
закладке движения в свойство «Проведение» выберем значение «Запретить»
(проведение документов будем рассматривать позже).
Создайте
форму документа, форму списка документа. При формировании формы документа
реквизит <СуммаДокумента» «вставьте как надпись», в свойстве «Связь по
владельцу» для элемента диалога «Контакт» установите значение «Контрагент».
В
результате форма документа будет выглядеть следующим образом:
Получившийся
документ будет заполняться, сохранять данные. но он мало кого устроит.
Считается стандартом, чтобы при выборе из справочника номенклатурной позиции
автоматически в документ переносилась цена, а после проставления количества
рассчитывалась общая сумма за позицию. Кроме этого, перечень выбираемых контактных
лиц должен определятся выбранным контрагентом.
Для
реализации вышеизложенных механизмов понадобится написание процедур на
встроенном языке. Их текст представлен далее.
Указанные
процедуры необходимо «привязать» к соответствующим событиям элементов диалога
формы.
Следует
обратить внимание на то, что в реальных конфигурациях, обработчиков события
даже для такого простого документа должно быть больше (для реализации «защиты
от дурака», проверки заполненности реквизитов и т.п.). Например, необходимо при
смене контрагента, проверять на правильность выбранное контактное лицо:
Практикум
№ 5
Напишите
обработчик события, который позволит при выборе контактного лица производить
подстановку соответствующего контрагента.
Также
следует обратить внимание на то, что ряд обработчиков событий могут быть
описаны в модуле объекта (к примеру, обработчик события «ПередЗаписью» и т.п.)
Кстати,
в нашем случае общая сумма документа считается только после нажатия кнопки
«Записать» в форме документа. Если необходимо видеть сумму табличной части, то
в свойствах табличного поля «Товары» отметьте флажок «Подвал», в свойствах
колонки «Сумма» отметьте «Показывать итог в подвале», выравнивание подвала по
правому краю.
Документ «Расходная»
Новый
документ в конфигурации можно завести двумя путями: создав НОВЫЙ, либо
скопировав уже существующий. Каким путем пойти, зависит от количества отличий
между документами. документ «Расходная» (в отличие от «Приходная») будет
содержать две части. Первая «Товары» служит для хранения перечня продаваемой
номенклатуры, вторая - для учета дополнительных издержек при отпуске (доставка,
погрузка, подъем и т.д.).
Будем
считать, что перечень дополнительных издержек определен жестко и не будет
меняться с течением времени. для хранения подобных перечней значений в системе
существует объект «перечисление».
Создадим
перечисление «Издержки». для этого необходимо щелкнуть правой клавишей мыши на
ветви метаданных «перечисления» и выбрать «добавить».
•
ВидИздержки (тип ПеречислениеСсылка. Издержки)
•
Сумма (тип Число длина 10, точность 2)
Документ
должен иметь печатную форму. Это можно сделать с
помощью
конструктора печати, вызов которого производится с
закладки
«Макеты»
При
вызове конструктора печати начальные установки необходимо выбрать следующими:
При
оформлении макета можно воспользоваться свойством ячейки «Формат» (для указания
способов отображения величин).
Не
стоит забывать про корректировку текста процедур.
Дополнительно
Можно
создать реквизит формы документа «СуммаПрописью», связать его с надписью в диалоге
и в процедуру «ПередЗаписью()» добавить следующую строчку:
Журналы документов
До
этого момента для работы с уже выписанными документами использовались их формы
списка. Эти формы списка не позволяли просматривать (в одном списке) документы
разных видов. Если же в этом есть необходимость, то здесь могут помочь журналы.
В
журнале может быть любое (в разумных пределах) количество граф. При создании
графы необходимо от каждого вида документа выбрать по реквизиту (только по
одному, но можно разных типов), который будет в ней отображаться.
Создайте
журнал «Складские». На закладке «Данные» отметьте в качестве регистрируемых
документы «Приходная» и «Расходная», создайте две графы «Контрагент» и
«ОбщСумма», настройте форму списка.
Регистры сведений
Основная
задача регистра сведений — хранить существенную для прикладной задачи
информацию, состав которой развернут по определенной комбинации измерений и,
при необходимости, развернут во времени. Эта информация хранится в регистре в
виде записей. На запись нельзя сделать ссылку из информационной базы. В системе
может быть только одна запись с определенной комбинацией измерений и периодом.
Регистры
сведений, информация в которых развернута во времени, называют периодическими.
Регистр
может характеризоваться выбранным режимом записи:
• Независимый
• Подчинение регистратору
При
выборе режима «Подчинение регистратору» запись жестко подчиняется
документу-регистратору. При другом режиме «Независимый») записи «подчиняются»
так называемым «ведущим»
измерениям.
При проектировании регистра необходимо обращать внимание на порядок следования
измерений.
Регистр сведений «Валюты»
Создайте
справочник «Валюты», определите реквизит «ПолноеНаименование», настройте форму
списка. Справочник без иерархии, принадлежит подсистеме «Торговля».
После
этого создайте регистр сведений «Валюты». У него определите
одно
измерение «Валюта» (ведущее, тип «СправочникСсылка.Валюта»), ресурс «Курс» (тип
«Число»), настройте форму списка, форму записи регистра.
Теперь
модифицируем форму списка, добавим на форму флажок и два поля ввода (как
показано на рисунке).
Далее
в свойствах (для флажка по валюте и соответствующего поля ввода) необходимо
указать:
При
настройке отбора по периоду: в свойство «Данные» флажка необходимо выбрать
«Отбор.Период.Использование», в одно поле ввода «Отбор.Период.ВидСравнения», во
второе поле ввода «Отбор .Период.Значение».
Запустите
«IС:Предприятие» в пользовательском режиме и посмотрите на работу регистра
сведений «Валюты».
Чтение курсов валют
Модифицируем
документ «Приходная». В данный документ необходимо добавить реквизит «Валюта»
(тип «СправочникСсылка.Валюты»). в форму документа добавим реквизит формы
«Курс» (тип «Число»). В диалог формы добавим две надписи и одно поле ввода. Одну
из надписей через свойство «данные» свяжем с реквизитом формы «Курс», вторую
определим как гиперссылку и в свойстве «Нажатие» этого элемента управления
пропишем имя процедуры «ИсторияНажатие» Поле ввода через свойство «данные»
свяжем с реквизитом документа «Валюта».
Диалог
документа будет выглядеть следующим образом:
Текст
процедуры, которая будет выполняться при нажатии на гиперссылку приведен ниже:
Процедуру
«ВалютаПриИзменснии()» необходимо определить как обработчик события
«ПриИзменении» для элемента диалога, вязанного с реквизитом документа «Валюта».
Следует
отметить, что курс будет показываться только после выбора валюты, при открытии
уже заполненного документа этого происходить не будет. Но подобный результат
определяется
событием,
которое выбрали для заполнения реквизита формы «Курс», в случае необходимости
этот недостаток можно довольно просто устранить.
Регистр сведений «Цены поставщиков»
В
предыдущем примере мы рассмотрели основы работы с регистром сведений, у
которого был «Независимый» режим записи. Теперь рассмотрим пример, когда запись
ведется регистратором.
Поставим
перед собой задачу создать механизм, позволяющий отслеживать приходные цены
номенклатуры в разрезе поставщиков.
Создадим
регистр сведений «ЦеныПоставшиков». Регистр сведений периодический (по позиции
регистратора), режим записи «Подчинение регистратору». У него два измерения
«Поставщик», «Номенклатура» и один ресурс «Цена». Настройте форму списка и
форму набора записей.
Так
как запись ведется регистратором (по смыслу документом «Приходная»), необходимо
модифицировать данный документ. А именно: разрешить проведение и вставить в
модуль документа (объекта) процедуру проведения, текст которой приводится ниже.
Текст
процедуры можно ввести вручную, а можно воспользоваться конструктором. Для его
вызова на закладке «Движения» необходимо нажать кнопку «Конструктор движений».
Проверьте
работоспособность созданного вами механизма.
Практикум
№7
Определите
регистр сведений, который будет содержать данные о количестве рабочих часов в
указанный день. Данному объекту дайте имя: <График>. Он не должен быть
периодическим.
Планы видов характеристик
Данный
вид объекта имеет очень много схожих характеристик со справочником. Самое
существенное его отличие (от справочника) в том, что для каждого элемента
существует такое свойство как «Тип».
С
помощью данного объекта попробуем для справочника «Номенклатура» реализовать
механизм внесения любого количества свойств различных типов.
Следует
отметить, что подобный механизм можно реализовать и через справочник, но в том
случае если нужно контролировать типы свойств, наиболее просто его реализовать
через план видов характеристик (в записи плана видов характеристик будет
находиться, не только <наименование» свойства, но и его тип). Используя
возможность хранения «типа свойства» можно реализовывать всевозможные механизмы
контроля. Например, если указан для свойства «Фасовка» (элемент плана видов
характеристик) тип «СправочникСсылка.ЕдиницьтИзмерения», то в качестве значений
для данного свойства можно выбрать только ссылку на элемент справочника
«ЕдиницыИзмерения».
Начнем
с того, что необходимо создать объект «СвойстваОбъектов» в ветви «Планы видов
характеристик» дерева метаданных. Но прежде чем приступить к доопределению
свойств объекта, желательно создать справочник «ЗначенияСвойств» и подчинить
его объекту «СвойстваОбъектов».
В
качестве типа значения характеристик выбрать составной тип, его состав
представлен на рисунке.
В
качестве дополнительных значений характеристик используем справочник
«ЗначенияСвойств». На закладке «Прочие» можно определить перечень
предопределенных значений (свойств).
Определив
объекты «СвойстваОбъектов» и «ЗначенияСвойств», в конфигурацию был добавлен
механизм по хранению наборов свойств и их возможных типов значений. Для
хранения «привязки» свойств к определенному элементу справочника необходимо
использовать регистр сведений.
Создайте
регистр сведений «НазначениеСвойств». Определите у него два измерения:
•Позиция тип «СправочникСсылка.Номенклатура»
•Свойство тип «ПланВидовХарактеристикСсылкаСвойстваОбъектов»
Определите
один ресурс
• Значение тип «Характеристика.СвойстваОбъектов
Настройте формы созданных вами объектов и проверьте их
работу. При настройке формы для «включения» контроля типов (в самом простом варианте)
потребуется определить свойства: «связь по типу» и «связь по владельцу» для
поля ввода «Значение» в форме списка регистра сведений, как показано на
рисунке.
Регистры накопления
Регистры
накопления используются в системе для накопления информации о наличии и
движении средств товарных, денежных и других величин.
Можно
сказать, что регистр накопления представляет из себя n-мерную систему координат, в узлах которой
располагаются наборы числовых характеристик.
Так
же как и с регистром сведений, работа с регистром накопления заключается в
работе с записями (движениями регистра)
Различают
два вида регистров накопления:
• Регистры остатков
• Регистры оборотов
Начнем
знакомство с регистрами накопления с регистров остатков.
Регистр «Остатки номенклатуры
Создайте
регистр «ОстаткиНоменклатуры» (регистр остатков), определите у него одно
измерение «Номенклатура», два ресурса Количество», «Сумма», настройте формы
списка.
Остается
модифицировать документ «Приходная». Необходимо разрешить ему «двигать» данный
регистр и, используя конструктор движений, переопределить обработку проведения.
Использование конструктора для создания движений
регистра
Если
вести речь о регистрах остатков, то нельзя закончить разговор о данном объекте,
не ответив на вопрос: «На какую дату система хранит
рассчитанные
остатки». Ответ: «Соответствующая граница
выставляется
в пользовательском режиме».
Регистр накопления «Продажи»
Создадим
регистр оборотов «Продажи». Определите у него два измерения: «Номенклатура»,
«Контрагент», два ресурса:
«Количество»,
«Сумма». Настроим формы.
После
этого необходимо внести необходимые изменения в документ «Расходная». Требуется
разрешить документу «двигать» данный регистр, определить с по мощью
конструктора процедуру проведения документа.