Лабораторная работа 1 Знакомство, создание информационной базы
Скачать 3.89 Mb.
|
Сотрудники завершено. Обновим конфигурацию, подтвердим обновление и запустим программу в режиме Предприятие. • Заполнение табличной части в режиме 1С: Предприятие В панели действий раздела Расчет зарплаты появилась команда Сотрудник для создания новых сотрудников. Этой командой мы и воспользуемся для создания новых элементов справочника, не открывая при этом списка сотрудников. Выполним команду Сотрудник. Перед нами откроется форма для создания элемента справочника -основная форма объекта. Заголовок этой формы определяется свойством Представление объекта. Рис. 3.10. Заполнение табличной части Эта форма содержит табличную часть с реквизитами, которые мы описали в конфигураторе для этого справочника. Теперь приступим к созданиню сотрудников, в этом вам поможет ваша фантазия (для корректной работы заполните все требующиеся поля таблицы) Рис. 3.11. Заполнение элемента справочника "Сотрудники" 3. Создание иерархического справочника Справочник Номенклатура будет содержать информацию об услугах, которые оказывает наше предприятие, и о тех материалах, которые при этом могут быть использованы. Этот справочник не будет сложным. Единственная особенность, которой он будет обладать, - наличие иерархической структуры. Для того чтобы справочником было удобно пользоваться, мы сгруппируем услуги в одну группу, а материалы - в другую. • В режиме Конфигуратор Создадим новый объект конфигурации Справочник и назовем его Номенклатура. На основании имени платформа автоматически заполнит его синоним. Поскольку понятие Номенклатура не имеет единственного числа, больше никаких свойств, определяющих представление объекта в интерфейсе приложения, задавать не будем. Вместо Представления объекта и Представления списка будет использоваться Синоним объекта - Номенклатура. - На закладке Подсистемы: По логике нашей конфигурации список номенклатуры должен быть доступен в разделах Учет материалов. Оказание услуг и Бухгалтерия, поэтому отметим в списке подсистем эти подсистемы. - На закладке Иерархия: установим флажок Иерархический справочник. - На закладке Данные: оставим по умолчанию длину и тип кода, длину наименования справочника зададим равной 100 символам. - В дереве объектов конфигурации (Подсистемы\Все подсистемы): в открывшемся окне слева в списке Подсистемы выделим подсистему УчетМатериалов. В группе Панель действий.Создать включим видимость у команды Номенклатура: создать. Выделив в списке подсистем ОказаниеУслуг, проделаем те же действия. А для подсистемы Бухгалтерия никаких команд добавлять в панель действий не будем, так как вряд ли понадобится пополнять список номенклатуры в этом разделе. Теперь заполним справочник Номенклатура. В процессе заполнения вы научитесь создавать группы и переносить элементы из одной группы в другую. • В режиме 1С:Предприятие В открывшемся окне 1С:Предприятия мы видим, что в панели навигации разделов Учет материалов, Оказание услуг и Бухгалтерия появилась команда Номенклатура. Название этой команды определяется синонимом объекта, так как других представлений мы для этого справочника не задавали. Выполним команду Номенклатура в панели навигации раздела Учет материалов. Справа от панели навигации в рабочей области окна приложения откроется основная форма списка. - Создадим две группы в корне справочника: Материалы и Услуги. Для этого нажмем кнопку Создать группу в командной панели формы списка. Рис. 3.12.Создание групп в корне справочника А) Зададим наименование групп: Материалы, Услуги. Поля Родитель и Код заполнять не будем. Б) Раскроем группу Материалы (нажатием на +) и создадим в ней пять элементов. После этого раскроем группу Услуги и тоже создадим в ней несколько элементов (не более 3). - Перенос элементов в другие группы Разнесите услуги по двум смысловым группам: Для этого в группе Услуги необходимо создать еще две подчиненных группы, которые по смыслу относятся к предоставляемым услугам. Для того чтобы переместить услуги в соответствующие группы, в окне списка установим курсор на ту услугу, которую мы хотим переместить, и выполним команду Все действия > Переместить в группу. В открывшемся окне выберем новую группу. 4. Создание справочника с предопределенными элементами В заключение мы создадим справочник Склады. Этот справочник будет включать в себя один предопределенный элемент - склад Основной, на который будут поступать все материалы. Наша задача - создать справочник, содержащий предопределенные элементы. • В режиме Конфигуратор Откроем конфигуратор и создадим новый объект конфигурации Справочник с именем Склады. На основании имени платформа автоматически заполнит его синоним. - На вкладке Основные: Зададим Представление объекта - Склад. Представления списка - Склады. - На вкладке Подсистемы:Отметим в списке подсистем подсистемы Оказание услуг и Учет материалов. - На вкладке Формы: установим флажок в поле Быстрый выбор. Свойство Быстрый выборкак раз позволяет выбирать элементы не из отдельной формы, а из небольшого выпадающего списка, заполненного элементами этого справочника. Этот вариант наиболее удобен для списка складов, так как их, вероятно, будет немного. - На вкладке Прочее: нажмем кнопку Предопределенные. Система откроет список предопределенных элементов справочника. Сейчас он пуст, поэтому нажмем кнопку Добавить и создадим предопределенный элемент с именем Основной. Рис. 3.13. Создание справочника с предопределенными элементами - В дереве объектов конфигурации (Подсистемы\Все подсистемы): в открывшемся окне слева в списке Подсистемы выделим подсистему УчетМатериалов. В группе Панель действий.Создать включим видимость у команды Склад: создать. • В режиме 1С: Предприятие В открывшемся окне 1С:Предприятия мы видим, что в панели действий раздела Учет материалов появилась команда Склад для создания новых складов. Также в панели навигации разделов Оказание услуг и Учет материалов появилась команда Склады для открытия списка складов. - Выполним команду Складыв панели навигации раздела Учет материалов. В списке складов уже есть один элемент с наименованием Основной. Это предопределенный элемент, который мы создали в конфигураторе. Выполнив команду Склад в панели действий, добавим в справочник еще один склад, который назовем Розничный. Контрольные вопросы • Для чего предназначен объект конфигурации Справочник. • Каковы характерные особенности справочника. • Для чего используются реквизиты и табличные части справочника. • Зачем нужны иерархические справочники и что такое родитель. • Зачем нужны подчиненные справочники и что такое владелец. • Какие основные формы существуют у справочника. • Что такое предопределенные элементы. • Чем с точки зрения конфигурации отличаются обычные элементы справочника от предопределенных элементов. • Как пользователь может отличить обычные элементы справочника от предопределенных элементов. • Как создать объект конфигурации Справочник и описать его структуру. • Как добавить новые элементы в справочник. • Как создать группу справочника. • Как переместить элементы из одной группы справочника в другую. • Зачем нужна основная конфигурация и конфигурация базы данных. • Как изменить конфигурацию базы данных. • Как связаны объекты конфигурации и объекты базы данных. • Что такое подчиненные объекты конфигурации. • Зачем нужна проверка заполнения у реквизитов справочника. • Что такое быстрый выбор и когда его использовать. • Как отобразить справочник и определить его представление в различных разделах интерфейса приложения. • Как отобразить команды создания нового элемента справочника в интерфейсе подсистем. • Как редактировать командный интерфейс подсистем. Лабораторная работа № 4 Документы. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ Документ Объект конфигурации Документ предназначен для описания информации о совершенных хозяйственных операциях или о событиях, произошедших в жизни организации вообще. Как правило, в работе любой фирмы используются такие документы, как приходные накладные, приказы о приеме на работу, платежные поручения, счета и т.д. Свойства и структура этих документов описываются в объектах конфигурации Документ, на основе которых платформа создает в базе данных таблицы для хранения информации из этих документов. Логика работы документов отличается от логики работы других объектов конфигурации. Документ обладает способностью проведения. Факт проведения документа означает, что событие, которое он отражает, повлияло на состояние учета. До тех пор, пока документ не проведен, состояние учета неизменно, и документ - не более чем черновик, заготовка. Как только документ будет проведен, изменения, вносимые документом в учет, вступят в силу и состояние учета будет изменено. Поскольку документ вносит изменения в состояние учета, он всегда «привязан» к конкретному моменту времени. Это позволяет отражать в базе данных фактическую последовательность событий. Каждый документ содержит информацию, которая подробнее описывает этот документ. Набор такой информации является одинаковым для всех документов одного вида, и для описания такого набора используются реквизиты объекта конфигурации Документ, являющиеся подчиненными объектами конфигурации. Большинство реквизитов разработчик создает самостоятельно, однако у каждого объекта Документ по умолчанию существуют стандартные реквизиты. Два наиболее важных из них - это Дата и Номер. Для описания конкретной информации служат табличные части объекта Документ. В этом случае в базе данных будут созданы дополнительные таблицы для хранения табличных частей, подчиненных конкретному документу. Формы документа Для «визуализации» документа существует несколько основных форм, которые имеют несколько вариантов названий (табл. 4.1). Таблица4.1. Основные формы документа. Типы данных. Типообразующие объекты конфигурации На предыдущем занятии, когда мы создавали реквизиты справочников или табличных частей, мы всегда указывали тип значения, которое может принимать этот реквизит. Это были примитивные типы данных: Число, Строка, Дата. Примитивные типы данных изначально определены в системе, и их набор ограничен. Наряду с такими изначально определенными в любой конфигурации типами могут существовать типы данных, определяемые только конкретной конфигурацией. Объекты конфигурации, которые могут образовывать новые типы данных, называются типообразующими. Эти типы данных не поддерживаются платформой изначально и существуют только в конкретном прикладном решении. Это небольшое отступление было необходимо потому, что уже при создании первого документа мы столкнемся с использованием типов данных СправочникСсылка.Склады и СправочникСсылка.Но- менклатура, которые появились в нашей конфигурации в результате создания объектов конфигурации Справочник Склады и Номенклатура. ПРАКТИЧЕСКАЯ ЧАСТЬ Создание Документа «Приходная накладная» Для отражения событий, происходящих на предприятии, в базе данных мы создадим два документа: Приходная накладная и Оказание услуги. Документ Приходная накладная будет фиксировать факт поступления в нашу организацию необходимых материалов, а документ Оказание услуги - фиксировать оказание услуг и расход материалов, которые используются при оказании этих услуг. • В режиме конфигуратор: Откроем конфигуратор и добавим новый объект конфигурации Документ. - На закладке Основные: зададим имя документа - ПриходнаяНакладная. На основании имени платформа автоматически заполнит его синоним. Так же зададим Представление списка, как Приходные накладные. - На закладке Подсистемы: список приходных накладных должен быть доступен в разделах Учет материалов и Бухгалтерия. - На закладке Данные: создадим реквизит документа с именем Склад (нажать на «+»); далее выберем для реквизита ссылочный тип данных СправочникСсылка. Склады. Этот тип стал доступен в конфигурации после создания объекта конфигурации Справочник Склады. В качестве значения свойства Значение заполнения выберем предопределенный элемент справочника Склады - Основной. Рис. 4.1. Справочник Склады После этого добавим в документ табличную часть с именем Материалы. Для этого нажмем кнопку Добавить табличную часть над списком табличных частей документа. Кроме имени табличной части установим свойство Проверка заполнения в значение Выдавать ошибку. Рис. 4.2. Свойства: Материалы Создадим реквизиты табличной части Материалы. Для этого нажмем кнопку Добавить реквизит в разделе описания табличных частей документа: • Материал, тип СправочникСсылка. Номенклатура; • Количество, тип Число, длина 15, точность 3, неотрицательное; • Цена, тип Число, длина 15, точность 2, неотрицательное; • Сумма, тип Число, длина 15, точность 2, неотрицательное. Для каждого реквизита табличной части также установим свойство Проверка заполнения в значение Выдавать ошибку. - На закладке Нумерация: убедимся, что свойство Авто-нумерация включено. - В дереве объектов конфигурации выделим ветвь Подсистемы, вызовем ее контекстное меню и выберем пункт Все подсистемы. В открывшемся окне в списке Подсистемы выделим подсистему УчетМатериалов: включим видимость у команды Приходная накладная: создать, в группе Панель действий.Создать. • В режиме 1С:Предприятие Запустим 1С:Предприятие в режиме отладки и протестируем получившийся документ. В открывшемся окне 1С:Предприятия мы видим, что в панели навигации разделов Бухгалтерия и Учет материалов появилась команда Приходные накладные для открытия списка приходных накладных. Рис. 4.3. В режиме 1С:Предприятие Пока в БД нет ни одного документа Приходная накладная, поэтому выполним команду Приходная накладная в панели действий раздела Учет материалов и создадим новую приходную накладную. Система автоматически подставит текущую дату создания документа и нулевое время, так как документ еще не проведен. В качестве времени документа при оперативном проведении ему присваивается оперативная отметка времени. Поле Номер не заполнено, но система сама сгенерирует для нового документа уникальный номер, так как свойство Автонумерация для документа включено по умолчанию. Новый номер будет сохранен в момент записи документа. Осталось только заполнить табличную часть приходной накладной материалами (добавьте3 любых записи в накладную). Так же система может вводить данные с клавиатуры и предлагать вам материалы по совпадающим буквам (создайте еще одну накладную таким образом) После чего нажмем Провести и закрыть. Документ будет сохранен и проведен, ему будет присвоен автоматически сгенерированный системой номер и текущее время проведения документа. Рис. 4.4. Приходные накладные Автоматический пересчет суммы в строках документа При заполнении документа приходится вводить сумму в каждой строке. Это неудобно, и возникает естественное желание автоматизировать работу документа так, чтобы сумма вычислялась автоматически каждый раз при изменении цены или количества материалов в строке. Это совсем не сложно, и для этого нам потребуется сначала создать собственную форму документа, а затем воспользоваться возможностями встроенного языка. • В режиме конфигуратор: Откроем окно редактирования объекта конфигурации Документ ПриходнаяНакладная, далее пройдем на вкладку Формы: чтобы создать форму документа, нажмем кнопку открытия со значком лупы в поле ввода или кнопку Добавить над списком форм. Система вызовет полезный инструмент разработчика -конструктор форм, в нем выберем тип формы Форма документа и нажмем кнопку Готово. Обращаем внимание, что в дереве объектов конфигурации у объекта конфигурации Документ ПриходнаяНакладная появилась форма ФормаДокумента, а на экране открылось окно редактора форм, содержащее эту форму. Разработчик может через палитру свойств изменить свойства элемента, которые повлияют на его отображение в форме. Он может также изменить структуру элементов формы - создать новое поле, группу полей, добавить табличную часть, связав эти элементы с данными формы. Используя встроенный язык, разработчик может «вклиниться» в эти события и описать собственный алгоритм того, что должно происходить при наступлении этого события. - Дважды щелкнем на элементе формы Материалы Количествоили правой кнопкой мыши откроем для него палитру свойств: прокрутив список до конца, мы увидим перечень событий, которые могут быть связаны с этим полем. Найдем в списке событий событие ПриИзменении, и нажмем на кнопку открытия (значок лупы), система создаст шаблон процедуры обработчика этого события в модуле нашей формы и откроет закладку Модуль редактора формы. Листинг 4.1. Форма документа Модуль - это «хранилище» для текста программы на встроенном языке. В модуль формы, в процедуру МатериалыКоличествоПриИзменении(), добавим следующий текст: СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена; Таким образом, в результате выполнения первой строки процедуры обработчика переменная СтрокаТабличнойЧасти будет содержать объект ДанныеФормыСтруктура. Этот объект содержит данные, находящиеся в текущей строке табличной части документа (Элементы.Материалы.ТекущиеДанные). Получив этот объект, мы можем обратиться к данным конкретной колонки табличной части, указав имя колонки в качестве свойства объекта. Одна процедура для обработки нескольких событий Теперь хотелось бы и для поля Цена и Сумма сделать то же самое. Поэтому лучше будет поместить расчет суммы в некоторое «общедоступное» место, чтобы разные документы, имеющие аналогичные реквизиты табличной части, могли использовать этот алгоритм. Для описания таких «общедоступных» мест служат объекты конфигурации Общий модуль, расположенные в ветке Общие > Общие модули. Процедуры и функции, содержащиеся в этих модулях, могут быть доступны для любых объектов конфигурации. • В режиме конфигуратор: Добавим объект конфигурации Общий модуль. Для этого раскроем ветвь Общие в дереве объектов конфигурации, нажав на + слева от нее. Затем выделим ветвь Общие модули и нажмем кнопку Добавить в командной панели окна конфигурации: Рис. 4.5. Общие модули Назовем его РаботаСДокументами и установим в его свойствах флажок Клиент (управляемое приложение), а флажок Сервер снимем. Это означает, что экземпляры этого модуля будут скомпилированы в контексте тонкого клиента и в контексте веб-клиента Рис. 4.6. Свойства: РаботаСДокументами Внесем в общий модуль следующий текст: Процедура РассчитатьСумму(строкаТабличнойЧасти) Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена; КонецПроцедуры Изменим текст обработчика. Для этого вернитесь в модуль формы документа, выберите поле КоличествоПриИзменении. &НаКлиенте Процедура МатериалыКоличествоПриИзменении (Элемент) СтрокаТабличнойЧасти. = Элементы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры Создадим обработчик события ПриИзменении для поля табличной части МатериалыЦена так же, как мы делали это для поля Материалы Количество, и повторим в нем вызов процедуры РассчитатьСумму из общего модуля. - Листинг процедуры «МатериалыЦенаПриИзменении()» &НаКлиенте Процедура МатериалыЦенаПриИзменении (Элемент) СтрокаТабличнойЧасти. = Элементы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры • В режиме 1С: Предприятие: Запустим 1С: Предприятие в режиме отладки и убедимся, что теперь сумма в строках табличной части документов ПриходнаяНакладная пересчитывается как при изменении количества, так и при изменении цены. Документ «Оказание услуги» • В режиме конфигуратор: Добавим новый объект конфигурации Документ и назовем его ОказаниеУслуги. - На закладке Основные: Представление объекта задавать не будем, вместо него будет исполь- зоваться Синоним объекта. Представление списка зададим как Оказание услуг. - На закладке Подсистемы: отметим, что документ будет доступен в подсистемах Оказание услуг и Бухгалтерия. - На закладке Данные: создадим реквизиты документа: • Склад, тип СправочникСсылка.Склады. Выберем для свойства Значение заполнения предопределенный элемент Основной справочника Склады. • Клиент, тип СправочникСсылка.Клиенты. Установим свойство Проверка заполнения в значение Выдавать ошибку. • Мастер, тип СправочникСсылка.Сотрудники. Установим свойство Проверка заполнения в значение Выдавать ошибку. Создадим табличную часть этого документа ПереченьНоменклатуры с реквизитами: • Номенклатура, тип СправочникСсылка.Номенклатура; • Количество, тип Число, длина 15, точность 3, неотрицательное; • Цена, тип Число, длина 15, точность 2, неотрицательное, • Сумма, тип Число, длина 15, точность 2, неотрицательное; Установим для табличной части в целом и для каждого ее реквизита свойство Проверка заполнения в значение Выдавать ошибку. - На закладке Формы: создадим основную форму документа: Для поля ПереченьНоменклатурыКоличество создадим обработчик события ПриИзменении, в котором будем вызывать процедуру РассчитатьСумму из общего модуля РаботаСДокументами. При этом откроется модуль формы с шаблоном обработчика события ПереченьНоменклатурыКоличествоПриИзменении, который мы пока заполнять не будем, а перейдем в окно элементов формы на закладку Форма и аналогичным образом создадим обработчик события ПереченьНоменклатурыЦенаПриИзменении для поля ПереченьНоменклатурыЦена. Далее модуль формы документа ОказаниеУслуги нужно заполнить следующим образом: Листинг 4.2. Модуль формы документа «ОказаниеУслуги» В заключение отредактируем командный интерфейс, чтобы в подсистеме Оказание услуг была доступна команда создания новых документов. Для разнообразия воспользуемся другим способом. Откроем окно редактирования объекта конфигурации Подсистема ОказаниеУслуг и нажмем кнопку Командный интерфейс. В открывшемся окне отразятся все команды выбранной подсистемы. В группе Панель действий.Создать включим видимость у команды Оказание услуги: создать Рис. 4.7. Видимость у команды Оказание услуги: создать В режиме 1С:Предприятие: В панели действий раздела Оказание услуг вызовем команду создания документа Оказание услуги и заполним его следующим образом: Рис. 4.8. Оказание услуги Обратите внимание, что склад Основной подставляется по умолчанию, а для полей Мастер и Клиент выполняется проверка заполнения. А также при вводе цены и количества в табличную часть документа Оказание услуги сумма пересчитывается по нашему алгоритму. Контрольные вопросы: • Какими характерными особенностями обладает документ. • Для чего предназначены реквизиты и табличные части документа. • Какие существуют основные формы документа. • Что такое проведение документа. • Как создать объект конфигурации Документ и описать его основную структуру. • Как создать новый документ и заполнить его данными. • Как создать собственную форму документа. • Что такое конструктор форм. • Что такое редактор форм. • Что такое элементы формы. • Что такое события и с чем они связаны. • Что такое обработчик события и как его создать. • Что такое модуль и для чего он нужен. • Зачем нужны общие модули. • Что такое типообразующие объекты. Лабораторная работа № 5 ТЕОРЕТИЧЕСКАЯ ЧАСТЬ Чтобы не усложнять восприятие все теоретические моменты были вынесены в это отдельное занятие. На нем будут подробно рассмотрены вопросы, которые мы опускали или бегло проходили ранее. Эта теория очень важна для более глубокого понимания, почему мы делали так, а не иначе. Она необходима читателям, желающим в будущем самостоятельно разрабатывать конфигурации, а не просто шаг за шагом следовать данному пособию. Механизм основных форм На предыдущем занятии мы создали форму документа Приходная накладная и назначили эту форму основной. Что это значит? У всех прикладных объектов конфигурации существует некоторое количество основных форм. Они служат для отображения данных объекта в том или ином виде. Если разработчик не назначит в качестве основных форм объекта свои собственные, система будет генерировать необходимые формы объекта самостоятельно, в те моменты, когда к ним происходит обращение. Наличие такого механизма позволяет разработчику не тратить время на создание форм для тестирования своей разработки, а воспользоваться тем, что платформа создаст по умолчанию. Создание этих форм происходит динамически, в процессе работы системы. Форма создается в тот момент, когда к ней происходит обращение. Причем не важно, интерактивное это обращение или программное. Также примечательным фактом является то, что состав основных форм, определенных для объекта конфигурации, может не совпадать с перечнем тех форм, которые вообще можно создать для данного объекта, используя конструктор формы. Например, для большинства регистров в конфигураторе можно задать основную форму списка. Однако если открыть конструктор форм для регистра, вы увидите, что кроме формы списка предлага- ется создать и форму набора записей регистра, которая отсутствует в перечне основных форм. Обработчики событий При работе с событиями в платформе 1С:Предприятие 8 следует различать два типа событий: события, связанные с формой и ее элементами, и все остальные. Разница заключается в том, что обработчики событий, связанных с формой и ее элементами, - назначаемые, а обработчики всех остальных событий - фиксированные. Фиксированный обработчик события должен иметь имя, совпадающие с именем события. Только в этом случае он будет вызываться при возникновении соответствующего события. Назначаемый обработчик может иметь произвольное имя. Если имя процедуры совпадает с именем события формы или ее элемента, этого совсем недостаточно для вызова процедуры обработки события с таким именем. Требуется явное назначение процедуры обработчиком этого события в палитре свойств, в соответствующем событии. Назначение обработчика может выполняться интерактивно, при работе с формой в конфигураторе, или программно, используя методы формы и ее элементов - УстановитьДействие(). Модули Виды модулей: • Модуль управляемого приложения. Модуль управляемого приложения выполняется при старте системы 1С:Предприятие в режимах тонкого клиента и веб-клиента. В нем возможно объявление переменных, а также объявление и описание процедур и функций, которые будут доступны в любом модуле конфигурации (кроме модуля внешнего соединения). Их доступность также обеспечивается для неглобальных общих модулей с установленным свойством Клиент (управляемое приложение). В контексте модуля управляемого приложения доступны экспортируемые процедуры и функции общих модулей. Чтобы открыть модуль управляемого приложения, нужно выделить корень дерева объектов конфигурации и вызвать из контекстного меню команду Открыть модуль управляемого приложения • Общие модули. В общих модулях хранятся процедуры и функции, которые вызываются из других модулей системы. Сам по себе общий модуль не исполняется. Исполняются отдельные его процедуры/ функции в момент их вызова из других модулей. Чтобы открыть общий модуль, нужно раскрыть ветвь Общие в дереве объектов конфигурации, затем раскрыть ветвь Общие модули и дважды щелкнуть мышью на нужном модуле. • Модули объектов. Модули объектов - это, например, модуль элемента справочника или модуль документа. Эти модули вызываются тогда, когда либо программно создается этот объект средствами встроенного языка, например, методами Соз-датьЭлемент() у менеджеров справочников или СоздатьДокумент() менеджеров документов, либо когда пользователь создает новый элемент справочника или документ интерактивно. Чтобы открыть модуль объекта, нужно в окне редактирования объекта конфигурации перейти на закладку Прочее и нажать кнопку Модуль объекта. Или, выделив нужный объект в дереве объектов конфигурации, вызвать из контекстного меню команду Открыть модуль объекта. Рис.5.1. Открытие модуля объекта • Модули форм. Каждая форма, определенная в конфигурации, имеет свой собственный модуль. Этот модуль исполняется при создании объекта УправляемаяФорма встроенного языка. Этот объект создается системой в режиме 1С предприятие в тот момент, когда мы программно (методами ПолучитьФорму() или ОткрытьФорму()). Чтобы открыть модуль формы, нужно открыть нужный объект конфигурации Форма объекта и в окне редактора форм перейти на закладку Модуль . Листинг 5.1. Открытие модуля формы • Модуль сеанса. Модулем сеанса называется модуль, который автоматически выполняется при старте системы 1С:Предприятие в момент загрузки конфигурации. Модуль сеанса предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы. Модуль сеанса не содержит экспортируемых процедур и функций и может использовать процедуры из общих модулей конфигурации. Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку Фамилия) и вызвать из контекстного меню команду Открыть модуль сеанса. • Модуль внешнего соединения предназначен для размещения в нем текстов функций и процедур, которые могут вызываться в сессии внешнего соединения. Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку ПособиеДляНачинающих) и вызвать из контекстного меню команду Открыть модуль внешнего соединения. • Модуль менеджеров. Для каждого прикладного объекта существует менеджер, предназначенный для управления этим объектом как объектом конфигурации. С помощью менеджера можно создавать объекты, работать с формами и макетами. Модуль менеджера позволяет расширить функциональность менеджеров, предоставляемых системой, за счет написания процедур и функций на встроенном языке. Чтобы открыть модуль менеджера, нужно в окне редактирования объекта конфигурации перейти на закладку Прочее и нажать кнопку Модуль менеджера. • Модуль команды. Как в самой конфигурации, так и у многих прикладных объектов могут существовать подчиненные объекты конфигурации - Команды. У каждой команды существует модуль команды, в котором можно написать предопределенную процедуру ОбработкаКоманды() для выполнения этой команды. Чтобы открыть модуль команды, подчиненной некоторому объекту конфигурации, нужно в окне редактирования объекта конфигурации перейти на закладку Команды и дважды щелкнуть мышью на нужной команде. Или, выделив нужную команду в дереве объектов конфигурации, вызвать из контекстного меню команду Открыть модуль команды. Контекст модуля формы Каждый модуль связан с остальной частью конфигурации. Эта связь называется контекстом модуля. Контекст модуля определяет набор доступных во время выполнения модуля объектов, переменных, процедур и функций. Контекст модуля формы образуется: • локальным контекстом самого модуля формы; • реквизитами формы, которой ;принадлежит; модуль; • свойствами и методами объекта УправляемаяФорма встроенного языка; • свойствами и методами расширения формы, определяемого типом того объекта, данные которого содержатся в основном реквизите формы; • глобальным контекстом, в том числе неглобальными общими модулями и экспортируемыми функциями и процедурами глобальных общих модулей; • экспортируемыми переменными, процедурами и функциями модуля управляемого приложения; Форма как программный объект Помимо того что форма;внутри; своего модуля предоставляет доступ к различным частям конфигурации, она также доступна из других частей конфигурации как программный объект. При этом помимо стандартных свойств и методов объекта встроенного языка УправляемаяФорма, у нее могут существовать и другие свойства и методы, определенные разработчиком. Листинг 5.2. Например, если в модуле формы ФормаДокумента документа ПриходнаяНакладная описана экспортируемая процедура, то может быть использован следующий вызов этой процедуры: Листинг 5.3. Как понять работу кода на встроенном языке Теперь мы покажем два способа, как самому разобраться с множеством незнакомых свойств и методов объектов конфигурации, чтобы в будущем самостоятельно изучать фрагменты кода или создавать свои собственные процедуры на встроенном языке. Синтакс-помощник — инструмент, созданный для помощи разработчику, содержащий описание всех программных объектов, которые использует система, их методов, свойств, событий и пр. Чтобы открыть синтакс-помощник, нужно нажать соответствующую кнопку на панели инструментов конфигуратора или выполнить команду главного меню Справка > Синтакс-помощник, или с помощью горячей клавиши (Ctrl + F1). Анализ кода с помощью синтакс-помощника: Пользоваться синтакс-помощником удобно в тех случаях, когда нужно разобраться в уже написанном незнакомом коде. Первый способ - найти нужный раздел в содержании и спускаться вниз «по дереву», раскрывая нужные подразделы, свойства, ссылки и т.п. Второй способ - воспользоваться контекстной помощью синтакс-помощника. Для этого нужно открыть программный модуль, установить курсор на интересующую вас конструкцию встроенного языка и нажать Ctrl+ F1. Есть также еще одна полезная возможность использования синтакс-помощника. Можно ограничить состав объектов, которые будут отображаться в нем. Так как мы находимся на клиенте, в форме, имеет смысл ограничиться только объектами встроенного языка, доступными в режимах Тонкий клиент и Веб-клиент. Для этого нужно выполнить команду главного меню Сервис > Параметры или нажать кнопку Открыть режим настройки параметров, находящуюся над окном описания объектов синтакс- помощника. На закладке Справка окна Параметры можно снять или поставить отметку у нужных режимов исполнения. Рис. 5.2. Параметры Анализ кода с помощью отладчика Пользоваться отладчиком наиболее удобно в тех случаях, когда нужно написать какой-то собственный код. Можно просто остановиться в конкретном месте программы и посмотреть, какие же свойства здесь доступны или какие программные объекты здесь используются. Отладчик - вспомогательный инструмент, облегчающий разработку и отладку программных модулей системы 1С:Предприятие. Отладчик предоставляет следующие возможности: • пошаговое выполнение модуля, • расстановка точек останова, • прерывание и продолжение выполнения модуля, • возможность отладки нескольких модулей одновременно, • вычисление выражений для анализа состояния переменных, • просмотр стека вызовов процедур и функций, • возможность остановки по возникновению ошибки, • возможность редактирования модуля в процессе отладки. Объекты Как правило, термин объект употребляется в одном из трех контекстов: • конфигурация, • база данных, • встроенный язык. Говоря о конфигурации, термином объект конфигурации мы обозначаем некоторую совокупность описания данных и алгоритмов работы с этими данными. Например, в конфигурации может существовать объект Справочник Сотрудники. Когда мы говорим о базе данных, термином объект мы обозначаем всего лишь некий элемент такой информационной структуры. Характерной особенностью такого элемента является то, что на него (как на совокупность данных) существует ссылка, которая может являться значением какого-либо поля другой информационной структуры. Если же мы начинаем говорить о встроенном языке и о том, каким образом средствами встроенного языка работать со справочниками, то термином объект мы обозначаем тип данных, позволяющий получить доступ к данным и обладающий набором свойств и методов. Сервер и клиенты Система 1С:Предприятие поддерживает два варианта работы системы: файловый и клиент-серверный. Файловый вариант работы с информационной базой рассчитан на персональную работу одного пользователя или работу небольшого количества пользователей в локальной сети. В этом варианте все данные информационной базы (конфигурация, база данных, административная информация) располагаются в одном файле. Рис. 5.3. Файловый вариант Основное назначение файлового варианта - быстро и легко установить систему и работать с ней. Например, чтобы что-то посмотреть или доработать дома или на ноутбуке. В файловом варианте тоже можно вести реальную учетную работу, но при этом нужно понимать, что он не предоставляет абсолютно всех тех же возможностей по масштабируемости, защите данных, какие имеет клиент- серверный вариант. Клиент-серверный вариант предназначен для использования в рабочих группах или в масштабе предприятия - это основной вариант для работы в многопользовательской среде с большим объемом данных. Он предоставляет абсолютно все возможности по масштабируемости, администрированию и защите данных. Однако он требует значительных усилий по установке и администрированию. Система 1С:Предприятие изначально рассчитана на клиент-серверный вариант работы. Хотя сейчас вы разрабатываете свою учебную конфигурацию в файловом варианте работы, она будет работать и в клиент-серверном варианте без ваших дополнительных усилий. Прикладные решения разрабатываются один раз и одинаково работают, что в одном, что в другом варианте. То есть переход с одного варианта на другой не требует переделки конфигурации. Рис. 5.4. Клиент-серверный вариант Клиент-серверная архитектура разделяет всю работающую систему на три различные части, определенным образом взаимодействующие между собой, - Клиент, Сервер 1С: Предприятия и Сервер баз данных. Клиентское приложение - это программа, часть системы 1С: Предприятие. Основное ее назначение - организация пользовательского интерфейса, отображение данных с возможностью их изменения. Кроме этого, клиентское приложение может исполнять код на встроенном языке.Такой подход позволяет клиентскому приложению быть очень «легким», не требовать много ресурсов, «путешествовать» по Интернету и работать даже в среде веб-браузеров. Сервер баз данных - это тоже программа. Она уже не является частью системы 1С:Предприятие, это специализированная программа, поставляемая сторонними производителями. Ее основное назначение - это организация и ведение баз данных - структурированных организованных наборов данных, описывающих характеристики каких-либо физических или виртуальных систем. В настоящее время система 1С:Предприятие может работать со следующими серверами баз данных: • MS SQL Server; • Posteg SQL; • IBM DB2; • Oracle Database. Лабораторная работа № 6 Регистры накопления. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ Зачем нужен регистр накопления Казалось бы, все необходимое мы с вами уже создали: у нас есть что расходовать и приходовать (справочники), и у нас есть чем расходовать и приходовать (документы). Осталось только построить несколько отчетов, и автоматизация предприятия будет закончена. Однако это не так. Во-первых, путем анализа документов можно, конечно, получить требуемые нам выходные данные. Но представьте, что завтра предприятие решит немного изменить свои бизнес-планы, и нам потребуется ввести в конфигурацию еще один документ. Во-вторых, отчеты, анализирующие документы, будут работать довольно медленно, что будет вызывать раздражение пользователей и недовольство руководителей. Поэтому в системе 1С Предприятие есть несколько объектов конфигурации, которые позволяют создавать в базе данных структуры, предназначенные для накопления информации в удобном для последующего анализа виде. Использование таких «хранилищ» данных позволяет нам, с одной стороны, накапливать в них данные, а с другой стороны, легко создавать нужные нам отчеты или использовать эти данные в алгоритмах работы конфигурации. источники данных пользователи данных Рис. 6.1. Алгоритм работы конфигурации В конфигурации существует несколько объектов, называемых регистрами, для описания подобных «хранилищ». Что такое регистр накопления Объект конфигурации Регистр накопления предназначен для описания структуры накопления данных. На основе объекта конфигурации Регистр накопления платформа создает в базе данных таблицы, в которых будут накапливаться данные, поставляемые различными объектами базы данных. Эти данные будут храниться в таблицах в виде отдельных записей, каждая из которых имеет одинаковую, заданную в конфигураторе структуру. Отличительной особенностью регистра накопления является то, что он не предназначен для интерактивного редактирования пользователем. Основным назначением регистра накопления является накопление числовой информации в разрезе нескольких измерений, которые описываются разработчиком в соответствующем объекте конфигурации Регистр накопления и являются подчиненными объектами конфигурации. Виды числовой информации, накапливаемой регистром накопления, называются ресурсами, также являются подчиненными объектами и описываются в конфигураторе. Изменение состояния регистра накопления происходит, как правило, при проведении документа и заключается в том, что в регистр добавляется некоторое количество записей. Каждая запись содержит значения измерений, значения приращений ресурсов, ссылку на документ, который вызвал эти изменения (регистратор), и направление приращения (приход или расход). Такой набор записей называется движениями регистра накопления. Каждому движению регистра накопления всегда должен соответствовать регистратор -объект информационной базы (как правило, документ), который произвел эти движения. Кроме этого, регистр накопления может хранить дополнительную информацию, описывающую каждое движение. Набор такой дополнительной информации задается разработчиком при помощи реквизитов объекта конфигурации Регистр накопления. Движения документа Движения документа — это записи в регистрах, которые создаются в процессе проведения документа и отражают изменения, производимые документом. Способы работы с коллекцией В процессе формирования движений документов, когда в цикле обходили табличные части документов ПриходнаяНакладная и ОказаниеУслуги, вы столкнетесь с одним из объектов встроенного языка, который является коллекцией. Многие объекты встроенного языка являются коллекциями. Коллекция представляет собой совокупность объектов. Существуют общие принципы работы с любой коллекцией. Во-первых, доступ к каждому объекту коллекции возможен путем перебора элементов коллекции в цикле. Для этого используется конструкция языка Для Каждого Из... Цикл ... Листинг 6.1: Перебор элементов коллекции в цикле Для Каждого СтрокаТабличноиЧасти из ТабличнаяЧасть Цикл Сообщить(СтрокаТабличнойЧасти.Услуга); КонецЦикла; В этом примере ТабличнаяЧасть - это коллекция строк табличной части объекта конфигурации. При каждом проходе цикла в переменной СтрокаТабличнойЧасти будет содержаться очередная строка из этой коллекции. Во-вторых, существует доступ напрямую к элементу коллекции, без перебора коллекции в цикле. Здесь возможны различные комбинации двух обращений. 1. Во встроенном языке бывают именованные коллекции. То есть коллекции, в которых каждый элемент имеет некоторое уникальное имя. В этом случае обращение к элементу коллекции возможно по этому имени. Листинг 6.2: Обращение к элементу коллекции Справочники.Сотрудники; Справочники[“Сотрудники”]; 2. Если нет смысла в «персонификации» элементов коллекции (коллекция неименованная), тогда обращение к элементу коллекции возможно по индексу (индекс первого элемента коллекции - ноль). Листинг 6.3: Обращение к элементу коллекции по индексу ТабличнаяЧасть[0]; В этом примере ТабличнаяЧасть - это коллекция строк табличной части объекта конфигурации. И мы обращаемся к первому элементу этой коллекции, указывая его индекс - 0. Следует отметить, что существуют коллекции, сочетающие оба вида обращений. Например, к коллекции колонок таблицы значений можно обращаться как по именам колонок, так и по индексу. ПРАКТИЧЕСКАЯ ЧАСТЬ Добавление регистра накопления • В режиме конфигуратор Откроем в конфигураторе нашу учебную конфигурацию и добавим новый объект конфигурации Регистр накопления. Для этого выделим в дереве объектов конфигурации ветвь Регистры накопления и нажмем кнопку Добавить в командной панели окна конфигурации. - На закладке Основные: имя регистра - ОстаткиМатериалов. Расширенное представление списка как Движения по регистру Остатки материалов. Этот заголовок будет отображаться в окне списка записей регистра. - На закладке Подсистемы: отметим в списке следующие подсистемы: Учет материалов, Оказание услуг и Бухгалтерия. - На закладке Данные: нажмем на «+» и добавим следующие: • Материал, тип СправочникСсылка. Номенклатура; • Склад, тип СправочникСсылка.Склады. • ресурс Количество с длиной 15 и точностью 3. Рис. 6.2. Создание измерений регистра В результате этих действий регистр ОстаткиМатериалов должен иметь следующий вид: Рис. 6.3. ОстаткиМатериалов Если вы сейчас попытаетесь запустить 1С : Предприятие в режиме отладки, то система выдаст сообщение об ошибке: «РегистрНакопления.ОстаткиМатериалов: Ни один из документов не является регистратором для регистра». Это сообщение еще раз подтверждает тот факт, что назначение регистра накопления в том, чтобы аккумулировать данные, поставляемые различными документами. Поэтому мы сформируем движения регистра накопления ОстаткиМатериалов в процессе проведения двух созданных нами документов ПриходнаяНакладная и ОказаниеУслуг. Откроем окно редактирования объекта конфигурации Документ ПриходнаяНакладная. Перейдем на закладку Движения, раскроем список Регистры накопления и отметим регистр накопления ОстаткиМатериалов. Рис. 6.4. Создание движения документа После чего активизируется Конструктор движений, воспользуемся этим конструктором. Конструктор устроен просто. В списке Регистры перечислены регистры, в которых документ может создавать движения. В нашем случае там пока один регистр ОстаткиМатериалов. В списке Реквизиты документа должны находиться исходные данные для создания движений - реквизиты документа ПриходнаяНакладная. А в таблице Поле - Выражение должны быть заданы формулы, по которым будут вычисляться значения измерений и ресурсов регистра при записи движений. Рис. 6.5. Конструктор движения регистров В поле выбора Табличная часть выберем табличную часть нашего документа - Материалы. Список реквизитов документа, который уже заполнен реквизитами шапки документа, автоматически дополнится реквизитами нашей табличной части. Теперь нажмем кнопку Заполнить выражения. В нижнем окне сформируется соответствие полей (измерений и ресурсов) регистра и выражений для их расчета. Нажмем кнопку ОК и посмотрим, какой текст сформировал конструктор в модуле документа ПриходнаяНакладная . Конструктор создал обработчик события ОбработкаПроведенияобъекта конфигурации Документ ПриходнаяНакладная, поместил его в модуль объекта и открыл текст модуля. В заключение отредактируем командный интерфейс, чтобы в подсистемах Бухгалтерия, Оказание услуг и Учет материалов была доступна ссылка для просмотра записей нашего регистра накопления. - В дереве объектов конфигурации выделим ветвь Подсистемы, вызовем ее контекстное меню и выберем пункт Все подсистемы: • В списке Подсистемы выделим подсистему УчетМатериалов. • В группе Панель навигации.Обычное включим видимость у команды Остатки материалов и мышью перетащим ее См.также. панели навигации Рис. 6.6. Панель навигации См. также • Аналогично, выделив подсистемы ОказаниеУслуг и Бухгалтерия, в панели навигации в группе Обычное включим видимость у команды Остатки материалов и перенесем ее в группу См.также. панели навигации • В режиме 1С:Предприятие В открывшемся окне 1С предприятия мы видим, что в панели навигации в группе См.также разделов Бухгалтерия, Оказание услуг и Учет материалов появилась команда для открытия списка регистра Остатки материалов. Чтобы проследить связь между проведением документа и накоплением информации в регистре, откроем список приходных накладных, выполнив команду Приходные накладные разделе Бухгалтерия. Откроем Приходную накладную № 1 и нажмем Провести и закрыть, то есть перепроведем ее. То же самое сделаем для Приходной накладной № 2. Перепровести документы можно и не открывая документов. Для этого нужно выделить нужный документ в списке, нажать кнопку Все действия в командной панели формы списка и выбрать пункт Провести. Теперь выполним команду Остатки материалов и откроем список нашего регистра накопления: Рис. 6.7. Движения по регистру Остатки материалов Команда перехода к движениям в форме документа • В режиме Конфигуратор При реальной работе записей в регистре ОстаткиМатериалов будет много, и будет трудно понять, какие записи относятся к определенному документу. Поэтому наряду с общим списком регистра хотелось бы иметь возможность вызывать из формы документа список регистра, в котором показаны движения, произведенные только этим документом. Чтобы реализовать такую возможность, вернемся в конфигуратор и откроем форму документа ПриходнаяНакладная. В левом верхнем окне перейдем на закладку Командный интерфейс: в разделе Панель навигации раскроем группу перейти, установим свойство Видимость для этой команды Рис. 6.8. Командный интерфейс • В режиме 1С:Предприятие Запустим 1С: Предприятие в режиме отладки и откроем Приходную накладную № 2. В форме документа появилась панель навигации, в которой мы можем переходить к списку записей регистра Остатки Материалов, связанному с документом, и обратно к содержимому документа. Движения документа «Оказание услуги» • В режиме Конфигуратор Откроем окно редактирования объекта конфигурации Документ ОказаниеУслуги. Перейдем на закладку Движения и в списке регистров конфигурации отметим регистр накопления ОстаткиМатериалов. - Нажмем кнопку Конструктор движений: 1.Тип движения регистра - Расход 2. В поле выбора Табличная |