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

5.Решение задачи «Школа».

Справочник.Школа ранее создан (См 1.1 Школа(многоуровневый справочник).).

5.1.Создание документа Школа.

Создадим новый объект конфигурации Документ. Зададим имя документа - «Школа» (Рис. 69Создание документа "Школа" (Закладка Основные)).

Рис. 69Создание документа "Школа" (Закладка Основные)

Перейдем на закладку «Данные» (Рис. 70 Создание документа "Школа" (Закладка Данные))

Особо остановимся на понятии «Табличная часть документа». В 1С-7 в документе возможна только одна «Табличная часть». В 1С-8 возможны несколько ТЧ и ,как следствие , каждая ТЧ должна иметь имя . Это вносит нюансы в программирование. Создание одной или нескольких ТЧ происходит по пункту «Данные» в нижней белой области по кнопке «Добавить»(левая верхняя в нижней белой области).

Рис. 70 Создание документа "Школа" (Закладка Данные)

Зададим свойства табличной части (Рис. 71 Свойства табличной части)

Рис. 71 Свойства табличной части

По «+» на ТЧ «Дети» кнопкой «Добавить реквизит» задаем структуру ТЧ «Дети» (Рис. 72 Создание документа Школа (Закладка Данные) Табличная часть Дети). Рис. 73 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита ЛитерРис. 74 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита ФИОРис. 75 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита КоличествоРис. 76 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита Сумма

Рис. 72 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита Класс

Рис. 73 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита Литер

Рис. 74 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита ФИО

Обратите внимание , что класс и литер –это строковые переменные и только ФИО имеет тип СправочникССылка.Школа . Выбор происходит по элементу , а группы это путь к элементу.

Рис. 75 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита Количество

Рис. 76 Создание документа Школа (Закладка Данные) Табличная часть Дети Свойства реквизита Сумма

Пункт «Нумерация», в принципе очевиден (Рис. 77 Создание документа Школа (Закладка Нумерация)).

Рис. 77 Создание документа Школа (Закладка Нумерация)

По сути задачи , документ Школа не проводимый документ , Поэтому по пункту «Движения» хотя все созданные регистры приведены ни один из них не помечен галочкой (Рис. 78 Создание документа Школа (Закладка Движения)).

Рис. 78 Создание документа Школа (Закладка Движения)

По пункту «Форма» (Рис. 79 Создание документа Школа (Закладка Формы)) определяем имя формы (Например, ФормаДокумента1). Кстати форм документа может быть много как по типам форм так и в рамках одного типа. Все формы должны иметь имя , которое является идентификатором при программировании.

Рис. 79 Создание документа Школа (Закладка Формы)

Щелкнув мышью по ФормеДокумента1 получим , собственно форму , которая обеспечит ввод информации (Рис. 80 Документ школа ФормаДокумента1).

Рис. 80 Документ школа ФормаДокумента1

Кнопок «Заполнить» и «Рассчитать» исходно нет после этого этапа. Их ввод делается по траектории Форма-Вставить элемент управления (Рис. 81)- кнопка – имя кнопки (например, Заполнить»- см Рис. 82 Вставка элемента управления). Для того, чтобы создать заготовку процедуры с тем же именем что и кнопка необходимо поставить галочку в пункте «Создать процедуру». ОК и появятся и кнопка на форме и заготовка кнопки с созданным системой именем Заполнитьнажатие.

Рис. 81 Траектория Форма-Вставить элемент управления

Рис. 82 Вставка элемента управления

Нажав правой кнопкой мыши на кнопке «Заполнить» Появится контексное меню и по пункту «свойства» этой кнопки (Рис. 83 Свойства кнопки "Заполнить") найдем пункт «События» и подпункт «Нажатие позволяет либо проверить создана ли заготовка или подключить к кнопке любую созданную ранее процедуру.

Рис. 83 Свойства кнопки "Заполнить"

Аналогично разместим на форме вторую кнопку «Рассчитать» (Рис. 84 Свойства кнопки «Рассчитать».).

Рис. 84 Свойства кнопки «Рассчитать».

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

Рассмотрим текст процедуры «Заполнитьнажатие». По сути алгоритма необходимо организовать цикл по перебору всего справочника Школа и при обнаружении элементов справочника на уровне3 (обратим внимание , что счет уровней начинается с 0, то есть уровню3 соответствует в программах уровень 2) –это фамилии начинаем формировать новую строку документа.

Как это делается? (Фрагм. 2 Процедуры ЗаполнитьНажатие и рассчитатьНажатие)

В отличие от 1С-7 –нет метода «СоздатьОбъект». В 1С-8 объявляется переменная , например «спр» (как и в 1С-7) и ей ставится в соответствие конструкция (метод) «Справочники,Школа.ВыбратьИерархически()». Справочники – это класс метаданных (коллекция- это слово доминирует в 1С-8). Школа-конкретика. «Выбрать иерархически()»- это метод : – во-первых показывающий , что имеем дело с иерархическим справочником и нельзя к нему применять другой метод , например, «Выбрать(); - во вторых , он открывает выборку , позиционирует на первую запись (возможно это группа или элемент). Таким образом , данная строка сочетает сразу два действия в 1С-7 «СоздатьОбъект» и «ВыбратьЭлементы()». Продолжая аналогию. Вместо «Пока Спр. ПолучитьЭлемент()=1 цикл» в 1С-7 , в1С-8 –оператор «Пока Спр.Следующий()=1 цикл». =1 можно опускать. Как видно , отличия чисто формальные.

Оператор « Если УровеньВВыборке()=2 тогда» гарантирует перебор ФИО , как следствие, внутри формирование новой строки в документ. Оператор «нс=Дети.Добавить()» аналогичен «НоваяСтрока()» , поскольку в 1С-8 документ может иметь несколько табличных частей , то,естественно, нужно снять вопрос в какую ТЧ добавлять новую строку (в нашем случае ТЧ=Дети) , даже если ТЧ в документе Школа всего одна. «НС» -определитель строки именно этой части. Продолжение той же логики. Возможен алгоритм , в котором формируется сразу несколько новых строк в разных ТЧ. Остальные три строки –очевидны и аналогичны 1С-7 . Уточнимся по первой строке «НС.фио=спр.ссылка» .

Вроде –бы понятно , но все же. Нс-идентификатор строки и ,как следствие, «нс.фио» -это точная адресация к полю ФИО нужной ТЧ. «Спр.Ссылка»- это представление ссылки на пользовательском уровне в виде наименования (вместо спр.ТекущийЭлемент() в 1с-7).