Uploaded by krupeninanv

01.03.02 БазыДанныхиЭкспертныеСистемы ЛабРаб

advertisement
Федеральное агентство морского и речного транспорта
Федеральное государственное бюджетное образовательное
учреждение высшего образования
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
МОРСКОГО И РЕЧНОГО ФЛОТА
имени адмирала С. О. МАКАРОВА
Институт ВОДНОГО ТРАНСПОРТА
Кафедра вычислительных систем и информатики
А.Н. Егоров, Н.В. Крупенина
БАЗЫ ДАННЫХ И ЭКСПЕРТНЫЕ СИСТЕМЫ
ОСНОВЫ КОНФИГУРИРОВАНИЯ В СРЕДЕ
1С:ПРЕДПРИЯТИЕ 8
Методические указания по выполнению лабораторных
работ
Санкт-Петербург
Изд-во ГУМРФ имени адмирала С. О. Макарова
2017
1
УДК 514.18
ББК 22.151.3
Рецензент:
Доктор технических наук, профессор А. В. Макшанов
Егоров, А. Н., Крупенина Н.В. Базы данных и экспертные системы. Основы
конфигурирования в среде 1С:Предприятие 8. Методические указания по выполнению
лабораторных работ.— СПБ.: Изд-во ГУМРФ им. адм. С. О. Макарова, 2017. — 174 с.
Рассмотрены основные приемы разработки информационных систем учета
хозяйственной деятельности предприятия, интегрированные в лабораторный
практикум. В качестве инструментальной среды разработки используется
интегрированный пакет 1С:Предприятие версии 8.
Пособие предназначено для студентов академического и прикладного
бакалавриата по направлению 01.03.02 «Прикладная математика и информатика»,
изучающих дисциплину «Базы данных и экспертные системы». Пособие также может
быть использовано студентами и аспирантами других инженерно–технических
специальностей, желающими самостоятельно изучить вопросы построения
информационных систем на базе пакета 1С:Предприятие версии 8.
© ФГБОУ ВО «ГУМРФ имени адмирала С. О. Макарова», 2017
© А.Н.Егоров, Н.В. Крупенина, 2017
2
Содержание
ЛАБОРАТОРНЫЙ ПРАКТИКУМ ........................................................................ 6
1. Лабораторная работа № 1. Создание информационной базы данных ....... 6
1.1 Теоретические сведения............................................................................. 6
1.1.1 Регистрация информационной базы ................................................... 6
1.1.2 Подсистемы ........................................................................................... 9
1.1.3 Константы ............................................................................................ 10
1.1.4 Перечисления ...................................................................................... 13
1.2 Задание на лабораторную работу ............................................................ 17
1.3 Контрольные вопросы .............................................................................. 17
2. Лабораторная работа № 2. Справочники .................................................... 18
2.1 Теоретические сведения........................................................................... 18
1.1 Создание справочника с табличной частью........................................ 25
1.2 Создание иерархического справочника............................................... 28
1.3 Создание справочника с предопределенными элементами .............. 30
1.4 Создание подчиненного справочника ................................................. 32
1.5 Создание формы для работы со связанными справочниками .......... 36
2.2 Задание на лабораторную работу ............................................................ 43
2.3 Контрольные вопросы .............................................................................. 46
3. Лабораторная работа № 3. Документы ....................................................... 47
3.1 Теоретические сведения........................................................................... 47
3.1.1 Проведение документа ....................................................................... 49
3.1.2 Создание документа ........................................................................... 50
3.1.3 Создание формы документа .............................................................. 55
3.1.4 Создание процедуры обработки события в модуле формы ........... 57
3.1.5 Создание процедуры обработки события в общем модуле ............ 59
3.1.6 Усовершенствование формы документа .......................................... 61
3.1.7 Ввод документов на основании ......................................................... 65
3.2 Задание на лабораторную работу ............................................................ 70
3.3 Контрольные вопросы. ............................................................................. 72
4. Лабораторная работа № 4. Регистры сведений .......................................... 74
4.1 Теоретические сведения........................................................................... 74
4.1.1 Регистр сведений «КурсыВалют» ..................................................... 79
4.1.2 Отбор в диалоге .................................................................................. 81
4.1.3 Чтение значения курса валют ............................................................ 86
4.1.4 Регистр сведений «Цены поставщиков» .......................................... 87
4.1.5 Регистр сведений «Цены номенклатуры» ........................................ 90
4.1.6 Создание функции РозничнаяЦена() ................................................ 93
4.1.7 Автоматическое заполнение цены документа «ОказаниеУслуги» 94
4.2 Задание на лабораторную работу ............................................................ 95
4.3 Контрольные вопросы .............................................................................. 96
5. Лабораторная работа № 5. Регистры накопления ...................................... 98
3
5.1 Теоретические сведения........................................................................... 98
5.1.1 Проведение документа по нескольким регистрам......................... 101
5.1.2 Регистр «Остатки номенклатуры» .................................................. 102
5.1.2 Проведение документа «РасходнаяНакладная» ............................ 109
5.1.3 Оборотный регистр накопления «Продажи» ................................. 112
5.2 Задание на лабораторную работу .......................................................... 117
5.3 Контрольные вопросы ............................................................................ 119
6. Лабораторная работа № 6. Журналы документов. Критерии отбора .... 120
6.1 Теоретические сведения......................................................................... 120
6.1.1 Создание журнала документов ........................................................ 121
6.1.2 Создание критерия отбора ............................................................... 125
6.2 Задание на лабораторную работу .......................................................... 129
6.3 Контрольные вопросы ............................................................................ 130
7. Лабораторная работа № 7. Печатные формы справочников, документов,
журналов. .......................................................................................................... 131
7.1 Теоретические сведения......................................................................... 131
7.1.1 Печатные формы ............................................................................... 131
7.1.2 Макеты ............................................................................................... 132
7.1.3 Построение отчета ............................................................................ 138
7.1.4 Печатная форма элемента справочника ......................................... 139
7.1.5 Печатная форма списка справочника ............................................. 143
7.1.6 Расшифровка ячейки печатной формы........................................... 146
7.1.7 Печатная форма документа ............................................................. 149
7.1.8 Печатная форма журнала документов ............................................ 155
7.2 Задание на лабораторную работу .......................................................... 157
7.3 Контрольные вопросы ............................................................................ 157
8. Лабораторная работа № 8. Отчеты и обработки ...................................... 159
8.1 Теоретические сведения......................................................................... 159
8.1.1 Создание отчета «Материалы»........................................................ 160
8.1.2 Печать прайс листа ........................................................................... 166
8.1.3 Отчет «ЦеныПоставщиков» на заданную дату ............................. 167
8.2 Задание на лабораторную работу .......................................................... 170
8.3 Контрольные вопросы ............................................................................ 173
СПИСОК ЛИТЕРАТУРЫ ................................................................................... 174
4
Введение
1С:Предприятие является универсальной системой автоматизации
деятельности предприятия. За счет своей универсальности система 1С:
Предприятие может использоваться для автоматизации самых различных
участков деятельности организаций и предприятий.
Основной особенностью системы 1С:Предприятие является ее
конфигурируемость, т.е. возможность настройки системы на особенности
конкретного предприятия и класса решаемых задач. Это достигается тем,
что 1С: Предприятие - не просто программа, существующая в виде набора
неизменяемых файлов, а совокупность различных программных
инструментов, с которыми работают программисты и пользователи.
Цикл лабораторных работ предполагает знакомство обучающихся с
различными приемами обработки разнородной информации средствами
системы 1С: Предприятие.
5
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
1. Лабораторная работа № 1. Создание информационной базы данных
Цель работы. Получение навыков работы с конфигурацией,
создания и работы с константами и перечислениями, с глобальным
модулем.
1.1 Теоретические сведения
1.1.1 Регистрация информационной базы
Для создания информационной базы (ИБ) первоначально на жестком
диске компьютера создайте собственную рабочую папку. Запустите
конфигуратор щелчком по ярлыку на рабочем столе и зарегистрируйте
конфигурацию в этой папке, как пустую ИБ. Для этого после запуска
платформы в появившемся окне необходимо воспользоваться кнопкой
«Добавить…» (рис. 1), в ответ откроется «Мастер регистрации ИБ» (рис.
2). На этом шаге надо указать, что создается новая ИБ, и щелкнуть на
кнопке «Далее>».
Рис. 1 Список зарегистрированных конфигураций
6
Рис. 2 Первый шаг мастера регистрации конфигурации
В ответ откроется диалог второго шага мастера (рис. 3), где надо
указать, что создается пустая ИБ, и щелкнуть на кнопке «Далее>». В ответ
откроется диалог третьего шага мастера (рис. 4), где необходимо задать
наименование ИБ, тип расположения ИБ и щелкнуть на кнопке «Далее>».
Рис. 3 Второй шаг мастера регистрации ИБ
Рис. 4 Третий шаг мастера регистрации ИБ
7
В ответ откроется диалог четвертого шага мастера конфигурации,
где надо указать путь к каталогу ИБ и задать язык работы платформы,
затем щелкнуть на кнопке «Готово» (рис. 5). В ответ ИБ будет
зарегистрирована в ярлыке запуска (рис. 6).
Для
начала
работы
с
конфигурацией
надо
нажать
кнопку
«Конфигуратор» и зайти в режим редактирования конфигурации через
главное меню «Конфигурация → Открыть конфигурацию». В ответ на
экране появится дерево конфигурации, в котором производится вся работа
по настройке прикладного решения (рис.7).
Рис. 5 Четвертый шаг мастера регистрации ИБ
Рис. 6 Зарегистрированная конфигурация
8
Рис. 7 Дерево конфигурации
Начнем знакомство с объектами конфигурации.
1.1.2 Подсистемы
В создаваемой конфигурации необходимо будет реализовать три
«направления» учета: торговля, бухгалтерия и учет персонала. В
соответствии с этим в конфигурации будут объекты, которые принадлежат
либо одному из направлений, либо обоим сразу. Для организации отборов
по «направлениям» при работе с конфигурацией можно использовать
подсистемы.
Можно
сказать,
что
они
выступают
как
средство
дополнительной классификации объектов конфигурации (с возможностью
отбора). На структуру объектов ветви «Подсистемы» не накладывается
никаких ограничений по числу и вложенности.
Рис. 8 Ветви «Подсистемы»
Для добавления подсистемы необходимо внутри ветви «Общие»
щелкнуть правой клавишей мыши и в открывшемся контекстном меню
выбрать «Добавить». В ответ откроется диалог создания подсистемы, в
9
котором надо задать ее имя (рис. 9). В соответствии с поставленной
задачей
необходимо
добавить
три
подсистемы:
«Бухгалтерия»,
«Торговля», «Кадры».
Рис. 9 Создание подсистемы
1.1.3 Константы
В любой организации существует набор «значений», которые не
меняются довольно длительное время. К ним можно отнести название
фирмы, юридический адрес, фамилии ответственных лиц и т.д. Для
хранения таких значений идеально подходят константы.
Создадим константу «НазваниеОрганизации». Для этого сделаем
щелчок правой клавишей мыши на ветке «Константы» и выберем пункт
«Добавить». В открывшемся окне свойств заполним их необходимыми
значениями (рис. 10).
Поскольку константа относится ко всем подсистемам, то в качестве
подсистемы выбираем корневой элемент – «Конфигурация».
Рис. 10 Создание константы
10
Аналогичным образом создайте константу «Юридический адрес».
Тип данных константы «Строка», длина 60 символов.
На этом работа с константами не завершилась. Мало того, что они
были созданы, теперь необходимо создать форму для их просмотра и
редактирования. Форма является одним из основных интерфейсных
средств системы 1С:Предприятие для обеспечения взаимодействия с
пользователем. Для ее создания необходимо щелкнуть правой клавишей
мыши на ветке «Константы» и выбрать пункт контекстного меню «Создать
форму констант» (рис. 11).
После выполнения данного действия откроется конструктор форм,
где на первом этапе будет предложено задать «Имя», «Синоним»,
«Комментарий», выбрать тип формы и выбрать варианты расположения
панелей управления формой (в нашем случае предлагается снять флажок
«Командная панель формы снизу») (рис. 12).
Рис. 11 Запуск конструктора форм для константы
Рис. 12 Первый шаг конструктора форм констант
11
На втором шаге (рис. 13) предлагается выбрать перечень констант,
помещаемых на форму, и проставить соответствие между ними и
элементами формы. Список возможных вариантов зависит от типа
константы.
Рис. 13 Второй шаг конструктора форм констант
После выполнения всех действий остается нажать на кнопку
«Готово» и оценить полученный результат. Он будет выглядеть так, как
представлено на рис. 14.
Рис. 14 Форма ввода констант в режиме редактора форм
Созданная форма будет находиться (в случае необходимости ее
корректировки) в ветви дерева метаданных «Общие», в ветви «Общие
формы».
Следует отметить, что, несмотря на существенные различия типов
объектов, для которых может производиться создание формы, их
конструкторы имеют много общего. Отличие будет заключаться в
количестве типов форм. В нашем случае у константы их два –
12
произвольная форма и форма константы. По каждому типу форм может
быть создано сколько угодно форм. Если у объекта несколько форм одного
типа, то одну из них можно сделать основной. Сколько бы типов форм ни
было представлено в конструкторе, всегда один из них называется
«Произвольная форма». Форму для констант можно было бы создать и
напрямую в ветви «Общие формы», выбрав из контекстного меню пункт
«Добавить».
1.1.4 Перечисления
Перечисления используются в системе 1C:Предприятие 8 для
описания постоянных наборов значений, не изменяемых в процессе работы
конфигурации.
В
отличие
от
элементов
справочников,
значения
перечислений вводятся на этапе разработки прикладного решения и не
могут быть изменены в процессе работы с программой. Пользователь
обычно выбирает одно из значений перечисления.
Типичными примерами перечислений являются:
• ТипКлиента (значения: «Обычный», «Важный»);
• Пол (значения: «Мужской», «Женский»);
• ВидКонтрагента (значения: «ЧастноеЛицо», «Организация»).
Список значений перечисления нельзя редактировать, так как
алгоритм конфигурации ориентирован на наличие определенных значений.
При изменении значений перечисления возможно потребуется изменение
программных модулей, иначе программа перестанет правильно работать.
Создадим перечисление «Образование». Для этого сделаем щелчок
правой клавишей мыши на ветке «Перечисления» и выберем пункт
«Добавить». В открывшемся окне свойств заполним их необходимыми
значениями и щелкнем по кнопке «Далее» для перехода к следующему
шагу мастера (рис. 15).
13
Рис. 15 Задание реквизитов перечисления
На следующем шаге мастера создания перечисления надо указать все
его значения. Для этого последовательно щелкаем мышью по кнопке
«Добавить» и заполняем значения свойств элементов перечисления (рис.
16).
Рис. 16 Задание значений перечисления
Далее щелчком по кнопке «Далее» переходим к следующему шагу
мастера, где можно создать форму для работы с перечислением в
пользовательском режиме (рис. 17).
14
Рис. 17 Создание формы для перечисления
На последнем шаге мастера необходимо указать подсистемы (рис.
18), которые будут работать с данным перечислением. Так как
перечисление относится ко всем подсистемам, то в качестве подсистемы
выбираем корневой элемент – «Конфигурация».
Рис. 18 Выбор подсистем
При
настройке
конфигурации
периодически
надо
сохранять
сделанные изменения и просматривать получившуюся конфигурацию. Для
этого надо перейти в пользовательский режим либо начав отладку (нажав
15
клавишу [F5]), либо запустив пользовательский режим из конфигурации
(нажав комбинацию клавиш [Ctrl]+[F5]). Если с момента последнего
запуска пользовательского режима в конфигурацию были внесены
изменения, то появится диалоговое окно, представленное на рис. 19.
Рис. 19 Запрос на обновление конфигурации БД
При нажатии на кнопку «Да» запустится процесс реорганизации
информации, и по его окончанию будет выдано диалоговое окно с
внесенными в конфигурацию изменениями (рис. 20). При выборе кнопке
«Принять» внесенные изменения будут утверждены, а при выборе кнопки
«Отмена» – отвергнуты, после этого будет запущен пользовательский
режим, в котором можно ИБ заполнять данными.
В пользовательском режиме для доступа к константам надо
запустить форму констант через пункт главного меню «Операции →
Константы».
Рис. 20 Принятие внесенных изменений
16
1.2 Задание на лабораторную работу
1. Зарегистрировать вновь созданную конфигурацию.
2. Создать подсистемы «Торговля», «Бухгалтерия», «Кадры».
3. Создать
перечисления:
«Настроение»
с
элементами
«Плохое»,
«Хорошее», «Нормальное»; «Образование» с элементами «Начальное»,
«Среднее»,
«Высшее»,
«СоциальноеПоложение»
с
элементами
«СреднееСпециальное»;
«Рабочий»,
«Служащий»,
«Домохозяйка», «Учащийся», «Студент»; «ТипКлиента» с элементами
«Обычный», «Важный»; «Пол» с элементами «Мужской», «Женский»;
«ВидКонтрагента» с элементами «ЧастноеЛицо», «Организация».
4. Создать константы: «НаименованиеОрганизации» – строка (30
символов), «ЮридическийАдрес» – строка (60 символов),
«ТипОрганизации» типа перечисление «ВидКонтрагента» и форму для
визуализации констант.
5. Заполнить константы данными в пользовательском режиме.
6. Продемонстрировать работоспособную конфигурацию.
1.3 Контрольные вопросы
 Основные составляющие системы 1С:Предприятие.
 Понятие платформы.
 Понятие конфигурации.
 Понятие дерева конфигурации.
 Режимы запуска среды 1С:Предприятие.
 Константы среды 1С:Предприятие.
 Перечисления в среде 1С:Предприятие.
17
2. Лабораторная работа № 2. Справочники
Цель работы. Получение навыков работы со справочниками,
создание многоуровневых справочников, использование подчиненных
справочников. Создание и редактирование различных форм представления
справочников.
2.1 Теоретические сведения
Объект конфигурации типа «Справочник» является прикладным
объектом и предназначен для описания списков данных. Он используется
для того, чтобы на его основе платформа создала в БД информационную
структуру, в которой будет храниться множество однотипных значений,
например, списки материалов, товаров, организаций, валют, сотрудников.
Характерной особенностью объекта конфигурации «Справочник»
является то, что пользователь в процессе работы может самостоятельно
добавлять новые элементы в справочник, например, добавить в справочник
сотрудников нового работника, либо занести в справочник клиентов новую
организацию.
Каждый элемент справочника помимо обязательных элементов,
таких как код и наименование, содержит некоторую дополнительную
информацию, которая более подробно описывает этот элемент. Например,
каждый элемент справочника «Номенклатура» содержит дополнительную
информацию о товаре, такую как сведения о производителе, сроке
годности и т.д. Этот набор дополнительной информации является
одинаковым для всех элементов справочника, а для описания такого
набора используются реквизиты объекта конфигурации, которые, в свою
очередь, также являются объектами конфигурации. Поскольку эти
вспомогательные объекты логически связаны с объектом «Справочник», то
они называются подчиненными.
Название и структура конкретного справочника определяется при
его создании в конфигураторе.
18
Кроме того, каждый элемент справочника может содержать
некоторый набор информации, которая одинакова по своей структуре, но
различна по количеству для разных элементов справочника. Так,
например, каждый элемент справочника «Сотрудники» может содержать
информацию о составе семьи сотрудника. Для одного сотрудника семья
может состоять только из двух человек, а для другого может быть гораздо
больше. Для описания подобной информации могут быть использованы
табличные части объекта конфигурации «Справочник», являющиеся
подчиненными объектами конфигурации.
Для удобства использования, элементы справочника могут быть
сгруппированы пользователем по некоторому принципу, например, в
справочнике «Номенклатура» могут быть созданы группы «Бытовая
техника», «Парфюмерия», которые, в свою очередь, могут быть разделены
на подгруппы «Холодильники», «Телевизоры», «Стиральные машины» и
т.д. Возможность создания таких групп в справочнике задается свойством
«Иерархический» объекта конфигурации «Справочник». В этом случае
элемент справочника, представляющий собой группу, будет являться
родителем для всех элементов и групп, входящих в эту группу. Такой вид
иерархии называется иерархией групп и элементов.
Возможен и другой вид иерархии – иерархия элементов. В этом
случае в качестве родителя выступает не группа элементов справочника, а
непосредственно один из элементов справочника. Например, такой вид
иерархии
можно
«Подразделения»,
использовать
когда
одно
при
создании
подразделение
является
справочника
родителем
нескольких других подразделений, входящих в его состав.
Элементы одного справочника могут быть подчинены элементам или
группам
другого
справочника.
Например,
справочник
«ЕдиницыИзмерения» может быть подчинен справочнику «Номенклатура»,
тогда для каждого элемента справочника «Номенклатура» можно будет
указать единицы измерения, в которых этот товар поступает на склад. В
19
среде 1С:Предприятие для этого используется механизм владельцев
справочника.
Часто
встречаются
ситуации,
когда
необходимо,
чтобы
в
справочнике некоторые элементы существовали всегда, независимо от
действий пользователей. Пусть логика бизнес–процессов на предприятии
такова, что все товары поступают сначала на основной склад, а, затем, по
мере надобности, перемещаются на другие склады. В этом случае в
справочнике «Склады» всегда должен существовать элемент – склад
«Основной», иначе оприходование товаров будет выполнено неправильно.
Объект конфигурации «Справочник» позволяет описать любое количество
таких предопределенных элементов справочника.
В зависимости от того, какие действия необходимо произвести над
справочником, требуется изображать справочник в «разном виде».
Например, для того, чтобы выбрать некоторый элемент справочника,
удобнее представить справочник в виде списка, а для того, чтобы изменить
какой-то элемент справочника, удобно представить все реквизиты этого
справочника на одной форме – форме элемента. Учитывая это, объект
конфигурации «Справочник» может иметь произвольное количество форм,
часть из которых можно назначить в качестве основных форм
справочника.
Форма служит для «визуализации» данных, находящихся в БД.
Форма представляет эти данные в удобном для пользователя виде и
позволяет описать алгоритмы, которые будут сопровождать работу
пользователя с данными, представленными в форме.
В таблице 1 приведены названия этих форм, заданные в
конфигураторе.
Таблица 1 Перечень форм конфигуратора, доступных разработчику
Объект конфигурации
«Справочник»
Основная форма объекта
Основная форма группы
Основная форма списка
Справочник
Форма элемента справочника
Форма группы элементов справочника
Форма списка справочника
20
Основная форма для выбора
Основная форма выбора группы
Форма для выбора элемента или группы
справочника
Форма элемента для выбора группы элементов
справочника
Любая форма может быть описана в конфигураторе. Для создания
такого описания существует подчиненный объект «Форма». Как правило,
он подчинен одному из прикладных объектов, но может существовать и
самостоятельно. На основании описания, содержащегося в объекте
конфигурации «Форма», с которым и будет работать пользователь.
Знакомство со справочниками начнем с создания справочника
клиентов, с которыми работает фирма. Первоначально задача будет
состоять в том, чтобы создать справочник, в котором будут храниться
наименования клиентов. Для этого необходимо открыть конфигурацию,
щелчком правой кнопки мыши открыть контекстное меню справочника, и
выбрать там пункт «Добавить», и в ответ среда откроет окно
редактирования объекта (рис. 21).
Рис. 21 Окно редактирования справочника
Это окно создано специально для сложных объектов конфигурации и
позволяет
путем
выполнения
последовательных
действий
быстро
создавать такие объекты. Для того, чтобы придерживаться правильной
21
последовательности действий, в нижней части окна имеются кнопки
«Далее» и «Назад». Кнопка «Далее» позволяет задавать свойства объекта в
нужной
последовательности,
чтобы
ничего
не пропустить,
и
не
проскочить вперед, где потребуются данные, которые должны были быть
введены ранее. Кнопка «Назад» позволяет вернуться на несколько шагов
назад, если обнаружена ошибка в ранее введенных данных.
На первом шаге надо задать имя справочника – «Клиенты». Имя
является основным свойством любого объекта конфигурации. При
создании нового объекта система автоматически присваивает ему
некоторое имя. Можно использовать имя, присвоенное системой, но
лучше, заменить его смысловым именем предметной области. Имя можно
задать любое, но оно должно начинаться с буквы и не содержать
специальных символов, например, пробелов.
На основании имени система автоматически создаст одноименный
синоним. Свойство «Синоним» также есть у любого объекта конфигурации.
Оно предназначено для хранения «альтернативного наименования объекта
конфигурации», которое будет использовано в элементах интерфейса
программы, т.е. будет показано пользователю, поэтому на синоним не
накладывается никаких ограничений, и его можно задавать в привычном
виде.
Нет смысла задавать все подряд свойства объекта конфигурации
«Справочник», можно использовать заданные по умолчанию, поэтому три
раза щелкнем по кнопке «Далее», и окажемся на вкладке «Данные». Здесь
можно задать длину кода и длину наименования. Длина кода – важное
свойство справочника. Как правило, код справочника используется для
идентификации элементов справочника, и содержит уникальные для
каждого
элемента справочника значения. Платформа может сама
контролировать уникальность кодов и поддерживать автоматическую
нумерацию элементов справочника.
22
Поскольку уникальность кодов система отслеживает сама, то от
длины кода зависит количество элементов, которые могут содержаться в
справочнике. Согласно стандартам фирмы «1С», длина кода, если это не
противоречит логике проекта, должна быть фиксированной – 5 символов.
Считается, что этого достаточно для любого справочника любой типовой
конфигурации. Длина кода в 5 символов – это значения кодов от 0 до
99999, т.е. 100000 элементов. Для небольшой фирмы этого вполне
достаточно.
Перейдем к длине наименования. Что касается длины наименования,
то следует избегать завышенной длины, поскольку наименование, в
большинстве случаев, является основным представлением, и не должно
занимать слишком много места в диалоговых формах. Для большего
порядка, предлагается пользоваться вариантами:
 25 символов для небольших справочников;
 50 символов для справочников, которым 25 символов мало;
 100 символов для справочников, которым 50 символов мало.
Двадцать пять символов для наименования клиента явно мало,
поэтому увеличим длину наименования до 50 символов.
Рис. 22 Задание длины кода и наименования справочника
Теперь давайте посмотрим, что создаст система на основе того
объекта конфигурации «Справочник.Клиенты», который мы создали.
Через основное меню выберем пункт «Отладка → Начать отладку».
В ответ появится диалог с предложением обновления конфигурации БД
(рис. 23), в котором надо ответить «Да», а затем следующий диалог по
принятию сделанных изменений (рис. 24), в котором необходимо выбрать
23
пункт «Принять». В результате откроется окно пользовательского режима
среды «1С:Предприятие». Поскольку в конфигурации не было создано
никаких интерфейсов пользователей, то для просмотра результатов работы
надо воспользоваться меню, созданным по умолчанию. Для этого
посредством главного меню выберем пункт «Операции → Справочники»,
и в появившемся диалоге выберем справочник «Клиенты».
Рис. 23 Предложение обновления конфигурации
Рис. 24 Принятие изменений конфигурации
В ответ система откроет одну из основных форм справочника –
основную форму списка. Пока справочник «Клиенты» пуст. Для
добавления в него очередной строки таблицы необходимо щелкнуть по
кнопке
«Добавить»
панели
инструментов
диалогового
окна
редактирования справочника. В ответ текущая строка таблицы диалога
станет доступна для редактирования, в которой требуется задать код и
ФИО клиента, нажимая по завершению ввода клавишу [Enter]. После
добавления всех элементов справочник будет выглядеть так, как показано
на рис. 25.
24
Рис. 25 Форма списка справочника «Клиенты»
1.1 Создание справочника с табличной частью
Закроем окно пользовательского режима и вернемся в конфигуратор
для создания справочника «Сотрудники». Этот справочник будет устроен
несколько сложнее, чем справочник «Клиенты». Дело в том, что в нем мы
будем хранить не только ФИО сотрудника, но и информацию о его
прошлой трудовой деятельности. Эта информация, однородная по своей
структуре
(организация,
начало
и
окончание работы,
занимаемая
должность), характеризуется тем, что количество предыдущих мест работы
у разных сотрудников может быть различным. Поэтому для хранения
такой информации будем использовать табличную часть справочника.
Создадим аналогичным образом справочник «Сотрудники» с кодом длины
5 и наименованием длины 50. На закладке «Данные» зададим длину кода и
наименования
и добавим в справочник новую табличную часть
«ТрудоваяДеятельность», щелкнув по кнопке
«Добавить табличную
часть» (рис.26).
Рис. 26 Создание табличной части справочника
Создадим последовательно реквизиты табличной части
«ТрудоваяДеятельность»:
 «Организация» – строка длины 100;
25
 «НачалоРаботы» – дата;
 «ОкончаниеРаботы» – дата;
 «Должность» – строка длины 100.
Для этого надо подсветить щелчком мыши табличную часть, а затем
щелкнуть по кнопке
«Добавить реквизит» (рис. 27, рис. 28).
Согласно стандартам фирмы «1С» рекомендуется использовать
следующие значения для реквизитов объектов конфигурации:
 реквизит «Флаг» – булевский тип;
 реквизит «Сумма» – длина 15, точность 2;
 реквизит «Количество» – длина 15, точность 3;
 реквизит «Коэффициент» – длина 10, точность 3;
 реквизит «Курс» – длина 10, точность 4;
 реквизит «Процент» – длина 5, точность 2;
 строковые реквизиты – допустимая длина должна быть в большинстве
случаев переменной. Неограниченная длина назначается лишь в том
случае, если реквизит часто может быть не заполнен, либо количество
символов больше 100, т.к. строки неограниченной длины хранятся
порциями, а пустые строки не занимают места.
Рис. 27 Создание реквизита табличной части
Теперь следует выбрать вариант редактирования справочника.
Редактирование в списке нам уже не подойдет, т.к. в списке невозможно
редактировать табличную часть справочника и вводить информацию о
26
трудовой деятельности. Поэтому в справочнике «Сотрудники» выберем
вариант редактирования справочника обоими способами – как в списке,
так и в диалоге.
Для этого перейдем на вкладку «Формы» и установим там
соответствующий
переключатель
(рис.
29).
Создание
справочника
«Сотрудники» завершено – теперь можно перейти в пользовательский
режим и заполнить справочник данными (через пункт основного меню
«Отладка»). Создайте несколько записей для сотрудников, при этом
обратите внимание на то, что строки табличной части справочника можно
сортировать по содержимому любой из колонок, либо располагать в
произвольном порядке, используя соответствующую панель инструментов
(рис. 30).
Рис. 28 Редактирование табличной части справочника
27
Рис. 29 Задание способа редактирования справочника
Рис. 30 Редактирование элемента справочника в диалоге
1.2 Создание иерархического справочника
Теперь перейдем к созданию справочника «Номенклатура», который
будет содержать информацию о товарах и услугах, предлагаемых фирмой.
Основная особенность этого справочника – наличие иерархической
структуры. Для того, чтобы справочником было удобно пользоваться,
сгруппируем услуги в одну группу, а материалы – в другую, кроме того,
ввиду большого числа оказываемых услуг и используемых материалов,
они логически будут собраны в несколько групп.
Создадим
справочник
«Номенклатура»,
указав
на
закладке
«Иерархия» признаки иерархичности, на закладке «Данные» задать длину
кода – 10, тип кода – «Строка», а длину наименования справочника – 100
символов (рис. 31).
28
Рис. 31 Задание иерархичности справочника
Далее, запустим 1С:Предприятие в режиме отладки и заполним
справочник «Номенклатура». В форме списка иерархического справочника
слева находится дерево иерархии, функционально сходное с деревом
каталогов
Проводника
ОС
WINDOWS.
В
процессе
заполнения
справочника надо создать две группы в корне справочника: «Материалы» и
«Услуги» (рис. 32).
Рис. 32 Форма иерархического справочника.
Для создания в справочнике элемента – группы используется кнопка
– «Создание новой группы (CTRL+F9)».
В группе «Материалы» надо создать следующие элементы:
 Строчный трансформатор Samsung;
29
 Строчный трансформатор GoldStar;
 Транзистор Philips 2N2369;
 Шланг резиновый;
 Кабель электрический.
В группе «Услуги» тоже создадим несколько элементов:
 Диагностика;
 Ремонт отечественного телевизора;
 Ремонт импортного телевизора;
 Подключение электричества;
 Подключение воды.
Теперь разнесем услуги по двум смысловым группам: «Телевизоры»
и «Стиральные машины». Для этого создадим в группе услуги две
подгруппы и переместим созданные услуги в соответствующие подгруппы.
Для перемещения элемента справочника из одной группы в другую,
надо в окне списка установить курсор на тот элемент, который требуется
перместить, а затем нажать кнопку
«Переместить элемент в другую
группу (Ctrl+Shift+M)», в ответ откроется диалог, в котором надо выбрать
группу текущего справочника, куда требуется переместить элемент.
1.3 Создание справочника с предопределенными элементами
Создадим
справочник
«Склады»,
который
будет
содержать
информацию о складах, имеющихся в организации. Этот справочник будет
содержать один предопределенный элемент – склад «Основной», на
который будут поступать все материалы. У этого справочника код будет
строковый – 5 символов, а наименование длиной 25 символов.
Для создания предопределенных элементов надо перейти на вкладку
«Прочие» и нажать кнопку «Предопределенные». В ответ система откроет
список предопределенных элементов справочника. Первоначально он пуст,
поэтому щелкнем по кнопке
«Добавить». В ответ откроется диалог по
заполнению реквизитов предопределенного элемента (рис. 33).
30
Рис. 33 Диалог заполнения реквизитов предопределенного элемента
Обратите внимание на то, что помимо наименования надо задать еще
и имя предопределенного элемента (рис. 34). В дальнейшем, при
использовании средств встроенного языка, к этому элементу можно
обратиться по имени, заданному в конфигураторе.
Рис. 34 Созданный предопределенный элемент
Зайдите в режим отладки, откройте справочник «Склады» и добавьте
туда еще один элемент «Розничный» (рис. 35).
Рис. 35 Справочник с предопределенным элементом в пользовательском
режиме
Обратите
внимание,
что
система
отмечает
различными
пиктограммами простой и предопределенный элементы справочника.
Несмотря на то, что можно изменить код или наименование этих
элементов, удаление (постановка пометки на удаление) возможно только
для простых элементов справочника. При попытке пометить на удаление
31
предопределенный элемент система выдаст предупреждение, текст
которого представлен на рис. 36.
Рис. 36 Попытка удаления предопределенного элемента
Таким образом, можно обозначить две характерные особенности
предопределенных элементов:
 на
предопределенные
элементы
могут
опираться
алгоритмы
конфигурации, т.к. возможно обращение к ним из встроенного языка по
имени;
 предопределенные элементы
являются объектами
базы
данных,
которые нельзя удалить в режиме «1С:Предприятие».
Основное
заключается
в
отличие
том,
что
предопределенных
обычные
и
элементы
обычных
элементов
«непостоянны»
для
конфигурации. В процессе работы пользователя они могут появиться и
исчезнуть, поэтому конфигурация хоть и может отличить их друг от
друга, но рассчитывать на них в выполнении каких–либо алгоритмов она
не может в силу их «непостоянства».
Предопределенные элементы напротив, «постоянны». В процессе
работы пользователя они находятся всегда на своих местах и исчезнуть не
могут, поэтому с ними конфигурация может работать вполне уверенно и
опираться на них при отработке различных алгоритмов. По этой причине
каждый из предопределенных элементов имеет уникальное имя для того,
чтобы к ним можно было обратиться средствами встроенного языка.
1.4 Создание подчиненного справочника
Между
справочниками
может
быть
установлено
отношение
подчиненности. В терминах реляционных баз данных, между таблицами
устанавливается связь «один–ко–многим». В этом случае каждый элемент
32
подчиненного
справочника
будет
связан
с
одним
из
элементов
справочника–владельца. Тогда можно сказать, что элементы одного
справочника принадлежат элементам другого. Например, в системе может
быть справочник «Дети». Тогда его можно сделать подчиненным
справочнику «Сотрудники». Это означает, что "Сотрудник имеет детей".
Если
между
справочниками
установлено
отношение
подчиненности, то в этом случае каждый элемент подчиненного
справочника будет связан с одним из элементов справочника–владельца.
Таким образом, можно сказать, что элементы одного справочника владеют
элементами другого (таблица 2).
Например, в системе может быть справочник «РасчетныеСчета»,
тогда его можно сделать подчиненным справочнику «Контрагенты».
Это означает, что «Контрагент владеет расчетными счетами, а
расчетные счета принадлежат контрагенту».
В системе 1C:Предприятии 8 у справочника может быть несколько
владельцев, т.е. справочник может быть подчинен сразу нескольким
справочникам или другим объектам. Но каждый элемент подчиненного
справочника имеет одного и только одного владельца, который хранится в
одном из объектов–владельцев.
Например,
справочник
«РасчетныеСчета»
может
быть
одновременно подчинен справочнику «Контрагенты» и справочнику
«Клиенты».
Таблица 2 Пример отношения подчиненности между справочниками
Справочник Сотрудники




Иванов Иванов Иванов
Петров Петр Петрович
Светлов Михаил Петрович
Цветков Антон Васильевич




Иванов Иванов Иванов
Петров Петр Петрович
Светлов Михаил Петрович
Цветков Антон Васильевич
Справочник Дети
(владелец Петров Петр Петрович)


Петров Павел Петрович
Петрова Анна Петровна
(владелец Светлов Михаил Петрович)


33
Светлова Елена Михайловна
Светлов Иван Михайлович

Светлов Денис Михайлович
Структура расчетного счета одинакова при любом владельце.
Поэтому целесообразно завести не два разных справочника, каждый из
которых подчинен или справочнику «Клиенты», или справочнику
«Контрагенты», а один справочник «РасчетныеСчета№», подчиненный
сразу двум справочникам. При этом каждый расчетный счет будет
принадлежать только одному владельцу (или клиенту, или контрагенту).
Такая схема позволит избавиться от дублирования кода и упростить
конфигурацию.
Справочник может быть подчинен не только другим справочникам,
но также планам видов характеристик и планам счетов. Назначение такого
подчиненного
справочника
–
хранение
подчиненных
объектов
о
конкретной характеристике или о конкретном счете.
Например, можно завести справочник «ЗначенияДопСвойств»,
подчиненный плану видов характеристик «ДопСвойства». Это означает,
что в справочнике будет храниться перечень возможных значений для
каждой характеристики, например, список цветов (красный, зеленый,
синий) для такой характеристики, как «Цвет», или для характеристики
«Тип разъема» значения «PS/2», «USB» и т.д.
В системе 1С:Предприятие 8 для подчиненных справочников
реализовано
свойство
«ИспользованиеПодчинения».
Оно
позволяет
управлять ограничением, накладываемым на владельцев. В качестве
владельца могут использоваться только группы, только элементы или
комбинированный вариант – группы и элементы. Если у справочника
несколько владельцев, то ограничение применяется к каждому из них.
Среди различных вариантов настройки серий кодов есть вариант «В
пределах
подчинения
владельцу».
В
иерархических
подчиненных
справочниках он обеспечивает автоматическую нумерацию и контроль
34
уникальности кодов среди элементов с одинаковым владельцем, но
разными родителями.
Для задания подчиненности справочника надо перейти на закладку
«Владельцы» и пополнить список владельцев справочника, щелкнув по
кнопке
(рис. 37). В ответ откроется диалог с совокупностью флажков,
соответствующих
справочникам
системы,
где
надо
поставить
соответствующие отметки (рис. 38).
В
пользовательском
режиме
подчиненные
справочники
просматриваются и редактируются только через элемент справочника –
владельца (рис 39). Для доступа к элементам подчиненного справочника
надо открыть форму списка или форму элемента справочника – владельца.
Далее выбрать там нужный элемент, а затем для открытия формы списка
подчиненного справочника щелкнуть по кнопке «Перейти» и выбрать в
открывшемся списке имя подчиненного справочника.
Рис. 37 Задание подчиненности справочника
35
Рис. 38 Указание владельцев справочника
Рис. 39 Форма списка справочника – владельца
1.5 Создание формы для работы со связанными справочниками
При работе в пользовательском режиме удобнее иметь на экране
сразу связанные элементы двух справочников, а не перемещаться по
нескольким экранам, для этого надо построить форму элемента
конструктором форм, а затем ее подправить. Для этого необходимо
перейти
на
вкладку
«Формы»
справочника,
там
указать,
что
редактирование справочника будет производиться в диалоге, и щелкнуть
по кнопке
«Добавить» для запуска мастера создания формы (рис. 40).
36
Рис. 40 Создание формы списка справочника
На первом шаге мастера надо указать тип формы («Форма списка
справочника») и поставить флажки «Назначить форму основной»,
«Командная панель формы сверху», «Командная панель формы снизу»,
затем щелкнуть по кнопке «Далее>» (рис. 41). На втором шаге задается
список реквизитов справочника, помещаемых в форму. Для этого рядом с
требуемыми реквизитами необходимо поставить флажки и щелкнуть по
кнопке «Далее>» (рис. 42).
Рис. 41 Первый шаг работы мастера формы списка
37
Рис. 42 Второй шаг работы мастера формы списка
В
итоге
на
экране
появляется
форма
списка
справочника
«Сотрудники», в котором на левой панели представлен объект типа
«СправочникДерево», а на правой – объект типа «СправочникСписок».
Для дальнейшей настройки формы списка справочника «Сотрудники» в
диалог формы необходимо поместить два элемента диалога «Табличное
поле», определив им имена:
 «ТрудоваяДеятельность», тип «ЭлементыФормы.СправочникСписок.
ТекущиеДанные.ТрудоваяДеятельность». Это делается посредством
использования пункта главного меню «Форма» → «Вставить элемент
управления», в ответ откроется диалог «Вставка элемента управления»
(рис. 43), где надо задать его тип значения «Табличное поле», имя
«ТрудоваяДеятельность», тип значения «ТаблицаЗначений», затем
открыть палитру свойств вновь созданного объекта (рис. 44), в которой
в
поле
«Данные»
выбрать
«ЭлементыФормы.СправочникСписок.
ТекущиеДанные.ТрудоваяДеятельность» (рис. 45). В результате форма
списка справочника «Сотрудники» приобретет вид, представленный на
рис. 46;
 «Подчиненный»,
тип
«СправочникСписок.Дети».
Это
делается
посредством использования пункта главного меню «Форма» →
«Вставить элемент управления», в ответ откроется диалог «Вставка
38
элемента управления» (рис.47), в котором необходимо задать его имя
«Подчиненный» и тип значения «СправочникСписок.Дети» (рис.48).
Рис. 43 Вставка элемента управления для табличной части
Рис. 44 Задание свойств табличного поля
Рис.45 Указание источника данных таблицы
39
Рис. 46 Форма списка с табличным полем
Рис. 47 Вставка элемента управления для подчиненного справочника
Рис.48 Указание типа данных для табличного поля
Выполненные действия приведут к тому, что в табличном поле будут
отображены колонки, содержащие код и наименование. Для «вывода»
колонки «ДатаРождения» необходимо подсветить щечком мыши вновь
40
размещенное табличное поле, и, сделав щелчок правой клавишей мыши,
либо выбрать пункт «Добавить колонку», либо пункт «Размещение
данных». В ответ откроется диалог «Размещение данных» (рис. 49), в
котором необходимо поставить флажки против всех реквизитов, которые
требуется поместить в табличное поле.
Рис. 49 Размещение данных подчиненного справочника
Далее, надо подсветить щелчком мыши все табличное поле
«Подчиненный»
и щелчком правой кнопки мыши выбрать пункт
«Свойства», затем прокрутить список вниз до рубрики «События», а там в
свойстве «Связь по владельцу» (рис.50) табличного поля «Подчиненный»
на
закладке
«События»
выбрать
значение
«СправочникСписок».
«ПриАктивизацииСтроки» (рис. 51). В результате форма списка связанных
справочников приобретет вид, представленный на рис. 5
В справочниках «Сотрудники» и «Дети» в качестве наименования
элемента справочника мы приняли фамилию, имя и отчество человека,
поэтому, естественнее было бы в форме в заголовке таблицы вместо текста
«Наименование» видеть текст «ФИО». Для этого надо изменить значение
свойства «ТекстШапки» соответствующего элемента (рис.53).
В результате работы форма списка для работы со связанными
справочниками в пользовательском режиме примет вид, представленный
на рис. 54.
41
Рис. 50 Задание способа связи главного и подчиненного справочников
Рис. 51 Указание события для связи
Рис. 52 Форма списка связанных справочников
42
Рис. 53 Изменение текста шапки таблицы
Рис. 54 Форма списка связанных справочников в пользовательском
режиме
2.2 Задание на лабораторную работу
1. Создать иерархический справочник «Клиенты» в соответствии с
данными структуры, представленными в таблице 3.
Таблица 3 Данные структуры иерархического справочника «Клиенты»
Реквизит
Код
Наименование
ТипКлиента
ВидКлиента
КонтактныеЛица
Тип
Символьный
Символьный
Перечисление
«ТипКлиента»
Перечисление
«ВидКонтрагента»
ТабличнаяЧасть
43
Длина
5
50
ФИО
Символьный
30
Телефон Символьный
20
2. Создать иерархический справочник «Сотрудники» в соответствии с
данными структуры, представленными в таблице 4.
Таблица 4 Данные структуры справочника «Сотрудники»
Реквизит
Код
Наименование (ФИО)
Пол
Тип
Символьный
Символьный
Перечисление
«Пол»
ДатаРождения
Дата
Образование
Перечисление
«Образование»
Должность
Символьный
ТрудоваяДеятельность ТабличнаяЧасть
Длина
5
50
20
Организация
ДатаНачала
ДатаКонца
Должность
Символьный 30
Дата
Дата
Символьный 20
3. Создать справочник «Дети», подчиненный справочнику «Сотрудники»,
в соответствии с данными структуры, представленными в таблице 5.
Таблица 5 Данные структуры подчиненного справочника «Дети»
Реквизит
Код
Наименование
(ФИО)
Пол
ДатаРождение
Образование
СоцПоложение
Тип
Символьный
Символьный
Длина
5
50
Перечисление «Пол»
Дата
Перечисление
«Образование»
Перечисление
«СоциальноеПоложение»
4. Создать иерархический справочник «Номенклатура» в соответствии с
данными структуры, представленными в таблице 6.
Таблица 6 Данные структуры справочника «Номенклатура»
Реквизит
Код
Наименование
ЕдиницаИзмерения
ЦенаПокупки
ЦенаПродажи
Тип
Символьный
Символьный
Символьный
Число
Число
Длина
5
50
5
(15,2)
(15,2)
44
5. Создать иерархический справочник «Контрагенты» в соответствии с
данными структуры, представленными в таблице 7.
Таблица 7 Данные структуры справочника «Контрагенты»
Реквизит
Код
Наименование
ИНН
ТипКонтрагента
ВидКонтрагента
КонтактныеЛица
Тип
Символьный
Символьный
Числовой
Перечисление
«ТипКлиента»
Перечисление
«ВидКонтрагента»
ТабличнаяЧасть
Длина
5
50
12
ФИО
Символьный 30
Телефон Символьный 20
6. Создать справочник «РасчетныеСчета», подчиненный справочникам
«Клиенты» и «Контрагенты», в соответствии с данными структуры,
представленными в таблице 8.
Таблица 8 Данные структуры справочника «РасчетныеСчета»
Реквизит
Код
Наименование
Банк
МФО
Тип
Числовой
Символьный
Символьный
Числовой
Длина
20
50
20
20
7. Создать перечисление «ТипСклада» с элементами «Оптовый» и
«Розничный».
8. Создать справочник «Склады» с предопределенным элементом
«Основной» в соответствии с данными структуры, представленными в
таблице 9.
Таблица 9 Данные структуры справочника «Склады»
Реквизит
Код
Наименование
ТипСклада
Тип
Символьный
Символьный
Перечисление
«ТипСклада»
МатериальноОтветственноеЛицо Справочник
«Сотрудники»
9. Создать
справочник
«Подразделения»
Длина
5
50
с
предопределенными
элементами «Администрация», «Бухгалтерия», «Отдел
45
кадров»,
«Торговый
отдел»,
в соответствии с данными
«Производство»
структуры, представленными в таблице 10.
Таблица 10 Данные структуры справочника «Подразделения»
Реквизит
Код
Наименование
10.Создать
Тип
Символьный
Символьный
формы
справочники
для
должны
работы
Длина
5
50
со
справочниками.
редактироваться
и
Подчиненные
просматриваться
справочник – владелец.
11.Заполнить справочники данными в пользовательском режиме.
12.Продемонстрировать работоспособную конфигурацию.
2.3 Контрольные вопросы
 Предназначение объекта конфигурации Справочник.
 Характерные особенности справочников.
 Предназначение реквизитов и табличных частей справочников.
 Иерахические справочники. Понятие родителя.
 Подчиненные справочники. Понятие владельца.
 Основные формы справочников.
 Предопределенные элементы справочников.
46
через
3. Лабораторная работа № 3. Документы
Цель работы. Получение навыков работы с документами, создание
и редактирование различных форм представления документов, настройка
ввода документов на основании.
3.1 Теоретические сведения
Документ – одно из основных понятий системы 1С:Предприятие.
При помощи документов организуется ввод в систему информации о
совершаемых
хозяйственных операциях, а также
ее просмотр и
корректировка.
В большинстве своем документы, которые создаются в процессе
настройки конфигурации задачи, являются электронными аналогами
стандартных бумажных документов, являющихся основаниями для тех или
иных учетных действий или расчетов. Тем не менее, использование этого
типа данных может выходить далеко за рамки простой фиксации
изменений, внесенных в учетные регистры.
Объект конфигурации «Документ» является прикладным объектом и
предназначен для описания информации о совершенных хозяйственных
операциях или о событиях, произошедших в жизни организации
вообще. На основе объекта конфигурации «Документ» платформа
создает в базе данных информационную структуру, в которой будут
храниться, например, такие документы как приходные накладные, или
приказы о приеме на работу, или платежные поручения, или счета и т.д.
Характерной особенностью объекта конфигурации «Документ»
является
то,
что
в
процессе
работы
пользователь
может
самостоятельно создавать новые объекты этой структуры – новые
документы.
Поведение документа отличается от поведения всех остальных
объектов базы данных. Документ обладает способностью проведения.
Факт проведения документа означает, что событие, которое он
отражает, повлияло на состояние учета. До тех пор, пока документ не
47
проведен, состояние учета неизменно и документ – не более чем
черновик, заготовка. Как только
документ будет проведен
–
изменения, вносимые документом в учет, могут вступить в силу и
состояние учета может быть изменено.
Поскольку документ вносит изменения в состояние учета, он всегда
«привязан» к конкретному моменту времени. Это позволяет отражать в
базе данных фактическую последовательность событий.
Следующим важным фактом, вытекающим из двух предыдущих,
является то, что система 1С:Предприятие имеет механизмы, позволяющие
отслеживать правильность состояния учета. Предположим, что мы
изменили один из проведенных ранее документов и снова провели его
«задним числом». В этом случае система 1С:Предприятие способна
отследить, повлияют ли внесенные нами изменения на последующие
проведенные документы, и если это так, система способна перепровести
необходимые документы.
Каждый документ, как правило, содержит информацию, которая
более подробно описывает этот документ. Например, каждый документ
«ПриходнаяНакладная» может содержать информацию о поставщике
товаров, складе, на который приходуется товар и т.д. Набор такой
информации является одинаковым для всех документов одного вида и для
описания такого набора используются реквизиты объекта конфигурации
«Документ», являющиеся подчиненными объектами конфигурации.
Большинство
разработчик
реквизитов
создает
объекта
самостоятельно,
конфигурации
однако
у
«Документ»
каждого
объекта
конфигурации «Документ» существуют два поля «по умолчанию»: дата и
номер документа. Поскольку тип данных «дата» содержит дату и время с
точностью до секунды, то этот реквизит и определяет, в основном,
положение документа на оси времени.
Таким образом, структура каждого конкретного вида документа
определяется при его создании в конфигураторе. У любого вида документа
48
существуют реквизиты, которые создаются автоматически – Дата и Номер.
Номер создается, если при конфигурировании длина номера указана
больше 0. Другие реквизиты документа определяются в конфигураторе
отдельно для каждого создаваемого вида документа.
Кроме этого, каждый документ содержит, как правило, некоторый
набор информации, которая одинакова по своей структуре, но различна
по количеству, для разных документов. Так, например, каждый документ
«ПриходнаяНакладная» может содержать список приходуемых товаров.
Для описания подобной информации служат табличные части объекта
конфигурации «Документ». У документа может быть любое количество
табличных частей.
Для визуализации документа существует несколько основных форм,
представленных в таблице 11.
Таблица 11 Формы для визуализации документа
Конфигуратор
Объект конфигурации «Документ»
Основная форма
Основная форма списка
База данных
Документ
Форма документа
Форма списка документов одного
вида
Форма для выбора из списка
документов одного вида
Основная форма для выбора
3.1.1 Проведение документа
Факт проведения документа и необходимость поддержания
актуальной последовательности документов на оси событий порождают
два
различных
способа
проведения
документов:
оперативное
и
неоперативное проведение.
С
оперативным
проведением
документов
связано
понятие
оперативной отметки времени.
Оперативная отметка времени представляет собой значение типа
Дата, которое формирует система. Оперативная отметка времени
создается
системой
каждый
раз
при
оперативном
проведении
документа. Ее значение формируется исходя из текущего времени и
последней созданной оперативной отметки.
49
Если последняя оперативная отметка меньше текущего времени, в
качестве новой оперативной отметки принимается текущее время.
Если последняя оперативная отметка равна или больше текущего
времени,
в
качестве
новой
оперативной
отметки
принимается
значение, на одну секунду большее, чем старая оперативная отметка
времени.
Таким образом, если у объекта конфигурации «Документ»
установлено свойство оперативного проведения, последовательность
действий системы будет следующей: при создании нового документа
система будет устанавливать ему текущую дату и «нулевое» время.
При проведении такого документа (с текущей датой), система
установит в качестве даты документа оперативную отметку времени. Если
отменить проведение документа и затем провести его снова (не изменяя
даты), система установит документу новую оперативную отметку
времени.
Если же попытаться перепровести документ, то будет выдан запрос о
виде проведения (оперативное или нет).
В случае оперативного проведения система установит новую
оперативную отметку времени, а при неоперативном проведении время
документа будет сохранено прежним.
При
попытке
проведения
(или
перепроведения) оперативно
проводимого документа с датой, отличающейся от текущей, будет выдано
сообщение о том, что оперативное проведение невозможно и предложено
провести документ неоперативно (т.е. с сохранением существующей даты
и времени документа).
3.1.2 Создание документа
Пусть одними из самых популярных услуг нашего предприятия
являются ремонт телевизоров и установка стиральных машин. И в том, и в
другом случае требуются некоторые материалы, которые расходуются в
процессе оказания этих услуг. Поэтому двумя важнейшими событиями в
50
хозяйственной жизни нашей организации будут являться поступление
материалов и оказание услуг.
Для отражения этих событий в базе данных мы создадим два
документа: «Приходная накладная» и «Оказание услуги». Документ
«Приходная накладная» будет фиксировать факт поступления в нашу
организацию необходимых материалов, а документ «Оказание услуги»
будет фиксировать оказание услуг и расход материалов, которые
используются при оказании этих услуг.
Создадим новый объект конфигурации «Документ». Это делается в
дереве конфигурации. На ветке Документы делаем щелчок правой кнопкой
и из контекстного меню выбираем пункт «Добавить». В ответ запускается
мастер
создания
документов.
Зададим
имя
документа
–
«ПриходнаяНакладная» (рис. 55). Нажмем кнопку «Далее>».
Рис. 55 Задание имени документа
Затем переходим на вкладку «Данные» (рис. 56), где задаем реквизит
документа с именем «Склад» и типом «СправочникСсылка.Склады». Для
этого щелкаем по кнопке
«Добавить», и в ответ открывается палитра
свойств вновь созданного реквизита (рис.57).
51
После этого добавим табличную часть с именем «Материалы» и
создадим у нее четыре реквизита:
• «Материал» с типом «СправочникСсылка.Номенклатура»;
• «Количество» с типом «Число», длиной 15, точностью 3,
неотрицательное;
• «Цена» с типом «Число», длиной 15, точностью 2, неотрицательное;
•
«Сумма»
с
типом
«Число»,
длиной
15,
точностью
2,
неотрицательное.
Для этого щелкаем по кнопке
«Добавить табличную часть», в
ответ открывается диалог по заданию свойств табличной части (рис. 58).
Рис. 56 Формирование реквизитов документа
Рис. 57 Задание свойств реквизитов документов
52
Рис. 58 Создание табличной части документа
После создания табличной части опишем ее реквизиты. Для
добавления нового реквизита надо щелкнуть по кнопке
«Добавить
реквизит» и в открывшемся диалоге задать его свойства (рис. 59).
Рис. 59 Задание свойств реквизитов табличной части
Затем запустим систему 1С:Предприятие в режиме отладки и
протестируем получившийся результат. В отрывшемся окне программы
выполним команды «Операции» → «Документы...», выберем документ
«Приходная накладная». Система откроет одну из основных форм
документа – основную форму списка.
Пока в нашей базе данных нет ни одного документа «Приходная
накладная», поэтому создадим новый документ (создать новый документ
можно при помощи пункта меню «Действия» → «Добавить» или клавишей
[Insert] или щелчком по кнопке
«Добавить»).
Система автоматически присвоит номер новому документу, и нам
останется только выбрать склад и заполнить табличную часть, добавляя
новые строки щелком по кнопке
53
«Добавить». Заполним ее
материалами для ремонта телевизоров так, как показано на рис. 60, затем
щелкнем по кнопке «ОК» для выхода с сохранением, и в форме списка
документа появится запись о вновь созданном документе (рис. 61).
Рис. 60 Форма документа в пользовательском режиме
Рис. 61 Форма списка документов в пользовательском режиме
Аналогичным образом мы создадим второй документ, который будет
приходовать следующие материалы для установки стиральных машин
(рис. 62).
Рис. 62 Форма документа в пользовательском режиме
54
Наверняка вы обратили внимание на то, что при заполнении
документа приходится вводить сумму в каждой строке. Это неудобно, и
возникает естественное желание автоматизировать работу документа так,
чтобы сумма вычислялась автоматически каждый раз при изменении цены
или количества материалов в строке. Это совсем не сложно, и для этого
нам потребуется сначала создать собственную форму документа, а затем
воспользоваться возможностями встроенного языка.
3.1.3 Создание формы документа
Прежде всего, следует заметить, что до сих пор мы использовали
предопределенные формы объектов, которые система 1С:Предприятие
создавала для нас сама «по умолчанию». Теперь же у нас возникла
необходимость слегка изменить логику работы формы документа, а
значит, нам придется создать свою собственную форму документа
«ПриходнаяНакладная» для того, чтобы в ней мы могли описать тот
алгоритм, который нам нужен.
Вернемся в конфигуратор и откроем окно редактирования объекта
конфигурации «ПриходнаяНакладная». В этом окне нас интересует
закладка «Формы». Как мы видим, ни одна из основных форм документа
пока не задана. Для того чтобы создать форму документа, нажмем на
символ лупы в поле ввода «Основные формы документа», в ответ система
вызовет еще один полезный инструмент разработчика – конструктор
форм. Этот инструмент также построен по принципу «мастеров» – ввод
данных в определенной последовательности и передвижение кнопками
«Далее» и «Назад» (рис. 63).
55
Рис. 63 Первый шаг конструктора формы документа
Сразу нажмем кнопку «Готово», согласившись тем самым со всем,
что нам предложила система. Обратите внимание на то, что в дереве
объектов
конфигурации
у
объекта
конфигурации
«Документ
ПриходнаяНакладная» появилась форма «ФормаДокумента», а на экране
открылось окно редактора форм, содержащее эту форму (64).
Рис. 64 Форма документа в режиме конфигуратора
Как видите, форма документа «ПриходнаяНакладная» содержит
большое
количество
всевозможных
полей.
Эти
поля
называются
элементами управления. Они имеют разное назначение и разное
поведение, которое соответствует их назначению. Однако все они служат
56
для того, чтобы отображать информацию, хранящуюся в базе данных и
организовывать интерактивную работу с этой информацией.
Сейчас мы обратим свое внимание только на те элементы
управления, которые нас интересуют – это три поля ввода, расположенные
в колонках «Количество», «Цена» и «Сумма». Мы хотим, чтобы каждый
раз, когда меняется значение в поле «Количество» или в поле «Цена», в
поле
«Сумма»
автоматически
«Количество*Цена».
устанавливалось
значение
равное
Очевидно, что для этого нужно написать на
встроенном языке команду похожую на «Сумма = Количество*Цена»,
которая будет выполняться при изменении значения поля «Количество»
или «Цена». Но как «поймать» эти моменты изменения?
3.1.4 Создание процедуры обработки события в модуле формы
Щелкните правой кнопкой мыши на поле ввода в колонке
«Количество» и откройте для него палитру свойств (пункт контекстного
меню «Свойства»). Прокрутите список до конца, и вы обнаружите
перечень событий, которые могут быть связаны с этим полем ввода. С
большинством элементов управления связаны различные события, и
именно с их помощью разработчик может влиять на ход работы
программы.
Среди событий, связанных с полем ввода, найдите событие «При
изменении». Это событие возникает после изменения значения поля ввода.
Щелкните по кнопке с лупой в конце поля ввода, и система создаст
заготовку процедуры обработчика этого события в модуле нашей формы.
Модуль – это «хранилище» для текста программы на встроенном
языке. В конфигурации существует большое количество модулей, которые
расположены в различных ее точках. Они могут принадлежать некоторым
объектам конфигурации (например, формам), а могут существовать сами
по себе (принадлежать всей конфигурации в целом). Текст программы,
содержащийся в модулях, будет использоваться платформой в заранее
57
известные моменты работы системы 1С:Предприятие. В модуль формы
добавим текст, приведенный на рис. 65.
Рис. 65 Текст обработчика событий
Объясним назначение этих строк. В первой строке мы обращаемся к
программному
коллекцией
объекту
значений,
Этот
«ЭлементыФормы».
содержащей
все
объект
элементы
является
управления,
расположенные на нашей форме. Каждый элемент управления формы
можно
получить,
«ЭлементыФормы».
указав
его
имя
в
качестве
свойства
объекта
В данном случае мы обращаемся к элементу
управления с именем «Материалы» («ЭлементыФормы.Материалы»). Этот
элемент
управления
документа.
отображает
Получить
осуществляется
строки
ту строку,
редактирование,
в
табличной
которой
можно
части
нашего
в настоящее
при
помощи
время
свойства
программного объекта ТабличноеПоле – ТекущиеДанные. Таким образом,
в
результате
выполнения
«СтрокаТабличнойЧасти»
первой
будет
строки
содержать
переменная
объект
«ДокументТабличнаяЧастьСтрока.ПриходнаяНакладная.Материалы»,
в
котором находятся редактируемые данные. Во второй строке вычисляется
сумма
как
произведение
количества
и
цены.
Объект
«ДокументТабличнаяЧастьСтрока.<имя>» позволяет обратиться к данным
конкретной колонки, указав имя колонки в качестве свойства объекта
(например, «СтрокаТабличнойЧасти.Количество»). Теперь посмотрим,
58
как это работает. В окне программы откроем список документов
«ПриходнаяНакладная» и откроем любой из двух созданных нами
документов. Если теперь вы поменяете количество в любой строке
документа, то сумма в строке будет пересчитана автоматически.
Замечательно. Но теперь хотелось бы и для поля «Цена» сделать то
же самое. А если заглянуть вперед, то мы увидим, что подобное
автоматическое заполнение поля «Сумма» может нам понадобиться и в
других документах. Поэтому лучше будет поместить расчет суммы в
некотором «общедоступном» месте, чтобы разные документы, имеющие
аналогичные реквизиты табличной части, могли использовать этот
алгоритм. Для описания таких «общедоступных» мест служат объекты
конфигурации Общий модуль, расположенные в ветке «Общие» | «Общие
модули». Процедуры и функции, содержащиеся в этих модулях, могут
быть доступны для любых объектов конфигурации.
3.1.5 Создание процедуры обработки события в общем модуле
Для того чтобы алгоритм, выполняемый при обработке события, был
доступен для разных документов, мы создадим общий модуль и перенесем
в него нашу процедуру расчета суммы. А в документе просто оставим
вызовы
этой
процедуры
из
общего
модуля.
Создадим
объект
конфигурации Общий модуль в ветке «Общие» | «Общие модули» и
назовем его «РаботаСДокументами» (рис. 66).
59
Рис. 66 Создание общего модуля
Этот объект будет содержать текст, представленный на рис. 67.
Рис. 67 Текст процедуры обработчика в общем модуле
Ключевое слово Экспорт в конце оператора «Процедура» как раз
указывает на то, что эта процедура может быть доступна из других
программных модулей. Затем в модуле нашей формы изменим текст
обработчика (рис. 68):
Рис. 68 Текст процедуры обработчика в модуле формы
Таким образом, теперь вместо непосредственного расчета суммы мы
будем вызывать процедуру из общего модуля, и передавать ей в качестве
параметра нужную нам строку табличной части.
Проверим, как это работает, и убедимся, что ничего не изменилось.
Теперь осталось и для поля «Цена» установить такой же обработчик.
Так как однажды мы уже написали в модуле формы нужную нам
60
процедуру, то мы просто могли бы сопоставить ее также и другому
событию другого элемента управления, расположенного в форме. Однако
стандарты разработки конфигураций фирмы «1С» не допускают такого
решения.
Согласно стандартам разработки фирмы «1С», у каждого события
должен быть свой обработчик. Если одинаковые действия должны
выполняться при изменении разных элементов управления (например, при
нажатии нескольких кнопок), то в этом случае следует поступать
следующим образом:
 создается отдельная процедура (функция), выполняющая необходимые
действия;
 для каждого элемента управления создается отдельный обработчик с
именем, назначаемым по умолчанию;
 из каждого обработчика вызывается требуемая процедура (функция).
Поэтому мы создадим обработчик события «При изменении» (рис.
69) для поля ввода, которое расположено в колонке «Цена» и повторим в
нем вызов процедуры «РассчитатьСумму» из общего модуля:
Рис. 69 Текст процедуры обработчика в модуле формы
Запустим систему 1С:Предприятие в режиме отладки и убедимся,
что
теперь
сумма
в
строках
табличной
части
документов
«ПриходнаяНакладная» пересчитывается как при изменении количества,
так и при изменении цены.
3.1.6 Усовершенствование формы документа
Добавим в документ «ПриходнаяНакладная» реквизиты:
 «Контрагент» типа «СправочникСсылка.Контрагенты»;
 «РасчетныйСчет» типа «СправочникСсылка.РасчетныеСчета»;
 «СуммаДокумента» типа «Число»(15,2).
61
Полученная в результате работы конструктора форма мало радует
своей функциональностью. Считается правилом хорошего тона, чтобы
после выбора контрагента перечень предлагаемых расчетных счетов
определялся выбранным контрагентом, а по окончании заполнения
документа высчитывалась его общая сумма.
Для добавления в уже созданную форму дополнительных реквизитов
надо выбрать пункт главного меню «Форма» → «Размещение данных», и в
появившемся диалоге «Размещение данных» поставить флажки напротив
наименований добавляемых элементов (рис. 70). При добавлении
реквизита «СуммаДокумента» вставьте его как «Надпись», выбрав в
появившемся раскрывающем списке вместо типа «ПолеВвода» тип
«Надпись» (рис. 71).
Рис. 70 Размещение дополнительных данных
Рис. 71 Изменение типа вставляемых объектов
Для обеспечения выбора расчетных счетов только подчиненных
выбранному контрагенту, надо в его свойстве «СвязьПоВладельцу»
(рис.72) установить значение «Поставщик» (рис.73). Тогда после указания
поставщика для выбора будут предлагаться только расчетные счета
данного поставщика.
62
Рис. 72 Установленная связь по владельцу
Рис. 73 Указание связи по владельцу
Для того чтобы «защититься» от смены поставщика после выбора
расчетного счета, надо у поля ввода, связанного с поставщиком,
определить обработчик «ПриИзменении» (рис. 74, рис. 75):
Рис. 74 Текст процедуры обработчика
Рис. 75 Связь обработчика с событием
Сумму
документа
будем
рассчитывать
в
обработчике
события
«ПередЗаписью» модуля документа. Для заполнения этой процедуры надо
63
выбрать форму документа и из контекстного меню формы выбрать пункт
«Свойства», там прокрутить диалог вниз до раздела «События» (76), и
щелкнуть по значку
события «Перед записью», в ответ откроется
текстовый редактор с заготовкой процедуры, где надо набрать следующий
текст (рис. 77):
Рис. 76 Свойства формы документа
Рис. 77 Текст обработчика события
В нашем случае общая сумма документа считается только после
нажатия кнопки «Записать». Если необходимо видеть сумму табличной
части во время ее заполнения данными, то это можно организовать
несколькими способами:
 строку кода, производящую расчет суммы документа, поставить в
обработчик события, производящий расчет суммы по строке табличной
части (изменилась сумма по строке табличной части, изменилась и
сумма документа);
 в случае, когда табличная часть документа одна, в свойствах
табличного поля «Материалы» надо поставить флажок «Подвал» (рис.
78):
64
Рис. 78 Свойства табличного поля
В свойствах колонки «Сумма» надо поставить флажок «Показывать итог в
подвале» и выбрать в рубрике «Горизонтальное положение» выравнивание
по правому краю (рис. 79).
3.1.7 Ввод документов на основании
Одним из режимов ввода новых документов в процессе работы
пользователя с системой является режим ввода «на основании». С точки
зрения пользователя режим ввода «на основании» позволяет вводить
документы, заполняя их реквизиты из других объектов информационной
базы. (Можно ввести документ одного вида на основании данных из
документа другого вида и т. п.).
Механизм ввода на основании может быть использован для ввода
новых объектов различного типа (документы, справочники, планы видов
характеристик и т.д.). Мы рассмотрим этот механизм на примере ввода
новых документов, как наиболее распространенном.
65
Рис. 79 Свойства итогового поля
Для каждого объекта конфигурации «Документ» можно разрешить
его ввод на основании других объектов базы данных и возможность
являться основанием для других объектов. Действия по заполнению
реквизитов при вводе на основании должны быть описаны в модуле
объекта Документ, в обработчике события «Обработка заполнения». Есть
возможность использовать конструктор ввода на основании, который
позволяет визуальными средствами конструировать текст обработчика.
Познакомимся с данным механизмом на примере «заведения»
документа «Доверенность» на основании документа «Счет». Откроем
документ «Доверенность» и перейдем на вкладку «Ввод на основании»
(рис. 80). В списке «Вводится на основании» надо щелкнуть по кнопке
«Редактировать элемент списка», в ответ откроется диалог «Выбор
объекта» (рис. 81), в котором надо поставить флажок напротив документа
«Счет» и щелкнуть по кнопке «ОК».
66
Рис. 80 Диалог документа «Доверенность»
Рис. 81 Выбор объекта – основания
В ответ выбранный документ появится в списке формы. После этого
надо вызвать конструктор ввода на основании щелчком по кнопке
(рис. 80), в ответ откроется его диалог (рис. 82),
в котором надо щелкнуть по кнопке «Заполнить выражения». После
щелчка по кнопке «ОК» откроется текстовый редактор с процедурой
«ОбработкаЗаполнения()» в модуле объекта.
67
Рис. 82 Диалог «Конструктор ввода на основании»
Рис. 83 Текст процедуры «ОбработкаЗаполнения()»
Перейдем в пользовательский режим. Создадим там новый документ
«Счет», запишем его, а затем на панели инструментов щелкнем по кнопке
«Ввести на основании». В появившемся списке выберем тип
документа «Доверенность», и в ответ откроется форма документа
доверенность с уже заполненными реквизитами.
Второй способ использования ввода на основании заключается в
заполнении реквизитами вновь создаваемого документа «Доверенность»
68
по выбранному документу – основанию «Счет». Для этого в форме
документа необходимо задать обработчик «Обработка выбора» поля
ввода «ДокументОснование» (рис. 84), скопировав туда тело процедуры
«ОбработкаЗаполнения» (рис. 85).
Рис. 84 Задание обработчика «ОбработкаВыбора»
Рис. 85 Текст обработчика «ОбрвботкаВыбора»
Запустите систему 1С:Предприятие в режиме отладки и проверьте
работу ввода на основании. Обратите внимание, что в командной панели
формы списка документа «Счет» появилась кнопка
основании».
69
«Ввести на
3.2 Задание на лабораторную работу
1. Создать перечисление «ВидыОплаты» с элементами: «Наличный»,
«Безналичный», «Взаиморасчет».
Создать новые типы документов и формы ввода для них:
 «ПРИХОДНАЯНАКЛАДНАЯ»
Таблица 12 Реквизиты документа «ПРИХОДНАЯНАКЛАДНАЯ»
Наименование
Склад
Поставщик
РасчетныйСче
т
ВидОплаты
СуммаДокумен
та
Материалы
Тип элемента
шапки
СправочникСсылка
.Склады
СправочникСсылка
.Контрагенты
СправочникСсылка
.РасчетныеСчета
Перечисление.Вид
ыОплаты
Число
Тип элемента
табличной части
Табличная Часть
Материал
СправочникСсылка
.Номенклатура
Число
Число
Число
Цена
Количество
Сумма
 «ОКАЗАНИЕУСЛУГИ»
Длина
Дробь
15
2
15
15
15
2
3
2
Таблица 13 Реквизиты документа «ОКАЗАНИЕУСЛУГИ»
Наименовани
е
Склад
Мастер
Клиент
ВидОплаты
СуммаДокуме
нта
ПереченьНом
енклатуры
Тип элемента
шапки
СправочникСсылка
.Склады
СправочникСсылка
.Сотрудники
СправочникСсылка
.Клиенты
Перечисление.Вид
ыОплаты
Число
Длина
Дробь
15
2
15
15
15
2
3
2
Табличная Часть
Номенклатура
Услуги
Тип элемента
табличной части
Цена
Количество
Сумма
Табличная Часть
Услуга
СправочникСсылк
а.Номенклатура
Число
Число
Число
СправочникСсылк
70
Сумма
а.Номенклатура
Число
15
2
 «РАСХОДНАЯНАКЛАДНАЯ»
Таблица 14 Реквизиты документа «РАСХОДНАЯНАКЛАДНАЯ»
Наименовани
е
Склад
ДокументОсн
ование
Контрагент
ВидОплаты
СуммаДокуме
нта
Материалы
Тип элемента
шапки
СправочникСсылка
.Склады
ДокументСсылка
Тип элемента
табличной части
СправочникСсылка
.Клиенты
Перечисление.Вид
ыОплаты
Число
Табличная Часть
Материал
Цена
Количество
Сумма
СправочникСсылк
а.Номенклатура
Число
Число
Число
Длина
Дробь
15
2
15
15
15
2
3
2
Длина
Дробь
15
2
15
15
15
2
3
2
Длина
Дробь
 «СЧЕТ»
Таблица 15 Реквизиты документа «СЧЕТ»
Наименовани
е
Склад
Контрагент
СуммаДокуме
нта
Материалы
Тип элемента
шапки
СправочникСсылка
.Склады
СправочникСсылка
.Клиенты
Число
Табличная Часть
Материал
Цена
Количество
Сумма
Тип элемента
табличной части
СправочникСсылк
а.Номенклатура
Число
Число
Число
 «ДОВЕРЕННОСТЬ»
Таблица 16 Реквизиты документа «ДОВЕРЕННОСТЬ»
Наименовани
е
Склад
ДокументОсн
ование
Контрагент
ФИО
ВидОплаты
Тип элемента
шапки
СправочникСсылка
.Склады
ДокументСсылка
Тип элемента
табличной части
СправочникСсылка
.Клиенты
Строка
Перечисление.Вид
50
71
СуммаДокуме
нта
Материалы
ыОплаты
Число
Табличная Часть
Материал
СправочникСсылк
а.Номенклатура
Число
Число
Число
Цена
Количество
Сумма
15
2
15
15
15
2
3
2
 «ПРИХОДНЫЙКАССОВЫЙ ОРДЕР»
Таблица 17 Реквизиты документа «ПРИХОДНЫЙКАССОВЫЙ ОРДЕР»
Наименовани
е
КонтактноеЛ
ицо
ДокументОсн
ование
СуммаОплаты
Тип элемента
шапки
СправочникСсылка
Тип элемента
табличной части
Длина
Дробь
15
2
ДокументСсылка
Число
 «РАСХОДНЫЙКАССОВЫЙ ОРДЕР»
Таблица 18 Реквизиты документа «РАСХОДНЫЙКАССОВЫЙ ОРДЕР»
Наименовани
е
КонтактноеЛ
ицо
ДокументОсн
ование
СуммаОплаты
Тип элемента
шапки
СправочникСсылка
Тип элемента
табличной части
Длина
Дробь
15
2
ДокументСсылка
Число
3. Настроить ввод на основании:
 «РасходнаяНакладная» на основе «Счет»;
 «Доверенность» на основе «Счет»;
 «ПриходныйКассовыйОрдер»
на
основе
«РасходнаяНакладная»,
«ОказаниеУслуги»;
 «РасходныйКассовыйОрдер» на основе «ПриходнаяНакладная».
4. В документах предусмотреть автоматическое заполнение колонки
«Стоимость» на основе значений колонок «Цена» и «Количество»,
реквизита
«СуммаДокумента»
как
суммарного
значения
«Стоимость».
5. Продемонстрировать работающую конфигурацию.
3.3 Контрольные вопросы.
1. Предназначение объекта конфигурации «Документ».
72
колонки
2. Характерные особенности документов.
3. Назначение реквизитов и табличных частей документов.
4. Основные формы документов.
5. Понятие проведения документов.
6. Отличие оперативного проведения документов от неоперативного.
7. Понятие оперативной отметки времени.
8. Понятие обработчика события.
9. Предназначение общего модуля.
73
4. Лабораторная работа № 4. Регистры сведений
Цель работы. Получение навыков работы с регистрами сведений.
4.1 Теоретические сведения
Объект конфигурации «Регистр сведений» является прикладным
объектом и предназначен для описания структуры хранения данных в
разрезе нескольких измерений. На основе этого объекта платформа
создает в базе данных информационную структуру, в которой может
храниться произвольная информация «привязанная» к набору измерений.
Основная задача регистра сведений – хранить существенную для
прикладной
задачи
информацию,
состав
которой
развернут
по
определенной комбинации значений и, при необходимости, развернут во
времени. Например, если мы хотим хранить информацию о ценах
конкурентов на продаваемые нами товары, то собранная информация о
ценах разворачивается по товарам и конкурентам. А если мы хотим
отслеживать динамику изменений цен, и будем заносить их периодически,
то хранимая информация разворачивается также и во времени. Эта
информация хранится в регистре в виде записей. На запись нельзя сделать
ссылку из информационной базы. В системе может быть только одна
запись с определенной комбинацией измерений и периодом.
В системе 1С:Предприятие для хранения подобных данных и работы
с ними используется специальный механизм – регистры сведений.
Важной особенностью регистра сведений является его способность
(при необходимости) хранить данные с привязкой ко времени. Благодаря
этому регистр сведений может хранить не только актуальные значения
данных, но и историю их изменения во времени. Регистр сведений,
использующий привязку ко времени называют обычно периодическим
регистром сведений.
Периодичность регистра сведений можно определить одним из
следующих значений:
 в пределах секунды;
74
 в пределах дня;
 в пределах месяца;
 в пределах квартала;
 в пределах года;
 в пределах регистратора (если установлен режим записи
–
«Подчинение регистратору»).
Периодический регистр сведений всегда содержит служебное поле
«Период», добавляемое системой автоматически. Оно имеет тип «Дата», и
служит для указания факта принадлежности записи к какому–либо
периоду. При записи данных в регистр, платформа всегда приводит
значение этого поля к началу того периода, в который он попадает.
Например, если в регистр сведений с периодичностью в пределах месяца
записать данные, в которых период указан как 08.04.2004, то регистр
сохранит эти данные со значением периода равным 01.04.2004.
Регистр сведений, фактически, представляет собой массив данных,
необходимый, чтобы реализовать функцию, которая может выдать
необходимую
информацию
по
определенному
набору
аргументов.
Аргументы функции называются измерениями, а результат функции –
ресурсами. В приведенном выше примере регистр «ЦеныКонкурентов»
будет содержать измерения «Конкурент» и «Товар», и ресурс «Цена».
Ресурсов может быть больше чем один: например, можно хранить оптовую
и розничную цены.
Для разворота этой информации во времени используется поле
«Период» регистра. Оно не вносится в качестве измерения, а добавляется
системой автоматически при создании периодического регистра.
Для периодических регистров сведений система поддерживает такие
стандартные операции, как получение наиболее позднего или наиболее
раннего значения по определенной комбинации измерений (например,
получение последней введенной цены по конкретному товару и
конкретному конкуренту), а также получения среза наиболее поздних или
75
ранних значений. Например, могут быть получены все последние
введенные цены по различным товарам и конкурентам.
Наиболее характерный пример периодической величины – курс
валюты.
При
выполнении
каких-либо
расчетов
(например,
при
определении рублевой цены пересчетом валютной цены по курсу) важно
знать его величину на момент вычисления.
Особенно важно знать курс валюты при выполнении каких–либо
расчетов «задним числом» – в этом случае необходимо «вспоминать» курс
за уже прошедшие даты.
Чтобы иметь возможность получать подобные сведения, необходимо
создать таблицу, графами в которой были бы, очевидно, наименование
валюты, дата курса, и сама величина курса. Строки такой таблицы
содержат курс определенной валюты на конкретную дату (таблица 19).
Таблица 19 Курс валюты на дату
Дата
Валюта
Курс
31.01.2002
USD
30,1372
31.01.2002
EUR
26,5456
28.02002
USD
30,9404
28.02002
EUR
26,7120
30.03.2002
USD
31,1192
30.03.2002
EUR
27,1515
При обращении к подобной таблице следует иметь в виду, что в
колонке «Курс» хранятся конкретные величины курса на определенную
дату, и подразумевается, что на все последующие даты, до новой величины
курса, курс не меняется. Поэтому для получения курса на какую–то
промежуточную дату следует брать величину курса на ближайшую
предыдущую дату, на которую существует записанный курс.
Также следует понимать, что различные значения валют в колонке
«Валюта» фактически означают, что ведется параллельная история курсов
нескольких валют. Иначе говоря, приведенную таблицу 19 можно
отобразить по другому (таблица 20).
76
Таблица 20 Курсы валют на дату
Дата
Курс USD Курс EUR
31.01.2002 30,1372
28.02002
26,5456
30,9404 26,7120
30.03.2002 31,1192
27,1515
Подобных колонок курсов в таблице может быть столько, сколько
курсов разных валют требуется хранить.
Если регистр не периодический, то поле «Период» для него не
создается. В приведенном примере регистр «ЦеныКонкурентов» может
быть непериодическим, если мы не хотим хранить историю изменения цен,
а хотим иметь только актуальные цены. Тогда функция регистра сможет
ответить на вопрос «какая сейчас цена у такого–то конкурента на такой–то
товар», но не сможет ответить на вопрос «какая была цена у такого–то
конкурента на такой–то товар в начале года».
Из описанных принципов работы регистра сведений вытекает то, что
в системе может быть только одна запись с определенным набором и
периодом измерений. Действительно, по одному товару по одному
конкуренту может быть только одна цена. Если по какой–либо причине мы
можем получить несколько цен и хотим занести эту информацию в базу
данных, то нам нужно создать еще одно измерение для хранения того
значения, по которому эти цены могут различаться. Например, можно
завести измерение «ИсточникИнформации». Тогда можно будет вводить
цены конкурентов в разрезе источников.
Как и для других регистров, система контролирует уникальность
записей для регистра сведений. Однако, если для прочих регистров
уникальным идентификатором записи является регистратор и номер
строки, то для регистра сведений применяется другой принцип
формирования ключевого значения.
Ключом записи, однозначно идентифицирующим запись, является
в данном случае совокупность значений измерений регистра и периода (в
77
случае, если регистр сведений периодический). Регистр сведений не может
содержать несколько записей с одинаковыми ключами.
Регистр сведений предоставляет больше свободы в редактировании
хранимых данных по сравнению с другими типами регистров. Наряду с
тем, что регистр сведений может использоваться в режиме подчинения
регистратору (когда записи регистра сведений «привязаны» к документу–
регистратору), регистр сведений может использоваться и в независимом
режиме, в котором пользователю предоставляется полная свобода
интерактивной работы с данными регистра. Регистр сведений, не
использующий подчинение регистратору, называют независимым
регистром сведений.
Строки регистра сведений, содержащие информацию о значениях
ресурсов для определенных значений измерений и конкретного периода,
называются записями. Записи в регистр сведений можно вносить двумя
способами: вручную или документами.
Эти два варианта влияют на способ внесения информации, а не на
основную логику работы регистра.
Документ, которым вносится запись в регистр сведений, называется
регистратором.
Регистры,
записываемые
независимо,
могут
свободно
редактироваться вручную или средствами встроенного языка. При этом,
если измерение такого регистра назначено как «ведущее» и значением
измерения является ссылка на объект базы данных, то будет считаться, что
запись регистра имеет смысл, только пока существует этот объект.
Например, если назначить ведущим измерение «Конкурент», то считается,
что запись имеет смысл только как информация по данному конкуренту.
Соответственно, при удалении конкурента записи по нему будут удалены
автоматически.
Если регистр записывается регистратором, то это значит, что записи
будут жестко подчинены регистраторам – документам. Обычно это значит,
78
что
записи
будут
порождаться
при
проведении
документов.
Соответственно, при удалении документа записи будут удаляться
автоматически. В отличие от ведущих измерений, регистратор может быть
только один.
4.1.1 Регистр сведений «КурсыВалют»
Создайте
справочник
«ПолноеНаименование»,
«Валюты»,
настройте
форму
определите
списка.
реквизит
Справочник
без
иерархии, не подчиненный, принадлежит подсистеме «Торговля».
После этого создайте регистр сведений «КурсыВалют» (рис. 86). У
него определите одно измерение «Валюта» («ведущее») – ссылка на
справочник «Валюты» (рис. 87), ресурс «Кратность» – число (10,3) (рис.
88), определите режим редактирования «в диалоге», настройте форму
списка, форму записи регистра (рис. 89).
Рис. 86 Создание ресурса сведений
79
Рис. 87 Задание измерений ресурса
Рис. 88 Задание ресурсов регистра
Рис. 89 Создание форм для регистра сведений
Перейдем в пользовательский режим и там зададим несколько типов
валют и значений их курсов на разные даты (пункт главного меню
«Операции» → «Регистр сведений…») (рис. 90).
80
Рис. 90 Задание значений курсов валют на разные даты
4.1.2 Отбор в диалоге
Добавим в форму списка возможность непосредственно из самой
формы управлять отборами, для этого модифицируем форму списка,
добавим на форму два флажка и три поля ввода («Форма» → «Вставить
Элемент Управления»):
 Флажок1 – Отбор.Валюта.Использование (рис. 91);
 Флажок2 – Отбор.Период.Использование (рис. 92);
 ПолеВвода1 – Отбор.Валюта.Значение (рис. 93);
 ПолеВвода2 – Отбор.Период.ВидСравнения (рис. 94);
 ПолеВвода3 – Отбор.Период.Значение (рис. 95).
Рис. 91 Размещение в диалоге флажка 1
81
Рис. 92 Размещение в диалоге флажка 2
Рис. 93 Размещение в диалоге поля ввода 1
Рис. 94 Размещение в диалоге поля ввода 2
82
Рис. 95 Размещение в диалоге поля ввода 3
Далее в свойствах необходимо указать:
 для флажка «по валюте» в свойстве «Данные» необходимо выбрать
«РегистрСведенийСписок.Отбор.Валюта.Использование» (рис. 96);
Рис. 96 Настройка флажка 1
 для флажка «по валюте» в свойстве «Данные» необходимо выбрать
«РегистрСведенийСписок.Отбор.Период.Использование» (рис. 97);
Рис. 97 Настройка флажка 2
83
 Для поля ввода «Условие» в свойстве «Данные» необходимо выбрать
«РегистрСведенийСписок.Отбор.Валюта.Значение» (рис. 98);
Рис. 98 Настройка поля ввода 1
 Для поля ввода 2 в свойстве «Данные» необходимо выбрать
«РегистрСведенийСписок.Отбор.Период.ВидСравнения» (рис. 99);
Рис. 99 Настройка поля ввода 2
 Для поля ввода 3 в свойстве «Данные» необходимо выбрать
«Отбор.Период.Значение» (рис. 100).
84
Рис. 100 Настройка поля ввода 3
В результате получается форма списка, представленная на рис. 101.
Рис. 101 Форма списка с отбором
Запустите систему 1С:Предприятие в пользовательском режиме и
посмотрите на работу регистра сведений «КурсыВалют» (рис. 102).
Рис. 102 Форма списка с отбором в пользовательском режиме
85
4.1.3 Чтение значения курса валют
Модифицируем документ «ПриходнаяНакладная» для добавления
возможностей учета документов, составленных в разных валютах. Для
этого
в
документ
добавим
реквизиты
«Валюта»
типа
«СправочникСсылка.Валюты» и «Курс» типа «Число» (10,3). В форму
документа поместим реквизит данных «Валюта» и добавим реквизит
формы «Курс» в виде надписи. Определим обработчик события
«ПриИзменении» для поля ввода, связанного с валютой (103).
Рис. 103 Обработчик события «ПриИзменении»
Следует отметить, что курс будет показываться только после выбора
валюты, а при открытии уже заполненного документа этого происходить
не будет. Подобный результат определяется событием, которое выбрали
для заполнения реквизита формы «Курс», но этот недостаток можно
устранить, превратив надпись «Валюта» в гиперссылку.
Рассмотрим пример на программное открытие формы списка
регистра сведений. В форме документа «ПриходнаяНакладная» в надписи
«Валюта» отметим флажок «Гиперссылка» (рис. 104). После этого у этой
надписи определим обработчик «Нажатие» (рис. 105).
Рис. 104 Настройка надписи как гиперссылки
86
Рис. 105 Процедура обработчика гиперссылки
Проверьте этот механизм на практике, открывая форму списка
регистра сведений с установленным отбором из разных документов, меняя
значение реквизита «Валюта».
4.1.4 Регистр сведений «Цены поставщиков»
В
рассмотренном
примере
создания
регистра
сведений
«КурсыВалют» были показаны основные приемы работы с регистром
сведений, у которого был ручной способ записи. Теперь рассмотрим
пример, когда запись ведется регистратором.
Поставим перед собой задачу создать механизм, позволяющий
отслеживать приходные цены номенклатуры в разрезе поставщиков.
Создадим регистр сведений «ЦеныПоставщиков» (рис. 106). Регистр
сведений периодический (по позиции регистратора), режим записи
«Подчинение регистратору».
Рис. 106 Создание регистра сведений «ЦеныПоставщиков»
У
него
два
измерения
«СправочникСсылка.Контрагенты»,
«Поставщик»
«Номенклатура»
87
типа
типа
«СправочникСсылка.Номенклатура»
и
один
ресурс
«Цена»
типа
«Число»(15,2) (рис. 107).
Рис. 107 Заданий измерений и ресурсов регистра
Настройте форму списка и форму набора записей. Так как запись
ведется регистратором (по смыслу документом «ПриходнаяНакладная»),
необходимо модифицировать данный документ, а именно: разрешить
проведение и указать, что документ является регистратором по регистру
«ЦеныПоставщиков» (рис. 108).
Рис. 108 Задание регистраторов регистра
С помощью конструктора движений настроим порядок проведения
документа. Конструктор движений документа вызывается на вкладке
«Движения» того документа, который будет проводиться, для этого надо
щелкнуть по кнопке «Конструктор движений» (рис. 109). В ответ
откроется диалог с данными регистра и данными документа (рис. 110). В
этом диалоге необходимо указать используемую табличную часть, а затем
щелкнуть по кнопке «Заполнить выражения», и одноименные поля
регистра и документа заполнятся автоматически. Те поля, что не
88
заполнились автоматически, надо заполнить вручную, затем щелкнуть по
кнопке «ОК», и конструктор вставит в модуль документа текст процедуры
«ОбработкаПроведения» (рис. 111).
Рис. 109 Вызов конструктора движений
Рис. 110 Работа конструктора движений
89
Рис. 111 Процедура обработки проведения
Проверьте работоспособность созданного вами механизма. Для этого
в
пользовательском
режиме
перезапишите
несколько
документов
«ПриходнаяНакладная». Движения документа (записи в регистр) можно
посмотреть, воспользовавшись кнопкой командной панели «Перейти».
4.1.5 Регистр сведений «Цены номенклатуры»
Обратим внимание на документ «ОказаниеУслуги». Как вы помните,
в этом документе мы выбираем услугу, которая оказывается, и затем
указываем цену.
Очевидно, что на любом предприятии существует перечень услуг,
который определяет стоимость каждой услуги. Казалось бы, что стоимость
услуги является неотъемлемым свойством самой услуги и поэтому
стоимость услуги следует добавить в качестве реквизита справочника
«Номенклатура».
Однако стоимость услуг имеет особенность меняться со временем, и
может сложиться такая ситуация, что когда нам потребуется внести
изменения или уточнения в один из ранее проведенных документов
«ОказаниеУслуги», мы не сможем получить правильную стоимость
услуги, поскольку в реквизите справочника будет храниться последнее
введенное значение.
90
Кроме того, не исключена ситуация, что руководство предприятия
пожелает видеть, как зависит прибыль предприятия от изменения
стоимости оказываемых услуг. В этом случае просто необходимо будет
иметь возможность анализировать изменение стоимости услуг во
времени, поэтому для хранения стоимости услуг мы используем объект −
регистр сведений.
Приступим к созданию периодического регистра сведений, который
будет хранить развернутые во времени розничные цены материалов и
стоимости услуг, оказываемых предприятием.
Откроем конфигуратор и создадим новый объект конфигурации
«Регистр сведений». Назовем его «ЦеныНоменклатуры» (рис. 112).
Установим периодичность этого регистра в пределах секунды.
Рис. 112 Создание регистра сведений «ЦеныНоменклатуры»
Перейдем на закладку «Данные» и создадим измерение регистра
«Номенклатура» с типом «СправочникСсылка.Номенклатура» (рис.
113). Укажем, что это измерение будет ведущим. Свойство «Ведущее»
имеет смысл использовать лишь тогда, когда измерение имеет тип ссылки
на объект базы данных. Установка свойства «Ведущее» будет говорить
о том, что запись регистра сведений представляет интерес, только пока
существует этот объект. При удалении объекта, все записи регистра
сведений по этому объекту тоже будут автоматически удалены. Кроме
того, в форме списка справочника появляется кнопка командной панели
«Перейти», по которой возможен переход к записям регистра,
отобранным по значению выбранного элемента справочника.
91
После этого создадим новый ресурс «Цена», тип «Число», длина 15,
точность 2, неотрицательное.
Рис. 113 Задание измерений и ресурсов регистра
Теперь запустим систему 1С:Предприятие в режиме отладки и
посмотрим,
как
работает
наш
периодический
регистр
сведений
«ЦеныНоменклатуры». После этого введем розничные цены на материалы
(рис. 114).
Рис. 114 Задание значений периодического регистра сведений
Зададим в начале стоимость услуг нашего предприятия, а
затеем − отпускные цены на материалы.
Итак, мы с вами имеем очень полезную возможность в нашей
программе − возможность установки цен на услуги и материалы.
Поскольку цены хранятся с привязкой к дате, мы можем заранее
установить новые цены и быть уверенными в том, что новые цены вступят
в действие не раньше указанной для них даты.
Теперь посмотрим, как можно использовать заданные нами цены в
Документе «ОказаниеУслуги».
92
4.1.6 Создание функции РозничнаяЦена()
Создадим функцию, которая будет возвращать нам актуальную
розничную цену номенклатуры. Откроем конфигуратор, в ветке «Общие |
Общие модули» создадим новый объект конфигурации «Модуль» и
назовем его «РаботаСоСправочниками».
Разместим в нем следующий текст, представленный на рис. 115.
Рис. 115 Функция получения отпускной цены
Для получения розничной цены мы будем передавать в функцию два
параметра:
 «АктуальнаяДата»
−
параметр
типа
«Дата»,
который
будет
определять точку на оси времени, на которую нас интересует значение
розничной цены
 «ЭлементНоменклатуры»
−
ссылка
на
элемент
справочника
«Номенклатура», для которого мы хотим получить розничную цену.
В теле процедуры мы создаем сначала вспомогательный объект
«Отбор», с помощью которого определяем, что нас будут интересовать
записи
регистра,
в
которых
измерение
«Номенклатура»
равно
переданной в процедуру ссылке на элемент справочника.
В слудующей строке процедуры мы обращаемся к менеджеру
регистра сведений «Цены» («РегистрыСведений.ЦеныНоменклатуры» ) и
выполняем метод «ПолучитьПоследнее()», который возвращает нам
значения ресурсов наиболее поздней записи регистра, которая
соответствует передаваемой дате ( «АктуальнаяДата» ) и значениям
измерений регистра («Отбор»).
Значения ресурсов возвращаются в структуре, поэтому в
следующей строке мы получаем искомую нами розничную цену, просто
93
указав
имя
нужного
нам
ресурса
регистра
через
точку
(«ЗначенияРесурсов.Цена»).
4.1.7 Автоматическое заполнение цены документа «ОказаниеУслуги»
Теперь проверим, как работает эта функция. Задача, которая перед
нами стоит, заключается в следующем. При создании документа
«ОказаниеУслуги»
нам
необходимо
обеспечить
автоматическое
заполнение поля «Цена» после того, как пользователь выберет услугу.
Причем цена услуги должна определяться исходя из даты создаваемого
документа.
Найдем в конфигураторе документ «ОказаниеУслуги» и откроем его
форму «ФормаДокумента». Откроем свойства поля ввода, расположенного
в колонке «Номенклатура» табличной части «ПереченьНоменклатуры» и
внизу списка найдем событие «При изменении» . Нажмем на кнопку с
лупой и в открывшейся заготовке обработчика события напишем текст
соответствующей
процедуры,
аналогичные
действия
проделаем
для
табличной части «Услуги» (рис. 116).
Рис. 116 Обработчики выбора номенклатуры
Прокомментируем содержимое обработчика.
Первая строка обработчика вам уже знакома – мы получаем
текущую строку табличной части документа, так как она нам понадобится
в дальнейшем.
Во второй мы устанавливаем полученную цену в документе,
вызывая нашу процедуру «РозничнаяЦена». Первым параметром мы
передаем дату документа, на которую необходимо получить цену, а
94
вторым параметром мы передаем ссылку, которую отображает элемент
управления формой, вызвавший это событие ( «Элемент.Значение» ),
т.е. ссылку на элемент справочника «Номенклатура».
В конце мы вызываем нашу процедуру «РассчитатьСумму» из
общего модуля «РаботаСДокументами» для того, чтобы она пересчитала
итоговую сумму в строке нашего документа.
Проверим, как теперь работает наш документ. Запустим систему
1С:Предприятие в режиме отладки и откроем регистр сведений «Цены».
Для транзистора Philips добавим следующим числом новую цену.
Теперь откроем документ ОказаниеУслуги №1. Давайте этим
документом мы как раз «израсходуем» один такой транзистор.
Установим дату документа равной той дате, когда было задано
первое значение цены транзистора, и повторим выбор транзистора в
колонке «Номенклатура» табличной части документа. Автоматически
установится первое значение цены.
Теперь изменим дату документа на следующий день и снова
повторим выбор транзистора. Будет установлено новое значение цены.
Таким образом, в документ подбирается актуальная на момент
создания документа цена услуги.
4.2 Задание на лабораторную работу
1. Создайте
справочник
наименованием
«Валюты»
типа
с
«Строка»
кодом
(25),
типа
«Строка»
определите
(5),
реквизит
«ПолноеНаименование» типа «Строка» (25), настройте форму списка.
Справочник без иерархии, не подчиненный, принадлежит подсистеме
«Торговля».
2. Создайте регистр сведений «КурсыВалют». У него определите одно
измерение «Валюта» («ведущее») – ссылка на справочник «Валюты»,
ресурс
«Кратность»
–
«Число»
95
(10,3),
определите
режим
редактирования «в диалоге», настройте форму списка с отбором, форму
записи регистра.
3. Модифицируйте
«Доверенность»,
документы
«ПриходнаяНакладная»,
«РасходнаяНакладная»,
«Счет»,
«ОказаниеУслуг»,
«ПриходныйКассовыйОрдер», «РасходныйКассовыйОрдер», введя в них
дополнительные
реквизиты
«Валюта»
типа
«СправочникСсылка.Валюты» и «Курс» типа «Число» (10,3). Настройте
формы документов для работы с этими реквизитами.
4. Создайте регистр сведений «ЦеныПоставщиков», периодический (по
позиции регистратора), режим записи «Подчинение регистратору», с
двумя
измерениями
«Поставщик»
«СправочникСсылка.Контрагенты»,
«Номенклатура»
типа
типа
«СправочникСсылка.Номенклатура» и одним ресурсом «Цена» типа
«Число» (15,2). Настройте для него форму списка с отбором и форму
набора записей.
5. Создайте регистр сведений «ЦеныНоменклатуры», периодический (в
пределах секунды). У него определите измерение «Номенклатура»
(«ведущее») – ссылка на справочник «Номенклатура», ресурс «Цена» –
«Число»
(15,2), определите режим редактирования «в диалоге»,
настройте форму списка с отбором, форму записи регистра.
6. Модифицируйте документ «ПриходнаяНакладная» для выполнения
движений по регистру сведений «ЦеныПоставщиков».
7. Модифицируйте
документы
«Счет»,
«РасходнаяНакладная»,
«ОказаниеУслуги» для подстановки в них при выборе материалов или
услуг актуальных цен номенклатуры.
8. Определите непериодический регистр сведений «График», который
будет содержать данные о количестве рабочих часов в указанный день.
4.3 Контрольные вопросы
1. Основное предназначение регистров сведений.
96
2. Особенности объекта конфигурации «Регистр сведений».
3. Когда удобнее использовать регистры, несмотря на то, что необходимая
информация содержится в других объектах?
4. Что такое периодический регистр сведений?
5. Что такое независимый регистр сведений?
6. Какие поля определяют ключ уникальности регистра сведений?
7. Для чего нужны измерения, ресурсы и реквизиты регистра?
8. Что такое ведущее измерение регистра?
9. Что такое движения регистра?
10.Что такое регистратор?
97
5. Лабораторная работа № 5. Регистры накопления
Цель работы. Получение навыков работы с регистрами накопления.
5.1 Теоретические сведения
Итак, мы с вами подошли к одному из главных моментов разработки
любой конфигурации – созданию механизма учета накопления данных.
Казалось бы, что все необходимое мы с вами уже создали: у нас есть
что расходовать и приходовать (справочники) и у нас есть чем
расходовать и приходовать (документы). Осталось только построить
несколько отчетов и автоматизация предприятия будет закончена.
Однако это не так.
Во-первых, путем анализа документов можно, конечно, получить
требуемые нам выходные данные, но представьте, что завтра предприятие
решит немного изменить свои бизнес–процессы и нам потребуется ввести
в конфигурацию еще один документ (или несколько документов).
Например, сейчас мы полагаем, что товары поступают на склад, а
затем
расходуются.
контроль
и
решило
Руководство
захотело
приходовать
товары
усилить
на
материальный
основной
склад
организации и затем выдавать их материально ответственным лицам. В
этом случае нам придется добавить в конфигурацию еще один документ,
который будет фиксировать перемещение материалов между основным
складом и материально ответственными лицами. И очевидно, нам придется
переработать все отчеты, которые были созданы к этому моменту, с тем,
чтобы они учитывали изменения, вносимые новым документом. А
представьте, если в нашей конфигурации не два, а двадцать документов?!
Во-вторых, отчеты, анализирующие документы, будут работать
довольно медленно, что будет вызывать раздражение пользователей и
недовольство руководителей.
Поэтому в системе 1С:Предприятие есть несколько объектов
конфигурации, которые позволяют создавать в базе данных структуры,
98
предназначенные
для
накопления
информации
в
удобном
для
последующего анализа виде.
Использование таких «хранилищ» данных позволяет нам, с одной
стороны,
накапливать
в
них
данные,
поставляемые
различными
документами (или другими объектами базы данных), а, с другой
стороны, легко создавать нужные нам отчеты или использовать эти
данные в алгоритмах работы конфигурации.
В конфигурации существуют несколько объектов, называемых
регистрами,
для
описания
подобных
«хранилищ».
Сейчас
мы
рассмотрим один из них. Регистры накопления используются в системе для
накопления информации о наличии и движении средств – товарных,
денежных и других величин. На основе объекта конфигурации «Регистр
накопления» платформа создает в базе данных информационную
структуру, в которой будут накапливаться данные, «поставляемые»
различными объектами базы данных (рис. 117). Эти данные будут
храниться в регистре в виде отдельных записей, каждая из которых имеет
одинаковую, заданную в конфигураторе, структуру.
Рис. 117 Предназначение регистров накопления
В конфигурации существуют несколько объектов, называемых
регистрами,
для
описания
подобных
«хранилищ».
Сейчас
мы
рассмотрим один из них. Регистры накопления используются в системе для
накопления информации о наличии и движении средств – товарных,
денежных и других величин. На основе объекта конфигурации «Регистр
99
накопления» платформа создает в базе данных информационную
структуру, в которой будут накапливаться данные, «поставляемые»
различными объектами базы данных. Эти данные будут храниться в
регистре в виде отдельных записей, каждая из которых имеет одинаковую,
заданную в конфигураторе, структуру.
Отличительной особенностью регистра накопления является то, что
он не предназначен для интерактивного редактирования пользователем.
Разработчик может, при необходимости, предоставить пользователю
возможность редактировать регистр накопления, но предназначение
регистра накопления заключается в том, чтобы его модификация
производилась на основе алгоритмов работы других объектов базы данных
(не обязательно документов, как в версии 7.7), а не в результате
непосредственных действий пользователя.
Основным назначением регистра накопления является накопление
числовой
информации
описываются
в
разрезе
разработчиком
конфигурации
Регистр
нескольких
в
накопления,
измерений,
соответствующем
и
являются
которые
объекте
подчиненными
объектами конфигурации.
Виды
числовой
информации,
накапливаемой
регистром
накопления, называются ресурсами и также являются подчиненными
объектами и описываются в конфигураторе.
Например, регистр накопления может накапливать информацию о
количестве и сумме товаров на складах. В этом случае, он будет иметь
измерения «Товар» и «Склад», и ресурсы «Количество» и «Сумма».
Можно сказать, что регистр накопления представляет из себя nмерную систему координат, в узлах которой располагаются наборы
числовых характеристик.
Принципиальным отличием регистра сведений от регистра
накопления является то, что каждое движение регистра сведений
устанавливает новое значение ресурса, в то время как движение регистра
100
накопления изменяет существующее значение ресурса. По этой причине
регистр сведений может хранить любые данные (а не только числовые, как
регистр накопления).
Уникальность
записей
по
набору
измерений
принципиально
отличает регистры сведений от регистров накоплений, которые позволяют
вводить несколько записей с одинаковым значением измерений и
периодом.
Так же как и с регистром сведений, работа с регистром накопления
заключается в работе с записями (движениями регистра).
Изменение состояния регистра накопления происходит, как
правило, при проведении документа, и заключается в том, что в регистр
добавляется некоторое количество записей. Каждая запись содержит
значения измерений, значения приращений ресурсов, ссылку на документ,
который
вызвал
эти
изменения
(регистратор)
и
«направление»
приращения (приход или расход). Такой набор записей называется
движениями
регистра
накопления.
Каждому
движению
регистра
накопления всегда должен соответствовать регистратор.
Кроме того, регистр накопления может хранить дополнительную
информацию,
описывающую
каждое
движение.
Набор
такой
дополнительной информации задается разработчиком при помощи
реквизитов объекта конфигурации Регистр накопления.
Различают два вида регистров накопления:
• Регистры остатков;
• Регистры оборотов.
5.1.1 Проведение документа по нескольким регистрам
Рассмотрим, как один и тот же документ может «поставлять»
информацию в различные регистры конфигурации, и для чего может
понадобиться такая возможность. Для этого мы создадим еще один
регистр и изменим процедуру проведения документов так, чтобы они
101
записывали необходимые данные как в один, так и в другой регистр, и
подготовим базу для дальнейшего изучения.
Документ «ПриходнаяНакладная» уже создает движения по регистру
сведений «ЦеныПоставщиков», а теперь еще будет создавать движения по
регистру
«ОстаткиНоменклатуры».
регистраторы
нового
При
регистра
добавлении
документа
существующая
в
процедура
«ОбработкаПроведения» замещается, но конструктор движений «помнит»
о сделанных настройках, и переносит их во вновь создаваемую процедуру.
5.1.2 Регистр «Остатки номенклатуры»
Теперь, когда мы знаем, для чего предназначены регистры
накопления, посмотрим, как можно их использовать в нашем примере.
Начнем знакомство с регистрами накопления с регистров остатков.
Прежде всего, нас интересует информация о том, сколько и каких
материалов есть у нас на складах. Для накопления такой информации мы
создадим регистр «ОстаткиНоменклатуры».
Откроем в конфигураторе нашу учебную конфигурацию и
создадим новый объект конфигурации Регистр накопления. Зададим имя
регистра – «ОстаткиНоменклатуры», его вид – «Остатки» (рис. 118).
Нажмем кнопку «Далее>» и перейдем к созданию структуры регистра.
Рис. 118 Создание регистра «ОстаткиНоменклатуры»
Определите
у
него
два
измерения:
«СправочникСсылка.Номенклатура»
и
«Номенклатура»
«Склад»
типа
типа
«СправочникСсылка.Склады», два ресурса «Количество» типа «Число»
102
(15,3)
−
неотрицательное,
и
«Сумма»
типа
«Число»
(15,2)
−
неотрицательное, настройте формы списка (рис. 119).
Рис. 119 Задание измерений и реквизитов регистра
Если вы сейчас попытаетесь запустить систему 1С:Предприятие в
режиме
отладки,
то
система
выдаст
сообщение
об
ошибке:
«РегистрНакопления.ОстаткиНоменклатуры: Ни один из документов не
является
регистратором
для
регистра».
Это
сообщение
еще
раз
подтверждает тот факт, что назначение регистра накопления в том, чтобы
аккумулировать данные, поставляемые различными документами.
Движения документа − это записи в регистрах, которые создаются
в процессе проведения документа и отражают изменения, производимые
документом. Перейдем на закладку «Регистраторы» и там отметим
документы, которые могут выполнять движения данного регистра (рис.
120).
103
Рис. 120 Задание регистраторов регистра
Остается
модифицировать
документ
«ПриходнаяНакладная».
Необходимо разрешить ему «двигать» данный регистр и, используя
конструктор движений, переопределить обработку проведения. Откроем
окно
редактирования
объекта
конфигурации
Документ
«ПриходнаяНакладная».
Перейдем
на
закладку «Движения»
и
в
списке регистров
конфигурации отметим регистр накопления «ОстаткиНоменклатуры» (рис.
121). Обратите внимание, что сразу после отметки выбранного регистра
становится
доступной
кнопка
«Конструктор
конструктором мы и воспользуемся.
104
движений».
Этим
Рис. 121 Задание движений регистра в документе
Конструктор устроен просто. В списке «Регистры» перечислены
регистры, в которых документ может создавать движения. В нашем случае
там пока один регистр сведений «ЦеныПоставщиков» и один регистр
накопления
«ОстаткиНоменклатуры».
При
нажатии
на
кнопку
«Конструктор движений» (рис. 121) среда выдает предупреждение о
замещении существующей процедуры «ОбработкаПроведения()» (рис.
122). Щелкнем по кнопке «Да» и в ответ открывается конструктор
движений регистра, заполненный ранее, куда требуется добавить еще один
регистр. В окне «Регистры» надо щелкнуть по кнопке
«Добавить», и в
ответ среда предлагает указать объект, для которого будут строиться
дополнительные движения (рис. 123).
Рис. 122 Предупреждение о замещении процедуры
105
Рис. 123 Добавление регистра накопления
В списке «Реквизиты документа» должны находиться исходные
данные для создания движений. А в таблице «Поле – Выражение» должны
быть заданы формулы, по которым будут вычисляться значения измерений
и реквизитов регистра при записи движений. Обратите внимание, что по
умолчанию конструктор предлагает нам создавать движения прихода
(символ
«+»
рядом
с
названием
регистра)
по
регистру
«ОстаткиНоменклатуры». Это нас вполне устраивает, ведь документ
«ПриходнаяНакладная» и должен приходовать материалы.
В поле выбора «Табличная часть» выберем табличную часть
нашего документа − «Материалы». Список реквизитов документа
автоматически заполнится реквизитами нашей табличной части. Теперь
нажмем «Заполнить выражения», и в ответ в нижнем окне сформируется
соответствие полей и выражений (рис. 124).
Рис. 124 Результат работы конструктора движений
106
Как видите, конструктор движений установил соответствия
подходящим образом: в качестве материала в регистр будет записан
материал из табличной части документа, в качестве склада − склад,
указанный в шапке документа, а в качестве количества и суммы –
количество и сумма из табличной части документа. Нажмем «ОК» и
посмотрим, какой текст сформировал конструктор в модуле объекта (рис.
125).
Рис. 125 Окончательный текст процедуры «ОбработкаПроведения()»
Конструктор создал обработчик события «ОбработкаПроведения»
объекта конфигурации «Документ» и поместил его в модуль объекта.
Как вы видите, конструктор создал два цикла обхода табличной
части документа − отдельно, для каждого регистра. Так происходит
потому, что в общем случае документ может иметь несколько табличных
частей, и
информация, содержащаяся
в каждой из них, может
предназначаться для своего отдельного регистра.
Внутри обработчика расположен цикл, который предназначен для
перебора строк табличной части нашего документа. В цикле
обращение к
табличной
части
документа происходит по
имени
(«Материалы»), а строки табличной части документа представляют собой
107
коллекцию
значений,
для
перебора
которой
можно
использовать
конструкцию Для каждого ... из ... цикл.
Объект встроенного языка ДокументОбъект имеет свойство
«Движения». Оно возвращает коллекцию наборов записей регистров,
которые принадлежат этому документу. К набору записей документа,
принадлежащему конкретному регистру, можно обратиться, указав через
точку имя этого регистра.
Таким образом, в первой строке тела цикла мы добавляем к набору
записей, который создает наш документ в регистре, новую запись и
сохраняем ее в переменной «Движение».
Затем мы присваиваем нужные значения всем полям этой записи и
после перебора всех строк документа (после завершения циклов) «одним
махом» записываем в регистр «ОстаткиНоменклатуры» весь набор записей
движений документа.
Посмотрим, как это работает. Запустим систему 1С:Предприятие в
режиме отладки и откроем одновременно два окна: список документов
«ПриходнаяНакладная»
и
список
регистра
накопления
«ОстаткиНоменклатуры». Откроем Приходную накладную №1 и нажмем
«ОК». Обратите внимание, что при проведении приходной накладной
появляются соответствующие записи в регистрах накопления, которые
можно посмотреть, щелкнув по кнопке «Перейти» формы списка или
формы элемента, и выбрав там соответствующий регистр (рис. 126).
Рис. 126 Движения приходной накладной по регистру «Остатки
номенклатуры»
Если вести речь о регистрах остатков, то нельзя закончить разговор о
данном объекте, не ответив на вопрос: «На какую дату система хранит
108
рассчитанные остатки?». Ответ: «Соответствующая граница выставляется
в пользовательском режиме».
5.1.2 Проведение документа «РасходнаяНакладная»
Теперь внесем изменения в процедуру обработки проведения
документа «РасходнаяНакладная». На данном этапе мы будем исходить из
пожелания, высказанного руководством фирмы. Суть его заключается в
том, что при списании материалов, израсходованных в процессе продажи,
должна быть возможность указывать различную стоимость для одного и
того же материала, которая рассчитана руководством исходя из текущих
конъюнктурных соображений.
Поскольку в документе «РасходнаяНакладная» у нас отражена
только цена номенклатуры, нам понадобится добавить в табличную часть
документа еще одно поле, в котором будет указываться себестоимость
номенклатуры.
Откроем
в
конфигураторе
окно
редактирования
объекта
конфигурации Документ «РасходнаяНакладная», перейдем на закладку
«Данные» и создадим новый реквизит табличной части документа с
именем «Себестоимость», типом
«Число»
(15,2). После этого откроем
форму «ФормаДокумента» документа «РасходнаяНакладная» и добавим в
табличное
поле
колонку,
отображающую
новый
реквизит
«Себестоимость», расположив ее после колонки «Номенклатура» и
запретив ее редактирование, поставив флажок «ТолькоПросмотр».
Предусмотрим
«Себестоимость»
автоматическое
на
основе
данных
заполнение
регистра
колонки
сведений
«ЦеныПоставщиков» при выборе номенклатуры, аналогично тому, как это
делалось для розничной цены.
109
Для этого в общий модуль «РаботаСоСправочниками» добавим
функцию «Себестоимость» (рис. 127).
Рис. 127 Функция вычисления себестоимости номенклатуры
Модифицируем обработчик изменения номенклатуры в форме
документа. Для этого откроем свойства поля ввода, расположенного в
колонке «Номенклатура» табличной части «Материалы» и внизу списка
найдем событие «При изменении». Нажмем на кнопку с лупой и в
открывшейся
заготовке
обработчика
события
исправим
текст
соответствующей процедуры, вставив вызов только что написанной
функции (рис. 128).
Рис. 128 Обработчик изменения номенклатуры
Теперь создадим движения документа «РасходнаяНакладная» таким
же образом, как мы делали это для документа «ПриходнаяНакладная».
Откроем в конфигураторе окно редактирования объекта конфигурации
Документ «РасходнаяНакладная» и укажем, что он будет создавать
движения по регистру накопления «ОстаткиНоменклатуры».
Запустим конструктор движений документа, и добавим в список
регистров регистр «ОстаткиНоменклатуры» (рис. 129). Опишем движения
документа следующим образом (обратите внимание, что стоимость
вычисляется как произведение себестоимости и количества, указанных в
табличной части) (рис. 130).
110
Рис. 129 Конструктор движений документа «РасходнаяНакладная»
Рис. 130 Процедура «ОбработкаПроведения» документа
«РасходнаяНакладная»
При
проведении
расходных
накладных
необходимо
контролироватьвозможность их проведения по количественному остатку
товара на складе. Для этого надо иметь ответ на вопрос: «какие остатки
были на складе, когда накладная выписывалась?». Для этого необходимо
проверить текущее значение регистра остатков «ОстаткиНоменклатуры»
по выбранному
товару и выбранному складу, а также придется
модифицировать процедуру «ОбработкаПроведения» вручную, перейдя на
вкладку «Прочее» и нажав на кнопку «Модуль объекта» (рис. 131).
111
Рис. 131 Исправленная процедура обработки проведения
Комментарий к тексту процедуры:
 //1 создаем переменную, дающую доступ к объекту
«РегистрНакопленияМенеджер.ОстаткиНоменклатуры»;
 //2 готовим структуру, содержащую фильтр по нужному товару;
 //3 получаем в таблицу значений остатки нужного товара, актуальные
на дату документа;
 //4 организуем проверку допустимости текущей строки табличной
части, при невыполнении условия документ не проводится.
Аналогичным образом надо настроить проведение документа
«ОказаниеУслуги» по регистру «ОстаткиНоменклатуры».
5.1.3 Оборотный регистр накопления «Продажи»
Теперь создадим оборотный регистр накопления и добавим в один
из наших документов движения еще и по этому регистру. Продолжим
дорабатывать документ «ОказаниеУслуги». До сих пор мы создавали в
регистрах накопления движения только для строк документа, которые
содержат материалы. Услуги, содержащиеся в документе, мы никак не
учитывали.
112
Дело в том, что при учете услуг важны совершенно другие критерии,
нежели при учете материалов. Прежде всего, бессмысленно говорить о
том, сколько услуг было и сколько их осталось, важна только сумма и
количество услуг, которые были оказаны за определенный промежуток
времени. Кроме этого интересны следующие моменты:
 какие именно услуги были оказаны (чтобы составить рейтингуслуг);
 какому именно клиенту оказывались услуги (чтобы предоставить ему
скидку от объема оплаченных ранее услуг, например);
 какой мастер предоставлял услуги (чтобы начислить ему заработную
плату).
Очевидно, что существующие регистры накопления совершенно не
подходят для решения таких задач. Поэтому мы создадим еще одно
«хранилище» данных, которое будет использоваться в нашей
программе − оборотный регистр накопления «Продажи».
Когда
мы
создавали
регистр
«ОстаткиНоменклатуры»,
мы
специально не останавливались на двух видах регистров накопления,
которые существуют в системе 1С:Предприятие. Сейчас пришло время
поговорить об этом.
Регистры
накопления
могут
быть
регистрами
остатков
и
регистрами оборотов.
Существующий
в
«ОстаткиНоменклатуры»
нашей
учебной
конфигурации
регистр
является регистром остатков. Для таких
регистров система создает три виртуальные таблицы: таблица остатков,
оборотов и совокупная таблица остатков и оборотов.
Оборотный регистр накопления очень похож на, знакомый уже нам,
регистр остатков, но для него понятие «остаток» не имеет смысла.
Оборотный регистр накапливает только обороты, остатки ему безразличны.
Поэтому единственной виртуальной таблицей, которую будет создавать
система для такого регистра, будет таблица оборотов. В остальном
оборотный регистр ни чем не отличается от регистра остатков.
113
Следует сказать об одной особенности конструирования регистров
накопления, напрямую связанной с возможностью получения остатков.
При создании оборотного регистра накопления нет особой
сложности в определении того, какие именно параметры должны являться
измерениями регистра − мы можем назначить в качестве его измерений
любые нужные нам параметры.
Совсем
иная
ситуация
в
случае
регистра
накопления
поддерживающего накопление остатков. Для него выбор измерений
должен выполняться исходя из того, что движения регистра могут быть
осуществлены «в две стороны»: приход и расход. Таким образом, в
качестве измерений нужно выбирать те параметры, по которым движения
точно будут осуществляться как в одну, так и в другую сторону.
Например, если ведется учет материалов в разрезах номенклатуры и
склада − очевидно, что и номенклатура и склад могут быть
измерениями, поскольку как приход, так и расход материалов всегда будет
осуществляться с указанием конкретной номенклатуры и конкретного
склада. Если же в этой ситуации появляется желание отразить учет
материалов еще и в разрезе поставщика, то здесь уже нужно исходить из
конкретной схемы учета, принятой на предприятии.
Скорее всего, при поступлении материалов поставщик будет
указан, а вот при расходе материалов, с большой долей вероятности
поставщик указываться не будет, так как в большинстве случаев это
совершенно лишняя информация. Значит, поставщика следует добавить
как реквизит регистра накопления.
Если же при расходе материалов поставщик будет указываться
наверняка, тогда имеет смысл добавить поставщика в измерения регистра.
Иными словами, по каждому из измерений регистра накопления
остатков изменение ресурсов обязательно должно осуществляться в обе
стороны: приход и расход.
114
Для реквизитов регистра этот принцип неважен, по реквизитам
регистра
ресурсы
могут
только
приходоваться
или
только
расходоваться.
Нарушение этого принципа построения регистров накопления
будет вести к непроизводительному использованию ресурсов системы и,
как следствие, замедлению работы и падению производительности.
Теперь, когда мы знаем «практически все» о регистрах накопления,
откроем конфигуратор и создадим новый объект конфигурации регистр
накопления. Назовем его «Продажи» и определим вид регистра −
«Обороты» (рис. 132).
Рис. 132 Создание оборотного регистра
На закладке «Данные» создадим измерения регистра:
 «Номенклатура», тип «СправочникСсылка.Номенклатура»;
 «Клиент», тип «СправочникСсылка.Кпиенты»;
 «Мастер», тип «СправочникСсылка.Сотрудники» .
Регистр будет иметь три ресурса:
 «Количество», тип «Число» (15,3), неотрицательное;
 «Выручка», тип «Число» (15,2), неотрицательное;
 «Стоимость», тип «Число» (15,2), неотрицательное.
Этот регистр будет обрабатываться документами
«РасходнаяНакладная», «ОказаниеУслуги».
Откроем окно редактирования объекта конфигурации Документ
«ОказаниеУслуги»
и на закладке «Движения» укажем, что этот
документ будет создавать движения по регистру «Продажи» (рис. 133).
115
Запустим систему 1С:Предприятие в режиме отладки и откроем
формы
списка
регистров
накопления
«Продажи»
и
«ОстаткиНоменклатуры». Обратите внимание, что формы практически
одинаковы, за исключением состава измерений и ресурсов.
Рис. 133 Вызов конструктора движений
Создадим движения документа «ОказаниеУслуги» по регистрам
«ОстаткиНоменклатуры»
и
«Продажи»
для
табличной
части
«ПереченьНоменклатуры» конструктором движений, а для табличной
части «Услуги» добавим вручную (рис. 134).
Рис. 134 Работа с конструктором движений
116
Для учета выручки по услугам мы не будем использовать
конструктор движений документа, а внесем необходимые дополнения
прямо
в
обработчик
события
«ОбработкаПроведения»
документа
«ОказаниеУслуги».
Откроем в конфигураторе модуль объекта конфигурации документ
«ОказаниеУслуги» и найдем в нем процедуру обработчика события
«ОбработкаПроведения» (закладка «Прочее», кнопка «МодульДокумента»).
Создадим еще один цикл обхода табличной части :
Для Каждого ТекСтрокаУслуги Из Услуги Цикл
// регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ТекСтрокаУслуги.Услуга;
Движение.Клиент = Клиент;
Движение.Мастер = Мастер;
Движение.Количество = 1;
Движение.Выручка = ТекСтрокаПереченьНоменклатуры.Стоимость;
Движение.Себестоимость = 0;
КонецЦикла;
После этого необходимо внести необходимые изменения для запрета
проведения документа при нехватке материалов на складе (аналогично
документу «РасходнаяНакладная»).
Затем необходимо внести изменения в документ
«РасходнаяНакладная». Требуется разрешить документу «двигать»
данный регистр, определив с помощью конструктора процедуру
проведения документа (!!! Не забыть про внесенные ручные изменения).
5.2 Задание на лабораторную работу
1. Добавить реквизит «Себестоимость» типа «Число» (15,2) в табличные
части
«Материалы»
«ПереченьНоменклатуры»
документа
«РасходнаяНакладная»
и
документа «ОказаниеУслуги». В форме
документа предусмотреть автоматическое заполнение этого поля по
значениям регистра сведений «ЦеныПоставщиков».
2. Создать
регистр
Определите
у
накопления
него
два
остатков
«ОстаткиНоменклатуры».
измерения:
«СправочникСсылка.Номенклатура»
117
и
«Номенклатура»
типа
«Склад»
типа
«СправочникСсылка.Склады», два ресурса «Количество» типа «Число»
(15,3) − неотрицательное, и
неотрицательное.
«Сумма»
Назначить
регистраторами
для
«ПриходнаяНакладная»
типа «Число» (15,2) −
прихода
документы
номенклатуры,
«РасходнаяНакладная», «ОказаниеУслуги» для расхода номенклатуры.
Запретить проведение документов по расходу при недостаточном
количестве номенклатуры.
3. Создать оборотный регистр накопления «Продажи» с реквизитами:
«Номенклатура», тип «СправочникСсылка.Номенклатура», «Клиент»,
тип
«СправочникСсылка.Клиенты»,
тип
«Мастер»,
«СправочникСсылка.Сотрудники» и ресурсами: «Количество», типа
«Число» (15,3), неотрицательное; «Выручка», типа «Число»(15,2),
неотрицательное;
«Себестоимость»,
неотрицательное.
Назначить
типа
«Число»
регистраторами
(15,2),
документы
«РасходнаяНакладная» и «ОказаниеУслуги».
4. Создать оборотный регистр накопления «Закупки» с реквизитами:
тип
«Номенклатура»,
«СправочникСсылка.Номенклатура»,
«Контрагент», тип «СправочникСсылка.Контрагенты» и ресурсами:
«Количество», типа «Число» (15,3), неотрицательное; «Стоимость»,
тип
«Число»
(15,2), неотрицательное. Назначить регистратором
документ «ПриходнаяНакладная».
5. Создать регистр накопления остатков «Касса» с ресурсом «Сумма» типа
«Число» (15,2) и реквизитом «КонтактноеЛицо» составного типа,
состоящего
из
типов
«СправочникСсылка.Клиенты»,
и
«СправочникСсылка.Контрагенты»
«СправочникСсылка.Сотрудники».
Назначить
его
регистраторами
документ «ПриходныйКассовыйОрдер» для прихода (внесения) денег в
кассу, документ «РасходныйКассовыйОрдер» для расхода (выдачи)
118
денег из кассы. Запретить расход денег при их недостаточном
количестве в кассе.
6. Создать регистр накопления остатков «Поставщики» с измерением
«Контагент»
типа
и
«СправочникСсылка.Контрагент»
ресурсом
«Долг» типа «Число» (15,2). Назначить его регистраторами документы
«РасходныйКассовыйОрдер»
по
приходу
денег
и
«ПриходнаяНакладная» по расходу денег.
7. Создать регистр накопления остатков «Покупатели» с измерением
«Клиент» типа «СправочникСсылка.Клиенты» и ресурсом «Долг» типа
«Число»
(15,2).
Назначить
«ПриходныйКассовыйОрдер»
его
регистраторами
по
расходу
документы
денег
и
«РасходнаяНакладная» и «ОказаниеУслуги» по приходу денег.
5.3 Контрольные вопросы
1. Основное предназначение регистров накопления.
2. Особенности объекта конфигурации «Регистр накопления».
3. Когда удобнее использовать регистры, несмотря на то, что необходимая
информация содержится в других объектах?
4. Основные различия регистра сведений и регистра накопления.
5. Какие поля определяют ключ уникальности регистра накопления?
6. Для чего нужны измерения, ресурсы и реквизиты регистра?
7. Что такое ведущее измерение регистра?
8. Что такое движения регистра?
9. Что такое регистратор?
10.Какие типы регистров накопления бывают и чем они различаются?
11. Регистр накопления остатков и его свойства.
12. Оборотный регистр накопления и его свойства.
119
6. Лабораторная работа № 6. Журналы документов. Критерии отбора
Цель работы. Получение навыков работы с журналами документов,
создание и редактирование различных форм списка журналов документов.
Получение навыков работы с критериями отбора.
6.1 Теоретические сведения
До этого момента для работы с уже выписанными документами
использовались их формы списка. Эти формы списка не позволяли
просматривать (в одном списке) документы разных видов. Если же в этом
есть необходимость, то здесь смогут помочь журналы.
В системе 1С:Предприятие 8 журналы документов являются
объектами конфигурации, предназначенными для смысловой группировки
документов. Для отображения журнала используется элемент управления
«ТабличноеПоле». Работая со списком документов, пользователь может
создать новый документ, открыть или удалить его, найти нужный
документ по номеру. Кроме того, есть возможность установить нужный
интервал, тем самым, ограничив выборку документов.
Стоит отметить, что у самого документа может быть форма списка,
которая является аналогом журнала для документов одного вида. Если она
не создана, то генерируется системой автоматически, когда в ней
возникает потребность, но, если требуется, можно создать ее в
Конфигураторе и настроить удобный внешний вид формы.
Документ при записи может регистрироваться в нескольких
журналах, что настраивается в Конфигураторе. Не рекомендуется
указывать много журналов, в которых должен регистрироваться документ,
поскольку это может отрицательно сказаться на производительности
системы при интенсивном вводе документов. В журнале обычно
отображаются документы разного вида Например, в журнале «Торговля»,
могут регистрироваться все торговые документы (счета, приходные и
расходные накладные и т. д. ).
120
Журнал документов состоит из граф. Все графы журнала делятся на
основные
(обязательные,
добавляемые
средой)
и
дополнительные
(добавляемые пользователем). К основным графам журнала относятся
графы:
 картинка (пиктограмма, показывающая проведен ли документ);
 вид документа (его название из конфигуратора);
 дата;
 номер.
В журнале документов могут быть созданы дополнительные графы
журнала, которые отображают информацию из документов, например, в
журнале «Торговля» может быть создана графа «Контрагент». При
настройке графы журнала указывается список реквизитов документов, из
которых она будет отображать информацию. Из каждого документа для
одной графы можно взять только один реквизит. Не рекомендуется
смешивать
в
одной
графе
разнородную
информацию,
например,
контрагента и сумму документа.
В журнале может быть любое (в разумных пределах) количество
дополнительных граф. При создании графы необходимо от каждого вида
документа выбрать по реквизиту (только по одному, но можно разных
типов), который будет в ней отображаться.
6.1.1 Создание журнала документов
Создание журнала документов проиллюстрируем созданием журнала
«Касса», содержащего кассовые документы – приходные и расходные
кассовые ордера. Для этого в дереве конфигурации откроем ветвь
«Журналы документов» и щелкнем правой кнопкой мыши у ее основания,
а затем в появившемся контекстном меню выберем пункт «Добавить». В
ответ вызовется мастер создания журнала документов (рис. 135).
121
Рис. 135 Создание журнала документов «Касса»
На первом шаге работы мастера зададим на вкладке «Основные» имя
журнала и щелкнем по кнопке «Далее>», в ответ откроется вкладка
«Данные», где требуется задать список регистрируемых в журнале
документов. Для этого на панели инструментов этого списка щелкнем по
кнопке
«Редактировать элемент списка», в ответ появится диалог
указания объектов журнала, в котором надо поставить флажки и
включаемых в журнал документов (рис. 136).
Рис. 136 Задание регистрируемых в журнале документов
В нижнем списке необходимо задать дополнительные графы
журнала. Для этого на панели инструментов этого списка надо щелкнуть
по кнопке
«Добавить» для добавления граф журнала «Контрагент» и
«Сумма». В ответ среда предложит задать имя графы журнала и тип
принимаемых ею значений («Ссылки») (рис. 137 − рис. 140).
122
Рис. 137 Задание свойств дополнительной графы журнала
Рис. 138 Задание типа принимаемых графой «Контрагент» значений
Рис. 139 Задание типа принимаемых графой «Сумма» значений
Рис. 140 Задание данных журнала документов «Касса»
123
После задания дополнительных граф журнала надо перейти на
вкладку «Формы» (рис. 141), где требуется создать форму списка журнала.
Для этого надо щелкнуть по кнопке
«Добавить», в ответ вызовется
мастер создания формы списка журнала документов (рис. 142). С помощью
этого мастера требуется создать форму списка (рис. 143).
Рис. 141 Задание форм списка журнала документов
Рис. 142 Мастер создания формы списка журнала документов
Рис. 143 Форма списка журнала документов
По завершению работы мастера надо перейти в пользовательский
режим
и
просмотреть
форму
списка
124
журнала
документов
в
пользовательском режиме (рис. 144). Это делается через пункт основного
меню «Операции → Документы → Касса».
Рис. 144 Журнал документов в пользовательском режиме
6.1.2 Создание критерия отбора
Критерии отбора − одна из составляющих механизма отбора
информации (из справочников, документов). С их помощью специалист,
осуществляющий конфигурирование системы, создает предопределенные
правила отбора. При использовании конфигурации по этим правилам
будет выполняться отбор документов и элементов справочников. Таким
образом,
критерий
отбора
представляет
собой
правило
«поиска»
информации в справочниках, документах. Создание критерия отбора
расширяет список предопределенных отборов в системе.
Чтобы критерий отбора выполнял свои функции, в Конфигураторе
для него должен быть создан список, состоящий из реквизитов
справочников и документов. На состав списка не накладывается
практически никаких ограничений: например, в отличие от графы журнала,
для критерия отбора можно выбрать несколько реквизитов одного
документа и реквизитов табличной части документа.
Критериев отбора может быть произвольное число, а каждый
критерий может иметь несколько форм представления результатов отбора.
Этот механизм полезен в случае поиска различной информации, например,
требуется отобрать все документы, в которых используется (в реквизитах и
табличных частях) определенный контрагент, при этом можно учитывать и
другие условия отбора информации (например, поиск ведется только среди
проведенных документов или в определенном интервале дат и т.д.).
125
Поставим себе задачу: необходимо отбирать документы, в которых
встречается интересующая нас номенклатурная позиция. Для этого
создадим критерий отбора «Номенклатура». Ветвь критериев отбора в
дереве конфигурации находится у основания «Общие» | «Критерии
отбора». Подсветим корень этой ветви, щелкнем правой кнопкой мыши, и
в появившемся контекстном меню выбирем пункт «Добавить». В ответ
вызывается мастер создания критерия отбора. На первом шаге мастера
надо задать имя, синоним и комментарий (рис. 145) на втором – тип
принимаемых значений (рис. 146).
Рис. 145 Создание критерия отбора
Рис. 146 Задание данных критерия отбора
Если в конфигурации определено несколько подсистем, то удобно
указать подсистему, к которой относится данный критерий отбора (рис.
147). Если критерий отбора используется во всех подсистемах, то укажите
корневую строчку. Можно указать несколько различных подсистем. В
список реквизитов критерия отбора будут включаться только те
справочники и документы, в палитре свойств которых в свойстве
«Подсистема» указаны любая из выбранных подсистем (рис. 148).
126
Созданный для критерия отбора список реквизитов справочников и
документов определяет, где будет осуществляться поиск требуемой
информации при отборе документов и элементов справочника.
Тип критерия отбора может быть любым из стандартных типов или
определенных как объекты дерева конфигурации, составным (состоящим
из набора различных типов) и произвольным. Если указать составной тип
критерия отбора, то состав реквизитов критерия отбора может быть
расширен.
В первом случае тип критерия отбора выбирается однозначным
выбором
типа
из
структуры
конфигурации
(«СправочникСсылка.Номенклатура»). В этом случае состав объектов,
входящих в критерий отбора будет определяться строго по указанному
типу.
Рис. 147 Задание подсистем критерия отбора
Рис. 148 Задание состава реквизитов критерия отбора
127
Если указать составной тип критерия отбора (рис. 149), то состав
реквизитов критерия отбора может быть расширен.
Рис. 149 Составной тип данных критерия отбора
Критерий отбора может иметь форму для визуального представления
результатов отбора. Для оперативности получения информации по отбору
вызов формы можно разместить в пользовательском меню или на панели
инструментов. Если форм критерия отбора несколько, то в свойстве
«Основная форма» указывается та форма, которая будет вызываться по
умолчанию. Для создания формы отбора надо перейти на вкладку
«Формы» (рис. 148) и добавить новую форму, в ответ вызовется мастер
построения форм (рис. 150). По нажатию на кнопку «Готово» получим
построенную форма критерия отбора (рис. 151).
Рис. 150 Создание формы критерия отбора
128
Рис. 151 Готовая форма критерия отбора
Для использования критерия можно в форме списке справочника
«Номенклатура» воспользоваться кнопкой «Перейти» (с выбором критерия
отбора), или в журнале документов «ДвижениеТоваров» организовать
отбор по номенклатуре, используя появившийся предопределенный отбор
по нажатию кнопки
«Отбор и сортировка» (рис. 152).
Рис. 152 Отбор и сортировка в пользовательском режиме
6.2 Задание на лабораторную работу
1. Создать критерий отбора «КритерийКонтрагент» составного типа,
включающий
в
себя
«СправочникСсылка.Контрагенты»,
«СправочникСсылка.Клиенты».
Создать
критерий
отбора
«Номенклатура»
типа
«СправочникСсылка.Номенклатура».
3.
Создать
критерий
отбора
«КритерийСклад»
типа
«СправочникСсылка.Склады».
4.
Создать
критерий
отбора
«СправочникСсылка.Сотрудники».
5. Создать журналы и настроить их формы списка:
129
«Мастер»
типа
 «ПриходныеДокументы»,
содержащий
«Документ.ПриходнаяНакладная»
документы
типа
и отображающий их реквизиты
«Контрагент», «Склад», «СуммаДокумента»;
 «РасходныеДокументы»,
содержащий
«Документ.Счет»,
документы
типа
«Документ.Доверенность»,
«Документ.РасходнаяНакладная»,
«Документ.ОказаниеУслуги»
и
отображающий их реквизиты «Клиент», «Склад», «СуммаДокумента»;
 «Касса»,
содержащий
документы
типа
«Документ.ПриходныйКассовыйОрдер»,
«Документ.РасходныйКассовыйОрдер» и отображающий их реквизиты
«Контрагент», «СуммаДокумента»;
 «ДвижениеТоваров»,
содержащий
документы
типа
«Документ.ПриходнаяНакладная», «Документ.РасходнаяНакладная»,
«Документ.ОказаниеУслуги»
и
отображающий
их
реквизиты
«Контрагент», «Склад», «СуммаДокумента»;
 «СкладскиеДокументы», содержащий все документы системы, и
отображающий их реквизиты «Контрагент», «СуммаДокумента», в
котором организованы все указанные отборы.
6.3 Контрольные вопросы
1. Предназначение журнала документов.
2. Классификация граф журнала документов.
3. Какие графы журналы называются основными?
4. Какие графы журналы называются дополнительными?
5. Понятие критерия отбора.
130
7. Лабораторная работа № 7. Печатные формы справочников,
документов, журналов.
Цель работы. Получение навыков работы с макетами и печатными
формами справочников, документов, журналов.
7.1 Теоретические сведения
7.1.1 Печатные формы
Для формирования печатных форм в системе используются два
объекта: «Макет» и «Табличный документ». Следует отметить, что
«Макет» является объектом метаданных, чаще всего содержащим внутри
себя «Табличный документ».
Для
создания
предназначенных
использованием
различных
для
печатных
представления
таблиц,
в
системе
и
форм,
ввода
а
также
форм,
информации
1C:Предприятие
с
используется
специализированный табличный редактор. Табличный редактор в системе
1C:Предприятие с первого взгляда может показаться похожим на
«обычные» электронные таблицы. Но это не так.
В дальнейшем наряду с терминами табличный документ и печатная
форма будет использоваться термин: таблица.
Таблица в системе 1С:Предприятие, как и любая другая таблица,
представляет
собой
совокупность
ячеек
прямоугольной
формы,
организованных в строки и столбцы. Каждый столбец и каждая строка
имеет свой уникальный номер. Строки и столбцы нумеруются независимо,
нумерация начинается с 1 и ведется от левого верхнего угла таблицы.
Столбцы в строках могут иметь индивидуальную ширину (разную в
различных строках). Таким образом, любая ячейка может быть обозначена
парой чисел – номером строки и номером столбца, на пересечении
которых она находится. Кроме того, отдельным ячейкам и их диапазонам
(компактным
группам
прямоугольной
формы)
можно
присваивать
собственные имена для удобства обращения к ним. Для присваивания имен
131
и работы с ними используется панель редактирования, диалог «Имена», а
также палитра свойств.
Самая верхняя ячейка столбца называется «заголовком столбца». В
ней выводится номер столбца, кроме того, она используется для выделения
столбца и изменения его ширины. Аналогичное назначение имеет и самая
левая ячейка строки, которая называется «заголовком строки».
Хотя в программе реализована возможность использования таблицы
для непосредственного ввода, обработки и отображения данных различных
типов, как в «обычных» электронных таблицах (использование таблиц,
размещенных в форме), таблицы в системе 1С:Предприятие используются
в основном для представления уже обработанной информации, в
частности, описания печатной формы отчета. Обработка информации и
помещение ее в нужные места таблицы для большинства объектов
конфигурации выполняется программными модулями на языке системы
1С:Предприятие.
Табличный документ представляет «готовую» печатную форму и
используется самостоятельно. Элемент управления типа «Табличный
документ» может располагаться в форме. В этом режиме в табличный
документ можно вставить другие элементы управления. Табличный
документ хранится вне конфигурации в файле на диске.
7.1.2 Макеты
Макет предназначен для определения «кирпичиков», на основании
которых строится готовая выходная форма. Проектирование макета
заключается именно в «рисовании» этих составных частей: именованных
областей. Макет располагается внутри конфигурации. Макеты бывают
общими и располагаются на ветви «Общие | Макеты» (например, макеты
стандартных
платежных
документов,
печатающихся
из
различных
документов) и относиться к определенному объекту конфигурации
(например, карточка основного средства). Объект конфигурации может
иметь несколько различные макетов печатных форм.
132
Проектирование макета заключается в «рисовании» составных
частей − кирпичиков, т.е. именованных областей, из которых затем будет
«собрана» готовая выходная форма − отчет. Именованные области бывают
горизонтальные (включают в себя отмеченные строки) и вертикальные
(включают в себя отмеченные столбцы), а также прямоугольными,
включающими смежные ячейки. Так как практически все деловые
документы имеют «прямоугольную» структуру, удобнее всего создавать
макеты таких документов в редакторе, способном манипулировать
прямоугольными элементами, каковым является табличный редактор.
В процессе создания макета вы можете: вводить в ячейки таблицы
разнообразный текст; задавать параметры форматирования, как тексту, так
и ячейке в целом; изменять высоту строк и ширину столбцов таблицы;
включать в макет рисованные элементы − линии и прямоугольники, а
также другие графические объекты: картинки, OLE−объекты и диаграммы,
различные элементы управления, определять оформление, как всей
таблицы, так и отдельных ячеек или групп ячеек.
Практически каждый отчет содержит так называемую шапку
(заголовок) отчета, в которой указывается наименование отчета, исходные
параметры построения. Для формирования таких данных создают
именованную область, которую чаще всего называют «Шапка». Если в
отчете присутствует табличная часть, то в шапку обычно включают
наименования граф таблицы.
Для вывода строк таблицы создают именованные области (например,
«Строка»), отвечающие за вывод различной информации в табличную
часть. Число строк табличной части при подготовке макета узнать
невозможно, но структурно информация в табличной части повторяется,
поэтому при построении отчета используют одни и те же области,
описывающие отдельную строку. Ячейкам, предназначенным для вывода
конкретной информации, ставят в соответствие переменные (например,
«Счет», «Наименование», «Цена», «Сумма» и др.). При выводе очередной
133
строки этим переменным присваивают содержимое каждой выводимой
строки, а затем уже включают сформированную область в состав отчета.
Так происходит до тех пор, пока не будет выведена вся информация
табличной части.
Отчет обычно завершается выводом итоговых данных и реквизитами
ответственных лиц. Эти данные обычно размещают в области, именуемой
«Подвал».
В окончательном виде макет − представляет собой совокупность
прямоугольных областей, каждая из которых служит для выдачи какой−то
части
готового
отчета:
область
для
выдачи
заголовочной
части
(наименования, даты и т.п.), область для выдачи шапки табличной части и
так далее.
Подготовка макета начинается с формирования «кирпичиков», из
которых строится отчет. Этими кирпичиками являются именованные
области. Для создания именованной области выделите требуемую область
и выберите пункт «Таблица → Имена → Назначить имя». В открывшемся
диалоге укажите имя области.
Просмотр именованных строк и столбцов возможен при включенном
режиме «Таблица → Имена → Отображение именованные строки /
столбцы».
Имена областей показываются для строк между заголовками строк и
самой областью, для столбцов − между заголовками столбцов и самой
областью.
Просмотр прямоугольных именованных областей возможен при
включенном режиме «Таблица → Имена → Отображать именованные
ячейки».
Имена областей показываются в виде заштрихованной области. Имя
выводится в середине области.
Для удаления именованной области выделите область, затем
выберите пункт «Таблица → Имена → Убрать имя».
134
Если область состоит более чем из одной строки или столбца, то для
изменения размеров именованной области выделите строки или столбцы
внутри области и затем выберите пункт «Таблица → Раздвинуть».
Если область состоит из одной строки или столбца, то увеличить
размер области нельзя. Нужно убрать имя и создать именованную область
заново.
Для уменьшения размера области выделите требуемое число строк
или столбцов, которые нужно удалить, и в контекстном меню выберите
пункт «Удалить».
Для прямоугольной области можно производить аналогичные
действия. В случае, когда выделяется не строки или столбцы, а отдельные
ячейки, изменение размеров области не производится.
Каждая ячейка макета имеет совокупность свойств. Наиболее
важными из них являются свойства «Заполнение», «Параметр» и
«Параметр расшифровки», задающие вид информации ячейки, ее значение
и реакцию системы на щелчок по этой ячейке.
Заполнение.
Пункты
раскрывающегося
списка
свойства
«Заполнение» устанавливают, какого рода информация введена в ячейку.
Они изменяют внешний вид ячейки и используются только в процессе
обработки шаблона при формировании готовой таблицы.
Таблица 21 Назначение пунктов списка свойства «Заполнение»
Формат
Пояснение данных
Текст
Информация в ячейке является текстом и при
формировании таблицы будет перенесена из исходной
таблицы в готовую таблицу без изменений.
Параметр Информация в ячейке представляет собой параметр, имя
которого указывается в свойстве Параметр.
Шаблон
Информация в ячейке представляет собой текст с
включенными в него выражениями на встроенном языке
системы 1C: Предприятие, заключенными в квадратные
скобки. При формировании таблицы выражения будут
вычислены, а их результаты будут включены в текст
вместо самих выражений. Место, отводимое в тексте для
вывода результатов выражений, определяется длиной этих
результатов.
135
Информация в ячейке готовой таблицы преобразуется в тип
«строка».
Параметр − поле параметра для вывода содержимого ячейки.
Свойство показывается, если в свойстве «Заполнение» категории «Макет»
выбрано значение «Параметр».
Параметр расшифровки − указывается имя параметра, по которому
программа производит обработку расшифровки значения, находящегося в
ячейке.
7.1.1 Фиксация таблицы (шапки и боковика)
Редактор таблиц системы 1С:Предприятие позволяет зафиксировать
верхние строки и левые столбцы таблицы таким образом, чтобы при
пролистывании таблицы они постоянно присутствовали на экране. Это
удобно,
когда
требуется
просматривать
какую−либо
информацию,
оформленную в виде таблицы большого размера. В этом случае на экране
постоянно будут присутствовать шапка и боковик таблицы.
Чтобы зафиксировать верхние строки таблицы, следует выделить
строку таблицы целиком и выбрать пункт «Таблица → Вид →
Зафиксировать
таблицу».
Зафиксированы
будут
все
строки,
расположенные выше выделенной строки.
Для фиксации столбцов таблицы следует выделить столбец таблицы
целиком. Зафиксированы будут столбцы, расположенные слева от
выделенного столбца.
Чтобы зафиксировать одновременно строки и столбцы таблицы,
следует выделить одну ячейку таблицы. Зафиксированы будут строки и
столбцы, расположенные соответственно выше и левее выделенной
ячейки.
Замечание. Фиксация строк и столбцов таблицы не переносится в
готовую таблица. В этом случае необходимо использовать установку
свойств таблицы с помощью встроенного языка.
136
Если в таблице существуют зафиксированные строки и (или)
столбцы, для отмены фиксации следует повторно выбрать пункт
«Зафиксировать таблицу».
7.1.2 Защита от редактирования
Для запрета редактирования таблицы используется пункт «Таблица
→ Вид → Только просмотр». Установка атрибута «Только просмотр» для
готовой
таблицы
возможна
из
встроенного
языка
системы
1С:Предприятие. Кроме этого, для защиты от редактирования можно
использовать
установку
свойства
таблицы
«Защита»
с
помощью
встроенного языка метод встроенного языка, который полностью
защищает готовую таблицу от редактирования и копирования (в том числе
через Буфер Обмена MS Windows).
7.1.3 Перемещение по таблице
Согласно общей концепции интерфейса MS Windows, окно таблицы
в любой момент времени показывает только часть таблицы, лежащей
«под» этим окном. Для перехода к любой ячейке в видимой области
таблицы достаточно щелкнуть эту ячейку мышью. Выбранная ячейка
становится активной. Для вывода на экран скрытых за границами окна
областей таблицы используются линейки прокрутки.
7.1.4 Управление видом таблицы
При помощи пунктов подменю «Таблица → Режимы» можно
управлять отображением различных областей и компонентов таблицы:
заголовков строк и столбцов, сеткой таблицы и т.д.
Кратко поясним назначение пунктов меню «Режимы» (таблица 22).
Каждый пункт и каждая кнопка работает как переключатель: выбор
(нажатие) вызывает или прекращает отображение соответствующей
области таблицы.
Таблица 22 Назначение пунктов меню «Режимы»
Пункт меню
Действие
Зафиксировать
фиксирует верхние строки и левые столбцы
137
таблицу
таблицы таким образом, чтобы при листании
таблицы они постоянно присутствовали на
экране;
Отображать
сетку
включает и отключает показ сетки таблицы —
тонких линий, разделяющих ячейки таблицы;
Отображать
заголовки
управляет показом заголовков строк и столбцов
таблицы;
Отображать
секции
включает и отключает показ именованных
областей слева от заголовков строк и сверху от
заголовков столбцов;
Только просмотр включает и отключает запрет на любые изменения
в таблице
Отображать
включает и отключает режим показа примечаний
примечания
Отображать
включает и отключает режим показа именованных
именованные
областей (ячеек)
ячейки
Черно-белый
просмотр
отключает и включает показ цветов, заданных
для таблицы. При включении этого пункта (в
меню напротив него появляется галочка) все
цвета будут определяться установками
операционной системы MS Windows;
Режим просмотра отключает и включает показ минимального
страниц
количества строк (определяется, введенной
информацией), области печати, разрывов страниц
Масштаб
дискретно масштабирует изображение.
7.1.5 Масштабирование изображения
Для удобства просмотра таблицы изображение можно дискретно
масштабировать.
Для
выбора
масштаба
изображения
используется
подменю «Таблица → Вид → Масштаб»: при выборе этого пункта
открывается подменю, в котором можно выбрать желаемый масштаб
изображения таблицы.
Если у вас мышь имеет специальное колесико прокрутки, то для
масштабирования нажмите клавишу [Ctrl] и, не отпуская ее, поверните
колесико. Движением колесика от себя вы увеличиваете масштаб, к себе −
уменьшаете.
7.1.3 Построение отчета
Рассмотрим процесс построения отчета. В начале отчет строится как
пустая таблица. Необходимо иметь в виду, что макет не связан напрямую с
138
готовым отчетом. Скорее, макет представляет собой некий конструктор,
набор областей, из которых в процессе работы программного модуля
складывается готовый отчет.
В процессе обработки алгоритма отчета из макета в нужном порядке
извлекаются поименованные области, транслируются (вместо имен
переменных подставляются их значения) и копируются в таблицу готового
отчета. Средства языка формирования отчетов позволяют наращивать
отчет как вниз, так и вправо (рис. 153).
Рис. 153 Схема формирования табличного документа на основе макета
7.1.4 Печатная форма элемента справочника
Создадим печатную форму элемента справочника «Сотрудники».
Конфигуратор
предоставляет
разработчику
воспользоваться
специальным инструментом – конструктором печати, который берет на
себя большую часть работы по созданию макета.
Откроем в конфигураторе нужный справочник и перейдем на
вкладку «Макеты», в нижней части окна которой располагается
раскрывающийся список «Конструкторы», в котором необходимо выбрать
пункт «Конструктор печати». В ответ откроется первый шаг диалога
мастера конструктора печати справочника, в котором требуется указать
тип создаваемой процедуры печати (печать элемента справочника), ее имя
(Печать) и местоположение (форма элемента) (рис. 154). На втором шаге
определим содержимое шапки печатной формы (рис. 155), а на третьем –
содержимое табличной части (рис. 156), на четвертом – содержимое
139
подвала (рис. 157), а на пятом – способ вызова процедуры печати (кнопка
«Печать» в форме элемента) (рис. 158).
Рис. 154 Первый шаг конструктора печати справочника
Рис. 155 Второй шаг конструктора печати справочника
140
Рис. 156 Третий шаг конструктора печати справочника
Рис. 157 Четвертый шаг конструктора печати справочника
Рис. 158 Пятый шаг конструктора печати справочника
141
В результате действий мастера откроется построенный макет с
областями
«Заголовок»,
«Шапка»,
«ТрудоваяДеятельностьШапка»,
«ТрудоваяДеятельность» (рис. 159). В форме элемента добавится кнопка
«Печать», щелчком по котрой в пользовательском режиме откроется
печатная форма элемента справочника, вызванная процедурой «Печать»
формы элемента. Эту процедуру также написал конструктор печати.
Открыв печатный документ в пользовательском режиме (рис. 160),
мы увидим, что даты начала и конца работы сотрудника в конкретной
организации указаны с точностью до секунды. В данном вопросе такая
точность не имеет смысла, поэтому переформатируем даты с точностью до
дня, для этого откроем палитру свойств ячейки с датой (рис. 161), выберем
там свойство «Формат» и щелчком по кнопке вызова диалога вызовем
конструктор форматной строки (рис. 162).
Рис. 159 Построенный макет для элемента справочника
Рис. 160 Печатная форма элемента справочника в пользовательском
режиме
142
Рис. 161 Задание формата даты
Рис. 162 Конструктор форматной строки
7.1.5 Печатная форма списка справочника
Создадим печатную форму списка справочника «Сотрудники».
Вернемся на вкладку «Макеты» справочника «Сотрудники» и опять
вызовем «Конструктор печати». В ответ откроется первый шаг диалога
мастера конструктора печати справочника, в котором требуется указать
тип создаваемой процедуры печати (печать списка справочника), ее имя
(Печать) и местоположение (форма списка) (рис. 163). На втором шаге
определим содержимое шапки печатной формы (рис. 164), а на третьем –
способ вызова процедуры построения печатной формы (рис. 165).
143
Рис. 163 Первый шаг конструктора печати справочника
Рис. 164 Второй шаг конструктора печати справочника
144
Рис. 165 Третий шаг конструктора печати справочника
После этого в конфигураторе откроется его макет формы списка
(рис. 166). Проверим этот макет в работе, перейдя в пользовательский
режим и открыв форму списка справочника «Сотрудники». Обратите
внимание на то, что в правом нижнем углу формы списка появилась новая
кнопка «Печать», которую добавил конструктор печати. После щелчка по
этой кнопке для просмотра откроется печатная форма списка элементов
(рис. 167).
Рис. 166 Сформированный макет печатной формы списка справочника
Рис. 167 Печатная форма списка в пользовательском режиме
145
7.1.6 Расшифровка ячейки печатной формы
Печатная
сотрудниках.
форма
Для
списка
уточнения
содержит
этой
общую
информации
информацию
полезно
о
бывает
рассмотреть детальную информацию в форме элемента. Это становится
возможным, если использовать расшифровку ячейки.
Система 1С:Предприятие поддерживает механизм расшифровок
(drill-down, drill-through), который работает следующим образом: когда
готовая таблица открыта в режиме «Только просмотр», при помещении
указателя
мыши
над
ячейкой,
содержащей
заполненное
поле
«Расшифровка», указатель принимает форму лупы. Это значит, что
возможна детализация (расшифровка) данных таблицы. Теперь, если
дважды щелкнуть левой кнопкой мыши на этой ячейке (или сделать ее
активной и нажать клавишу Enter), то можно получить более детальный
отчет, либо открыть форму элемента справочника или документа, если,
конечно, это предусмотрено разработчиком.
Расшифровки делятся на стандартные и нестандартные.
Стандартные расшифровки обрабатываются системой автоматически
и не требуют особых усилий от программиста, кроме создания ссылки на
нужный объект, и указания этой ссылки в свойстве «Параметр
расшифровки», например:
 значения типа «число», «строка», «дата», «перечисление» будут выданы
для просмотра;
 для документов будет открыта форма документа;
 для элементов справочника будет открыта форма элемента, а если
справочник редактируется в списке, то курсор будет установлен на
текущем элементе в форме списка.
Сделаем
расшифровку
элемента
справочника
в
ячейке
«Наименование». Для этого подсветим соответствующую ячейку на макете
печатной формы списка, щелком правой кнопки откроем контекстное
146
меню ячейки, и в появившейся палитре свойств установим значение
«Ссылка» свойства «Параметр расшифровки» (рис. 168).
Рис. 168 Установка расшифровки ячейки
Теперь надо зайти в форму списка справочника «Сотрудники», найти
в модуле формы процедуру «Печать» и задать там значение параметра
«Ссылка» (Область.Параметры.Ссылка=Выборка.Ссылка;)(рис. 169).
Справочник сотрудники имеет подчиненный справочник «Дети».
Поскольку подчиненный справочник имеет смысл рассматривать только в
совокупности со справочником – владельцем, то вставим в форму списка
еще одну печатную форму «СписокСДетьми» – список сотрудников с
детьми, поместив кнопку ее вызова в форму списка. Первоначально
создадим ее как обычную печатную форму списка, а затем добавим в ее
макет еще одну именованную область «Дети» (рис. 170), в эту область
вставим реквизиты подчиненного справочника и изменим текст процедуры
«СписокСДетьми», добавив в цикл обхода элементов справочника еще
один цикл – цикл обхода элементов подчиненного справочника (рис. 171).
В результате проделанной работы получится печатная форма списка с
подчиненным справочником, представленная на рис. 17
147
Рис. 169 Измененный текст процедуры печати в модуле формы списка
Рис. 170 Измененный макет печатной формы списка справочника
148
Рис. 171 Фрагмент измененного текста процедуры печати модуля формы
списка
Рис. 172 Печатная форма списка с подчиненным справочником
7.1.7 Печатная форма документа
Для
создания
печатной
формы
документа
откроем
для
редактирования документ «ПриходнаяНакладная» и перейдем на вкладку
«Макеты».
Там
щелчком
по
кнопке
«Конструкторы»
откроем
раскрывающийся список и вызовем конструктор печати. В ответ вызовется
конструктор печати документа, на первом шаге которого надо задать имя
процедуры печати и ее местоположение (рис. 173). Затем, на втором шаге,
надо задать реквизиты документа, отображаемые в шапке (рис. 174), а на
третьем шаге – реквизиты табличной части (рис. 175). На четвертом шаге
конструктора печати надо указать реквизиты документа, отображаемые в
подвале (рис. 176), а на заключительном шаге указать способ процедуры
печати и способ предъявления пользователю печатного документа (рис.
177).
149
Рис. 173 Первый шаг конструктора печати документа
Рис. 174 Второй шаг конструктора печати документа
Рис. 175 Третий шаг конструктора печати документа
150
Рис. 176 Четвертый шаг конструктора печати документа
Рис. 177 Заключительный шаг конструктора печати документа
После этого в конфигураторе откроется форма документа и его макет
(рис. 178). Проверим этот документ в работе, перейдя в пользовательский
режим и открыв документ «ПриходнаяНакладная». Обратите внимание на
то, что в правом нижнем углу появилась новая кнопка «Печать», которую
добавил конструктор печати. После щелчка по этой кнопке для просмотра
откроется печатная форма документа (рис. 179).
151
Рис. 178 Макет печатной формы документа
Рис. 179 Печатная форма документа в пользовательском режиме
Конструктор сформировал вполне приемлемую печатную форму
документа, и основное, чего не хватает – это итоговой суммы документа
прописью. Кроме того, несмотря на целые значения, принято указывать
нули в дробной части числа (копейки) и дробную часть значения
количества, для этого выводимые данные следует форматировать.
Для указания формата выводимого значения надо выделить ячейку
макета, щелком правой кнопки мыши открыть ее контекстное меню, и в
нем выбрать пункт «Свойства». В появившейся палитре свойств надо
найти свойство «Формат» (рис. 180) и щелкнуть по кнопке в правой
стороне поля, в ответ вызовется конструктор форматной строки (рис. 181),
в котором надо задать длину, точность и разделитель дробной части.
152
Рис. 180 Задание формата вывода
Рис. 181 Конструктор форматной строки
Для вывода в конце накладной суммы документа прописью надо в
области «Подвал» в ячейку, находящуюся под ячейкой с цифровыми
данными суммы документа занести значение «СуммаПрописью» и задать
ее свойства, указав, что тип ячейки «Параметр» (рис. 182).
153
Рис. 182 Задание свойств ячейки «СуммаПрописью»
Затем необходимо зайти в форму документа, перейти на закладку
«Модули» и найти там текст процедуры «Печать». В текст процедуры, в
описание
области
«Подвал»,
надо
добавить
определение
строки
«ПараметрыПредметаИсчисления», форматной строки «ФорматнаяСтрока»
и получить значение переменной «СуммаПрописью» с помощью вызова
функции «ЧислоПрописью()». У нее могут указываются в качестве
параметров: преобразуемое число; форматная строка; параметры предмета
исчисления (вид этой форматной строки определяется значением кода
локализации).
В форматной строке указываем код локализации – Русский (Россия).
В параметрах предмета исчисления указываем возможные склонения
слов «рубль» и «копейка» (для значений чисел 1, 2, 5), род этих слов, а так
же количество разрядов дробной части, которые будут выводиться
прописью
(рис.
183).
Готовая
печатная
форма
документа
пользовательском режиме представлена на рис. 184.
Рис. 183 Изменение теста процедуры печати в модуле формы документа
154
в
Рис. 184 Готовая печатная форма накладной в пользовательском режиме
7.1.8 Печатная форма журнала документов
Для создания печатной формы журнала документов – реестра
документов необходимо открыть для редактирования журнал документов
на вкладке «Макеты» и щелкнуть там по кнопке «Конструктор печати…».
В ответ вызовется конструктор печати журнала документов, на первом
шаге которого надо указать имя вновь создаваемой процедуры печати и ее
местоположение (рис. 185), затем, на втором шаге, надо задать реквизиты
документов, указываемые в реестре (рис. 186), а на третьем шаге задать
кнопку вызова процедуры печати и режимы просмотра печатного
документа (рис. 187).
Рис. 185 Первый шаг конструктора печати журнала документов
155
Рис. 186 Второй шаг конструктора печати журнала документов
Рис. 187 Третий шаг конструктора печати журнала документов
После этого в конфигураторе откроется форма журнала документов
и его макет (рис. 188). Проверим этот документ в работе, перейдя в
пользовательский режим и открыв журнал документов «Касса». Обратите
внимание на то, что в правом нижнем углу появилась новая кнопка
«Печать», которую добавил конструктор печати. После щелчка по этой
кнопке для просмотра откроется печатная форма журнала документа (рис.
189).
156
Рис. 188 Макет печатной формы журнала документов
Рис. 189 Печатная форма журнала документов в пользовательском режиме
7.2 Задание на лабораторную работу
1. Создать печатные формы элементов справочников «Контрагенты»,
«Клиенты», «Сотрудники», «Номенклатура».
2. Создать печатные формы для списка справочников «Подразделения»,
«Склады», «Контрагенты», «Клиенты», «Сотрудники», «Номенклатура»
(во всех печатных формах предусмотреть возможность расшифровки
ячейки). Для справочников – владельцев («Контрагенты», «Клиенты»,
«Сотрудники»)
предусмотреть дополнительную печатную форму,
включающую печать подчиненных элементов.
3. Создать печатные формы документов «ПриходнаяНакладная», «Счет»,
«Доверенность»,
«РасходнаяНакладная»,
«ПриходныйКассовыйОрдер»,
«ОказаниеУслуги»,
«РасходныйКассовыйОрдер»
(во
всех
печатных формах обратить особое внимание на форматирование
цифровых данных и печать общей суммы документа прописью).
4. Создать печатные формы реестра документов журналов «Касса»,
«ПриходныеДокументы», «РасходныеДокументы», «ДвижениеТовара»,
«СкладскиеДокументы» (учесть форматирование числовых данных и
предусмотреть возможность расшифровки).
7.3 Контрольные вопросы
1. Понятие конструктора печати.
157
2. Предназначение объекта конфигурации «Макет».
3. Понятие табличного документа.
4. Структура табличного документа.
5. Возможные типы значения ячеек таблицы при использовании ее в
качестве макета.
6. Форматирование данных в ячейках таблицы.
7. Расшифровка ячейки таблицы.
8. Фиксация шапки и боковика таблицы.
9. Защита таблицы.
158
8. Лабораторная работа № 8. Отчеты и обработки
Цель работы. Получение навыков работы с отчетами, обработками
и конструктором выходной формы.
8.1 Теоретические сведения
Отчеты и обработки − это не сохраняемые в базе данных объекты,
предназначенные для формирования печатных форм или обработки
данных в базе данных. Отчеты используются для получения сводной
информации на основании данных, введенных в системе. Обычно отчет
содержит алгоритмы получения и обработки информации, формы, при
помощи
которых
организуется
интерфейс
для
ввода
параметров
алгоритмов и представления результатов их работы, а также макеты,
используемые для вывода результатов выполнения алгоритма в табличный
документ. Примером применения отчетов может быть получение сводных
данных о хозяйственной деятельности в необходимых для анализа
разрезах.
Отчеты и обработки совершенно идентичны по структуре, у них
просто разное назначение:

Отчеты предназначены для вывода информации, формирования
различных печатных форм с детальными и сводными данными,
например,
отчеты
«АнализПродаж»,
«ПрайсЛист»,
«РеестрДокументов».

Обработки предназначены для изменения данных в базе данных и
выполнения других действий, например, «ПерерасчетЗарплаты»,
«ЗакрытиеПериода», «КлиентБанк».
Структура отчета и обработки представим в таблице 23.
Таблица 23 Компоненты структуры отчета и обработки
Реквизиты
Табличные
Реквизиты отчета (обработки) содержат параметры
формирования отчета (выполнения обработки). Эти
реквизиты отличаются от реквизитов справочников
тем, что они не сохраняются в базе данных.
Например, реквизиты «НачДата» и «КонДата» у отчета
«АнализПродаж».
Табличные части содержат списки параметров для
159
части
Формы
отчета или обработки, обычно состоящие из
нескольких колонок. Например, табличная часть
«УсловияПоСубконто» у отчета «ОСВпоСчету».
Экранные формы предназначены для отображения
отчета/обработки на экране. Это могут быть и
различные дополнительные формы, предназначенные для
ввода параметров или отображения результатов. В
качестве примера можно назвать формы «ВыборПериода»
и «ФормаВложен-нойТаблицы» обработки
«КонсольЗапросов».
Рассмотрим подробнее объект конфигурации «Отчет». Он является
прикладным объектом и предназначен для описания средств и алгоритмов,
при помощи которых пользователь сможет получать необходимые ему
выходные
данные.
Алгоритм
формирования
выходных
данных
описывается при помощи визуальных средств или с использованием
встроенного языка. В реальной жизни объектам конфигурации «Отчет»
соответствуют всевозможные таблицы выходных данных, сводных данных
диаграммы и пр.
Отчеты могут иметь несколько реквизитов, табличных частей, форм
и несколько макетов (печатных форм). Доступен программный объект
«Построитель отчета», позволяющий формировать отчеты автоматически.
Таблица отчета может иметь вертикальные и горизонтальные группировки.
8.1.1 Создание отчета «Материалы»
Теперь у нас все готово для того, чтобы можно было получать
выходные данные. Поэтому приступим к созданию отчета, который будет
показывать нам приход, расход и остатки материалов.
Создадим новый объект конфигурации «Отчет» и назовем его
«Материалы». Перейдем на закладку «Макеты» (рис. 190) и воспользуемся
конструктором выходной формы для того, чтобы полностью создать наш
отчет. Для этого в нижней части закладки откроем раскрывающийся
список «Конструкторы» и выберем там «Конструктор выходной формы».
160
Рис. 190 Создание нового отчета
Воспользуемся конструктором выходной формы (рис. 191). После
выбора имени формы конструктор предложит нам начать создание отчета.
Конструктор
обладает
большим
количеством
возможностей
для
визуального проектирования отчетов, но мы сейчас воспользуемся только
самыми простыми его возможностями и просто определим те данные,
которые хотим видеть в результате работы нашего отчета.
Рис. 191 Первый шаг конструктора выходной формы
На закладке «Таблицы и поля» в списке «База данных» представлен
состав объектов базы данных; на основе которых данных мы можем
построить отчет (рис. 192).
161
Рис. 192 Задание таблиц и полей отчета
Если раскрыть ветку «РегистрыНакопления», то мы увидим, что
кроме таблицы регистра «ОстаткиНоменклатуры» (рис. 193) в этой ветке
присутствуют еще несколько виртуальных таблиц, которые формирует
система. Поскольку мы хотим видеть как остатки материалов, так и
информацию об их поступлении и расходовании, нас будет интересовать
виртуальная
таблица
«ОстаткиНоменклатуры.
ОстаткиИОбороты».
Раскроем ее (рис. 193).
Как вы видите, эта таблица содержит материал, склад и кроме этого
начальные и конечные остатки, а также значения прихода, расхода и
оборотов для всех ресурсов регистра «ОстаткиНоменклатуры».
162
Рис. 193 Реквизиты регистра «ОстаткиНоменклатуры»
Начнем выбирать поля таблицы в нужном нам порядке двойным
щелчком мыши. Сначала выберем «Склад» и «Материал». Затем выберем
«КоличествоНачальныйОстаток»,
«КоличествоПриход»,
«КоличествоРасход»,
«СуммаНачальныйОстаток»,
«КоличествоКонечныйОстаток»,
«СуммаПриход»,
«СуммаРасход»
и
«СуммаКонечныйОстаток».
В результате на закладке «Таблицы и поля» окно «Поля» должно
быть заполнено так, как показано на рис. 194.
Рис. 194 Заполнение окна «Поля»
При построении отчета по регистру накопления необходимо указать
требуемый период получения отчета, поскольку при отсутствии указания
периода будут учтены данные за всю историю работы информационной
163
системы. Границы периода получения отчета являются параметрами
виртуальной таблицы. Для их задания надо щелкнуть по кнопке
«Параметры Виртуальной Таблицы», в ответ откроется диалог по их
заданию (рис. 195).
Рис. 195 Задание параметров виртуальной таблицы
После этого на закладке «Итоги» укажем группировочное поле
«Склад», поставим флажок «ОбщиеИтоги» и укажем поля, по которым
надо
подводить
общие
итоги:
«СуммаНачальныйОстаток»,
«СуммаКонечныйОстаток», «СуммаПриход», «СуммаРасход» (рис. 196).
Рис. 196 Заполнение вкладки «Итоги»
После этого перейдем на закладку «Выходная форма» и убедимся,
что параметры отчета размещены на форме отчета в нужном порядке, а
также зададим для них тип параметра «Дата» (рис. 197).
164
Рис. 197 Размещение параметров на форме отчета
Щелкнем по кнопке «ОК». Система автоматически сформирует
формы и откроет их на экране (рис. 198).
Рис. 198 Форма отчета «Материалы» в окне конфигуратора
Запустим систему 1С:Предприятие в режиме отладки и посмотрим,
как работает отчет. Выполним Операции → Отчет... → Материалы,
зададим границы периода формирования отчета и нажмем кнопку
«Сформировать» (рис. 199).
165
Рис. 199 Задание параметров отчета в пользовательском режиме
В результате получим отчет, отражающий движение материалов в
организации (рис. 200).
Рис. 200 Отчет «Материалы» в пользовательском режиме
8.1.2 Печать прайс листа
Реализуем возможность печати прайс листа из формы списка
справочника «Номенклатура». Определим макет у формы с помощью
конструктора печати, задав его имя «ПрайсЛист», поместив в него поля
«Код» и «Наименование» и задав его вызов с помощью одноименной
кнопки формы списка. После этого модифицируем макет, изменив текст
заголовка (сделав из него шаблон) и поместив в него параметр
«ЦенаПродажи» (рис. 201).
Рис. 201 Модифицированный макет прайс листа
Затем в процедуру печати, находящуюся в модуле формы списка,
надо добавить операторы, организующие чтение последнего значения
166
розничной цены из регистра сведений «ЦеныНоменклатуры» (рис. 202).
Запустив систему 1С:Предприятие в режиме отладки, посмотрим, как
выглядит прайс лист в пользовательском режиме (рис. 203).
Рис. 202 Модифицированный текст процедуры печати в модуле формы
списка
Рис. 203 Прайс лист в пользовательском режиме
8.1.3 Отчет «ЦеныПоставщиков» на заданную дату
Построенный в форме списка справочника «Номенклатура» прайс
лист не имеет возможностей настройки выбора даты, поэтому он выдает
всегда самые последние актуальные данные. Для получения сведений о
ценах, актуальных на некоторую дату в прошлом необходимо построить
отчет
«ЦеныПоставщиков»
на
основе
данных
регистра
сведений
«ЦеныПоставщиков».
На ветви «Отчеты» конфигуратора создадим новый отчет
«ЦеныПоставщиков», откроем в нем вкладку «Макеты» и вызовем там
конструктор выходной формы (рис. 204).
167
Рис. 204 Задание названия отчета
После выбора имени формы конструктор предложит нам начать
создание отчета. На первой закладке «Таблицы и поля» для работы
выберем виртуальную таблицу «ЦеныПоставщиков.СрезПоследних» (рис.
205) и зададим для нее параметр виртуальной таблицы «ДатаОтчета» (рис.
206). Затем перенесем в отчет поля «Номенклатура», «Поставщик»,
«Цена».
Рис. 205 Задание виртуальной таблицы и ее полей
Рис. 206 Задание параметров виртуальной таблицы
Затем перейдем на вкладку «Группировка» и выберем поля для
группировки «Номенклатура» и «Поставщик» (рис. 207). Суммируемое
поле – «Цена» с функцией «Минимум», аналогичные значения зададим на
168
вкладке «Итоги» (рис. 208). После этого перейдем на вкладку «Выходная
форма» (рис. 209) и зададим там тип параметра отчета – «Дата», затем
щелкнем на кнопке «ОК» и в ответ откроется форма отчета (рис. 210).
Закроем
ее
и
перейдем
в
пользовательский
1С:Предприятие.
Рис. 207 Задание полей группировки
Рис. 208 Задание итогов отчета
169
режим
системы
Рис. 209 Размещение параметров на форме
Рис. 210 Форма отчета в конфигураторе
Вызовем на исполнение отчет «ЦеныПоставщиков», зададим дату
формирования отчета и щелкнем по кнопке «Сформировать» (рис. 211).
Рис. 211 Форма отчета в пользовательском режиме
8.2 Задание на лабораторную работу
Создать отчеты на основе данных регистров.
170
1. Отчет
«Поступление товаров за период»
на основе данных регистра
накопления «Закупки» по форме, представленной в таблице 24.
Таблица 24 Форма отчета «Поступление
товаров за период»
Номер накладной Дата поставки Поставщик
Сумма оплаты
100001
05.01.2004 «Экзотика» ООО
25 000.00
Итого:
25 000.00
2. Отчет «Реализация товаров за период» на основе данных регистра
накопления «Продажи» по форме, представленной в таблице 25.
Таблица 25 Форма отчета «Реализация товаров за период»
Номер накладной Дата продажи Покупатель Сумма оплаты
100001
09.01.2004 «Мир» ТОО
30 000.00
Итого:
30 000.00
3. Отчет «Движение товаров на складе фирмы за период» на основе
данных регистра «ОстаткиНоменклатуры» по форме, представленной в
таблице 26.
110.00
5.00
10.00
110.00
5.00
50.00
50.00
Стоимость
остатка
10.00
150.00
Остаток на
конец
Стоимость
прихода
150.00
15.00
Стоимость
расхода
Приход
15.00
Итого:
Расход
Стоимость
остатка
Ручка
Название
товара
Остаток на
начало
Таблица 26 Форма отчета «Реализация товаров за период»
20.00
210.00
20.00 210.00
4. Отчет «Оплата поставщикам фирмы за период» на основе данных
регистра накопления «Поставщики» по форме, представленной в
таблице 27.
Таблица 27 Форма отчета «Оплата поставщикам фирмы за период»
Поставщик Дата
Долг на
Поставлено Оплачено Долг на
начало
конец
«Свет» АО 10.02004
1500.00
2500.00 3000.00
1000.00
Итого:
1500.00
2500.00 3000.00
1000.00
5. Отчет «Оплата покупателей фирмы за период» на основе данных
регистра накопления «Покупатели» по форме, представленной в
таблице 28.
Таблица 28 Форма отчета «Оплата поставщикам фирмы за период»
Покупатель Дата
Долг на
начало
Поставлено Оплачено Долг на
конец
171
«Мир»ООО
Итого:
102004
1500.00
1500.00
2500.00
3000.00
2500.00 3000.00
1000.00
1000.00
6. Отчет «Движение наличности за период» на основе данных регистра
накопления «Касса» по форме, представленной в таблице 29.
Таблица 29 Форма отчета «Движение наличности за период»
Дата
Остаток на
Приход
Расход
Остаток на
начало
конец
15.03.2004
100000.00 20000.00 40000.00
80000.00
Итого:
20000.00 40000.00
7. Отчет
«Прайс
на
лист»
основе
данных
регистра
сведений
«ЦеныНоменклатуры» на выбранную дату по форме, представленной в
таблице 30.
Таблица 30 Форма отчета «Прайс лист»
Наименование товара Единица измерения Цена за единицу
Ручка гелевая
Шт.
10.00
8. Отчет «Цены
закупки»
на основе данных регистра сведений
«ЦеныПоставшиков» на выбранную дату по форме, представленной в
таблице 31.
Таблица 31 Форма отчета «Цены закупки»
Наименование товара Единица измерения Цена за единицу
Ручка гелевая
9. Отчет
Шт.
«КурсыВалют»
5.00
на
основе
данных
регистра
сведений
«КурсыВалют» на выбранную дату по форме, представленной в таблице
3
Таблица 32 Форма отчета «КурсыВалют»
Валюта Обозначение Курс
Доллар $
25.00
Евро
&
35.00
Создать печатные формы в формах списка.
1. Печатную форму «ПрайсЛист», содержащую последние актуальные
цены
продажи
материалов
в
«Номенклатура».
172
форме
списка
справочника
2. Печатную
форму
«ЦеныПоставщиков»,
содержащую
последние
актуальные цены покупки материалов в форме списка справочника
«Номенклатура».
3. Печатную форму «КурсыВалют», содержащую последние актуальные
значения курсов валют в форме списка справочника «Валюты».
8.3 Контрольные вопросы
1. Основное предназначение отчета.
2. Основное предназначение обработки.
3. Сходство и различие отчета и обработки.
4. Сходство и различие отчета и макета.
5. Основные составляющие отчета и обработки.
6. Основные приемы работы с конструктором печатной формы.
173
СПИСОК ЛИТЕРАТУРЫ
1. Введение в конфигурирование в системе 1Сv8. Основные объекты.
Методические материалы для слушателей сертифицированного курса. М.: ООО «1С-Паблишинг», 2006, - 88 с.
2. Митичкин С.А. Разработка в системе «1С: Предприятие 8.0». - М.: ООО
«1С-Паблишинг», 2003, - 413 с.
3. Радченко М.Г. «1С: Предприятие 8.0». Практическое пособие
разработчика. Примеры и типовые приемы. - М.: ООО «1СПаблишинг», 2006,- 656 с.
4. Габец А.П., Гончаров Д.И. «1С:Предприятие 8.0». Простые примеры
разработки - М.: ООО «1С-Паблишинг», 2006,- 656 с.
5. Габец А.П., Гончаров Д.И., Козырев Д.В., Кухлевский Д.С. , Радченко
М.Г. Профессиональная разработка в системе 1С:Предприятие 8. СПб.: «Питер», 2008. – 808 с.
174
Егоров Александр Николаевич
Крупенина Наталия Викторовна
БАЗЫ ДАННЫХ И ЭКСПЕРТНЫЕ СИСТЕМЫ
Методические указания по выполнению лабораторных работ
175
Download