
- •Лабораторна робота №3
- •Створення документа «ПриходнаяНакладная»
- •Заповнення документів «ПриходнаяНакладная»
- •Створення форми документа
- •Створення процедури обробки події в модулі форми
- •Створення процедури обробки події в загальному модулі
- •Створення документа «Оказание услуги»
- •Заповнення документа «ОказаниеУслуги»
Створення процедури обробки події в модулі форми
Використовуючи вбудовану мову, розробник може описати власний алгоритм того, що повинне відбуватися при настанні цієї події. Що ми зараз і зробимо.
Двічі клацнемо на елементі форми МатериалыКоличество або правою кнопкою миші відкриємо для нього палітру властивостей (пункт контекстного меню Свойства). Прокрутивши список до кінця, ми побачимо перелік подій, які можуть бути пов'язані із цим полем.
Очевидно, що нам потрібно подія ПриИзменении, що виникає після зміни значення поля. Знайдемо його в списку подій і натиснемо кнопку відкриття зі значком лупи в поле уведення (рис. 3.12).
Рис. 3.12. Створення оброблювача події «ПриИзменении» поля табличної частини «Кількість»
Система створить шаблон процедури оброблювача цієї події в модулі нашої форми й відкриє закладку Модуль редактора форми (рис. 3.13).
Модуль - це «сховище» для тексту програми вбудованою мовою. У цьому випадку це модуль форми, тому що оброблювачі всіх інтерактивних подій, пов'язаних з елементами форми, містяться саме в модуль форми.
Рис. 3.13. Шаблон оброблювача події «ПриИзменении» поля табличної частини «Кількість»
У модуль форми, у процедуру МатериалыКоличествоПриИзменении(), ми й додамо наступний текст (лістинг 3.1).
Лістинг 3.1. Процедура «МатериалыКоличествоПриИзменении()»
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные;
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧастиКоличество * СтрокаТабличИойЧасти.Цена;
Пояснимо призначення цих рядків.
У першому рядку ми спочатку створюємо змінну СтрокаТабличнойЧасти, у яку буде поміщений об'єкт, який містить дані, що перебувають у рядку табличної частини, які нам потрібно перерахувати.
Оскільки ми перебуваємо в модулі форми, то в ньому доступні всі властивості й методи об'єкта вбудованої мови УправляемаяФорма. Тому ми можемо звертатися до них прямо. У цьому випадку після знака рівності ми звертаємося до колекції елементів форми, використовуючи одне із властивостей об'єкта УправляемаяФорма - властивість Элементы. Кожний елемент форми можна одержати, указавши його ім'я як властивість цього об'єкта, тобто через крапку від нього. У цьому випадку ми звертаємося до табличної частини документа Материалы (Элементы.Материалы).
Таблична частина документа являє собою об'єкт вбудованої мови ТаблицаФормы. Одержати той рядок, у якій у цей час здійснюється редагування, можна за допомогою властивості програмного об'єкта ТаблицаФормы - ТекущиеДанные (Элементы.Материалы.ТекущиеДанные).
Таким чином, у результаті виконання першого рядка процедури оброблювача змінна СтрокаТабличнойЧасти буде містити об'єкт ДанныеФормыСтруктура. Цей об'єкт містить дані, що перебувають у поточному рядку табличної частини документа (Элементы.Материалы.ТекущиеДанные)..
Одержавши цей об'єкт, ми можемо звернутися до даних конкретної колонки табличної частини, указавши ім'я колонки як властивість об'єкта. Наприклад, використовуючи звернення СтрокаТабличнойЧасти. Количество ми одержуємо число, яке перебуває в рядку, що редагується, у колонці Количество.
Таким чином, у другому рядку процедури оброблювача обчислюється значення колонки Сумма як добуток значень колонок Количество і Цена.
Тепер подивимося, як це працює. Запустимо 1С:Підприємство в режимі налагодження, відкриємо список документів Приходные накладные й відкриємо будь-який із двох створених нами документів. Якщо тепер ви поміняєте кількість у будь-якому рядку документа, то сума в рядку буде перелічена автоматично.
Чудово. Але тепер хотілося б і для поля Цена зробити те ж саме. А якщо заглянути вперед, то ми побачимо, що подібне автоматичне заповнення поля Сумма може нам знадобитися й в інших документах.
Тому краще буде помістити розрахунок суми в деяке «загальнодоступне» місце, щоб різні документи, що мають аналогічні реквізити табличної частини, могли використовувати цей алгоритм.
Для опису таких «загально доступних» місць служать об'єкти конфігурації Загальний модуль, які розташовані у гілці Общие ► Общие модули. Процедури й функції, що містяться в цих модулях, можуть бути доступні для будь-яких об'єктів конфігурації.