Объект конфигурации «Документ».
Цель работы 1.1 Научиться создавать объект конфигурации «Документ» 1.2 Научиться проводить созданные документы 1.3 Научиться создавать процедуры на встроенном языке программирования.
Краткие теоретические сведения Объект конфигурации «Документ» является прикладным и предназначен для описания информации о совершенных хозяйственных операциях или о событиях, произошедших в жизни организации вообще. На основе объекта конфигурации «Документ» платформа создает в базе данных информационную структуру, в которой будут храниться, например, такие документы, как приходные накладные, или приказы о приеме на работу, или платежные поручения, или счета и т.д. Характерной особенностью объекта конфигурации «Документ» является то, что в процессе работы пользователь может самостоятельно создавать новые объекты этой структуры - новые документы. Свойства документа отличается от свойств всех остальных объектов базы данных. «Документ» обладает способностью проведения. Факт проведения документа означает, что событие, которое он отражает, повлияло на состояние учета. До тех пор, пока документ не проведен, состояние учета неизменно, и документ – не более чем черновик, заготовка. Как только документ будет проведен – изменения, вносимые документом в учет, могут вступить в силу и состояние учета может быть изменено. Поскольку документ вносит изменения в состояние учета, он всегда «привязан» к конкретному моменту времени. Это позволяет отражать в базе данных фактическую последовательность событий. Следующим важным фактом, вытекающим из двух предыдущих, является то, что система 1С:Предприятие имеет механизмы, позволяющие отслеживать правильность состояния учета. Предположим, что мы изменили один из проведенных ранее документов и снова провели его «задним числом». В этом случае система 1С:Предприятие способна отследить, повлияют ли внесенные нами изменения на последующие проведенные документы, и если это так, система способна перепровести необходимые документы.
Каждый документ, как правило, содержит информацию, которая подробнее описывает этот документ. Например, каждый документ «ПриходнаяНакладная» может содержать информацию о поставщике товаров, складе, на который приходуется товар, и т.д. Набор такой информации является одинаковым для всех документов одного вида, и для описания такого набора используются реквизиты объекта конфигурации «Документ», являющиеся подчиненными объектами конфигурации. Большинство реквизитов объекта конфигурации «Документ» разработчик создает самостоятельно, однако у каждого объекта конфигурации «Документ» существуют два поля «по умолчанию»: Дата и Номер документа. Поскольку тип данных Дата содержит дату и время с точностью до секунды, этот реквизит и определяет в основном положение документа на оси времени. Кроме этого, каждый документ содержит, как правило, некоторый набор информации, которая одинакова по своей структуре, но различна по количеству, предназначена для разных документов. Так, например, каждый документ «ПриходнаяНакладная» может содержать список приходуемых товаров. Для описания подобной информации служат табличные части объекта конфигурации «Документ». Для «визуализации» документа существует несколько основных форм. Таблица 1 – Основные формы объекта конфигурации «Документ»
Факт проведения документа и необходимость поддержания актуальной последовательности документов на оси событий порождают два различных способа проведения документов: оперативное и неоперативное проведение. С оперативным проведением документов связано понятие оперативной отметки времени. Оперативная отметка времени представляет собой значение типа Дата, которое формирует система. Оперативная отметка времени создается системой каждый раз при оперативном проведении документа. Ее значение формируется исходя из текущего времени и последней созданной оперативной отметки. Если последняя оперативная отметка меньше текущего времени, в качестве новой оперативной отметки принимается текущее время. Если последняя оперативная отметка равна или больше текущего времени, в качестве новой оперативной отметки принимается значение на одну секунду большее, чем старая оперативная отметка времени. Таким образом, если у объекта конфигурации «Документ» установлено свойство оперативного проведения, последовательность действий системы будет следующей: при создании нового документа система будет устанавливать ему текущую дату и «нулевое» время. При проведении такого документа (с текущей датой) система установит в качестве даты документа оперативную отметку времени. Если отменить проведение документа и затем провести его снова (не изменяя даты), система установит документу новую оперативную отметку времени. Если же попытаться перепровести документ, то будет выдан запрос о виде проведения (оперативное или нет). В случае оперативного проведения система установит новую оперативную отметку времени, а при неоперативном проведении время документа будет сохранено прежним. При попытке проведения (или перепроведения) оперативно проводимого документа с датой, отличающейся от текущей, будет выдано сообщение о том, что оперативное проведение невозможно, и предложено провести документ неоперативно (то есть с сохранением существующей даты и времени документа). В предыдущей главе, когда мы создавали реквизиты справочников или табличных частей, мы всегда указывали тип значения, которое может принимать этот реквизит. Это были примитивные типы данных: Число, Строка, Дата и Булево. Примитивные типы данных изначально определены в системе и их набор ограничен.
Наряду с такими изначально определенными в любой конфигурации типами могут существовать типы данных, определяемые только конкретной конфигурацией. Такие типы сами образуют объекты конфигурации в момент их создания в конфигураторе. Например, после того, как мы создали объект конфигурации «Справочник Склады», сразу же появилось несколько новых типов данных, связанных с этим справочником. Среди них, например, «СправочникСсылка.Склады». И если теперь мы укажем какому-либо реквизиту этот тип данных, то сможем хранить в нем ссылку на конкретный объект справочника «Склады». Объекты конфигурации, которые могут образовывать новые типы данных, называются типообразующими.
Задание Создать документы «Приходная накладная», который будет фиксировать факт поступления в нашу организацию необходимых материалов, и документ «ОказаниеУслуги», который фиксировать оказание услуг и расход материалов, которые используются при оказании этих услуг.
Ход работы 4.1 Создание документа «ПриходнаяНакладная» Для создания объекта конфигурации «Документ» установить курсор на «Документы» в древе конфигурации и выбрать «Действия» - «Добавить». Вкладка «Основные» идентична объекту конфигурации «Справочник». Задать имя документа – «ПриходнаяНакладная». На вкладке «Данные» создать реквизит документа с именем «Склад» и типом «СправочникСсылка.Склады». Рисунок 1 - Создание реквизита «Склад» После этого добавить табличную часть с именем Материалы и создать у нее четыре реквизита: - Материал с типом СправочникСсылка.Номенклатура, - Количество с типом Число, длиной 15, точностью 3, неотрицательное, - Цена с типом Число, длиной 15, точностью 2, неотрицательное, - Сумма с типом Число, длиной 15, точностью 2, неотрицательное. Для этого следует установить курсор на табличную часть «Материалы» и применить щелчок правой кнопкой мыши. В контекстном меню выбрать «Добавить» - «Реквизит табличной части». Свойства реквизитов редактируются аналогично реквизиту «Склад».
Рисунок 2 – Заполненная вкладка «Данные»
Открыть вкладку «Нумерация» и задать длину номера – 9 и тип номера – Строка. Рисунок 3 – Вкладка «Нумерация» Подтвердить изменения нажатием кнопки «Закрыть».
4.2 Создание формы документа Открыть окно редактирования объекта конфигурации «Документ» - «ПриходнаяНакладная». Перейти на закладку «Формы». Как мы видим, ни одна из основных форм документа пока не задана. Для того чтобы создать форму документа, нужно нажать на символ лупы в поле ввода. Система вызовет еще один полезный инструмент разработчика – конструктор форм. Этот инструмент также построен по принципу «мастеров»: ввод данных в определенной последовательности и передвижение кнопками «Далее» и «Назад». Выбрать тип формы «ФормаДокумента» и нажмем кнопку Готово, согласившись тем самым со всем, что нам предложила система. Рисунок 4 – Вкладка «Формы» и мастер «Конструктор формы»
В дереве объектов конфигурации у объекта конфигурации «Документ» - «ПриходнаяНакладная» появилась форма «ФормаДокумента», а на экране открылось окно редактора форм, содержащее эту форму. Рисунок 5 – Форма документа
Форма документа «ПриходнаяНакладная» содержит большое количество всевозможных полей. Эти поля называются элементами управления. Они имеют разное назначение и разное поведение, которое соответствует их назначению. Однако все они служат для того, чтобы отображать информацию, хранящуюся в базе данных, и организовывать интерактивную работу с этой информацией. Интересны поля ввода, расположенные в колонках «Количество», «Цена» и «Сумма» Требуется, чтобы каждый раз, когда меняется значение в поле «Количество» или в поле «Цена», в поле «Сумма» автоматически устанавливалось значение, равное «Количество * Цена». Очевидно, что для этого нужно написать на встроенном языке команду, похожую на «Сумма = Количество * Цена», которая будет выполняться при изменении значения поля «Количество» или «Цена». Для создания процедуры обработки в конструкторе формы щелкнуть правой кнопкой мыши на поле ввода в колонке «Количество» и открыть для него палитру свойств (пункт контекстного меню Свойства). Прокрутить список до конца, и найти перечень событий, которые могут быть связаны с этим полем ввода. На параметре «При измении» щелкнуть левой кнопкой мыши на пиктограмму лупы. Рисунок 6 – Палитра свойств поля ввода «Количество»
Система автоматически создаст заголовок процедуры обработчика в модуле формы. Рисунок 7 – Модуль формы документа. Редактор кода
Модуль – это «хранилище» для текста программы на встроенном языке. В конфигурации существует большое количество модулей, которые расположены в различных ее точках. Они могут принадлежать некоторым объектам конфигурации (например, формам), а могут существовать сами по себе (принадлежать всей конфигурации в целом). Текст программы, содержащийся в модулях, будет использоваться платформой в заранее известные моменты работы системы 1С:Предприятие. Функция подсчета суммы относительно цены и количества может пригодиться в дальнейшем. Следовательно, есть смысл сделать модуль общедоступным Создать объект конфигурации «Общий модуль» в ветке «Общие» - «Общие модули» и назовем его «РаботаСДокументами». Напротив пунктов «Клиент(Управляемое приложение)» и «Вызов сервера» поставим галочку. Он будет содержать следующий текст:
Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена; КонецПроцедуры
Ключевое слово «Экспорт» в конце оператора «Процедура» указывает на то, что эта процедура может быть доступна из других программных модулей.
Рисунок 8 – Модуль «РаботаСДокументами»
В модуль формы, в процедуру «МатериалыКоличествоПриИзменении()» добавить следующий текст:
РаботаСДокументами.РассчитатьСумму(Элементы.Материалы.ТекущиеДанные); Таким образом, теперь вместо непосредственного расчета суммы будет вызываться процедура из общего модуля и передавать ей в качестве параметра нужную строку табличной части. Теперь осталось и для поля «Цена» установить такой же обработчик. Поэтому требуется создать обработчик события «При изменении» для поля ввода, которое расположено в колонке «Цена», и повторить в нем вызов процедуры «РассчитатьСумму» из общего модуля: Так же выделим поле сумма, и укажем ему в свойствах параметр «Только просмотр» Далее запустить 1С:Предприятие в режиме отладки и убедиться, что теперь сумма в строках табличной части документов «ПриходнаяНакладная» пересчитывается как при изменении количества, так и при изменении цены. Рисунок 9 – Итоговый вид документа «ПриходнаяНакладная»
Создание документа ОказаниеУслуги Теперь аналогичным образом создать второй документ – «Оказание услуги». Для этого потребуется выполнить следующие действия: Создать новый объект конфигурации «Документ» - «ОказаниеУслуги» с реквизитами: - «Склад», тип «СправочникСсылка.Склады», - «Клиент», тип «СправочникСсылка.Клиенты», - «Мастер», тип «СправочникСсылка.Сотрудники», Создать табличную часть этого документа «ПереченьНоменклатуры» с реквизитами: - «Номенклатура», тип «СправочникСсылка.Номенклатура», - «Количество», тип «Число», длина 15, точность 3, неотрицательное, - «Цена», тип «Число», длина 15, точность 2, неотрицательное, - «Сумма», тип «Число», длина 15, точность 2, неотрицательное, Рисунок 10 – Вид вкладки «Данные» для документа «ОказаниеУслуги»
Создать основную форму документа. Рисунок 11 – Форма документа «ОказаниеУслуги»
Для полей ввода колонок Количество и Цена создать обработчик события ПриИзменении, в котором вызывать процедуру РассчитатьСумму() из общего модуля РаботаСДокументами. В результате документ ОказаниеУслуги будет выглядеть следующим образом: Рисунок 12 – Документ «ОказаниеУслуги»
5 Контрольные вопросы 5.1 Опишите объект конфигурации «Документ». 5.2 Что такое оперативное и неоперативное проведение? 5.3 Опишите процесс создания табличной части документа. 5.4 Как создать общедоступный модуль? 5.5 Какие базовые типы данных используются при разработке конфигурации в 1С Предприятие?
Содержание отчета 6.1 Название работы 6.2 Цель работы 6.3 Описание хода работы со снимками экрана 6.4 Ответы на контрольные вопросы 6.5 Выводы к работе
Список литературы 7.1 Радченко М. Г. 1С:Предприятие 8.1. Практическое пособие разработчика. Примеры и типовые приемы. – СПБ.: 1С-Паблишинг, 2008. – 512 с. 7.2 Байдаков В., Дранищев В, Краюшкин А, Кузнецов И, Лавров М, Моничев А. 1С:Предприятие 8.1 Описание встроенного языка. В 4-х томах.- М.: Фирма «1С», 2004. -2575с. Практическая работа №4
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|