Файл: Лабораторная работа 1 Знакомство, создание информационной базы.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 646
Скачиваний: 8
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Рис. 4.3. В режиме 1С:Предприятие
Пока в БД нет ни одного документа Приходная накладная, поэтому выполним команду
Приходная накладная в панели действий раздела Учет материалов и создадим новую приходную накладную.
Система автоматически подставит текущую дату создания документа и нулевое время, так как документ еще не проведен. В качестве времени документа при оперативном проведении ему присваивается оперативная отметка времени.
Поле Номер не заполнено, но система сама сгенерирует для нового документа уникальный номер, так как свойство Автонумерация для документа включено по умолчанию. Новый номер будет сохранен в момент записи документа. Осталось только заполнить табличную часть приходной
накладной материалами (добавьте3 любых записи в накладную). Так же система может вводить
данные с клавиатуры и предлагать вам материалы по совпадающим буквам (создайте еще одну
накладную таким образом) После чего нажмем Провести и закрыть.
Документ будет сохранен и проведен, ему будет присвоен автоматически сгенерированный
системой номер и текущее время проведения документа.
Рис. 4.4. Приходные накладные
Автоматический пересчет суммы в строках документа
При заполнении документа приходится вводить сумму в каждой строке. Это неудобно, и возникает естественное желание автоматизировать работу документа так, чтобы сумма вычислялась автоматически каждый раз при изменении цены или количества материалов в строке.
Это совсем не сложно, и для этого нам потребуется сначала создать собственную форму документа, а затем воспользоваться возможностями встроенного языка.
•
В режиме конфигуратор:
Откроем окно редактирования объекта конфигурации Документ ПриходнаяНакладная, далее пройдем на вкладку Формы: чтобы создать форму документа, нажмем кнопку открытия со значком лупы в поле ввода или кнопку Добавить над списком форм. Система вызовет полезный инструмент разработчика -конструктор форм, в нем выберем тип формы Форма документа и нажмем кнопку
Готово. Обращаем внимание, что в дереве объектов конфигурации у объекта конфигурации
Документ ПриходнаяНакладная появилась форма ФормаДокумента, а на экране открылось окно
редактора форм, содержащее эту форму. Разработчик может через палитру свойств изменить свойства элемента, которые повлияют на его отображение в форме. Он может также изменить структуру элементов формы - создать новое поле, группу полей, добавить табличную часть, связав эти элементы с данными формы. Используя встроенный язык, разработчик может «вклиниться» в эти события и описать собственный алгоритм того, что должно происходить при наступлении этого события.
-
Дважды щелкнем на элементе формы Материалы Количествоили правой кнопкой мыши
откроем для него палитру свойств: прокрутив список до конца, мы увидим перечень событий, которые могут быть связаны с этим полем. Найдем в списке событий событие ПриИзменении, и нажмем на кнопку открытия (значок лупы), система создаст шаблон процедуры обработчика этого события в модуле нашей формы и откроет закладку Модуль редактора формы.
Листинг 4.1. Форма документа
Модуль - это «хранилище» для текста программы на встроенном языке. В модуль формы, в процедуру МатериалыКоличествоПриИзменении(), добавим следующий текст:
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма =
СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена;
Таким образом, в результате выполнения первой строки процедуры обработчика переменная
СтрокаТабличнойЧасти будет содержать объект ДанныеФормыСтруктура. Этот объект содержит данные, находящиеся в текущей строке табличной части документа
(Элементы.Материалы.ТекущиеДанные). Получив этот объект, мы можем обратиться к данным конкретной колонки табличной части, указав имя колонки в качестве свойства объекта.
Одна процедура для обработки нескольких событий
Теперь хотелось бы и для поля Цена и Сумма сделать то же самое.
Поэтому лучше будет поместить расчет суммы в некоторое «общедоступное» место, чтобы разные документы, имеющие аналогичные реквизиты табличной части, могли использовать этот алгоритм.
Для описания таких «общедоступных» мест служат объекты конфигурации Общий модуль, расположенные в ветке Общие > Общие модули. Процедуры и функции, содержащиеся в этих модулях, могут быть доступны для любых объектов конфигурации.
•
В режиме конфигуратор:
Добавим объект конфигурации Общий модуль. Для этого раскроем ветвь Общие в дереве объектов конфигурации, нажав на + слева от нее. Затем выделим ветвь Общие модули и нажмем кнопку
Добавить в командной панели окна конфигурации:
Рис. 4.5. Общие модули
Назовем его РаботаСДокументами и установим в его свойствах флажок Клиент (управляемое
приложение), а флажок Сервер снимем. Это означает, что экземпляры этого модуля будут скомпилированы в контексте тонкого клиента и в контексте веб-клиента
Рис. 4.6. Свойства: РаботаСДокументами
Внесем в общий модуль следующий текст:
Процедура РассчитатьСумму(строкаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма =
СтрокаТабличнойЧасти.Количество*СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
Изменим текст обработчика. Для этого вернитесь в модуль формы документа, выберите поле
КоличествоПриИзменении.
&НаКлиенте
Процедура МатериалыКоличествоПриИзменении (Элемент)
СтрокаТабличнойЧасти. = Элементы.Материалы.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Создадим обработчик события ПриИзменении для поля табличной части МатериалыЦена так же, как мы делали это для поля Материалы Количество, и повторим в нем вызов процедуры
РассчитатьСумму из общего модуля.
-
Листинг процедуры «МатериалыЦенаПриИзменении()»
&НаКлиенте
Процедура МатериалыЦенаПриИзменении (Элемент)
СтрокаТабличнойЧасти. = Элементы.Материалы.ТекущиеДанные;
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
•
В режиме 1С: Предприятие:
Запустим 1С: Предприятие в режиме отладки и убедимся, что теперь сумма в строках табличной части документов ПриходнаяНакладная пересчитывается как при изменении количества, так и при изменении цены.
Документ «Оказание услуги»
•
В режиме конфигуратор:
Добавим новый объект конфигурации Документ и назовем его ОказаниеУслуги.
-
На закладке Основные: Представление объекта задавать не будем, вместо него будет исполь- зоваться Синоним объекта. Представление списка зададим как Оказание услуг.
-
На закладке Подсистемы: отметим, что документ будет доступен в подсистемах Оказание услуг и
Бухгалтерия.
-
На закладке Данные: создадим реквизиты документа:
Рис. 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С:Предприятие в момент загрузки конфигурации. Модуль сеанса предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы.
Модуль сеанса не содержит экспортируемых процедур и функций и может использовать процедуры из общих модулей конфигурации. Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку Фамилия) и вызвать из контекстного меню команду Открыть модуль сеанса.
•
Модуль внешнего соединения предназначен для размещения в нем текстов функций и процедур, которые могут вызываться в сессии внешнего соединения. Чтобы открыть модуль сеанса, нужно выделить корень дерева объектов конфигурации (строку ПособиеДляНачинающих) и вызвать из контекстного меню команду Открыть модуль внешнего соединения.
•
Модуль менеджеров. Для каждого прикладного объекта существует менеджер, предназначенный для управления этим объектом как объектом конфигурации. С помощью менеджера можно создавать объекты, работать с формами и макетами. Модуль менеджера позволяет расширить функциональность менеджеров, предоставляемых системой, за счет написания процедур и функций на встроенном языке. Чтобы открыть модуль менеджера, нужно в окне редактирования объекта конфигурации перейти на закладку Прочее и нажать кнопку
Модуль менеджера.
•
Модуль команды. Как в самой конфигурации, так и у многих прикладных объектов могут существовать подчиненные объекты конфигурации - Команды. У каждой команды существует модуль команды, в котором можно написать предопределенную процедуру
ОбработкаКоманды() для выполнения этой команды. Чтобы открыть модуль команды, подчиненной некоторому объекту конфигурации, нужно в окне редактирования объекта конфигурации перейти на закладку Команды и дважды щелкнуть мышью на нужной команде.
Или, выделив нужную команду в дереве объектов конфигурации, вызвать из контекстного меню команду Открыть модуль команды.
Контекст модуля формы
Каждый модуль связан с остальной частью конфигурации. Эта связь называется контекстом модуля.
Контекст модуля определяет набор доступных во время выполнения модуля объектов, переменных, процедур и функций.
Контекст модуля формы образуется:
• локальным контекстом самого модуля формы;
• реквизитами формы, которой ;принадлежит; модуль;
• свойствами и методами объекта УправляемаяФорма встроенного языка;
• свойствами и методами расширения формы, определяемого типом того объекта, данные которого содержатся в основном реквизите формы;