Главная страница

6Глава Концепция управляемого приложения


Скачать 6.74 Mb.
Название6Глава Концепция управляемого приложения
Дата02.11.2022
Размер6.74 Mb.
Формат файлаpdf
Имя файлаLab.rabotyISiTvE.S.Merkulova.pdf
ТипДокументы
#767994
страница11 из 17
1   ...   7   8   9   10   11   12   13   14   ...   17
Глава 9. Регистры сведений
9.1. Назначение. Типы регистров сведений
Мы хотели бы хранить и использовать в нашей конфигурации сведения о различных валютах. Решение подобной задачи автоматически заставляет нас создать соответствующий справочник. Предположим, мы решим хранить данные о курсе валюты так же, в справочнике. Мы можем это сделать, но такой подход будет не слишком удобным.
Главное неудобство здесь заключается в том, что, введя в карточку валюты сведения о курсе на определенную дату, мы потеряем предыдущее значение курса. Справочник не хранит историю значений реквизитов, поэтому мы вынуждены будем либо довольствоваться единственным значением курса, либо использовать для хранения курсов валют какой-то другой механизм. Такой механизм имеется в 1С:Предприятие 8 и называется он регистром сведений .
Регистры сведений (РС) бывают различных видов. Они делятся на периодические и
непериодические регистры. Непериодические регистры проще всего сравнить с некими таблицами, в которых хранятся определенные сведения, развернутые по заданным в регистре измерениям. Примерами таких регистров могут быть регистр, фиксирующий содержание драгоценных металлов в каких-либо деталях, регистр, хранящий данные адресного классификатора, регистр с информацией о том, какой день недели является рабочим, а какой – выходным, и многие другие. Даже если одним из измерений непериодического регистра сведений является дата – он не становится от этого периодическим.
В противоположность непериодическому регистру, который, в сущности, хранит одни и те же показатели, периодический регистр может хранить историю изменения этих показателей. Такие регистры могут иметь различную периодичность. Например, для регистра, призванного фиксировать курсы валют, разумно будет установить периодичность в пределах дня, так как курсы валют обычно фиксируются в пределах одного дня.

193
Другая классификация регистров сведений заключается в том, является ли регистр
независимым или подчиненным регистратору. Независимый регистр сведений мы можем заполнять самостоятельно, вручную вводя в него данные непосредственно в таблице регистра. Когда же регистр подчинен регистратору, записи в него производятся при проведении документа-регистратора.
Рассмотрим использование периодического независимого регистра сведений на примере с курсами валют. Для начала создадим новый справочник. Назовем его
Валюты, включим в подсистему Справочники, других настроек для данного справочника задавать не будем. Нас вполне устроит возможность задать наименование валюты с помощью стандартного реквизита.
Создадим новый регистр сведений КурсыВалют, установим его периодичность – В пределах дня, рис. 9.1.
Рис. 9.1. Создание регистра сведений
На закладке Подсистемы включим регистр в подсистему Справочники.
На закладке Данные (рис. 9.2.) добавим следующее:
Измерения:
Имя: Валюта, тип СправочникСсылка.Валюты. Флаги Ведущее, Основной отбор и
Запрет незаполненных значений установлены
Ресурсы
Имя: Курс, тип Число, длина 10, точность 4
Имя: Кратность, тип Число, длина 10, точность 0
Исключим регистр из состава общего реквизита Организация.
В ресурсе Курс мы будем хранить курс, который может выражаться числом с точностью до 4-х знаков после запятой. В ресурсе Кратность мы будем хранить кратность валюты по отношению к рублю. Например, для американского доллара курс может быть 34.3234, а кратность 1 – то есть, за один доллар дают 34.3234 рубля.

194
Рис. 9.2. Настройка состава данных регистра сведений
Воспользуемся созданной группой объектов в пользовательском режиме. Здесь мы можем вручную вводить данные по валютам, рис. 9.3.
Замечание. В регистре сведений не может существовать две записи с одинаковым набором измерений, периодом (для периодических регистров) и регистратором (для регистров с периодичностью по позиции регистратора). Это принципиально отличает регистр сведений от регистра накоплений, в котором такая ситуация является вполне нормальной (например, два прихода одного товара на один и тот же склад).

195
Рис. 9.3.
Заполнение регистра сведений в пользовательском режиме
Некоторые измерения регистра сведений можно назначить ведущими, что возможно только для измерений, которые являются ссылками на объекты базы данных. Это нужно сделать, если записи регистра не имеют смысла без данного объекта. Тогда удаление объекта базы данных приведет к автоматическому удалению записей регистра сведений, ссылающихся на этот объект. Например, записи о курсе валюты не имеют смысла, если сама валюта была удалена.
Реквизиты регистра сведений
При создании регистра сведений, кроме измерений и ресурсов, можно определить
реквизиты регистра. Их можно представить как дополнительные колонки в таблице записей регистра. Реквизиты содержат сопроводительную информацию для каждой
записи регистра.
Например, в регистр сведений КурсыВалют можно добавить реквизит Источник, который будет показывать, откуда была получена информация о курсе валюты.
Разработчик может использовать реквизиты для отбора нужных записей при обходе выборки или при использовании запроса.
Следующий пример выбирает все записи регистра, у которых реквизит равен определенному значению:
Выборка = РегистрыСведений.КурсыВалют. Выбрать();
Пока Выборка.Следующий() Цикл
Если Выборка.Источник = ЗаданныйИсточник Тогда
КонецЕсли;
КонецЦикла;
Режим записи
При редактировании свойств регистра в Конфигураторе можно указать режим записи:

196
«Независимый» и «Подчинение регистратору», что определяет, как будут вноситься записи в регистр: вручную или документами.
Под регистратором понимается документ, которому принадлежат движения по этому регистру. Обычно при проведении документа формируются движения по регистру, но это необязательно. Движения могут быть сформированы из любого места программы, лишь бы они были привязаны к документу-регистратору
С помощью метода ПолучитьПоследнее можно получить значение курса валюты, действовавшее на определенную дату. Если в регистре сведений записи на эту дату не окажется, то будет возвращено значение на ближайшую предыдущую дату. Например, для валюты USD на дату 02.01.2012 не был введен курс, тогда будет браться курс на ближайшую предыдущую дату, т.е. на 01.01.2012.
9.2. Программная обработка данных из регистра сведений
Решим следующую задачу. Нам хотелось бы вывести курс валюты на текущую дату в списке справочника Валюты.
Для начала создадим форму списка справочника Валюты.
Реквизит Список имеет тип ДинамическийСписок. Это означает, что мы можем вмешаться в создание этого списка, так как он строится на основе некоего запроса, генерируемого, в данном случае, системой автоматически. Для того, чтобы самостоятельно отредактировать запрос, который лежит в основе динамического списка, нам нужно в окне его свойств (рис. 9.4. ) установить флаг
ПроизвольныйЗапрос.

197
Рис. 9.4. Редактирование свойств динамического списка
После установки этого флага мы можем нажать на ссылку Открыть у поля Настройка
списка и увидеть, какой именно запрос система построила для создания этого списка, рис. 9.5.
Рис. 9.5. Запрос по умолчанию для заполнения динамического списка
Дополним запрос таким образом, чтобы он выводил в дополнение к запрошенным полям еще и наиболее свежее значение курса. Запрос можно ввести вручную в поле
Запрос, воспользоваться конструктором запроса, доступным из этого же поля.
ВЫБРАТЬ
СправочникВалюты.Ссылка,
СправочникВалюты.ВерсияДанных,
СправочникВалюты.ПометкаУдаления,
СправочникВалюты.Предопределенный,
СправочникВалюты.Код,
СправочникВалюты.Наименование,
КурсыВалютСрезПоследних.Курс
ИЗ
Справочник.Валюты КАК СправочникВалюты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.
СрезПоследних
КАК КурсыВалютСрезПоследних
ПО СправочникВалюты.Ссылка = КурсыВалютСрезПоследних.Валюта
Здесь мы получаем из виртуальной таблицы КурсыВалютСрезПоследних наиболее поздние значения курса, не прибегая к специальной настройке ее параметров.

198
После показанной модификации запроса, формирующего динамический список разместим в форме списка справочника новое поле Курс, которое будет доступно в списке реквизитов динамического списка (рис. 9.6.).
Рис. 9.6. Добавление в форму списка поля Курс
Форма списка приобретет вид, показанный на рис. 9.7.

199
Рис. 9.7. Измененная форма списка справочника.
Поскольку режим записи у регистра сведений Курсы валют независимый, данные в него вводятся интерактивно, т.е., также как в справочник. Однако после появления курса в форме списка можно разместить это поле и в форме элемента для того, чтобы редактировать это поле так, как редактируется в форме реквизит справочника.
Для этого создадим форму элемента, внесем в нее реквизит формы Курс и перенесем этот реквизит на форму, рис. 9.8.

200
Рис.9.8. Добавление в форму элемента нового реквизита формы
Для того, чтобы введенное в поле Курс значение записалось в регистр сведений, необходимо сформировать обработчик события ПриИзменении, рис. 9.9.
Рис.9.9. Назначение процедуры-обработчика для событии ПриИзменении
В теле обработчика запишем:
&НаКлиенте
Процедура КурсПриИзменении(Элемент)
ЗаписатькурсНаСервере();
КонецПроцедуры
Процедура ЗаписатькурсНаСервере()
РегистрКурсыВалют =
РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
РегистрКурсыВалют.Период = ТекущаяДата();
РегистрКурсыВалют.Валюта = Объект.Ссылка;
РегистрКурсыВалют.Курс = Курс;
РегистрКурсыВалют.Кратность = 1;
РегистрКурсыВалют.Записать();
КонецПроцедуры
Форма элемента справочника, Рис.9.10.

201
Рис. 9.10. Форма элемента справочника после добавления нового реквизита формы
Наконец, при открытии формы элемента справочника желательно, чтобы поле Курс принимало последнее значение из регистра сведений на текущую дату. Для этого в обработчик события ПриОткрытии необходимо написать текст:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
ПрочитатьКурсНаСервере();
КонецПроцедуры
Процедура ПрочитатьКурсНаСервере()
РегистрКурсыВалют = РегистрыСведений.КурсыВалют;
Отбор = Новый Структура("Валюта",Объект.Ссылка);
СтруктураКурс =
РегистрКурсыВалют.ПолучитьПоследнее(ТекущаяДата(), Отбор);
Курс= СтруктураКурс.Курс;
КонецПроцедуры
9.3. Варианты заданий
Выполнение задания состоит из следующих этапов:
 Создать новую подсистему «Лабораторная работа 6». Все новые объекты, созданные в данной работе, поместить в данную подсистему.
 В справочниках, структура которых приведена в главе 3, один из реквизитов объявлен периодическим, т.е. система должна хранить его историю изменения во времени ( такой реквизит помечен * - см. ниже). Необходимо сформировать новый справочник с одноименным названием (добавить в конце названия справочника цифру 1). Для хранения истории изменения поля, помеченного *, использовать периодический регистр сведений. Структуру регистра сведений разработать самостоятельно. Из реквизитов справочника данное поле удалить. В форму элемента справочника ввести одноименный реквизит формы.
 При открытии формы элемента справочника на экране в данном поле ввода должно появиться последнее значение данного реквизита, взятое из регистра сведений.
 При вводе изменений в данном поле ввода это изменение должно сохраняться в регистре сведений.

202
 Включить в форму списка это поле и обеспечить при открытии формы списка означивание этого поля последним значением из регистра сведений на текущую дату.
 Сформировать отчет – справку, вызываемую из формы списка справочника следующей формы :
История изменения реквизита < > для объекта < >
Дата
Значение реквизита
Замечание . Объект – это элемент справочника, на котором стоит курсор в форме списка.
 Разработать печатную форму вывода элементов справочника. Периодический реквизит включить в печатную форму справочника. В качестве значения помеченного «*» реквизита из регистра сведений брать значение на выбранную дату. Таким образом, при запуске печатной формы предварительно должен происходить запрос даты. Использовать конструктор запроса с обработкой результата.
Вариант 1
Справочник основных средств (ОС):
1) Инвентарный номер ОС;
2) Наименование ОС;
3) Материально ответственное лицо (Сотрудник)*;
4) Первоначальный износ;
5) Дата ввода в эксплуатацию;
6) Год выпуска.
7) Срок эксплуатации ( в мес.)
Табличная часть элементов справочника содержит список подразделений, которым принадлежало ОС в течение времени эксплуатации и имеет следующую структуру:
1) Дата появления в подразделении
2) Подразделение.
Вариант 2
Справочник товаров:
1) Код товара;
2) Наименование товара;
3) Основная единица измерения;
4) Закупочная цена* ;
5) Розничная цена .
Табличная часть элементов справочника содержит список возможных единиц измерений каждого товара и имеет следующую структуру:
1) единица измерения;
2) Коэффициент пересчета относительно основной единицы измерения
Вариант 3
1) Справочник сотрудников:
2) Табельный номер сотрудника;

203 3) ФИО сотрудника;
4) Тип сотрудника (выбирается из списка);
5) Дата поступления на работу;
6) Оклад*;
7) Признак членства в профсоюзе.
Табличная часть элементов справочника содержит список детей сотрудника и имеет следующую структуру:
1) Пол (выбирается из списка);
2) ФИО ребенка.
3) Дата рождения
Вариант 4
Справочник контрагентов:
1) Код контрагента;
2) Наименование контрагента;
3) Адрес контрагента;
4) Расчетный счет;
5) Телефон ;
6) Размер кредита.
Табличная часть элементов справочника содержит список договоров контрагента и имеет следующую структуру:

Код договора;

Наименование договора.

Дата заключения договора
 условия договора (текст)
Вариант 5
Справочник транспортных средств:
1.
Тип транспортного средства (выбирается из списка);
2.
Наименование транспортного средства;
3.
Объем двигателя;
4.
Мощность двигателя;
5.
Дата выпуска.
6.
Водитель (Сотрудник)*.
Табличная часть элементов справочника содержит график прохождения технического осмотра (ТО) транспортного средства и имеет следующую структуру:

Номер по порядку;

Дата прохождения ТО;

Примечание (текст).
Вариант 6
Справочник регистрационных карточек больного:

Код больного;

ФИО больного;

Место работы*;

Дата рождения;

204

Пол (выбирается из списка).
Табличная часть элементов справочника содержит данные об истории болезни больного и имеет следующую структуру:

Наименование болезни;

Дата начала заболевания;

Дата выздоровления.
Вариант 7
Справочник фракций в государственной думе:

Код фракции;

Наименование фракции;

ФИО лидера фракции*.
Табличная часть элементов справочника содержит список депутатов фракции и имеет следующую структуру:

ФИО депутата;

Год рождения;

Наименование региона;

Получаемое жалование.
Вариант 8
Справочник персональных компьютеров:

Тип процессора (выбирается из списка);

Объем оперативной памяти*;

Частота процессора;

Наличие звуковой карты;

Размер диагонали монитора.
Табличная часть элементов справочника содержит список цен компьютера и имеет следующую структуру:
1.
Тип цен ( оптовая, розничная, закупочная);
2.
Сумма;
3.
Валюта (выбирается из списка).
Вариант 9
Справочник библиографических единиц:
1.
Вид библиографической единицы (выбирается из списка);
2.
ФИО автора;
3.
Наименование библиографической единицы;
4.
Год издания;
5.
Издательство.
6.
Тираж*
Табличная часть элементов справочника содержит список библиографических ссылок на библиографическую единицу и имеет следующую структуру:

Автор ссылки;

Наименование ссылки;

Год издания ссылки.

205
Вариант 10
Справочник факультетов университета:
1.
Наименование факультета;
2.
ФИО декана*;
3.
Количество студентов на факультете;
4.
Год основания.
Табличная часть элементов справочника содержит список кафедр факультета и имеет следующую структуру:
1.
Наименование кафедры;
2.
ФИО заведующего кафедрой.
3.
Количество штатных эдиниц
Вариант 11
Справочник кафедр ВУЗа:

Наименование кафедры;

ФИО заведующего кафедрой*;

Количество студентов на кафедре;

Год основания.
Табличная часть элементов справочника содержит список дисциплин, изучаемых на кафедре и имеет следующую структуру:
1.
Наименование дисциплины;
2.
ФИО преподавателя;
3.
Количество часов;
4.
Наличие экзамена;
5.
Наличие курсовой работы.
Вариант 12
Справочник трудовой книжки работника:
1.
Код работника;
2.
ФИО работника;
3.
Дата рождения;
4.
Образование.
5.
Подразделение предприятия ( место работы)*
Табличная часть элементов справочника содержит список мест работы каждого работника и имеет следующую структуру:

Наименование места работы;

Дата поступления;

Дата увольнения.
Вариант 13
Справочник «Виды оплат и удержаний»
 код вида оплаты/удержания

Наименование вида оплаты/удержания

Тип вида оплаты/удержания (долговременный, разовый)

Счет ( с субсчетом) (корреспондирующий для счета 70 - расчеты по оплате труда)

Подразделение, сотрудникам которого может быть назначен данный вид расчета*

206
Табличная часть элементов справочника содержит список правил удержания налогов и взносов( НДФЛ, Профсоюзный взнос, ЕСН, алименты) с каждого вида оплаты и имеет следующую структуру:

Налог (взнос)

Признак удержания налога( взноса)
Вариант 14
Справочник «парк машин»
1.
Инвентарный номер
2.
Наименование
3.
Марка
4.
Грузоподъемность
5.
Марка горючего, используемого машиной*
Табличная часть элементов справочника содержит список водителей, работающих на данном транспорте и имеет следующую структуру:
1.
Водитель
2.
Дата работы на данной машине
Вариант 15
Справочник сотрудников:

Табельный номер сотрудника;

ФИО сотрудника;

Тип сотрудника (выбирается из списка);

Дата поступления на работу;

Оклад*;

Признак членства в профсоюзе.
Табличная часть элементов справочника содержит список долговременных доплат и удержаний сотрудника и имеет следующую структуру:
1.
Вид расчета
2.
Дата начала действия персонального расчета
3.
Дата окончания действия расчета
4.
Величина ( либо сумма, если расчет вводится фиксированной суммой, либо процент, если результат расчета формируется как процент от расчетной базы).
Вариант 16
Справочник видов работ

Код вида работ

Название вида работ

Объект, для которого предназначен данный вид работы*
Табличная часть элементов справочника содержит список норм и расценок для каждого вида работ и имеет следующую структуру:

Единица измерения

Норма

Расценка (руб.)

207
Вариант 17
Справочник складов

Номер склада

Название склада

Занимаемая площадь (м*м)

Адрес склада

Назначение склада (строка)*
Табличная часть элементов справочника содержит список материально-ответственных лиц каждого склада и имеет следующую структуру:
1.
Табельный номер
2.
ФИО
3.
Домашний адрес
Вариант 18
Справочник норм расхода масел ,смазок и доп. топлива
1.
Код модели автомобиля
2.
Название модели автомобиля
3. грузоподъемность
4.
Водитель*
Табличная часть элементов справочника содержит список норм расхода масел ,смазок и доп. топлива и имеет следующую структуру:
1.
Вид масел, топлива (Моторное масло, Нитрол, Солидол, Доп. Топливо)
2.
Норма расхода на 10 литров основного топлива
3.
Норма расхода как % общего расхода основного топлива
Вариант 19
Справочник профессий

Код профессии

Название профессии
 минимальная ставка должностного оклада данной профессии
 максимальная ставка должностного оклада данной профессии*
Табличная часть элементов справочника содержит список сотрудников, владеющих данной профессией на предприятии и имеет следующую структуру:

Сотрудник

Образование

Предыдущее место работы
Вариант 20
Штатное расписание ВУЗа
1. код подразделения ВУЗа
2.
Наименование подразделения ВУЗа
3.
ФИО руководителя подразделения*
Табличная часть элементов справочника содержит список должностей сотрудников подразделения и число ставок, выделенных для каждой должности каждому подразделению и имеет следующую структуру:

208

Должность

Общее число ставок данной должности

Из них занято
 свободно
Вариант 21
Справочник характерных видов расчетов подразделений предприятия
 код подразделения

Наименование подразделения

ФИО руководителя подразделения*
Табличная часть элементов справочника содержит с писок обязательных ( характерных) видов расчетов, используемых при расчете заработной платы всех работающих сотрудников данного подразделения и имеет следующую структуру:
1. вид расчета
2. дата начала действия
3.
Дата окончания действия
Вариант 22
Справочник сотрудников:

Табельный номер сотрудника;

ФИО сотрудника;

Пол сотрудника (выбирается из списка);

Дата поступления на работу;

Оклад;
 ставка*.
Табличная часть элементов справочника содержит список членов семьи сотрудника и имеет следующую структуру:
1. степень родства (из списка)
2.
ФИО
3.
Дата рождения
Вариант 23
Справочник пользователей
 код

Наименование

Пароль*
Табличная часть элементов справочника содержит список объектов, к которым пользователь имеет доступ и имеет следующую структуру:
1.
Тип объекта( фирма, контрагент, склад)
2.
Объект
Вариант 24
Справочник контрагентов:

Код контрагента;

Наименование контрагента;

Тип контрагента( юридическое или физическое лицо)

Адрес контрагента;

209

Основной расчетный счет*;
Табличная часть элементов справочника содержит список расчетных счетов контрагента и имеет следующую структуру:
1.
Код р/с;
2.
Наименование р/с
3.
Банк
4.
Валюта расчета
5.
Адрес банка
Вариант 25
Справочник товаров:
1.
Код товара;
2.
Наименование товара;
3. базовая единица измерения;
4.
Минимальный остаток*
5. ставка НДС
Табличная часть элементов справочника содержит список поставщиков каждого товара и имеет следующую структуру:

Поставщик ( контрагент)

Адрес поставщика

Закупочная цена поставщика

Дата последней поставки
1   ...   7   8   9   10   11   12   13   14   ...   17


написать администратору сайта