Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab6.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
721 Кб
Скачать
☆
  1. Створення функції РозничнаяЦена()

Наше завдання полягає в наступному. Ціна номенклатури в нас тепер зберігається в окремому регістрі відомостей. Коли ми створюємо або змінюємо документ ОказаниеУслуги й додаємо в табличну частину яку-небудь номенклатуру, нам хочеться, щоб одночасно із цим у документ підставлялася б відразу й актуальна ціна цієї номенклатури, отримана з регістра відомостей і відповідній даті документа.

Для цього нам потрібно зробити дві речі. Спочатку написати якусь функцію, що буде повертати нам актуальну ціну номенклатури, а потім викликати цю функцію в той момент, коли в документ додається номенклатура, і підставити в документ ціну номенклатури, що поверне ця функція.

Спочатку ми створимо функцію РозничнаяЦена(), що буде повертати нам актуальну роздрібну ціну номенклатури, і помістимо її в загальний модуль конфігурації.

Відкриємо конфигуратор, у вітці Общие ► Общие модули додамо новий об'єкт конфігурації Модуль і назвемо його РаботаСоСправочниками.

Ми бачимо, що в модулі за замовчуванням установлений прапорець Сервер. Це означає, що екземпляри цього модуля будуть скомпільовані тільки на стороні сервера.

Установимо прапорець Вызов сервера для того, щоб експортні процедури й функції цього модуля можна було викликати із клієнта (рис. 6.7).

Рис. 6.7. Властивості загального модуля

Помістимо в нього наступний текст (лістинг 6.1).

Лістинг 6.1. Функція «РозничнаяЦена()»

Функция РозничнаяЦена(АктуальнаяДата, ЭлементНоменклатуры) Экспорт

// Создать вспомогательный объект Отбор.

Отбор = Новый СтруктураГНоменклатура” ЭлементНоменклатуры);

// Получить актуальные значения ресурсов регистра,

ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(АктуальнаяДата, Отбор); Возврат ЗначенияРесурсов.Цена;

КонецФункции

Пояснимо цю функцію.

Для одержання роздрібної ціни ми будемо передавати у функцію два параметри:

  • АктуальнаяДата - параметр типу Дата, визначає точку на осі часу, у якій нас цікавить значення роздрібної ціни.

  • ЭлементНоменклатуры - посилання на елемент довідника Номенклатура, для якого ми хочемо одержати роздрібну ціну.

У тілі функції ми спочатку створюємо допоміжний об'єкт Отбор.

Це структура, що містить відбір по вимірах регістра. З його допомогою визначаємо, що нас будуть цікавити записи регістра, у яких вимір регістра Номенклатура дорівнює переданій у функцію посиланню на елемент довідника.

У другому рядку ми звертаємося до менеджера регістра відомостей Цены (РегистрыСведений.Цены) і виконуємо метод ПолучитьПоследнее(), що повертає нам значення ресурсів самого пізнього запису регістра, що відповідає переданої у функцію даті (АктуальнаяДата) і значенням вимірів регістра (Отбор).

Метод ПолучитьПоследнее повертає структуру, яка містить значення ресурсів, що зберігається у змінній ЗначенияРесурсов. У нашому регістрі ресурс один, але все одно буде повернута структура, що містить єдиний елемент.

Тому в наступному рядку ми одержуємо шукану нами роздрібну ціну, просто вказавши ім'я потрібного нам ресурсу регістра через крапку (ЗначенияРесурсов.Цена) і повертаємо її при виконанні функції. Тепер цю функцію потрібно викликати в деякий момент роботи документа.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]