Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1с8_Задачник.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
25.2 Mб
Скачать

15.Работа со списками на примере задачи «Тариф».

Тарифы перевозок.

1.Создать справочник «номпоезд». Он содержит только номера поездов.

2. Создать справочник «города». Он содержит только города.

3. Создать двухуровневый справочник «Направления». На верхнем уровне (группе) – в качестве наименования номер поезда , который будем выбирать из справочника «Номпоезд».На уровне элементов в качестве наименования пункты по пути следования от первого до последнего и выбирать их будем из справочника «города».

4.Справочнику «Направления» подчиним справочник «докуда». В нем в качестве наименования пункты докуда можно доехать из выбранного владельца с указанием цены купе и цены плацкарта.

5. Создать отчет «Тариф». на форму поместить следующие поля :-номер поезда из «номпоезд»; -откуда и куда из справочника города; -типвагона из перечисления(его надо создать). Эти поля заполняем вручную. Введем поле цена , которое будет заполняться программно.

Обращаем внимание что процедуры «Точка отправления…» и «точканазначения…» прикреплены к событию «начало выбора» и эти процедуры формируют последовательно списки пунктов отправления для выбранного поезда, а затем список только тех пунктов до которых можно доехать из пункта отправления для заданного поезда. Тем самым не будет даже возможности ошибиться при выборе пунктов.

Чтобы был понятен последующий текст , участок формы с кнопками «печать» , «Сформировать» и «Закрыть» назван «Основные действия формы».

В модуле формы пять процедур.

«ПриОткрытии» делает кнопку «Печать» недоступной , потому что еще нечего печатать.

Внимание. Начинаем работать со списками.

К этому моменту мы должны выбрать номер поезда , иначе неясно какой список создавать. Теперь комментарии по тексту.

«Список = Новый СписокЗначений()» - сообщает системе , что будет создаваться новый список пока неизвестно из чего . Текст запроса формирует массив пунктов для заданного поезда. Фрагмент «если выборка.количество()=0….» позволяет определить ситуацию - отсутствие у заданного поезда пунктов отправления.

В цикле «список.добавить(выборка.пункты)» - заполняет список , пунктов относящихся к выбранному поезду , но его пока не видно.

Оператор «Выбрали = список.Выбратьэлемент();» показывает список и позволяет мышью выбирать нужный элемент (позиционироваться на нем. Последний оператор «Элемент.значение…» копирует выбранный элемент в поле элемент , в качестве которого при обращении процедуры было задано поле пункт отправления.

Аналогично следующая процедура. Нюанс запроса –указаны два владельца и поезд и пункт отправления.

Процедура «сформировать» - очевидна.

Последний оператор делает кнопку «Печать»- доступной.

Пример работы приведен ниже.

16.Построение списков на основе справочника и их использование.

За основу возьмем справочник.Школа. Создадим отчет .список. Все три поля –Справочник.Школа. Для поля класс в свойствх в разделе «использование» в пункте «Выбор групп и элементов» поставим значение «Группы», так как класс –это группа.

Аналогично ,для буквы с одной разницей по сравнению с Классом.

В разделе свойств «События» в событии «В начало выбора» определим процедуру , которая будет создавать список только тех букв , которые есть у заданного класса. Затем , из этого созданного списка выбираем нужный класс. Процедура имеет имя «БукваНачалоВыбора».

Аналогично для «Фио».Режим «выбора групп и элементов» -элементы , так как ФИО –это элемент.

Имя процедуры , прикрепленной к ФИО –«ФиоНачалоВыбора» и она обеспечивает сначала формирование списка фамилий , для выбранных класса и буквы , а затем и выбор из списка какой-то фамилии.

Теперь , собственно рассмотрим технику создания списка и выбора из списка.

Оператор Список=… объявляет системе , что будет создаваться список с именем «Список». Оператор «Список.Добавить(АА.Ссылка)» в цикле формирует список из букв для заданного класса.

Оператор «Выбрали = Список.ВыбратьЭлемент(«выбирай»)» открывает созданный список и позволяет мышью встать на нужный элемент.

Оператор «Элемент.Значение =Выбрали.Значение» копирует выбранный элемент в поле буква. Заметим , что так как процедура прикреплена к полю буква , то элемент в процедуре это и есть буква.

Аналогично формируется другой список для выбора фамилий. Имена списков (и там и там список) совпадают чисто случайно. Все равно они в разных процедурах. Можно назвать по разному.

Ниже приведена иллюстрация работы.