- •Лабораторна робота №3
- •Створення документа «ПриходнаяНакладная»
- •Заповнення документів «ПриходнаяНакладная»
- •Створення форми документа
- •Створення процедури обробки події в модулі форми
- •Створення процедури обробки події в загальному модулі
- •Створення документа «Оказание услуги»
- •Заповнення документа «ОказаниеУслуги»
Створення процедури обробки події в загальному модулі
Додамо об'єкт конфігурації Загальний модуль. Для цього розкриємо вітку Общие в дереві об'єктів конфігурації, нажавши на + ліворуч від її. Потім виділимо вітку Общие модули й натиснемо кнопку Добавить в командній панелі вікна конфігурації.
Назвемо його РаботаСДокументами й установимо в його властивостях прапорець Клиент (управляемое приложение), а прапорець Сервер знімемо. Це означає, що екземпляри цього модуля будуть скомпільовані в контексті тонкого клієнта й у контексті веб-клієнта (рис. 3.14).
Рис. 3.14. Властивості загального модуля
Внесемо в модуль наступний текст (лістинг 3.2).
Лістинг 3.2. Процедура «РассчитатьСумму()»
Процедура РассчитатьСумму(СтрокаТабличнойЧасти) Экспорт
СтрокаТабличнойЧасти.Сумма = СтрокаТабличнойЧасти.Количество
СтрокаТабличнойЧасти.Цена;
КонецПроцедуры
Ключове слово Экспорт у заголовку процедури вказує на те, що ця процедура може бути доступна з інших програмних модулів.
Тепер у модулі нашої форми змінимо текст оброблювача (лістинг 3.3).
Лістинг 3.3. Процедура «МатериалыКоличествоПриИзменении()»
&НаКлиенте
Процедура МатериалыКоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Ми бачимо, що перший рядок процедури залишилася без змін. А в другому рядку замість безпосереднього розрахунку суми ми викликаємо процедуру РассчитатьСумму() із загального модуля РаботаСДокументами й передаємо їй як параметр поточний рядок табличної частини.
Перевіримо, як це працює, і переконаємося, що нічого не змінилося.
Тепер залишилося й для поля Цена встановити такий же оброблювач. Відповідно до стандартів розробки фірми «1C» у кожної події повинен бути свій оброблювач. Тому ми створимо оброблювач події ПриИзменении для поля табличної частини МатериалыЦена так само, як ми робили це для поля МатериалыКоличество, і повторимо в ньому виклик процедури РассчитатьСумму із загального модуля (лістинг 3.4).
Лістинг 3.4. Процедура «МатериалыЦенаПриИзменении()»
&НаКлиенте
Процедура МатериалыЦенаПриИзменении(Элемент)
СтрокаТабличнойЧасти = Элементы.Материалы.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
КонецПроцедуры
Запустимо 1С:Підприємство в режимі налагодження й переконаємося, що тепер сума в рядках табличної частини документів ПриходнаяНакпадная перераховується як при зміні кількості, так і при зміні ціни.
Створення документа «Оказание услуги»
Тепер ми аналогічним чином створимо другий документ, необхідний нам, - Оказание услуги. Для цього буде потрібно виконати вже знайомі нам дії, які ми виконували по створенню документа Приходная накладная.
Додамо новий об'єкт конфігурації Документ і назвемо його ОказаниеУслуги. Представление списка задамо як Оказание услуг.
На закладці Підсистеми відзначимо, що документ буде доступний у підсистемах Оказание услуг і Бухгалтерия.
На закладці Данные створимо реквізити документа:
Склад, тип СправочникСсылка.Склади. Виберемо для властивості Значение заполнения визначений елемент Основной довідника Склады.
Клиент, тип СправочникСсылка.Клиенты. Установимо властивість Проверка заполнения в значення Выдавать ошибку.
Мастер, тип СправочникСсылка.Сотрудники. Установимо властивість Проверка заполнения в значення Выдавать ошибку.
Створимо табличну частину цього документа ПереченьНоменклатуры з реквізитами:
Номенклатура, тип СправочникСсылка.Номенклатура;
Количество, тип Число, довжина 15, точність 3, неотрицательное;
Цена, тип Число, довжина 15, точність 2, неотрицательное,
Сумма, тип Число, довжина 15, точність 2, неотрицательное;
Установимо для табличної частини в цілому й для кожного її реквізиту властивість Проверка заполнения в значення Выдавать ошибку.
На закладці Формы створимо основну форму документа.
Для поля ПереченьНоменклатурыКоличество створимо оброблювач події ПриИзменении. При цьому відкриється модуль форми із шаблоном оброблювача події ПереченьНоменклатурыКоличествоПриИзменении, який ми поки заповнювати не будемо, а перейдемо у вікно елементів форми на закладку Форма й аналогічний образ створимо оброблювач події ПереченьНоменклатурыЦенаПриИзменении для поля ПереченьНоменклатурыЦена.
Далі модуль форми документа ОказаниеУслуги потрібно заповнити в такий спосіб (лістинг 3.5).
Лістинг 3.5. Модуль форми документа «ОказаниеУслуги»
&НаКлиенте
Процедура ПереченьНомен1спатурыКояичеавоПриИзменении(Элемент)
СтрокаТабличнойЧасти а» Элементы.ЛереченьНоменклатуры.ТекущиеДанные; РабртэСДокументами.РассчитатьСумму(СтрокаТа6личнойЧасти);
КонецПроцедуры
&НаКлиенте
Процедура ПереченьНоменклатурыЦенаПриИзменении|Элемент)
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные; РаботаСДокументами.РассчитатьСумму{СтрокаТа6личнойЧасти);
КонецПроцедуры
У результаті наших дій дереві об'єктів конфігурації документ ОказаниеУслуги буде виглядати наступним чином (рис. 3.15).
На закінчення відредагуємо командний інтерфейс, щоб у підсистемі Оказание услуг була доступна команда створення нових документів.
Рис. 3.15. Документ «ОказаниеУслуги» у дереві об'єктів конфігурації
