Тематика лабораторных занятий
№ п/п | Тема занятия | Вид задания | Объем часов | Форма контроля |
1 | Тема 1. Знакомство с конфигуратором. Подсистемы. | Лабораторная работа № 1. Создание новой информационной базы. Внешний вид интерфейса прикладного решения. Запуск отладки в режиме 1С:Предприятие. Добавление подсистемы. | 2 | Отчет. Проверка работы. Устный опрос |
2 | Тема 2. Справочники | Лабораторная работа № 2. Создание справочников. Проверка заполнения стандартных реквизитов Создание справочников: простой справочник, справочник с предопределенными элементами, иерархический справочник | 2 | Отчет. Проверка работы. Устный опрос |
3 | Тема 3. Документы | Лабораторная работа № 3. Справочники и документы. Автоматический пересчет суммы в строках документа. Создание документов и их заполнение. | 2 | Отчет. Проверка работы. Устный опрос |
4 | Тема 6. Макеты. Редактирование макетов и форм | Лабораторная работа № 4. Добавление периодического регистра сведений. Автоматическая подстановка цены в документ при выборе номенклатур | 2 | Отчет. Проверка работы. Устный опрос |
5 | Тема 9. Проведение документа по нескольким регистрам | Лабораторная работа № 5. Проведение документа «Оказание услуги» по двум регистрам | 2 | Отчет. Проверка работы. Устный опрос |
6 | Тема 11. Отчеты | Лабораторная работа № 6. Вывод данных по всем дням в выбранном периоде. Получение актуальных значений из периодического регистра сведений. Использование вычисляемого поля в отчете. Вывод данных в таблицу | 2 | Отчет. Проверка работы. Устный опрос |
7 | Тема 13. План видов характеристик и бухгалтерский учет | Лабораторная работа № 7. Доработка учетных механизмов. Приход/расход номенклатуры с учетом характеристик. | 2 | Отчет. Проверка работы. Устный опрос |
8 | Тема 14. План видов расчета, регистр расчета. Использование регистра расчета | Лабораторная работа № 8. Добавление регистра расчета. Отчет о начислениях сотрудникам. Перерасчет. Диаграмма Ганта. | 2 | Отчет. Проверка работы. Устный опрос |
9 | Тема 17. Рабочий стол и настройка командного интерфейса. Обмен данными. | Лабораторная работа № 9. Процедуры обмена данными. | 2 | Отчет. Проверка работы. Устный опрос |
10 | Тема 19. Приемы разработки форм. | Лабораторная работа № 10. Форма выбора для поля, содержащего ссылочный реквизит. Проверка заполнения реквизитов. Автоматическая проверка заполнения. Программная проверка заполнения. | 2 | Отчет. Проверка работы. Устный опрос |
Лабораторная №1
Тема работы: С оздание новой информационной базы. Внешний вид интерфейса прикладного решения. Запуск отладки в режиме 1С:Предприятие. Добавление подсистемы.
Цель лабораторной работы: ознакомится с возможностью создания конфигурации в системе 1С:Предприятие и разработка конфигурации.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1С:Предприятие является универсальной системой автоматизации экономической и организационной деятельности предприятия. Поскольку такая деятельность может быть довольно разнообразной, система 1С:Предприятие может «приспосабливаться» к особенностям конкретной области деятельности, в которой она применяется. Для обозначения такой способности используется термин конфигурируемость, то есть возможность настройки системы на особенности конкретного предприятия и класса решаемых задач.
Логически всю систему можно разделить на две большие части, которые тесно взаимодействуют друг с другом: конфигурацию и платформу, которая управляет работой конфигурации.
Существует одна платформа (1С:Предприятие 8) и множество конфигураций. Для функционирования какого-либо прикладного решения всегда необходима платформа и какая-либо конфигурация
Рис. Конфигураций много, а платформа одна
Сама по себе платформа не может выполнить никаких задач автоматизации, так как она создана для обеспечения работы какой-либо конфигурации. То же самое с конфигурацией: чтобы выполнить те задачи, для которых она создана, необходимо наличие платформы, управляющей ее работой.
Итак, поскольку задачи автоматизации могут быть самыми разными, фирма «1С» и ее партнеры выпускают прикладные решения, каждое из которых предназначено для автоматизации одной определенной области человеческой деятельности. В качестве примера существующих прикладных решений можно перечислить следующие типовые решения:
Режимы работы системы:
1С: Предприятие имеет различные режимы работы: 1С: Предприятие и Конфигуратор.
Режим 1С Предприятие является основным и служит для работы пользователей системы. В этом режиме пользователи вносят данные, обрабатывают их и получают итоговые результаты.
Режим Конфигуратор используется разработчиками и администраторами информационных баз. Именно этот режим и предоставляет инструменты, необходимые для модификации существующей или создания новой конфигурации.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Ход выполнения работы
1. В открывшемся окне слева в списке Подсистемы выделим подсистему Учет Материалов. Справа в списке Командный интерфейс отразятся все команды выбранной подсистемы.
2. В группе Панель действий.Создать включить видимость у команды Номенклатура: создать. В группу Панель навигации.Обычное добавилась команда Номенклатура для открытия этого списка. Она включена по умолчанию. Выделить в списке подсистем ОказаниеУслуг, проделать те же действия. А для подсистемы Бухгалтерия никаких команд добавлять в панели действий не будем, так как вряд ли понадобится пополнять список номенклатуры в этом разделе. Теперь заполним справочник Номенклатура.
3. Закроем окно редактирования справочника Номенклатура и запустим 1С: Предприятие в режиме отладки. Ответим утвердительно на запрос конфигуратора об обновлении конфигурации и увидим окно, содержащее список изменений в структуре конфигурации, автоматически сгенерированный платформой. В данном случае мы добавили справочник Номенклатура.
4. Нажмите кнопку Принять в открывшемся окне 1С Предприятия мы видим, что в панели навигации разделов Учет материалов, Оказание услуг и Бухгалтерия появилась команда Номенклатура. Название этой команды определяется синонимом объекта, так как - других представлений для этого справочника не задавали.
5. Выполним команду Номенклатура в панели навигации раздела Учет материалов. Справа от панели навигации в рабочей области окна приложения откроется основная форма списка.
6. Создание элементов в иерархическом справочнике. Создадите две группы в корне справочника: Материалы и Услуги. Для этого нажмите кнопку Создать группу в командной панели формы списка. Задайте наименование групп: Материалы, Услуги. Поля Родитель и Код не заполнять.
7. Раскройте группу Материалы и создайте в ней пять элементов:
■ Строчный трансформатор Samsung$
■ Строчный трансформатор GoldStar,
■ Транзистор Philips 2N2369;
■ Шланг резиновый,
■ Кабель электрический.
8. Для добавления элемента в открытую группу, справочника нажмите кнопку Создать в командной панели формы списка справочника. Откроется форма для создания элемента справочника - основная форма объекта. Причем если новый элемент добавляется из формы списка в некоторую открытую группу, то система автоматически подставляет в качестве родителя эту группу. В данном случае родителем является группа Материалы.
9. Для создания нового элементе справочника можно также воспользоваться командой Номенклатура, которая появилась в панели действий разделов Учет материалов и Оказание услуг. В этом случае, если элемент добавляется командой из панели действий, она никак не связана со списком номенклатуры. Поэтому система «не знает», в какую группу добавлять элемент, и родителя нужно указывать вручную. При создании новых материалов или услуг список номенклатура открывать не обязательно. Факт добавления элемента в справочник отражается в сообщении в нижнем углу приложения. Раскроем группу Услуги и тоже создадим в ней несколько элементов - услуги по ремонту телевизоров.
10. Диагностика,
11. Ремонт отечественного телевизора,
12. Ремонт импортного телевизора.
И услуги по установке стиральных Машин:
13. Подключение воды,
14. Подключение электричества.
15. Перенос элементов в другие группы. Теперь разнести услуги по двум смысловым группам: услуги по ремонту телевизоров и услуги по установке стиральных машин. Для этого в группе Услуги создайте еще две группы: Телевизоры и Стиральные машины. Для того чтобы переместить услуги в соответствующие группы в окне списка установим курсор на ту услугу, которую мы хотим переместить, и выполним команду Все действия ► Переместить в группу. В открывшемся окне выберем новую группу. Можно выделить в списке сразу несколько элементов (левой кноп мыши, удерживая при этом клавишу Сtrl) и переместить их все сразу. Или же можно мышью перетащить выделенный элемент справочника в нужную группу. Можно, также открыть для редактирования выделенный элемент справочника и изменить поле Родитель.
16. Переместить в группу Телевизоры услуги Диагностика, Ремонт отечественного телевизора и Ремонт импортного телевизора.
17. Услуги Подключение воды и Подключение электричества переместить в группу Стиральные машины.
18. В группе Материалы создать две группы; Радиодетали и Прочее.
19. В группу Прочее поместить Кабель электрический и Шланг резиновый. Остальные материалы переместить в группу Радиодетали. Переключившись в представление списка в виде дерева по команде Все Действия - Режим просмотра - Дерево можно увидеть список номенклатуры в виде дерева.
20. Справочник с предопределенными элементами. Создать справочник Склады, который будет содержать информацию о складах, используемых ООО «На все руки мастер». Этот справочник будет включать в себя один предопределенный элемент - склад Основной, на который будут поступать все материалы. Наша задача - создать справочник, содержащий предопределенные элементы.
21. Откройте конфигуратор и создайте новый объект Конфигурации Справочник с именем Склады. На основании имени платформа автоматически заполнит его синоним. Задать Представление объекта как Склад. Вместо свойства Представления списка будет использоваться Синоним объекта Склады.
22. Перейдите на закладку Подсистемы. По логике нашей конфигурации список складов должен быть доступен в разделах Оказание услуг и Учет материалов, так как поступление материалов и оказание услуг, как правило, учитываются в разрезе складов. Поэтому отметьте в списке подсистем эти подсистемы.
23. Свойство «Быстрый выбор». Заполните еще одно свойство справочника Склады - Быстрый выбор. Для этого перейдите на закладку Формы и установите соответствующий флажок. Дело в том, что по умолчанию при нажатии кнопки выбора в поле содержащем ссылку на элемент справочника, открывается основная форма выбора элемента справочника. Она может быть не всегда удобна, особенно в том случае, когда справочник неиерархический заведомо содержит небольшое количество элементов. Свойство Быстрый выбор как раз позволяет выбирать элементы не из отдельной формы, а из небольшого выпадающего списка, заполненного элементами этого справочника. Этот вариант наиболее удобен для списка складов, так как их, вероятно, будет немного. Для остальных справочников свойство Быстрый выбор не устанавливали, так как Номенклатура - иерархический справочник, и, следовательно, быстрый выбор для него не имеет смысла. А список сотрудников и, особенно, список клиентов может быть очень большим, и выпадающий список в этом случае будет неудобно прокручивать.
24. Предопределенные элементы. Перейдите на Закладку Прочее и нажмите кнопку Предопределенные. Система откроет список предопределенных элементов справочника и он пуст, поэтому нажмите кнопку Добавить и создайте предопределенный элемент с именем Основной. Обратить внимание на то, что помимо наименования еще задали и имя предопределенного элемента справочника. Наименование предопределенного элемента пользователь может изменить а имя пользователь не видит и изменить не может:
25. Прежде чем запустить 1С:Прейпрйятие настроим интерфейс приложения, чтобы нам было удобнее вводить новые элементы справочника. В панели действий разделов УчетМатериалов сделаем доступной стандартную команду для создания новых складов. Для этого в дереве объектов конфигурации выделим ветвь Подсистемы, вызовем ее контекстное меню и выберем пункт подсистемы. В открывшемся окне слева в списке Подсистемы выделим подсистему УчетМатериалов. Справа в списке Командный интерфейс отразятся все команды выбранной подсистемы.
26. В группе Панель действий.Создать включить видимость у команды Склад: создать. Также мы видим, что в группу Панель навигацни.Обычное добавилась команда Склады для открытия этого списка. Она включена' по умолчанию. Закроем окно редактирования справочника Склады и запусти 1С Предприятие в режиме отладки. Ответим утвердительно на запрос конфигуратора об обновлении конфигурации и увидим окно, содержащее список изменений в структуре конфигурации, автоматически сгенерированный платформой. В данном случае мы добавили справочник Склады.
27. В открывшемся окне 1С Предприятия мы видим, что в панели действий раздела Учет материалов появилась команда Склад для создания новых складов. Название этой команды определяется свойством Представление объекта, которое мы задали для этого справочника. Также в панели
навигации разделов Оказание услуг и Учет материалов появилась команда Склады для открытия списка складов. Название этой команды определяется синонимом объекта, так Представление списка мы для этого справочника не задавали.
28. Выполним команду Склады в панели навигации раздела Учет материалов. Справа от панели навигации в рабочей области окна приложен откроется основная форма списка. В списке складов уже есть один элемент с наименованием; Основной. Это предопределенный элемент, который мы создали в конфигураторе. Выполнив команду Склад в панели действий, добавим в справочник еще один склад, который назовем Розничный.
29. Обратите внимание, что система отмечает различными пиктограммами обычный и предопределенный элементы справочника. Несмотря на то, что можно изменить код или наименование у обоих элементов, пометка на удаление (или удаление)'возможна только для обычных элементов справочника. При попытке пометить на удаление предопределенный элемент система выдаст предупреждение.
30. Таким образом, мы можем обозначить две характерные особенности предопределенных элементов:
на предопределенные элементы могут опираться алгоритмы работы конфигурации (т. к. возможно обращение к ним из встроенного языка по имени);
предопределенные элементы являются объектами базы данных, которые нельзя удалить в режиме1С Предприятия.
Из этого видно, в чем заключается принципиальная с точки зрения конфигурации разница между обычными и предопределенными элементами справочника.
Обычные элементы «непостоянны» для конфигурации. В процессе Работы пользователя они могут появиться, исчезнуть. Поэтому конфигурация хоть и может отличить их друг от друга, но рассчитывать на них в выполнении каких-либо алгоритмов она не может в силу их «непостоянства». Предопределенные элементы, напротив «постоянны». В процессе Работы пользователя они находятся всегда на своих местах и исчезнуть не могут. Поэтому конфигурация может работать с ними вполне уверенно и опираться на них при отработке различных алгоритмов. По этой причине каждый из предопределенных элементов имеет уникальное имя для того, чтобы к нему можно было обратиться средствами встроенного языка.
Контрольные вопросы
1 .Для чего предназначен объект конфигураций Справочник.
2.Каковы характерные особенности справочника.
3.Дня чего используются реквизиты и табличные части справочника.
4.3ачем нужны иерархические справочники и что такое родитель.
5.Зачем нужны подчиненные справочники и что такое владелец.
6.Какие основные формы существуют у справочника.
7.Что такое предопределенные элементы.
8.Чем с точки зрения конфигурации отличаются обычные элементы справочника от предопределенных элементов.
9.Как пользователь может отличить обычные элементы справочника от предопределенных элементов.
10. Как создать объект конфигурации Справочник и описать его структуру.
11 .Как добавить новые элементы в справочник.
12. Как создать группу справочника.
13. Как переместить элементы из одной группы справочника в другую.
14. Зачем нужна основная конфигурация и конфигурация: базы данных.
15.Как изменить конфигурацию базы данных.
16.Как связаны объекты конфигурации и объекты базы данных.
17.Что такое подчиненные объекты конфигурации.
18.3ачем нужна проверка заполнения у реквизитов справочника.
19.Что такое быстрый выбор и когда его использовать.
20.Как отобразить справочник и определить его представление в различных разделах интерфейса приложения.
Лабораторная работа № 3 б
Тема работы: Создание документов.
Цель работы: Научиться создавать различные документы.
Ход выполнения работы.
1. Открыть конфигуратор и добавить новый объект конфигурации Документ. На закладке Основные задать имя документа - ПриходнаяНакладная. На основании имени платформа автоматически заполнит его синоним. Здесь же определим, как будет представлен документ в интерфейсе 1С:Предприятия. Представление объекта задавать не будем, вместо него будет использоваться Синоним объекта. Это нам вполне подходит, так как мы задали его имя в единственном числе.
2. Представление списка, задать во множественном числе как Приходные накладные. Нажмем Далее и перейдем на закладку Подсистемы.
3. По логике нашей конфигурации список приходных накладных должен быть доступен в разделах Учет материалов и Бухгалтерии Действительно, к первому разделу этот документ имеет прямое отношение, а для бухгалтерского анализа всегда может понадобиться список документов, отражающих поступление материалов. Поэтому отметьте в списке подсистем эти подсистемы.
4. Перейдите на закладку Данные и создайте реквизит документа с именем Склад. Для этого нажмем кнопку Добавить над списком реквизитов документа. Выбрать для реквизита ссылочный тип данных СправочникСсылка.Склады. Этот тип стал доступен в конфигурации после создания объекта конфигурации Справочник Склады.
5. В палитре свойств для созданного нами реквизита Склад документа найти свойство Значение заполнения и в качестве значения этого свойства выберите предопределенные элементы справочника Склады - Основной. Таким образом, при создании нового документа склад будет сразу заполняться значением Основной, и пользователю не придется делать это вручную.
6. После этого добавить в документ табличную часть с именем Материалы. Для этого нажмите кнопку Добавить табличную часть над списком табличных частей документа.
7. Кроме имени табличной части установите свойство Проверка заполнения в значение Выдавать ошибку. Тем самым мы задаем условие, что документ Приходная накладная обязательно должен содержать табличную часть, то есть список приходуемых материалов. Иначе будет выдано сообщение об ошибке, и документ не будет сохранен. Создадите реквизиты табличной части Материалы. Для этого нажмите кнопку Добавить реквизит в разделе описания табличных частей документа:
Материал, тип СправочникСсылка.Номенклатура;
Количество, тип Число, длина 15, точность 3, неотрицательное;
Цена, тип Число, длина 15, точность 2, неотрицательное;
Сумма, тип Число, длина 15, точность 2, неотрицательное.
8. Для каждого реквизита табличной части также установите свойство Проверка заполнения в значение Выдавать ошибку. Тем самым при записи документа будет проверяться на заполнение не только табличная часть в целом, но и ее отдельные реквизиты.
9. Перейдите на закладку Нумерация и убедитесь, что свойство Автонумерация включено. Это обеспечит автоматическую генерацию уникальных номеров для создаваемых нами документов.
10. Отредактируйте командный интерфейс, чтобы в подсистеме Учет материалов была доступна команда создания новых документов. Для этого в дереве объектов конфигурации выделим ветвь Подсистемы вызовем ее контекстное меню и выберем пункт Все подсистемы. В открывшемся окне слева в списке Подсистемы выделим подсистему УчетМатериалов. Справа в списке Командный интерфейс отразятся все команды выбранной подсистемы. В группе Панель действий. Создать включить видимость у команды Приходная накладная: создать.
11. Запустите 1С:Предприятие в режиме отладки и протестируйте получившийся документ. В открывшемся окне 1С:Предприятия увидите, что в панели навигации разделов Бухгалтерия и Учет материалов появилась команда Приходные накладные для открытия списка приходных накладных.
12. Название этой команды определяется свойством Представление списка, которое мы задали для этого документа. Также в панели действий раздела Учет материалов появилась команда Приходная накладная для создания новых документов этого вида. Название этой команды определяется синонимом, так как Представление объекта для этого документа не задавали.
13. Выполните команду Приходная накладная в панели действий раздела Учет материалов и создайте новую приходную накладную.
14. В форме документа система автоматически подставит текущую дату создания документа нулевое время, так как документ еще не проведен. В качестве времени документа при оперативном проведении ему присваивается оперативная отметка времени. Поле Номер не заполнено, но система сама сгенерирует для нового документа уникальный номер, так как свойство Автонумерация документа включено по умолчанию. Новый номер будет сохранен в момент записи документа. Обратите внимание, что склад уже заполнен значением Основной, т.к. мы и задали в свойствах этого реквизита.
15. Осталось только заполнить табличную часть приходной накладной материалами для ремонта телевизоров. При нажатии кнопки выбора в поле Материал табличной части документа открывается форма для выбора документов справочника Номенклатура, так как этот реквизит имеет ссылочный тип данных и ссылается на справочник Номенклатура.
16. Нажать Провести и закрыть. Документ будет сохранен и проведен, ему будет присвоен автоматически сгенерированный системой номер и текущее время проведения документа.
17. Аналогичным образом создайте второй документ, который будет приходовать на Основной склад материалы для установки стиральных машин. Но теперь не будете использовать кнопку выбора в поле Материал, а просто начните вводить название материала в это поле. Платформа автоматически найдет материалы, найдет материалы название которых начинается с введенных символов, и предложит их нам для выбора. Нажмите Провести и закрыть.
18. Обратите внимание, что при вводе нового документа табличная часть в целом и каждая ее колонка подсвечена красным пунктиром. Это значит, что для них выполняется проверка заполнения. Если не ввести ни одной строки в табличную часть документа или оставить незаполненной какую-либо колонку табличной части и попытаться записать документ, то будет получено сообщение об ошибке.
19. Чтобы просмотреть список созданных документов, выполните команду Приходные накладные в панели навигации. В форме списка, открывшейся в рабочей области окна приложения увидим два созданных документа, отмеченных пиктограммой указывающей на то, что документы проведены (зеленая галочка в пиктограмме документа)
20. В режиме конфигуратор откройте окно редактирования объекта конфигурации Документ ПриходнаяНакладная. В этом окне нас интересует закладка Формы, мы видим, ни одна из основных форм документа пока не задана. Для того чтобы создать форму документа, нажмите кнопку открытия значком лупы в поле ввода или кнопку Добавить над списком форм. Система вызовет инструмент разработчика - конструктор форм.
21. Этот инструмент также построен по принципу «мастеров»: ввод данных в определенной последовательности и передвижение кнопками Далее и Назад. Выберем тип формы Форма документа и нажмем кнопку Готово, согласившись тем самым со всем, что нам предложила система. Обратите внимание, что в дереве объектов конфигурации у объекта фигурации Документ ПриходнаяНакладная появилась ФормаДокумента, а на экране открылось окно редактора, содержащее эту форму.
Редактор форм объединяет несколько окон взаимосвязанных между собой редакторов. За более подробной информацией о работе с редактором форм следует обратиться к документации Необходимо понимать, что при разработке форм объектов конфигурации разработчик не имеет возможности «нарисовать» форму. Он может только указать, из каких элементов будет состоять форма, а система уже сама самостоятельно расположит эти элементы в форме.
Элементы формы в верхнем левом окне редактора форм образую иерархическую структуру, из которой следует, что чем выше в списке находится элемент, тем выше и левее на форме он будет располагаться. Эта структура редактируется на закладке Элементы и позволяет управлять отображением и редактированием данных в форме. На основе описания в конфигурации документа ПриходнаяНакладная система создала структуру элементов, которая определяет, как будет выглядеть форма. Эти элементы имеют разное назначение и разное поведение. Однако все они служат для того, чтобы отображать информацию, хранящуюся в базе данных, и организовывать интерактивную работу с этой информацией. Вы можете попробовать перетащить мышью поля в дереве элементов и поменять местами, например, реквизиты табличной части. Результат изменений сразу отразится в форме документа в нижней част и редактора форм. При этом разработчику не нужно задумываться над вопросами конкретного расположения того или иного элемента формы, его размеров и привязки к другим элементам. Эту работу берет на себя система. Но разработчик может через палитру свойств изменить свойства элемента, которые повлияют на его отображение в форме. Он может также изменить структуру элементов формы - создать новое поле, группу полей, добавить табличную часть, связав эти элементы данными формы. Но пока нам ничего этого не нужно делать. Нас интересуют три элемента табличной части: МатериалыКоличество , МатериалыЦена и МатериалыСумма. Нам необходимо, чтобы каждый раз, когда меняется значение в поле количество или в поле Цена, в поле Сумма автоматически устанавливалось значение, равное Количество*Цена. Для этого нужно написать на встроенном языке команду, похожую на Сумма = Количество*Цена, которая будет выполняться при изменении значения поля Количество или Цена.
Обработчик события
Система сама умеет работать с теми объектами, которые описаны в дереве конфигурации. То есть у нее есть некие «стандартные представления» о том, как это все должно работать. Но как правило, разработчиков эти «стандартные представления» устраивают только в самых простых случаях. Поэтому у системы существуют события, которые связаны с самыми различными моментами ее «стандартного» функционирования. В том числе события, связанные с функционированием форм и элементов, расположенных в этих формах. Используя встроенный язык, разработчик может «вклиниться» в эти события и описать собственный алгоритм того, что должно происходить при наступлении этого события. Для этого дважды щелкнуть на элементе формы МатериалыКоличество или правой кнопкой мыши откроем для него палитру свойств (пункт контекстного меню Свойства).
22. Прокрутив список до конца, мы увидим перечень событий, которые быть связаны с этим полем.
23. Нам нужно событие ПриИзменении, которое возникает после изменения значения поля. Найдем его в списке событий и нажмем кнопку открытия со значком лупы в поле ввода. Система создаст шаблон процедуры обработчика этого событие в модТле нашей формы и откроет закладку Модуль редактора формы.
Модуль - это «хранилище» для текста программы на встроенном языке. В данном случае это модуль формы, так как обработчики всех интерактивных событий, связанных с элементами формы, помещаются именно в модуль формы.
В модуль формы, в процедуру МатериалыКоличествоПриИзменении(),-мы и добавим следующий текст (листинг 1).
листинг 1 Процедура « МатериалыКоличествоПриИзменении()»
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТа6личнойЧасти.Цена;
В первой строке мы сначала создаем переменную СтрокаТабличнойЧасти, в которую будет помещен объект, содержащий данные, находящиеся в строке табличной части, которую нам нужно пересчитать. Мягкая типизация данных встроенного языка позволяет сделать это, не объявляя переменную и ее тип заранее. Мы создаем переменную прямо по ходу работы, и ее тип определяется типом значения, которое она содержит. Поскольку мы находимся в модуле формы, то в нем доступны все свойства и методы объекта встроенного языка УправляемаяФорма. Поэтому мы можем обращаться к ним напрямую. В данном случае после знака равенства мы обращаемся к коллекции элементов формы, используя одно из свойств объекта УправляемаяФорма - свойство Элементы.
Коллекция элементов формы является объектом встроенного языка ВсеЭлементыформы, содержащим все элементы формы. То есть это программный аналог корня дерева элементов формы. Каждый элемент формы можно получить, указав его имя в качестве свойства этого объекта, то есть через точку от него. В данном случае мы обращаемся к табличной части документа Материалы (Элементы.Материалы).
Табличная часть документа представляет собой объект встроенного языка ТаблицаФормы. Получить ту строку, в которой в настоящее мя осуществляется редактирование, можно при помощи свойства программного объекта ТаблицаФормы – ТекущиеДанные(Элементы..Материалы.ТекущиеДанные).
Таким образом, в результате выполнения первой строки процедуры обработчика переменная СтрокаТабличнойЧасти будет содержать объект ДанныеФормыСтруктура. Этот объект содержит данные, находящиеся в текущей строке табличной части документа (Элементы. Материалы. ТекущиеДанные).
Получив этот объект, мы можем обратиться к данным конкретной колонки табличной части, указав имя колонки в качестве свойства объекта. Например, используя обращение СтрокаТабличнойЧасти.Количество мы получаем число, которое находится в редактируемой строке в колонке Количество.
Таким образом, во второй строке процедуры обработчика вычисляется значение колонки Сумма как произведение значений колонок Количество и Цена.
В режиме 1С:Предприятие
24. Теперь посмотрим, как это работает. Запустить 1С:Предприятис в режиме отладки, открыть список документов Приходные накладные и открыть любой из двух созданных документов. Если теперь поменять количество в любой строке документа, то сумма в строке будет пересчитана автоматически.
25. Итак, убедились, что при изменении количества в любой строке документа Приходная накладная, сумма в этой строке пересчитывается автоматически. Замечательно. Но теперь и для поля Цена сделать то же самое. А если заглянуть вперед, то мы увидим, что подобное автоматическое заполнение поля Сумма может нам понадобиться и в других документах. Поэтому лучше будет поместить расчет суммы в некоторое «обще доступное» место, чтобы разные документы, имеющие аналогичные реквизиты табличной части, могли использовать этот алгоритм. Для описания таких «общедоступных» мест служат объекты конфигурации Общий модуль, расположенные в ветке Общие ► Общие модули. Процедуры и функции, содержащиеся в этих модулях, могут быть доступны для любых объектов конфигурации. Поэтому создадим общий модуль и перенесем в него нашу процедуру расчета суммы. А в документе просто оставим вызовы этой процедуры из общего модуля.
26. Добавить объект конфигурации Общий модуль. Для этого раскрыть ветвь Общие в дереве объектов конфигурации, нажав + слева от нее. Затем выделить ветвь Общие модули и нажмите кнопку Добавить в командной панели окна конфигурации. Назвать его РаботаСДокументами и установить в его свойствах флажок Клиент(управляемое приложение), а флажок сервер снять. Это означает что экземпляры этого модуля будут скомпилированы в контексте тонкого клиента и в контексте веб-клиента.
27. Внести в модуль следующий текст(листинг 2):
листинг 2 Процедура « РассчитатьСумму()»
Процедура РассчитатьСумму(СтрокаТабличнойЧасти)Экспорт
СтрокаТабличнойЧасти.Сумма=
СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
В процедуру РассчитатьСуммуО мы передаем переменную СтрокаТабличнойЧасти , которую мы определили в обработчике события ПриИзменении поля Количество. Она содержит данные редактируемой строки табличной части документа ПриходнаяНакладная .
Теперь, используя эту переменную, мы можем получить доступ к данным колонок табличной части и рассчитать сумму как произведение цены на количество.
Ключевое слово Экспорт в заголовке процедуры указывает на то, что эта процедура может быть доступна из других программных модулей.
Теперь в модуле нашей формы изменим текст обработчика (листинг 3).
листинг 3. Процедура «МатериалыКоличествоПриИзменении()»
&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.Материалы.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Мы видим, что первая строка процедуры осталась без изменений. А во второй строке вместо непосредственного расчета суммы мы вызываем процедуру РассчитатьСуммуО из общего модуля РаботаСДокументами и передаем ей в качестве параметра текущую строку табличной части. Проверим, как это работает, и убедимся, что ничего не изменилось.
Теперь осталось и для поля Цена установить такой же обработчик. Так как однажды мы уже написали в модуле формы нужную процедуру, то мы просто могли бы сопоставить ее также и другому событию другого элемента управления, расположенного в форме. . Однако стандарты разработки конфигураций фирмы «1С» не допускают такого решения.
Согласно стандартам разработки фирмы «1С» у каждого события должен быть свой обработчик. Если одинаковые действия должны выполняться при изменении разных элементов управления (например, при нажатии нескольких кнопок), то в этом случае следует поступать следующим образом:
• создается отдельная процедура (функция), выполняющая необходимые действия;
• для каждого элемента управления создается отдельный обработчик с именем, назначаемым по умолчанию;
• из каждого обработчика вызывается требуемая процедура (функция).
Поэтому мы создадим обработчик события ПриИзменении для поля личной части МатериалыЦена так же, как мы делали это для МатериалыКоличество, и повторим в нем вызов процедуры РассчитатьСумму из общего модуля (листинг 4).
листинг 4. Процедура « МатериалыЦенаПриИзменении()»
&НаКлиенте
Процедура МатериалыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.Материалы.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
28. Запустите 1С:Предприятие в режиме отладки и убедиться, что теперь сумма в строках табличной части документов ПриходнаяНакладная рассчитывается как при изменении количества, так и при изменении цены.
29. Теперь аналогичным образом создать второй документ, необходимый нам, - Оказание услуги. Для этого потребуется выполнить уже знакомые нам действия, которые мы выполняли по созданию документа Приходная накладная
30. Добавить новый объект конфигурации Документ и назвать его ОказаниеУслуги. Представление объекта задавать не будем, вместо него будет использоваться Синоним объекта. Представление списка задать как Оказание услуг. На закладке Подсистемы отметьте, что документ будет доступен в подсистемах Оказание услуг и Бухгалтерия.
31. На закладке Данные создайте реквизиты документа:
■ Склад, тип СправочникСсылка.Склады. Выбрать для свойства Значение заполнения предопределенный элемент Основной справочника Склады.
■ Клиент, тип СправочникСсылка.Клиенты. Установить свойство Проверка заполнения в значение Выдавать ошибку.
■ Мастер, тип СправочникСсылка.Сотрудники. Установть свойство Проверка заполнения в значение Выдавать ошибку.
32. Создайте табличную часть этого документа ПереченьНоменклатуры с реквизитами:
■ Номенклатура, тип СправочникСсылка.Номенклатура;
■ Количество, тип Число, длина 15, точность 3, неотрицательное;
■ Цена, тип Число, длина 15, точность 2, неотрицательное,
■ Сумма, тип Число, длина 15, точность 2, неотрицательное;
Установите для табличной части в целом и для каждого ее реквизита свойство Проверка заполнения в значение Выдавать ошибку.
33. На закладке Формы создать основную форму документа. Для поля ПереченьНоменклатурыКоличество создать обработчик события ПриИзменении, в котором будем вызывать процедуру РассчитатьСумму из общего модуля РаботаСДокументами. При этом откроется модуль формы с шаблоном обработчика события ПереченьНоменклатурыКоличествоПриИзменении, который пока заполнять не надо, а перейти в окно элементов формы на закладку Форма и аналогичным образом создать обработчик события ПереченьНоменклатурыЦенаПриИзменении для поля ПереченьНоменклатурыЦена.
34. Модуль формы документа ОказаниеУслуги заполнить следующим образом(листинг 5)
листинг 5. Модуль формы документа «ОказаниеУслуги»
&НаКлиенте
Процедура ПереченьНоменклатурыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ПереченьНоменклатуры.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
&НаКлиенте
Процедура ПереченьНоменклатурыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ПереченьНоменклатуры.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
35. Отредактируем командный интерфейс, чтобы в подсистеме Оказание услуг была доступна команда создания новых документов. Запустим 1С:Предприятие в режиме отладки. В панели действий раздела Оказание услуги и вызовем команду создание документа Оказание услуги и заполнить его.
Контрольные вопросы
1. Какими характерными особенностями обладает документ. Для чего предназначены реквизиты и табличные части документа.
2. Какие существуют основные формы документа. Что такое проведение документа.
3. Как создать объект конфигурации Документ и описать его основную структуру.
4. Как создать новый документ и заполнить его данными.
5. Как создать собственную форму документа.
6. Что такое конструктор форм.
7. Что такое редактор форм.
8. Что такое элементы формы.
9. Что такое события и с чем они связаны.
10. Что такое обработчик события и как его создать.
11. Что такое модуль и для чего он нужен.
12. Зачем нужны общие модули.
13. Что такое типообразующие объекты.
Лабораторная работа № 4
Тема работы: Добавление периодического регистра сведений. Автоматическая подстановка цены в документ при выборе номенклатур
Цель работы: Научиться создавать различные регистры.
Ход выполнения работы.
Один из главных моментов разработки любой конфигурации - создание механизма учета накопления данных.
В системе 1С:Предприятие есть несколько объектов конфигурации, которые позволяют создавать в базе данных структуры, назначенные для накопления информации в удобном для последующего анализа виде. Использование таких «хранилищ» данных дает нам, с одной стороны, накапливать в них данные, поставляемые различными документами (или другими объектами базы данных), а с другой стороны, легко создавать нужные нам отчеты или использовать эти данные в алгоритмах работы конфигурации.
В конфигурации существует несколько объектов, называемых регистрами для описания подобных «хранилищ». Объект конфигурации Регистр накопления предназначен для описания структуры накопления данных. На основе объекта конфигурации Регистр накопления платформа создает в базе данных таблицы, в которых будут накапливаться данные, «поставляемые» различными объектами базы данных.
Эти данные будут храниться в таблицах в виде отдельных записей, каждая из которых имеет одинаковую, заданную в конфигураторе структуру.
На основании таблицы движений регистра накопления система рассчитывает таблицу итогов регистра, которая хранит в базе данных итоги на момент времени последнего движения (актуальные итоги).
Отличительной особенностью регистра накопления является то, что он не предназначен для интерактивного редактирования пользователем.
Разработчик может при необходимости предоставить пользователю возможность редактировать регистр накопления. Но предназначение регистра накопления заключается в том, чтобы его модификация производилась на основе алгоритмов работы других объектов базы данных, а не в результате непосредственных действий пользователя. Основным назначением регистра накопления является накопление числовой информации в разрезе нескольких измерений, которые описываются разработчиком в соответствующем объекте конфигурации Регистр накопления и являются подчиненными объектами конфигурации.
Виды числовой информации, накапливаемой регистром накопления называются ресурсами, также являются подчиненными объектами и описываются в конфигураторе.
Например, регистр накопления может накапливать информацию о количестве и сумме товаров на складах. В этом случае он будет иметь измерения Товар и Склад и ресурсы Количество и Сумма.
Изменение состояния регистра накопления происходит, как правило, при введении документа и заключается в том, что в регистр добавляется некоторое количество записей. Каждая запись содержит значения измерений, значения приращений ресурсов, ссылку на документ, который вызвал эти изменения (регистратор), и «направление» приращения (приход или расход). Такой набор записей называется движениями регистра накопления. Каждому движению регистра накопления всегда должен соответствовать регистратор – объект информационной базы (как правило, документ), который произвел эти движения.
Кроме этого, регистр накопления может хранить дополнительную информацию, описывающую каждое движение. Набор такой дополнительной информации задается разработчиком при помощи реквизитов объекта конфигурации Регистр накопления.
Теперь когда мы знаем, для чего предназначены регистры накопления, посмотрим, как можно их использовать в нашем примере.
Прежде всего, нас интересует информация о том, сколько и каких материалов есть у нас на складах. Для накопления такой информации создается регистр ОстаткиМатериалов.
1.Открыть в конфигураторе нашу учебную конфигурацию и добавим Объект конфигурации Регистр накопления. Для этого выделим в дереве объектов конфигурации ветвь Регистры накопления и нажмем кнопку Добавить в командной панели окна конфигурации. В открывшемся окне редактирования объекта конфигурации на закладке Основные зададим имя регистра - ОстаткиМатериалов. Также зададим и Расширенное представление списка как Движения по регистру Остатки материалов. Этот заголовок будет отображаться в окне списка записей регистра.
2. Нажмем Далее и перейдем на закладку Подсистемы. По логике нашей конфигурации данный регистр должен быть доступен в разделах Учет материалов, Оказание услуг и Бухгалтерия. Поэтому отметим в списке подсистем эти подсистемы.
3. Выделим закладку Данные и перейдем к созданию структуры регистра. Создадим измерения регистра:
■ Материал, тип СправочникСсылка.Номенклатура;
■ Склад, тип СправочникСсылка.Склады.
4.Для этого выделим ветвь Измерения и нажмем кнопку Добавить в командной панели окна.
Затем создадим ресурс Количество с длиной 15 и точностью 3. Для этого выделить ветвь Ресурсы и нажать кнопку Добавить в командной панели окна. В результате этих действий регистр ОстаткиМатериалов должен иметь следующий вид:
рис.1. Регистр «ОстаткиМатериалов»
Если вы сейчас попытаетесь запустить 1С:Предприятие в режиме отладки, то система выдаст сообщение об ошибке: «РегистрНакопления.ОстаткиМатериалов: Ни один из документов не является регистратором для регистра». Это сообщение еще раз подтверждает тот факт, что назначение регистра накопления в том, чтобы аккумулировать данные, поставляемые различными документами.
Поэтому мы сформируем движения регистра накопления ОстаткиМатериалов в процессе проведения двух созданных нами документов ПриходнаяНакладная и ОказаниеУслуг.
Движения документа
Движения документа - это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом.
5.Откроем окно редактирования объекта конфигурации Документ ПриходнаяНакладная. Перейдем на закладку Движения, раскроем список Регистры накопления и отметим регистр накопления ОстаткиМатериалов.
6.Обратите внимание, что сразу после отметки выбранного регистра становится доступной кнопка Конструктор движений. Нажмем ее и воспользуемся этим конструктором. Конструктор устроен просто. В списке Регистры перечислены регистры, в которых документ может создавать движения. В нашем случае там пока один регистр ОстаткиМатериалов. В списке Реквизиты документа должны находиться исходные данные для создания движений - реквизиты документа ПриходнаяНакладная. А в таблице Поле - Выражение должны быть заданы формулы, по которым будут вычисляться значения измерений и ресурсом регистра при записи движений. Обратите внимание, что по умолчанию конструктор предлагает нам создавать движения прихода (Тип движения регистра - Приход, символ + рядом с названием регистра) по регистру ОстаткиМатериалов. Это нас вполне устраивает, ведь документ ПриходнаяНакладная и должен приходовать материалы. В поле выбора Табличная часть выберем табличную часть нашего документа - Материалы. Список реквизитов документа, который уже заполнен реквизитами шапки документа, автоматически дополнится реквизитами нашей табличной части.
7.Теперь нажмем кнопку Заполнить выражения. В нижнем окне сформируется соответствие полей (измерений и ресурсов) регистра и выражений для их расчета. Конструктор движений установит соответствия подходящим образом: в качестве материала в регистр будет записан материал из табличной части документа, в качестве склада - склад, указанный в шапке документа, а в качестве количества - количество из табличной части документа.
8.Нажмем кнопку ОК и посмотрим, какой текст сформировал конструктор в модуле документа ПриходнаяНакладная(Листинг 1).
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
// регистр ОстаткиМатериалов Приход
Движения.ОстаткиМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаМатериалы.Количество;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
9. Конструктор создал обработчик события ОбработкаПроведения объекта конфигурации Документ ПриходнаяНакладная, поместил его в модуль объекта и открыл текст модуля. Событие ОбработкаПроведения является одним из важнейших событий, связанных с документом. Это событие возникает при проведении документа. Основное назначение обработчика данного события -генерация движений по документу. Выполнение различных операций с данными в процедуре обработчика влияет на состояние учета. Таким образом, именно в эту процедуру разработчик должен поместить собственные алгоритмы преобразования данных, выполняемые в момент проведения документа.
Пояснение текста процедуры обработчика. Объект встроенного языка ДокументОбъект имеет свойство Движения, возвращает объект КоллекцияДвижений, содержащий коллекцию наборов записей регистров, по которым этот документ может формировать движения.
К конкретному набору записей этой коллекции можно обратиться, указав через точку имя регистра, которому принадлежит этот набор записей. Например, Движения.ОстаткиМатериалов.
Затем через точку можно использовать различные методы набора записей регистра, например, Движения.Остатки Материалов.Добавить(). Метод Добавить() добавляет новую запись в набор записей.
В первой строке процедуры мы устанавливаем свойство Записывать набора записей регистра в значение Истина. То есть в явном виде указываем, что после завершения обработки проведения платформа должна будет записать этот набор записей в базу данных.
Внутри обработчика расположен цикл Для Каждого ... Из ... Цикл. Он предназначен для перебора строк табличной части нашего документа.
В цикле обращение к табличной части документа происходит по имени (Материалы). Переменная ТекСтрокаМатериалы содержит объект с данными текущей строки табличной части документа. Эта переменная создается в начале цикла и меняется по мере его прохождения.
В первой строке тела цикла, используя метод Добавить(), мы добавляем к набору записей, который создает наш документ в регистре, новую запись. Тем самым мы создаем объект РегистрНако-пленияЗапись и сохраняем его в переменной Движение.
Используя этот объект, мы можем обратиться к полям этой записи, указав имя поля через точку от этой переменной (например. Движение. Количество).
Причем Движение.Материал, Движение.Склад - это измерения регистра, Движение.Количество - это ресурс регистра, а Движение.ВидДвижения и Движение.Период - стандартные реквизиты регистра, которые создаются автоматически.
Чтобы присвоить полям новой записи регистра соответствующие значения полей документа, мы обращаемся к полям табличной части, указав имя поля через точку от переменной ТекСтрокаМатериалы (например, ТекСтрокаМатериалы.Материал).
Заметим, что Склад - это реквизит шапки документа, а Дата – стандартный реквизит документа, который создается автоматически, в цикле меняются только значения полей табличной части документа - ТекСтрокаМатериалы.Материал и ТекСтрокаМатериалы.Количество. Остальные поля не меняются, так как относятся к документу в целом и не зависят от текущей строки табличной части документа.
ВидДвиженияНакопления. Приход - это значение системного перечисления, которое определяет вид движения регистра накопления как Приход.
Таким образом, мы присваиваем нужные значения всем полям новой записи. После перебора всех строк документа (после завершения в этом наборе записей (Движения.ОстаткиМатериалов) будет содержаться столько записей, сколько строк в табличной части проводимого документа.
10. Если теперь откроем окно редактирования объекта конфигурации накопления ОстаткиМатериалов и перейдем на закладку Регистраторы, то в списке документов, созданных в конфигурации, мы увидим отмеченный документ ПриходнаяНакладная, так как мы задали в модуле этого документа формирование движений в регистре ОстаткиМатериалов.
11. Отредактируем командный интерфейс, чтобы в подсистемах Бухгалтерия, Оказание услуг и Учет материалов была доступна ссылка для просмотра записей нашего регистра накопления. Дело в том, что команды открытия регистров также добавляются в панель навигации подсистем, но по умолчанию они невидимы, в отличие от команд открытия справочников и документов.
12. В дереве объектов конфигурации выделим ветвь Подсистемы, вызовем ее контекстное меню и выберем пункт Все подсистемы. В открывшемся окне слева в списке Подсистемы выделим подсистему УчетМатериалов. Справа в списке Командный интерфейс отразятся все команды выбранной подсистемы. В группе Панель навигации.Обычное включим видимость у команды Остатки материалов и мышью перетащим ее в группу Панель навигации. Действительно, команды открытия регистров накопления не так часто используются, и поэтому лучше их перенести в группу См.также панели навигации разделов интерфейса. Аналогично, выделив подсистемы ОказаниеУслуг и Бухгалтерия, в панели навигации в группе Обычное включим видимость у команды Остатки материалов и перенесем ее в группу См.также.
13. Запустим 1С:Предприятие в режиме отладки и протестируем внесенные нами изменения. В открывшемся окне 1С:Предприятия мы видим, что в панели ни в группе См.также разделов Бухгалтерия, Оказание услуг и Учет материалов появилась команда для открытия списка регистра Остатки материалов.
14. Чтобы проследить связь между проведением документа и накоплением информации в регистре, откроем список приходных накладных, выполнив команду Приходные накладные в разделе Бухгалтерия.
15. Откроем Приходную накладную № 1 и нажмем Провести и закрыть, т.е. перепроведем ее. То же самое сделаем для Приходной № 2.
16. Перепровести документы можно и не открывая документов. Для этого нужно выделить нужный документ в списке (или выделить группу документов, удерживая клавишу Сtr1), нажать кнопку Все действия в командной панели формы списка и выбрать пункт Провести.
17. Выполнить команду Остатки Материалов и открыть список регистра накопления.
18. При проведении приходных накладных появляются соответствующие записи в регистре накопления Остатки материалов. Все поля регистра заполнились данными документов так, как мы задали в обработчике проведения документа ПриходнаяНакладная. Пиктограмма со знаком + слева от каждой записи указывает на тип движения - Приход. как видим , заголовок формы списка записей регистра соответствует заданному нами в свойстве Расширенное представление для этого регистра.
19. При реальной работе записей в регистре ОстаткиМатериалов будет много и будет трудно понять, какие записи относятся к определенному документу. Поэтому наряду с общим списком регистра хотелось бы иметь возможность вызывать из формы документа список регистра, в котором показаны движения, произведенные только этим документом.
20. Чтобы реализовать такую возможность, вернемся в конфигуратор форму документа ПриходнаяНакладная. В левом верхнем окне перейдем на закладку Командный интерфейс.
21. В разделе Панель навигации раскроем группу Перейти и увидим команду для открытия списка регистра накопления Остатки материалов. Эта команда была автоматически помещена в панель навигации формы документа, так как он является регистратором, то есть создает движения в нашем регистре.
22. Установим свойство Видимость для этой команды.
23. Запустим 1С:Предприятие в режиме отладки и откроем Приходную накладную № 2. В форме документа появилась панель навигации, в которой мы можем переходить к списку записей регистра Остатки Материалов, связанному с документом , и обратно к содержимому документа.
24. Обратите внимание, что до этого панель навигации в форме приходной накладной была не видна, так как в ней не было отображено ни одной команды.
25. Теперь мы аналогичным образом создадим движения документа ОказаниеУслуги. Для этого потребуется выполнить уже знакомые нам действия.
26. Открыть окно редактирования объекта конфигурации Документ ОказаниеУслуги. перейти на закладку Движения и в списке регистров конфигурации регистр накопления ОстаткиМатериалов.
27. Нажмем кнопку Конструктор движений. В открывшемся окне конструктора изменим тип движения регистра на Расход, так как документ ОказаниеУслуги должен расходовать материалы. Пиктограмма слева от названия регистра изменится на знак -. В поле выбора Табличная часть выберем табличную часть нашего документа - ПереченьНоменклатуры. Список реквизитов документа, который уже заполнен реквизитами документа, автоматически дополнится реквизитами нашей табличной части.
28. Теперь нажмем кнопку Заполнить выражения. В нижнем окне сформируется соответствие полей (измерений и ресурсов) регистра и выражений для их расчета. Однако при автоматическом заполнении поле Материал не заполнится. Так происходит потому, что имя поля табличной части - Номенклатура не совпадает с именем измерения регистра - Материал. Если мы оставим это так, как есть, то в регистре накопления в строках с типом регистра - расход номенклатура фиксироваться не будет. Чтобы избежать этого, нужно выделить поле регистра Материал и в окне Реквизиты документа дважды щелкнуть по строке ТекСтрокаПереченьНомеклатуры. Номенклатура.
29. Таким образом, номенклатура для движений регистра накопления будет выбираться из табличной части документа. Нажмем кнопку ОК.
30. Конструктор создал обработчик события ОбработкаПроведения объекта конфигурации Документ ОказаниеУслуги и поместил его в модуль объекта (листинг 2).
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
// регистр ОстаткиМатериалов Расход
Движения.ОстаткиМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Склад = Склад;
Движение.Количество = ТекСтрокаПереченьНоменклатуры.Количество;
КонецЦикла;
//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры
31. Обратите внимание, что строка Движение.ВидДвижения = ВидДвиженияНакопления.Расход определяет вид движения регистра накопления, производимый этим документом как Расход, а в остальном процедура обработчика документа ОказаниеУслуги идентична обработке документа ПриходнаяНакладная (см. листинг 1).
32. Отредактируем командный интерфейс формы документа, чтобы в панели навигации формы иметь возможность переходить к списку записей регистра Остатки Материалов, связанному с документом. Для этого откроем форму документа ОказаниеУслуги. В верхнем окне перейдем на закладку Командный интерфейс. В разделе панель навигации раскроем группу Перейти и установим видимость для команды открытия регистра накопления Остатки материалов.
33. Запустим 1С:Предприятие в режиме отладки и в разделе Оказание услуг откроем документ Оказание услуги № 1 и нажмем Провести и закрыть, то есть перепроведем его.
34. Выполните команду Остатки материалов и откройте список нашего регистра накопления.
35. Мы видим, что в регистре накопления Остатки материалов появилась еще одна запись, что соответствует количеству строк в табличной части проведенного документа. Все поля регистра заполнились данными документа так, как мЬ| задали в обработчике проведения документа Оказание услуги. Пиктограмма со знаком «минус» слева от записи указывает на тип движения – Расход.
36. Сейчас мы видим весь список движений регистра. Открыв это, список из формы документа, мы можем отфильтровать движения по документу-регистратору. Для этого откроем еще раз документ Оказание услуги № 1. В форме документа появилась панель навигации, в которой мы можем переходить к списку записей регистра Остатки материалов, связанному с документом, и обратно к содержимому документа. Сформированные таким образом движения этого документа будут не совсем правильны. Дело в том, что в документе Оказание услуги, в отличие от документа Приходная накладная, могут содержаться не только расходуемые материалы, но и услуги. Поэтому в регистр Остатки материалов будут попадать записи и о расходуемых услугах, что неправильно. Пока мы ничего не будем делать с движениями, которые сформировал конструктор.
Способы работы с коллекцией
В процессе формирования движений документов, когда в цикле и табличные части документов ПриходнаяНакладная и ОказаниеУслуги, мы столкнулись с одним из объектов встроенного языка, который является коллекцией. Многие объекты встроенного языка являются коллекциями.
Коллекция представляет собой совокупность объектов. Существуют принципы работы с любой коллекцией.
Во-первых, доступ к каждому объекту коллекции возможен путем перебора элементов коллекции в цикле. Для этого используется конструкция языка Для Каждого Из ... Цикл ... (листинг 3).
Листинг 3. Перебор элементов коллекции в цикле
Для Каждого СтрокаТабличнойЧасти из ТабличнаяЧасть Цикл
Сообщить(СтрокаТабличнойЧасти.Услуга);
КонецЦикла
В этом примере ТабличнаяЧасть — это коллекция строк табличной объекта конфигурации. При каждом проходе цикла в переменной СтрокаТабличнойЧасти будет содержаться очередная строка коллекции.
Во-вторых, существует доступ напрямую к элементу коллекции, без а коллекции в цикле. Здесь возможны различные комбинации двух обращений.
1. Во встроенном языке бывают именованные коллекции. То есть коллекции, в которых каждый элемент имеет некоторое уникальное имя. В этом случае обращение к элементу коллекции возможно этому имени (листинг 4).
Листинг4. Обращение к элементу коллекции
Справочники. Сотрудники;
Справочники[«Сотрудники»];
В этом примере Справочники - это коллекция менеджеров всех справочников, содержащихся в конфигурации. Так как каждый справочник конфигурации имеет свое уникальное имя, то к конкретному элементу этой коллекции (к менеджеру конкретного справочника) можно обратиться, указав имя этого справочника: Справочники[«Сотрудники»].
2. Если нет смысла в «персонификации» элементов коллекции (коллекция неименованная), тогда обращение к элементу коллекции возможно по индексу (индекс первого элемента коллекции - ноль), листинг 5.
Листинг 5. Обращение к элементу коллекции по индексу
ТабличнаяЧасть[0]
В этом примере ТабличнаяЧасть - это коллекция строк табличной части объекта конфигурации. И мы обращаемся к первому элементу этой коллекции, указывая его индекс-0
Следует отметить, что существуют коллекции, сочетающие оба вида обращений. Например, к коллекции колонок таблицы значений можно обращаться как по именам колонок, так и по индексу.
Контрольные вопросы
1. Для чего предназначен объект конфигурации Регистр накопления.
2. Почему следует использовать регистры, хотя необходимая информация содержится в других объектах.
3. Для чего нужны измерения регистра, ресурсы и реквизиты.
4. Что такое движения регистра и что такое регистратор.
5. Как создать новый регистр накопления и описать его структуру.
6. Как создать движения документа с помощью конструктора движений.
7. Как средствами встроенного языка обойти табличную часть документа и обратиться к ее данным.
8. Как показать команды открытия списка регистра в интерфейсе конфигурации и в интерфейсе формы.
Лабораторная работа № 5
Тема: Проведение документа «Оказание услуги» по двум регистрам.
В режиме Конфигуратор
Создадим новый объект конфигурации Регистр накопления с именем СтоимостьМатериалов.
- На закладке Основные: зададимРасширенное представление списка - Движения по регистру Стоимость материалов.
- На закладке Подсистемы: отметим, что этот регистр будет отображаться в подсистемах Бухгалтерия, Учет материалов иОказание услуг.
- На закладке Данные: создадим для регистра одно измерение -Материал с типом СправочникСсылка.Номенклатура и один ресурс -Стоимость с длиной 15 и точностью 2.
- Отредактируем командный интерфейс:
В дереве объектов конфигурации выделим ветвь Подсистемы, вызовем ее контекстное меню и выберем пункт Все подсистемы. В открывшемся окне слева в списке Подсистемы выделим подсистему Бухгалтерия.
В группе Панель навигации.Обычное включим видимость у команды Стоимость материалов и мышью перетащим ее в группуПанель навигации.См.также.
Аналогично, выделив подсистемы ОказаниеУслуг и УчетМатериалов , в панели навигации в группе Обычное включим видимость у команды Стоимость материалов и перенесем ее в группу См.также.
Рис. Проведение приходной накладной по двум регистрам
Откроем в конфигураторе окно редактирования объекта конфигурации Документ ПриходнаяНакладная .
- На закладке Движения: В списке регистров отметим СтоимостьМатериалов.
- На закладке Прочее: нажмем кнопку Модуль объекта, откроем процедуру обработчика события ОбработкаПроведения. И изменим код следующим образом: (см.листинг):
Листинг 11.1
Процедура ОбработкаПроведения(Отказ, Режим)
Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Для Каждого ТекСтрокаМатериалы Из Материалы Цикл
//регистр ОстаткиМатериалов Приход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Склад=Склад;
Движение.Количество = ТекСтрокаМатериалы.Количество:
//регистр СтоимостьМатериалов Приход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
Движение.Период = Дата;
Движение.Материал = ТекСтрокаМатериалы.Материал;
Движение.Стоимость=ТекСтрокаМатериалы.Сумма;
КонецЦикла;
КонецПроцедуры
В режиме 1С:Предприятие
В режиме 1С:Предприятие необходимо перепровести все приходные накладные. Это необходимо для того, чтобы эти документы создали новые записи в регистрах, в соответствии с алгоритмом проведения.
Запустим 1С: Предприятие в режиме отладки. Откроем список документов, выполнив команду Приходные накладные в панели навигации раздела Учет материалов.
Выделим одновременно, используя клавишу Ctrl,все приходные накладные и перепроведем их, выполнив команду Все действия >Провести.
В режиме Конфигуратор
Откроем в конфигураторе окно редактирования объекта конфигурации Документ ОказаниеУслуги
- На закладке Данные: создадим новый реквизит табличной части документа с именем Стоимость, типом Число, длиной 15 и точностью 2, и отметим флажок неотрицательное:
Рис. 11.3. Редактируем свойства Стоимость
Откроем форму ФормаДокумента документа ОказаниеУслуг и добавим табличную часть ПереченьНоменклатуры поле, отображающее новый реквизит Стоимоть:
- На закладке Реквизиты: раскроем реквизит формы Объект.
Найдем в табличной части реквизит Стоимость и с помощью мыши перетащим его в окно элементов формы, расположенное слева в верхней части редактора форм:
Рис. Редактируем реквизит формы Объект
Новый элемент расположим в структуре элементов формы после поля Номенклатура. Оставим свойства элемента формы, предложенные по умолчанию.
Новый реквизит сразу же отобразится в форме документа, расположенной в левом нижнем окне редактора форм.
В режиме 1С: Предприятие
В режиме 1С:Предприятие необходимо перепровести документ оказания услуги. Это необходимо для того, чтобы этот документ создал новые записи в регистрах. Запустим 1С: Предприятие в режиме отладки и откроем список документов, выполнив команду Оказание услуг в панели навигации раздела Оказание услуг.
Откроем документ Оказание услуги № 1 и изменим в нем стоимость одного из материалов. Нажмем кнопку Провести и выполним команду перехода к регистру Стоимость материалов.
Создадим и проведем еще два документа Оказание услуги.
Для этого в форме списка документов нажмем кнопку Создать. Эти документы понадобятся нам в дальнейшем.
Контрольные вопросы
Лабораторная работа № 6
Тема работы: Вывод данных по всем дням в выбранном периоде. Получение Актуальных значений из периодического регистра сведений.
Цель работы: Научиться создавать различные отчеты.
Ход выполнения работы.
Теоретическая часть.
На этом занятии мы познакомимся с объектом конфигурации Отчет. Вы узнаете, для чего он используется, и создадите отчет, который будет показывать движения и остатки материалов на предприятии.
Что такое отчет?
Объект конфигурации Отчет предназначен для описания алгоритмов, при помощи которых пользователь сможет получать необходимые ему выходные данные. Алгоритм формирования выходных данных описывается при помощи визуальных средств или с использованием встроенного языка. В реальной жизни объектам конфигурации Отчет соответствуют всевозможные таблицы выходных данных, сводных данных, диаграммы и пр.
Добавление отчета В режиме Конфигуратор
Теперь у нас все готово для того, чтобы можно было пол выходные данные. Поэтому приступим к созданию отчета, кот будет показывать нам приход, расход и остатки материалов.
Можно быстро и легко разработать отчет с использованием только визуальных средств разработки «без единой строчки кода».
1. Откроем в конфигураторе нашу учебную конфигурацию и добавим новый объект конфигурации Отчет. Для этого выделим в дереве объектов конфигурации ветвь Отчеты нажмем кнопку Добавить в командной панели окна конфигурации. В открывшемся окне редактирования объекта конфигурации на закладке Основные зададим имя отчета - Материалы. Больше никаких свойств, определяющих представление об в интерфейсе приложения, задавать не будем. Вместо них будет использоваться Синоним объекта, который создается автоматически на основании имени объекта.
2. Создадим основу для построения любого отчета - схему компоновки данных. Для этого нажмем кнопку Открыть схему компоновки да или кнопку открытия со значком лупы.
Макет
Так как у отчета, который мы создаем, еще не существует схемы компоновки данных, платформа предложит создать новую Схема компоновки данных с точки зрения конфигурации является макетом, поэтому будет открыт конструктор макета, предлагающий выбрать единственный тип макета - Схема компоновки данных.
3. Нажмем кнопку Готово. Платформа создаст новый макет, содержащий схему компоновки данных, и сразу же откроет конструктор схемы компоновки данных. Конструктор обладает большим количеством возможностей для визуального проектирования отчетов, но мы сейчас воспользуемся только самыми простыми его возможностями и определим те данные, которые хотим видеть в результате работы нашего отчета.
4. Добавим новый набор данных - запрос. Для этого нажмем кнопку Добавить или вызовем контекстное меню ветки Наборы данных. Для того чтобы создать текст запроса, запустим конструктор запроса - нажмем кнопку Конструктор запроса. Конструктор запроса - инструмент, созданный для помощи разработчику, позволяющий визуально конструировать запрос, пользователь, не знакомый с языком запросов, может с помощью конструктора создать синтаксически правильный запрос.
5. В списке База данных представлены таблицы для создания запроса. На основе их данных мы имеем возможность построить отчет. Если раскрыть ветку РегистрыНакопления то мы увидим, что кроме таблицы регистра ОстаткиМатериалов в этой ветке присутствуют еще несколько виртуальных таблиц, которые формирует система.
6. Эти виртуальные таблицы, создаваемые платформой для регистров, и используются в основном для построения различных отчетов. Поскольку мы хотим видеть как остатки материалов, так и информацию об их поступлении и расходовании, нас будет интересовать виртуальная таблица ОстаткиМатериалов.ОстаткиИОбороты. Раскроем ее.
7. Эта таблица содержит измерения регистра ОстаткиМатериалов – Материал, Склад и кроме этого начальные и конечные остатки, а также значения прихода, расхода и оборотов для всех ресурсов регистра ОстаткиМатериалов.
8. Начнем выбирать поля таблицы в нужном нам порядке двойным щелчком мыши. Сначала выберем Склад и Материал. Затем выберем КоличествоНачальныйОстаток, КоличествоПриход, КоличествоРасход. В заключение выберем КоличествоКонечныйОстаток.
Выделенные элементы можно перенести из одного списка в другой перетаскиванием мышью или двойным щелчком на них.
9. В результате окно Поля должно быть заполнено следующим образом (рис.1 ).
Рис. 1. Выбранные поля
10. Нажмем ОК и вернемся в конструктор схемы компоновки данных.
11. Текст запроса, который был создан с помощью конструктора платформа поместит в поле Запрос. Это поле представляет собой текстовый редактор, в котором можно вручную отредактировать существующий запрос. Кроме того, можно снова вызвать конструктор запроса и отредактировать запрос при помощи него. Обратите внимание на список полей системы компоновки данных который платформа заполнила в верхней части конструктора. В нем отображаются поля, которые доступны у текущего набора данных. В нашем случае система 1С:Предприятие заполнила данный список автоматически, из текста запроса, и нет необходимости в его ручной настройке. Итак, мы описали, каким образом будут извлекаться данные для отчета. Но пока мы не создадим стандартных настроек нашего отчета, мы ничего не увидим в результате. Поэтому создадим самые простые настройки отчета для отображения обычных детальных записей информационной базы. В нашем случае это будут записи виртуальной Таблицы регистр накопления ОстаткиМатериалов, выбранные в линейном порядке по мере попадания их в эту таблицу.
12. Настройки отчета. Перейдем на закладку Настройки. В верхнем правом окне будет находиться иерархическая структура нашего отчета. Для добавления нового элемента выделим в дереве структуры отчет корневой элемент Отчет и вызовем его контекстное меню. Можно также нажать кнопку Добавить в командной панели окна или нажать клавишу 1пs.
13. Добавим в отчет группировку (контекстное меню - Новая группировка). При этом не станем указывать поле группировки, а просто нажмем ОК. Тем самым мы определили, что в отчет будут выводиться детальные записи из информационной базы - записи, получаемые в результате выполнения запроса без итогов.
В структуре отчета появится группировка Детальные записи(рис. 2)
рис. 2
14. Теперь настроим поля, которые будут выводиться в результат отчета. Для этого перейдем в нижнем окне настроек на закладку Выбранные поля и перенесем мышью из списка доступных полей:
- Склад,
- Материал,
- КоличествоНачальныйОстаток,
- КоличествоПриход,
- КоличествоРасход,
- КоличествоКонечныйОстаток.
ПРИМЕЧАНИЕ
Добавление доступных полей в список выбранных полей можно осуществить перетаскиванием мышью, двойным щелчком на доступных полях либо нажатием кнопки Добавить справа от списка выбранных полей. Порядок выбранных полей можно изменить позже кнопками Вверх, Вниз или перетаскиванием мышью.
15. В результате окно настроек отчета должно иметь вид как на Рис.
.
16. Затем перейдем на закладку Параметры и укажем, что параметры отчета Дата начала и Дата окончания будут включены в состав пользовательских настроек, и эти настройки будут находиться непосредственно в форме отчета, то есть будут «быстрыми» настройками.
17. Сначала укажем, что оба эти параметра будут использоваться в отчете - установим флажки в первой колонке. Затем выделим каждый из параметров, нажмем кнопку Свойство элемента пользовательских настроек и поставим флажок Вкл ~ в пользовательские настройки.
18. Таким образом, перед формированием отчета пользователь сможет задать отчетный период. Определим в каких подсистемах будет отображаться наш отчет.
19. Закроем конструктор схемы компоновки данных и в окне редактирования объекта конфигурации Отчет Материалы перейдем на закладку Подсистемы. Отметим в списке подсистем конфигурации ветви Учет материалов, Оказание услуг и Бухгалтерия. Таким образом, ссылка на наш отчет автоматически попадет в панель действий этих подсистем.
20. В режиме 1С: Предприятие. Запустим 1С:Предприятие в режиме отладки и посмотрим, как Работает отчет. В открывшемся окне 1С:Предприятия мы видим, что в панели действий разделов Бухгалтерия, Оказание услуг и Учет материалов появилась новая группа команд для выполнения отчетов и в ней команда для формирования отчета Материалы. Выполним ее.
21. Перед нами откроется автоматически сформированная системой форма отчета.
22. Зададим даты начала и окончания отчетного периода и нажмем на кнопку Сформировать. Как видите, наш отчет полностью отражает движение материалов, произошедшее в нашей организации.
Контрольные вопросы
1. Для чего предназначен объект конфигурации Отчет.
2. Как создать отчет с помощью конструктора схемы компоновки данных.
3. Как отобразить отчет в разделах прикладного решения.
Лабораторная работа № 7
Тема работы: Макет печатной формы.
Цель работы: Научиться создавать различные макеты печатной формы.
Ход выполнения работы.
Теоретическая часть
Что такое макет
Объект конфигурации Макет предназначен для хранения различных форм представления данных, различных данных, которые могут потребоваться каким-либо объектам конфигурации или всему прикладному решению в целом.
Макет может содержать табличный или текстовый документ, двоичные данные, НТМL-документ или Асtive Document, графическую или географическую схему, схему компоновки данных или макет оформления схемы компоновки данных.
Макеты могут существовать как сами по себе (общие макеты), так и быть подчинены какому-либо объекту конфигурации.
Одно из предназначений макета, подчиненного объекту конфигурации и содержащего табличный документ, - создание печатной формы этого объекта. Создание печатной формы заключается в конструировании ее составных частей - именованных областей, из которых затем «собирается» готовая печатная форма.
Порядок заполнения областей данными и вывода их в итоговую форму описывается при помощи встроенного языка. Печатная форма может включать в себя различные графические объекты: картинки. ОLЕ-объекты, диаграммы и т. д.
Помимо создания макета «вручную» конфигуратор предоставляет разработчику возможность воспользоваться специальным инструментом - конструктором печати, который берет на себя большинство рутинной работы по созданию макета.
Макет печатной формы
Наша цель будет заключаться в создании печатной формы документа Оказание услуги.
1. Откроем в конфигураторе окно редактирования объекта конфигурации Документ ОказаниеУслуги.
2. Перейдем на закладку Макеты и запустим конструктор печати. В открывшемся окне на первом шаге укажем, что будет создана новая команда Печать для формирования печатной формы документа.
3.На втором шаге нажатием кнопки >>. определим, что все реквизиты нашего документа будут отображены в шапке печатной формы. Нажмем Далее.
4.На третьем шаге точно так же определим, что все реквизиты табличной части документа будут отображены в печатной форме.
5.На четвертом шаге конструктор предложит сформировать подвал (нижнюю часть) печатной формы. Мы не станем ничего указывать (подвал в данном случае использовать не будем), нажмем и перейдем к пятому шагу. Здесь ничего изменять не будем. Тем самым согласимся с тем, команда для вызова процедуры формирования печатной формы будет помещена в командную панель формы, в раздел Важное.
6. Нажмем ОК. В конфигураторе откроется модуль команды Печать, модуль менеджера документа ОказаниеУслуги и макет этого документа. Разработчик может создать макет печатной формы с нуля и для ее вывода создать соответствующую команду и кнопку в форме документа, но в данном случае всю работу сделал за нас конструктор печати:
- Создан макет печатной формы документа ОказаниеУслуги с именем Печать.
- Создана команда документа ОказаниеУслуги с именем Печать. В модуль этой команды помещен обработчик, вызывающий процедуру печати документа, выполняющуюся на сервере. Сама процедура печати помещена в модуль менеджера документа ОказаниеУслуги.
- В командную панель формы документа ОказаниеУслуги помещена команда Печать для формирования печатной формы документа.
7. Причем поскольку команда Печать принадлежит документу ОказаниеУслуги в целом, а не конкретной его форме, эту команду можно будет помещать в любую форму, созданную для документа.
8. В будущем мы будем самостоятельно создавать процедуры обработчиков команд и размещать соответствующие им кнопки в форме, «пока воспользуемся результатами работы конструктора печати и проверим макет в работе.
9. Запустим 1С: Предприятие в режиме отладки и откроем документ ОказаниеУслуги № 1. Обратите внимание, что в командной панели документа появилась кнопка Печать.
10. Нажмем на нее и увидим печатную форму нашего документа. Как видите, конструктор сформировал вполне подходящую печатную форму для нашего документа. Единственное, чего не хватает в данной форме, - это итоговой суммы документа.
11. Редактирование макета. В режиме Конфигуратор прежде всего добавим итоговую сумму в печатную форму документа ОказаниеУслуги. Откроем конфигуратор, раскроем дерево документа Оказание Услуги и дважды щелкнем на макете Печать.
12. Как видите, макет документа состоит из именованных областей, которые в определенном порядке выводятся на печать. Те именованные области, которые мы видим слева, были созданы с помощью конструктора. Но разработчик может сам создавать или удалять области, переименовывать их и т. п.
13. Добавим новую область для вывода итоговой суммы документа. Выделим мышью две пустые строки под табличной частью документа и выполним пункт главного меню Таблица ► Имена ► Назначить имя.
14. Назовем область Всего, нажмем ОК.
15. Чтобы формат добавленных нами строк совпадал с имеющимся форматом заголовка и табличной части документа, изменим ширину колонок. Для этого потянем мышью в заголовке таблицы за правую границу колонки 2 так, чтобы ее ширина совпала с шириной колонки № в шапке документа. Отпустим мышь. Платформа предложит создать новый формат для выделенных строк. Согласиться с этим. Аналогичные действия выполним и для колонок 3, 4, 5 и 6.
16. В созданной области, в колонке Цена, напишем ВСЕГО, а в колонке Сумма напишем ВсегоПоДокументу. Вызвав палитру свойств для последней заполненной нами ячейки (контекстное меню - Свойства), в свойстве Заполнение укажем, что в этой ячейке будет находиться не текст, а параметр.
17. Каждая ячейка редактируемого нами табличного документа может содержать либо текст, либо некоторый параметр, либо шаблон. Текст, содержащийся в ячейке, будет показан на экране. Параметр будет заменен некоторым значением, которое может быть присвоено ему средствами встроенного языка. Текст, содержащийся в ячейке, является именем этого параметра. Шаблон представляет собой текстовую строку, в определенные места которой будут вставлены значения параметров. Поэтому, указав для ячейки в качестве заполнения Параметр, мы определили параметр области с именем ВсегоПоДокументу, которому присвоим нужное нам значение при формировании печатной формы.
18. Откроем модуль менеджера документа ОказаниеУслуги. Для этого перейдем на закладку Прочее окна редактирования объекта конфигурации Документ ОказаниеУслуги и нажмем кнопку Модуъ менеджера.
Найдем в нем процедуру Печать и отредактируем ее следующим образом (новые строки выделены жирным шрифтом), листинг- 1.
Листинг – 1. Печать формы документа (фрагмент)
ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьПереченьНоменклатурыШапка=
Макет.ПолучитьОбласть("ПереченьНоменклатурыШапка");
ОбластьПереченьНоменклатуры = Макет.ПолучитьОбласть("ПереченьНоменклатуры");
ОбластьИтог=Макет.ПолучитьОбласть("Всего");
ТабДок.Очистить();
ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ТабДок.Вывести(ОбластьЗаголовок);
Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());
ТабДок.Вывести(ОбластьПереченьНоменклатурыШапка);
ВыборкаПереченьНоменклатуры = Выборка.ПереченьНоменклатуры.Выбрать();
СуммаИтог=0;
Пока ВыборкаПереченьНоменклатуры.Следующий() Цикл
ОбластьПереченьНоменклатуры.Параметры.Заполнить(ВыборкаПереченьНоменклатуры);
ТабДок.Вывести(ОбластьПереченьНоменклатуры, ВыборкаПереченьНоменклатуры.Уровень());
СуммаИтог=СуммаИтог+ВыборкаПереченьНоменклатуры.Сумма;
КонецЦикла;
ОбластьИтог.Параметры.ВсегоПоДокументу=СуммаИтог;
ТабДок.Вывести(Областьитог);
ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
19. Смысл добавленного фрагмента прост. Мы обращаемся к макету дата ОказаниеУслуги по его имени - Макет. Используя его метод ПолучитьОбласть(), получаем область Всего ( ту, которую мы только что добавили к макету) и сохраняем ее в переменной ОбластьИтог.
20. В цикле обхода строк табличной части документа, полученных в результате выполнения запроса, мы накапливаем в переменной СуммаИтог значение суммы табличной части документа по колонке Сумма.
21. Затем мы обращаемся к параметру ВсегоПоДокументу (ОбластьИтог. Параметры. ВсегоПоДокументу), находящемуся в области Всего, и присваиваем ему значение переменной СуммаИтог.
22. В заключение мы выводим итоговую область в табличный документ, который будет показан на экране и распечатан пользователем - ТабДок.Вывести(ОбластьИтог).
23. Отображение табличного документа на экране выполняется в обработчике команды Печать, в модуле этой команды на клиенте, в то время как сама процедура печати, описанная в модуле менеджера документа, выполняется на сервере.
24. Запустим 1С:Предприятие в режиме отладки и проверим результат наших изменений. Подобным образом, создавая именованные области и ячейки макета, используя их свойства и управляя порядком их вывода с помощью встроенного языка, разработчик имеет возможность создать печатную форму любого дизайна. А теперь, для того чтобы наш документ ОказаниеУслуги, выглядел вполне законченным, добавим итоговую сумму по документу и на экранную форму, чтобы пользователь мог видеть ее в процессе заполнения табличной части документа.
25. Редактирование формы. После того как мы вывели итоговую сумму по табличной части в печатную форму документа, мы можем видеть такую же итоговую сумму и в форме документа. Чтобы в процессе его создания можно было оперативно, не печатая документ, знать итоговую сумму по документу. Для этого мы внесем небольшие изменения в форму документа Оказание Услуги.
26. Для редактирования формы документа откроем конфигуратор, раскроем дерево документа Оказание Услуги и дважды щелкнем на форме ФормаДокумента.
27. Дважды щелкнем на элементе ПереченьНоменклатуры в дереве, элементов формы или правой кнопкой мыши откроем для него палитру свойств (пункт контекстного меню Свойства).
28. Установим свойство Подвал, которое определяет наличие подвала у таблицы формы.
29. Затем откроем свойства элемента формы ПереченьНоменклатурыЦена и установим:
■ Текст подвала - Всего: .
■ Горизонтальное положение в подвале - Право, а в свойстве Шрифт подвала изменим начертание на Жирный. После этого откроем свойства элемента ПереченьНоменклатурыСумма, установим: Горизонтальное положение в подвале – Право. В свойстве Шрифт подвала тоже изменим начертание на Жирный.
30. Для того чтобы в подвале колонки Сумма отображался итог по ней, нажмем кнопку выбора в поле ПутьКДаннымПодвала.
31. Раскроем дерево реквизитов объекта и выберем элемент ИтогСумма. Мы видим, что по колонке Сумма в табличной части документу подсчитывается общий итог документа.
32. Это небольшое изменение, которое мы сделали в форме, на самом, деле сильно улучшает ее пользовательский интерфейс и делает ее более удобной в применении. Подобным образом, используя свойство элементов формы, задавая их значения и изменяя командный интерфейс формы, разработчик имеет возможность создать экранную форму нужного дизайна и поведения.
. . .
Контрольные вопросы
1. Для чего предназначен объект конфигурации Макет.
2. Что такое конструктор печати.
3. Как создать макет с помощью конструктора печати.
4. Как изменить табличный документ.
5. Какая разница в заполнении ячейки табличного документа текстом, параметром и шаблоном.
6. Как с помощью встроенного языка вывести в табличный документ новую область.
7. Как изменить внешний вид и поведение элемента формы.
8. Как отобразить сумму по колонке таблицы
Лабораторная работа № 8
Теоретическая часть
Вывод данных в таблицу
Это наиболее гибкий и универсальный отчет, который позволяет пользователю изменять его структуру и внешний вид самостоятельно.
В режиме Конфигуратор
Добавим новый объект конфигурации Отчет. Назовем его Универсальный и запустим конструктор схемы компоновки данных. Создадим новый Набор данных - запрос и вызовем конструктор запроса.
Запрос для набора данных
В качестве источника данных для запроса выберем виртуальную таблицу регистра накопления Продажи.Обороты. Затем выберем из нее все поля:
Рис.. Выбранные поля
- Нажмем ОК–
- На закладке Ресурсы нажатием кнопки » выберем все доступные ресурсы отчета.
- На закладке Настройки: нажмем кнопку Добавить в командной панели окна настроек и добавим таблицу.
Мы не будем здесь задавать строки и колонки этой таблицы, а также список выбранных полей, так как хотим предоставить полную свободу пользователю в этих действиях.
Для этого выделим в структуре элементов отчета элемент Таблица и нажмем кнопку Свойства элемента пользовательских настроек, расположенную вверху в командной панели окна настроек.
В появившемся окне сделаем следующие изменения:
Рис. . Состав пользовательских настроек
В заключение определим, в каких подсистемах будет отображаться наш отчет.
Закроем конструктор схемы компоновки данных и в окне редактирования объекта Универсальный перейдем на закладку Подсистемы.
Отметим в списке подсистем конфигурации подсистему Оказание услуг.
В режиме 1С: Предприятие
Запустим 1С: Предприятие в режиме отладки и выполним команду Универсальный в панели действий раздела ОказаниеУслуг.
Если мы сейчас нажмем Сформировать, то ничего не увидим в результате, так список выбранных полей, группировок строк и колонок таблицы пуст. Пользователь имеет возможность самостоятельно формировать требуемый отчет по регистру Продажи.
Контрольные вопросы
Лабораторная работа № 17
Система компоновки данных
Система компоновки данных предназначена для создания произвольных отчетов в системе 1С: Предприятие и состоит из нескольких основных частей.
Исходные данные для компоновки отчета содержит в себе схема компоновки данных.
Разработчик создает схему компоновки данных, в которой описывает текст запроса, наборы данных, связи между ними, доступные поля, параметры получения данных, и задает первоначальные настройки компоновки - структуру отчета, макет оформления данных и др.
Отчет системы компоновки имеет сложную иерархическую структуру и может состоять из различных элементов, таких как группировки, таблицы и диаграммы.
При этом пользователь может изменить существующую структуру отчета или вообще создать совершенно новую структуру отчета. Может настроить необходимый ему отбор, оформление элементов структуры отчета, получить расшифровку по каждому элементу и т. д.
Например, может быть задана такая структура отчета, состоящая из одной таблицы и одной диаграммы.
В этом случае сформированный отчет будет иметь следующий вид.
В представленном отчете таблица будет состоять из записей регистра накопления ПродажиОбороты о клиентах и оказанных им услугах. Эти записи сгруппированы по мастерам, которые выполняли заказы. А в группировке будет выведен список услуг, оказанных данным мастером, и затраченных на это материалов.
Как мы уже говорили в начале раздела, система компоновки данных представляет собой совокупность нескольких объектов. При формировании и исполнении отчета происходит последовательная передача данных от одного объекта системы компоновки данных к другому, до получения конечного результата - документа, показанного пользователю.
Алгоритм взаимодействия этих объектов выглядит следующим образом:
Разработчик создает схему компоновки данных и настройки по умолчанию. В общем случае на основе одной схемы компоновки данных может быть создано большое количество различных отчетов. Настройки компоновки данных, создаваемые разработчиком или изменяемые пользователем, определяют, какой именно отчет будет получен в конкретном случае.
Результат компоновки обрабатывается процессором вывода, и в итоге пользователь получает результирующий табличный документ.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Запрос для набора данных
В качестве источника данных для запроса выберем виртуальную таблицу регистра накопления Продажи.Обороты.
Затем выберем из нее следующие поля:
- На закладке Объединения/Псевдонимы укажем, что поле ВыручкаОборот будет иметь псевдоним Выручка, а поле СтоимостьОборот -Стоимость.
- НажмемОК–
Перейдем к редактированию схемы компоновки данных.
Вычисляемые поля
На этом этапе мы столкнулись с необходимостью отразить в отчете поле, которого нет в наборе данных. Раньше мы использовали в отчете те поля, которые описывались в наборе данных. Теперь, чтобы отобразить доход от оказания услуг в разрезе клиентов, нам необходимо дополнительное поле, рассчитанное как разница между выручкой и стоимостью оказания услуг.
Для этого в системе компоновки данных есть возможность определения вычисляемого поля.
Вычисляемые поля: дополнительные поля схемы компоновки данных, значения которых будут вычисляться по некоторой формуле.
- На закладке Вычисляемые поля добавим вычисляемое поле, нажав кнопку Добавить. Дадим ему имя - Доход, в колонку Выражение введем следующий код:
Листинг 13.2. Выражение для расчета вычисляемого поля «Доход»
Выручка – Стоимость
Ресурсы
- На закладке Ресурсы нажатием кнопки » выберем все доступные ресурсы отчета:
Рис.. Ресурсы схемы компоновки данных
Настройки
- На закладке Настройки добавим в структуру отчета диаграмму. Для этого нажмем кнопку Добавить в командной панели окна настроек и добавим диаграмму:
Затем выделим ветку Точки и добавим в нее группировку по полю Клиент. Серии диаграммы оставим без изменений.
Дело в том, что для демонстрации рейтинга клиентов хорошо подойдет круговая диаграмма, которую мы хотим показать. Для этого вида диаграммы достаточно задать только точки, поэтому серии мы не задаем.
- На закладке Выбранные поля выберем поле Доход для вывода в отчет.
Структура отчета должна принять следующий вид:
Рис. Структура отчета и настройки диаграммы
- На закладке Другие настройки выберем тип диаграммы Круговая объемная и зададим заголовок отчета - Рейтинг клиентов.
После этого в окне редактирования объекта РейтингКлиентов перейдем на закладку Подсистемы. Отметим в списке подсистем конфигурации подсистемы Оказание услуг и Бухгалтерия.
Запустим 1С:Предприятие в режиме отладки и выполним команду Рейтинг клиентов в панели действий раздела Бухгалтерия. Нажмем Сформировать.
Мы видим данные о доходе от оказания услуг по каждому из клиентов, представленные в виде круговой диаграммы. Если вернуться в конфигуратор и изменить тип диаграммы на Гистограмма объемная, то наша диаграмма поменяет вид.
Контрольные вопросы
Лабораторная работа № 10
Вывод данных в таблицу
Это наиболее гибкий и универсальный отчет, который позволяет пользователю изменять его структуру и внешний вид самостоятельно.
Добавим новый объект конфигурации Отчет. Назовем его Универсальный и запустим конструктор схемы компоновки данных. Создадим новый Набор данных - запрос и вызовем конструктор запроса.
Запрос для набора данных
В качестве источника данных для запроса выберем виртуальную таблицу регистра накопления Продажи.Обороты. Затем выберем из нее все поля:
Рис. Выбранные поля
- Нажмем ОК–
- На закладке Ресурсы нажатием кнопки » выберем все доступные ресурсы отчета.
- На закладке Настройки: нажмем кнопку Добавить в командной панели окна настроек и добавим таблицу.
Мы не будем здесь задавать строки и колонки этой таблицы, а также список выбранных полей, так как хотим предоставить полную свободу пользователю в этих действиях.
Для этого выделим в структуре элементов отчета элемент Таблица и нажмем кнопку Свойства элемента пользовательских настроек, расположенную вверху в командной панели окна настроек.
В появившемся окне сделаем следующие изменения:
Рис. . Состав пользовательских настроек
В заключение определим, в каких подсистемах будет отображаться наш отчет.
Закроем конструктор схемы компоновки данных и в окне редактирования объекта Универсальный перейдем на закладку Подсистемы.
Отметим в списке подсистем конфигурации подсистему Оказание услуг.
Запустим 1С: Предприятие в режиме отладки и выполним команду Универсальный в панели действий раздела ОказаниеУслуг.
Если мы сейчас нажмем Сформировать, то ничего не увидим в результате, так список выбранных полей, группировок строк и колонок таблицы пуст. Пользователь имеет возможность самостоятельно формировать требуемый отчет по регистру Продажи.
Контрольные вопросы
Литература
1. Сорокин А.В.,Программирование в 1С: Предприятие 8.0, Издательство: ДМК Пресс, 2007 г., 273 стр. .(http://www.knigafund.ru/)
2. 1С Предприятие 8. 2 Конфигурирование и администрирование.
3. М. Г. Радченко "1С:Предприятие 8. 2. Практическое пособие разработчика.
Дополнительная литература
1. Кашаев С.М. Программирование в 1С:Предприятие 8.2, 2010.
2. Чистов Павел . Базовый видеокурс Программирование в 1С8.2
Тематика лабораторных занятий
№ п/п | Тема занятия | Вид задания | Объем часов | Форма контроля |
1 | Тема 1. Знакомство с конфигуратором. Подсистемы. | Лабораторная работа № 1. Создание новой информационной базы. Внешний вид интерфейса прикладного решения. Запуск отладки в режиме 1С:Предприятие. Добавление подсистемы. | 2 | Отчет. Проверка работы. Устный опрос |
2 | Тема 2. Справочники | Лабораторная работа № 2. Создание справочников. Проверка заполнения стандартных реквизитов Создание справочников: простой справочник, справочник с предопределенными элементами, иерархический справочник | 2 | Отчет. Проверка работы. Устный опрос |
3 | Тема 3. Документы | Лабораторная работа № 3. Справочники и документы. Автоматический пересчет суммы в строках документа. Создание документов и их заполнение. | 2 | Отчет. Проверка работы. Устный опрос |
4 | Тема 6. Макеты. Редактирование макетов и форм | Лабораторная работа № 4. Добавление периодического регистра сведений. Автоматическая подстановка цены в документ при выборе номенклатур | 2 | Отчет. Проверка работы. Устный опрос |
5 | Тема 9. Проведение документа по нескольким регистрам | Лабораторная работа № 5. Проведение документа «Оказание услуги» по двум регистрам | 2 | Отчет. Проверка работы. Устный опрос |
6 | Тема 11. Отчеты | Лабораторная работа № 6. Вывод данных по всем дням в выбранном периоде. Получение актуальных значений из периодического регистра сведений. Использование вычисляемого поля в отчете. Вывод данных в таблицу | 2 | Отчет. Проверка работы. Устный опрос |
7 | Тема 13. План видов характеристик и бухгалтерский учет | Лабораторная работа № 7. Доработка учетных механизмов. Приход/расход номенклатуры с учетом характеристик. | 2 | Отчет. Проверка работы. Устный опрос |
8 | Тема 14. План видов расчета, регистр расчета. Использование регистра расчета | Лабораторная работа № 8. Добавление регистра расчета. Отчет о начислениях сотрудникам. Перерасчет. Диаграмма Ганта. | 2 | Отчет. Проверка работы. Устный опрос |
9 | Тема 17. Рабочий стол и настройка командного интерфейса. Обмен данными. | Лабораторная работа № 9. Процедуры обмена данными. | 2 | Отчет. Проверка работы. Устный опрос |
10 | Тема 19. Приемы разработки форм. | Лабораторная работа № 10. Форма выбора для поля, содержащего ссылочный реквизит. Проверка заполнения реквизитов. Автоматическая проверка заполнения. Программная проверка заполнения. | 2 | Отчет. Проверка работы. Устный опрос |
Лабораторная №1
Тема работы: С оздание новой информационной базы. Внешний вид интерфейса прикладного решения. Запуск отладки в режиме 1С:Предприятие. Добавление подсистемы.
Цель лабораторной работы: ознакомится с возможностью создания конфигурации в системе 1С:Предприятие и разработка конфигурации.
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
1С:Предприятие является универсальной системой автоматизации экономической и организационной деятельности предприятия. Поскольку такая деятельность может быть довольно разнообразной, система 1С:Предприятие может «приспосабливаться» к особенностям конкретной области деятельности, в которой она применяется. Для обозначения такой способности используется термин конфигурируемость, то есть возможность настройки системы на особенности конкретного предприятия и класса решаемых задач.
Логически всю систему можно разделить на две большие части, которые тесно взаимодействуют друг с другом: конфигурацию и платформу, которая управляет работой конфигурации.
Существует одна платформа (1С:Предприятие 8) и множество конфигураций. Для функционирования какого-либо прикладного решения всегда необходима платформа и какая-либо конфигурация
Рис. Конфигураций много, а платформа одна
Сама по себе платформа не может выполнить никаких задач автоматизации, так как она создана для обеспечения работы какой-либо конфигурации. То же самое с конфигурацией: чтобы выполнить те задачи, для которых она создана, необходимо наличие платформы, управляющей ее работой.
Итак, поскольку задачи автоматизации могут быть самыми разными, фирма «1С» и ее партнеры выпускают прикладные решения, каждое из которых предназначено для автоматизации одной определенной области человеческой деятельности. В качестве примера существующих прикладных решений можно перечислить следующие типовые решения:
Режимы работы системы:
1С: Предприятие имеет различные режимы работы: 1С: Предприятие и Конфигуратор.
Режим 1С Предприятие является основным и служит для работы пользователей системы. В этом режиме пользователи вносят данные, обрабатывают их и получают итоговые результаты.
Режим Конфигуратор используется разработчиками и администраторами информационных баз. Именно этот режим и предоставляет инструменты, необходимые для модификации существующей или создания новой конфигурации.
ПРАКТИЧЕСКАЯ ЧАСТЬ
Дата: 2019-07-24, просмотров: 379.