
Автоматичне заповнення ціни в документі ОказаниеУслуги
Отже, завдання, що перед нами стоїть, полягає в наступному. При редагуванні документа ОказаниеУслуги нам необхідно забезпечити автоматичне заповнення поля Цена після того, як користувач вибере послугу. Причому ціна послуги повинна визначатися виходячи з дати створюваного документа.
Знайдемо в конфігураторі документ ОказаниеУслуги й відкриємо його форму Форма Документа. Двічі клацнемо на елементі форми ПереченьНоменклатурыНоменклатура або правою кнопкою миші відкриємо для нього палітру властивостей (пункт контекстного меню Свойства). Прокрутивши список до кінця, знайдемо подію ПриИзменении, що виникає після зміни значення поля.
Натиснемо кнопку відкриття зі значком лупи в поле уведення. Система створить шаблон процедури оброблювача цієї події в модулі нашої форми й відкриє закладку Модуль у редакторі форми. Внесемо в нього наступний текст (лістинг 6.2).
Лістинг 6.2. Процедура «Переченьноменклатурыноменклатураприизменении()»
// Получить текущую строку табличной части.
СтрокаТабличнойЧасти = Элементы.ПереченьНоменклатуры.ТекущиеДанные;
// Установить цену.
СтрокаТабличнойЧасти.Цена = РаботаСоСправочниками.РозничнаяЦена(Объект.Дата
, СтрокаТабличнойЧасти.Йоменклатура);
// Пересчитать сумму строки.
РаботаСДокументами.РассчитатьСумму(СтрокаТабличнойЧасти);
Прокоментуємо вміст оброблювача.
Перший рядок оброблювача вам уже знайом, ми одержуємо поточний рядок табличної частини документа, тому що він нам знадобиться надалі, і зберігаємо його в змінній СтрокаТабличнойЧасти.
Потім ми викликаємо нашу функцію РозничнаяЦена() із загального модуля РаботаСоСправочниками. Першим параметром ми передаємо в цю функцію дату документа, на яку необхідно одержати ціну. Другим параметром ми передаємо посилання на елемент довідника Номенклатура.
Функція повертає останнє значення ціни, і це значення ми привласнюємо полю Цена в поточному рядку табличної частини документа (СтрокаТабличнойЧасти.Цена). Потім ми викликаємо процедуру РассчитатьСумму із загального модуля РаботаСДокументами.
Перевіримо, як тепер працює наш документ. Запустимо 1С:Підприємство в режимі налагодження й відкриємо регістр відомостей Цены . Для транзистора Philips додамо іншим числом нову ціну (рис. 6.8).
Рис. 6.8. Регістр відомостей «Цены»
Тепер відкриємо документ Оказание Услуги № 1. Як ви пам'ятаєте, цим документом ми саме «витратили» один такий транзистор.
Залишимо дату документа без зміни й повторимо вибір транзистора в колонку Номенклатура табличної частини документа. Автоматично встановиться перше значення ціни транзистора. Це останнє значення ціни на дату документа (рис. 6.9).
Рис. 6.9. Заповнення документа «Оказание Услуги»
Тепер змінимо дату документа на 13.07.2009 і знову повторимо вибір транзистора. Буде встановлене нове значення ціни, останнє на цю дату (рис. 6.10).
Таким чином, у документі з'являється актуальна на момент створення документа ціна послуги.
Рис. 6.10. Заповнення документа «Оказание Услуги»