Создание документа ПриходнаяНакладная
П |
осле того, как мы познакомились с объектом конфигурации Документ, создадим несколько таких объектов, чтобы иметь возможность фиксировать события, происходящие в нашем OOO «На все руки мастер».
Одними из самых популярных услуг нашего предприятия является ремонт телевизоров и установка стиральных машин. И в том, и в другом случае требуются некоторые материалы, которые расходуются в процессе оказания этих услуг. Поэтому двумя важнейшими событиями в хозяйственной жизни нашей организации будут являться поступление материалов и оказание услуг.
Для отражения этих событий в базе данных мы создадим два документа: «Приходная накладная» и «Оказание услуги». Документ «Приходная накладная» будет фиксировать факт поступления в нашу организацию необходимых материалов, а документ «Оказание услуги» будет фиксировать оказание услуг и расход материалов, которые используются при оказании этих услуг.
Создадим новый объект конфигурации Документ. Зададим имя документа - «ПриходнаяНакладная». Нажмем «Далее».
Создадим реквизит документа с именем «Склад» и типом СправочникСсылка.Склады:
66
Быстрая разработка прикладных решений
Документ
После этого добавим табличную часть с именем «Материалы» и создадим у нее четыре реквизита:
• «Материал» с типом СправочникСсылка.Номенклатура,
• «Количество» с типом Число,длиной 15, точностью 3,
неотрицательное,
• «Цена» с типом Число,длиной 15, точностью 2,
неотрицательное,
• «Сумма» с типом Число,длиной 15, точностью 2,
неотрицательное.
Создадим табличную часть и опишем ее реквизиты.
Пока в нашей базе данных нет ни одного документа «Приходная накладная», поэтому создадим новый документ (создать новый документ можно при помощи пункта меню Действия| Добавить,соответствующей иконки или клавишей «Insert»).
Добавим новый документ при помощи меню или иконки
Запустим 1С: Предприятие в режиме отладки и протестируем получившийся результат. В отрывшемся окне программы выполним команду Операции| Документы...,выберем документ «Приходная накладная». Система откроет одну из основных форм документа -основную форму списка.
Система автоматически присвоит номер новому документу и нам останется только заполнить табличную часть. Заполним ее материалами для ремонта телевизоров так, как показано на рисунке:
Нажмем «ОК».
68
Быстрая разработка прикладных решений
Документ
Аналогичным образом мы создадим второй документ, который будет приходовать следующие материалы для установки стиральных
машин:
<*^ Узнай больше!
О том, для чего предназначены основные формы объектов конфигурации, можно прочитать в главе «Механизм основных форм» на странице 542.
Вернемся в конфигуратор и откроем окно редактирования объекта конфигурации «ПриходнаяНакладная». В этом окне нас интересует закладка «Формы». Как мы видим, ни одна из основных форм документа пока не задана.
Для того чтобы создать форму документа, нажмем на символ лупы в поле ввода:
Создадим форму документа...
Наверняка вы обратили внимание на то, что при заполнении документа приходится вводить сумму в каждой строке. Это неудобно, и возникает естественное желание автоматизировать работу документа так, чтобы сумма вычислялась автоматически каждый раз при изменении цены или количества материалов в строке.
Это совсем не сложно и для этого нам потребуется сначала создать собственную форму документа, а затем воспользоваться возможностями встроенного языка.
Создание формы документа
П |
режде всего, следует заметить, что до сих пор мы использовали предопределенные формы объектов, которые система 1С:Предприятие создавала для нас сама «по умолчанию».
Теперь же у нас возникла необходимость слегка изменить логику работы формы документа, а значит, нам придется создать свою собственную форму документа «ПриходнаяНакладная» для того, чтобы в ней мы могли описать тот алгоритм, который нам нужен.
70
Быстрая разработка прикладных решений
Документ
Система вызовет еще один полезный инструмент разработчика -конструктор форм. Этот инструмент также построен по принципу «мастеров» - ввод данных в определенной последовательности и передвижение кнопками «Далее» и «Назад».
Обратите внимание, что в дереве объектов конфигурации у объекта конфигурации Документ «ПриходнаяНакладная» появилась форма «ФормаДокумента», а на экране открылось окно редактора форм, содержащее эту форму:
Новая форма документа и окно редактора форм
Сразу нажмем кнопку «Готово», согласившись тем самым со всем, что нам предложила система.
Как видите, форма документа «ПриходнаяНакладная» содержит большое количество всевозможных полей. Эти поля называются элементами управления. Они имеют разное назначение и разное поведение, которое соответствует их назначению. Однако все они служат для того, чтобы отображать информацию, хранящуюся в базе данных и организовывать интерактивную работу с этой информацией.
72
Быстрая разработка прикладных решений
Документ
Сейчас мы обратим свое внимание только на те элементы управления, которые нас интересуют - это три поля ввода, расположенные в колонках «Количество», «Цена» и «Сумма»:
Интересующие нас элементы управления.
Среди событий, связанных с полем ввода, найдите событие «При изменении». Это событие возникает после изменения значения поля ввода.
Щелкните по кнопке с лупой в конце поля ввода, и система создаст заготовку процедуры обработчика этого события в модуле нашей формы.
Мы хотим, чтобы каждый раз, когда меняется значение в поле «Количество» или в поле «Цена», в поле «Сумма» автоматически устанавливалось значение равное Количество*Цена. Очевидно, что для этого нужно написать на встроенном языке команду похожую на Сумма = Количество*Цена, которая будет выполняться при изменении значения поля «Количество» или «Цена». Но как «поймать» эти моменты изменения?
Создание процедуры обработки события в модуле формы
Щ |
елкните правой кнопкой мыши на поле ввода в колонке «Количество» и откройте для него палитру свойств (пункт контекстного меню Свойства). Прокрутите список до конца, и вы обнаружите перечень событий, которые могут быть связаны с этим полем ввода.
С большинством элементов управления связаны различные события, и именно с их помощью разработчик может влиять на ход работы программы.
<*" Узнай больше!
Подробнее об обработчиках событий можно прочитать в главе
«Обработчики событий» на странице 546.
Модуль - это «хранилище» для текста программы на встроенном языке. В конфигурации существует большое количество модулей, которые расположены в различных ее точках. Они могут принадлежать некоторым объектам конфигурации (например, формам), а могут существовать сами по себе (принадлежать всей конфигурации в целом). Текст программы, содержащийся в модулях, будет использоваться платформой в заранее известные моменты работы системы 1С:Предприятие.
Выберем событие «При изменении» и система создаст заготовку процедуры в модуле формы..^ |
5ыстрая разработка прикладных решений
Документ
В модуль формы добавим следующий текст:
ПроцедураМатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Материалы
.ТекущиеДанные; СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество
* СтрокаТабличнойЧасти.Цена;
КонецПроцедуры________________________________________
Объясним назначение этих строк.
В первой строке мы обращаемся к программному объекту ЭлементыФормы.Этот объект является коллекцией значений, содержащей все элементы управления, расположенные на нашей форме. Каждый элемент управления формы можно получить, указав его имя в качестве свойства объекта ЭлементыФормы.В данном случае мы обращаемся к элементу управления с именем «Материалы» (ЭлементыФормы.Материалы).
Этот элемент управления отображает строки табличной части
нашего документа. Получить ту строку, в которой в настоящее время
осуществляется редактирование, можно при помощи свойства
программного объекта ТабличноеПоле - ТекущиеДанные.Таким
образом, в результате выполнения первой строки переменная
СтрокаТабличнойЧастибудет содержать объект
ДокументТабличнаяЧастьСтрока.ПриходнаяНакладная.Матери алы,в котором находятся редактируемые данные.
Во второй строке вычисляется сумма как произведение количества
и цены. Объект ДокументТабличнаяЧастьСтрока.<имя>позволяет
обратиться к данным конкретной колонки, указав имя колонки в
качестве свойства объекта (например,