|
|||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Порядок работы с объектом конфигурации ДокументОбъект конфигурации Документ является прикладным и предназначен для описания информации о совершенных хозяйственных операциях или о событиях, произошедших в жизни организации вообще. На основе объекта конфигурации Документ платформа создает в базе данных информационную структуру, в которой будут храниться, например, такие документы, как приходные накладные, или приказы о приеме на работу, или платежные поручения, или счета и т. д. Характерной особенностью объекта конфигурации Документ является то, что в процессе работы пользователь может самостоятельно создавать новые объекты этой структуры – новые документы. Свойства документа отличается от свойств всех остальных объектов базы данных. Документ обладает способностью проведения. Факт проведения документа означает, что событие, которое он отражает, повлияло на состояние учета. До тех пор, пока документ не проведен, состояние учета неизменно, и документ – не более чем черновик, заготовка. Как только документ будет проведен – изменения, вносимые документом в учет, могут вступить в силу и состояние учета может быть изменено. Поскольку документ вносит изменения в состояние учета, он всегда "привязан" к конкретному моменту времени. Это позволяет отражать в базе данных фактическую последовательность событий. Следующим важным фактом, вытекающим из двух предыдущих, является то, что система 1С:Предприятие имеет механизмы, позволяющие отслеживать правильность состояния учета. Предположим, что вы изменили один из проведенных ранее документов и снова провели его "задним числом". В этом случае система 1С:Предприятие способна отследить, повлияют ли внесенные вами изменения на последующие проведенные документы, и если это так, система способна перепровести необходимые документы. Каждый документ, как правило, содержит информацию, которая подробнее описывает этот документ. Например, каждый документ ПриходнаяНакладная может содержать информацию о поставщике товаров, складе, на который приходуется товар, и т. д. Набор такой информации является одинаковым для всех документов одного вида, и для описания такого набора используются реквизиты объекта конфигурации Документ, являющиеся подчиненными объектами конфигурации. Большинство реквизитов объекта конфигурации Документ разработчик создает самостоятельно, однако у каждого объекта конфигурации Документ существуют два поля "по умолчанию": Дата и Номер документа. Поскольку тип данных Дата содержит дату и время с точностью до секунды, этот реквизит и определяет в основном положение документа на оси времени. Кроме этого, каждый документ содержит, как правило, некоторый набор информации, которая одинакова по своей структуре, но различна по количеству, предназначена для разных документов. Так, например, каждый документ ПриходнаяНакладная может содержать список приходуемых товаров. Для описания подобной информации служат табличные части объекта конфигурации Документ. Основные формы, используемые для "визуализации" документа представлены в табл.2 Таблица 2
После того, как вы познакомились с объектом конфигурации Документ, необходимо создать несколько таких объектов, чтобы иметь возможность фиксировать события, происходящие в ООО "Мастер". Одними из самых популярных услуг ООО "Мастер" является ремонт телевизоров и установка стиральных машин. И в том, и в другом случае требуются некоторые материалы, которые расходуются в процессе оказания этих услуг. Поэтому двумя важнейшими событиями в хозяйственной жизни организации будут являться поступление материалов и оказание услуг. Для отражения этих событий в базе данных необходимо создать два документа: Приходная накладная и Оказание услуги. Документ ПриходнаяНакладная будет фиксировать факт поступления в ООО "Мастер" необходимых материалов, а документ ОказаниеУслуги – фиксировать оказание услуг и расход материалов, которые используются при оказании этих услуг.
3.4.1. Создание документа " ПриходнаяНакладная " Создайте новый объект конфигурации Документ. Задайте имя документа – ПриходнаяНакладная. Нажмите кнопку " Далее ". Создайте реквизит документа с именем Склад и типом СправочникСсылка.Склады (рис. 32): Рис. 32. Создание реквизита документа После этого добавьте табличную часть с именем Материалы и создайте у нее четыре реквизита (рис. 33): · Материал с типом СправочникСсылка.Номенклатура, · Количество с типом Число, длиной 15, точностью 3, неотрицательное, · Цена с типом Число, длиной 15, точностью 2, неотрицательное, · Сумма с типом Число, длиной 15, точностью 2, неотрицательное. Перейдите на закладку Нумерация и задайте длину номера – 9 и тип номера – Строка. Запустите 1С:Предприятие в режиме отладки и протестируйте получившийся результат. В отрывшемся окне программы выполните команду Операции –> Документы…, выберите документ Приходная накладная. Система откроет одну из основных форм документа – основную форму списка. Создайте новый документ, выбрав пункт меню Действия –> Добавить, или нажав на соответствующую кнопку панели инструментов, или клавишу Insert) (рис. 34).
Рис. 33. Создание табличной часть документа и ее реквизитов Рис. 34. Добавление нового документа при помощи меню или иконки Система автоматически присвоит номер новому документу, и вам останется только заполнить табличную часть. Заполните ее материалами для ремонта телевизоров так, как показано на рисунке (рис. 35): Рис. 35. Заполнение документа "ПриходнаяНакладная №1" Нажмите кнопку " OK ". Аналогичным образом создайте второй документ, который будет приходовать следующие материалы для установки стиральных машин (рис. 36): Рис. 36. Заполнение документа "ПриходнаяНакладная №2" Наверняка вы обратили внимание на то, что при заполнении документа приходится вводить сумму в каждой строке. Это неудобно, и возникает естественное желание автоматизировать работу документа так, чтобы сумма вычислялась автоматически каждый раз при изменении цены или количества материалов в строке. Для этого вам потребуется сначала создать собственную форму документа, а затем воспользоваться возможностями встроенного языка. 3.4.2. Создание собственной формы документа "ПриходнаяНакладная" Вернитесь в конфигуратор и откройте окно редактирования объекта конфигурации Документ ПриходнаяНакладная. Перейдите в закладку Формы. Для того чтобы создать собственную форму документа, нажмите на символ лупы в поле ввода (рис. 37): Рис. 37. Создание формы документа… Система вызовет еще один полезный инструмент разработчика – конструктор форм. Этот инструмент также построен по принципу "мастеров": ввод данных в определенной последовательности и передвижение кнопками " Далее " и " Назад " (рис. 38). Рис. 38. Конструктор форм Выберите тип формы – Форма документа и нажмите кнопку " Готово ", согласившись тем самым со всем, что вам предложила система. Обратите внимание, что в дереве объектов конфигурации у объекта конфигурации Документ ПриходнаяНакладная появилась форма ФормаДокумента, а на экране открылось окно редактора форм, содержащее эту форму (рис. 39): Рис. 39. Новая форма документа и окно редактора форм Как видите, форма документа ПриходнаяНакладная содержит большое количество всевозможных полей. Эти поля называются элементами управления. Они имеют разное назначение и разное поведение, которое соответствует их назначению. Однако все они служат для того, чтобы отображать информацию, хранящуюся в базе данных, и организовывать интерактивную работу с этой информацией. Обратите внимание только на элементы управления, расположенные в колонках Количество, Цена и Сумма (рис. 40): Рис. 40. Интересующие элементы управления… Необходимо, чтобы каждый раз, когда меняется значение в поле Количество или в поле Цена, в поле Сумма автоматически устанавливалось значение, равное Количество * Цена. Очевидно, что для этого нужно написать на встроенном языке команду, похожую на Сумма = Количество * Цена, которая будет выполняться при изменении значения поля Количество или Цена. 3.4.3. Создание процедуры обработки события в модуле формы документа "ПриходнаяНакладная" Щелкните правой кнопкой мыши на поле ввода в колонке Количество и откройте для него палитру свойств (пункт контекстного меню Свойства). Прокрутив список до конца, вы обнаружите перечень событий, которые могут быть связаны с этим полем ввода. С большинством элементов управления связаны различные события, и именно с их помощью разработчик может влиять на ход работы программы. Среди событий, связанных с полем ввода, найдите событие При изменении. Это событие возникает после изменения значения поля ввода. Щелкните по кнопке с лупой в конце поля ввода, и система создаст заготовку процедуры обработчика этого события в модуле формы документа ПриходнаяНакладная (рис. 41).
Рис. 41. Выберите событие "При изменении", и система создаст заготовку процедуры в модуле формы Модуль – это "хранилище" для текста программы на встроенном языке. В конфигурации существует большое количество модулей, которые расположены в различных ее точках. Они могут принадлежать некоторым объектам конфигурации (например, формам), а могут существовать сами по себе (принадлежать всей конфигурации в целом). Текст программы, содержащийся в модулях, будет использоваться платформой в заранее известные моменты работы системы 1С:Предприятие. В модуль формы, в тело процедуры МатериалыКоличествоПриИзменении() добавьте следующий текст: СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные; СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена;
В первой строке происходит обращение к программному объекту ЭлементыФормы. Этот объект является коллекцией значений, содержащей все элементы управления, расположенные на форме документа. Каждый элемент управления формы можно получить, указав его имя в качестве свойства объекта ЭлементыФормы. В данном случае происходит обращение к элементу управления с именем Материалы (ЭлементыФормы.Материалы). Этот элемент управления отображает строки табличной части документа ПриходнаяНакладная. Получить ту строку, в которой в настоящее время осуществляется редактирование, можно при помощи свойства программного объекта ТабличноеПоле – ТекущиеДанные. Таким образом, в результате выполнения первой строки переменная СтрокаТабличнойЧасти будет содержать объект ДокументТабличнаяЧастьСтрока.ПриходнаяНакладная.Материалы, в котором находятся редактируемые данные. Во второй строке вычисляется сумма как произведение количества и цены. Объект ДокументТабличнаяЧастьСтрока.<имя> позволяет обратиться к данным конкретной колонки, указав имя колонки в качестве свойства объекта (например, СтрокаТабличнойЧасти.Количество). Проверьте, как это работает. В окне программы откройте список документов ПриходнаяНакладная и откройте любой из двух созданных документов. Если теперь вы поменяете количество в любой строке документа, то сумма в строке будет пересчитана автоматически. Для поля Цена, по идее, следует сделать то же самое. Однако, подобное автоматическое заполнение поля Сумма может понадобиться вам и в других документах. Поэтому лучше будет поместить расчет суммы в некотором "общедоступном" месте, чтобы разные документы, имеющие аналогичные реквизиты табличной части, могли использовать этот алгоритм. Для описания таких "общедоступных" мест служат объекты конфигурации Общий модуль. Создайте объект конфигурации Общий модуль в ветке Общие –> Общие модули и назовите его РаботаСДокументами. Он будет содержать следующий текст: Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество * СтрокаТабличнойЧасти.Цена; КонецПроцедуры Ключевое слово Экспорт в конце оператора Процедура как раз указывает на то, что эта процедура может быть доступна из других программных модулей. Затем в модуле формы документа ПриходнаяНакладная измените текст обработчика события При изменении: Процедура МатериалыКоличествоПриИзменении(Элемент) СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры Таким образом, теперь вместо непосредственного расчета суммы вы будете вызывать процедуру из общего модуля и передавать ей в качестве параметра нужную строку табличной части. Аналогичным образом создайте обработчик события При изменении для поля ввода, которое расположено в колонке Цена, и повторите в нем вызов процедуры РассчитатьСумму из общего модуля: Процедура МатериалыЦенаПриИзменении(Элемент) СтрокаТабличнойЧасти = ЭлементыФормы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти); КонецПроцедуры Запустите 1С:Предприятие в режиме отладки и убедитесь, что теперь сумма в строках табличной части документов Приходная накладная пересчитывается как при изменении количества, так и при изменении цены. 3.4.4. Создание документа "ОказаниеУслуги" Теперь аналогичным образом создайте документ Оказание услуги. Для этого потребуется выполнить следующие действия: 1. Создать новый объект конфигурации Документ ОказаниеУслуги с реквизитами: · Склад, тип СправочникСсылка.Склады, · Клиент, тип СправочникСсылка.Клиенты, · Мастер, тип СправочникСсылка.Сотрудники, 2. Создать табличную часть этого документа ПереченьНоменклатуры с реквизитами: · Номенклатура, тип СправочникСсылка.Номенклатура, · Количество, тип Число, длина 15, точность 3, неотрицательное, · Цена, тип Число, длина 15, точность 2, неотрицательное, · Сумма, тип Число, длина 15, точность 2, неотрицательное, 3. Создать основную форму документа, 4. Для полей ввода колонок Количество и Цена создать обработчик события ПриИзменении, в котором вызывать процедуру РассчитатьСумму() из общего модуля РаботаСДокументами. В результате документ ОказаниеУслуги будет выглядеть следующим образом (рис. 42): Рис. 42. Документ "ОказаниеУслуги" После того, как эти действия будут выполнены, запустите 1С:Предприятие в режиме отладки и убедитесь, что при вводе цены и количества в табличную часть документа ОказаниеУслуги сумма пересчитывается по разработанному вами алгоритму.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.011 сек.) |