3 курс (заочка) / Методические пособия / Пособие для ответов на контрольные вопросы
.pdfКраткий справочник разработчика 921
Свойства и методы взаимодействия перечисленных объектов в большинстве своем аналогичны свойствам и методам объектов, предназначенных для работы со справочниками (см. раздел «Объекты встроенного языка для работы со справочниками» на стр. 905).
Последовательность событий при записи счета из формы счета (записать и закрыть)
Рис. 29.13. Последовательность событий при записи счета из формы счета
ПРИМЕЧАНИЕ
Заливкой выделены события, выполняющиеся в транзакции записи.
Краткий справочник разработчика 923
ВытесняющиеВидыРасчета.<имя>. Предопределенная табличная часть вида расчета – список вытесняющих видов расчета. Такая табличная часть определена только для планов видов расчета с признаком ИспользуетПериодДействия. Имеет единственную
колонку – ВидРасчета типа ПланВидовРасчетаСсылка.<имя>.
ВытесняющиеВидыРасчетаСтрока.<имя>. Строка предопределенной таблицы вытесняющих видов расчета.
ВедущиеВидыРасчета.<имя>. Предопределенная табличная часть вида расчета – список ведущих видов расчета. Имеет единственную
колонку – ВидРасчета типа ПланВидовРасчетаСсылка.<имя>.
ВедущиеВидыРасчетаСтрока.<имя>. Строка предопределенной таблицы ведущих видов расчета.
БазовыеВидыРасчета.<имя>. Предопределенная табличная часть вида расчета – список ведущих видов расчета. Такая табличная часть (свойство БазовыеВидыРасчета) определена только для планов видов расчета со свойством ЗависимостьОтБазы, не равным значению Не зависит. Имеет единственную колонку – Вид Расчета типа
ПланВидовРасчетаСсылка.<имя>.
БазовыеВидыРасчетаСтрока.<имя>. Строка предопределенной таблицы базовых видов расчета.
Свойства и методы взаимодействия перечисленных объектов в большинстве своем аналогичны у объектов, предназначенных для работы со справочниками (см. раздел «Объекты встроенного языка для работы со справочниками» на стр. 905).
924 1С:Предприятие 8.3. Практическое пособие разработчика
Последовательность событий при записи вида расчета из формы вида расчета (записать и закрыть)
Рис. 29.15. Последовательность событий при записи вида расчета из формы вида расчета
ПРИМЕЧАНИЕ
Заливкой выделены события, выполняющиеся в транзакции записи.
Краткий справочник разработчика 925
Регистры сведений
Объекты встроенного языка для работы с регистрами сведений
На следующей схеме изображено взаимодействие объектов встроенного языка для работы с регистрами сведений (рис. 29.16).
Рис. 29.16. Объекты встроенного языка для работы с регистрами сведений
ПРИМЕЧАНИЕ
Заливкой выделен объект манипулирования данными. Метод объекта, от которого идет стрелка, приводится в листинге под соответствующей цифрой, а объект, к которому идет стрелка, – это тип объекта, возвращаемого методом.
Узнай больше!
Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты встроенного языка для работы с прикладными данными» на стр. 896.
РегистрСведенийМенеджерЗаписи.<имя>. Позволяет читать, запи-
сывать и удалять отдельную запись регистра сведений. Используется только для регистров сведений, не изменяемых регистраторами, т. е. для которых в конфигураторе установлен режим записи Независимый.
926 1С:Предприятие 8.3. Практическое пособие разработчика
РегистрСведенийЗапись.<имя>. Предоставляет доступ к записи регистра сведений. Объект не создается непосредственно, а предоставляется другими объектами, связанными с регистром сведений. Например, данный объект представляет записи регистра в наборе записей.
РегистрСведенийКлючЗаписи.<имя>. Представляет собой набор значений, однозначно идентифицирующих запись регистра. Объект используется в тех случаях, когда необходимо сослаться на определенную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.
Ниже приведены примеры использования объектов встроенного языка для работы с регистрами сведений (листинг 29.8).
Листинг 29.8. Примеры использования объектов
1. // Глобальный контекст // РегистрыСведений
// Пример: получить текущую цену из периодического регистра сведений "Цены". Элемент = Справочники.Номенклатура.НайтиПоКоду(4); Отбор = Новый Структура("Номенклатура", Элемент);
ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(ТекущаяДата(), Отбор); Цена = ЗначенияРесурсов.Цена;
2. // объект РегистрыСведенийМенеджер
//.<имя регистра сведений>
//[<имя регистра сведений>]
//Для Каждого … Из … Цикл … КонецЦикла;
//Пример: Получить начальную цену из периодического регистра сведений Цены. ИмяРегистра = "Цены"; Услуга = Справочники.Номенклатура.НайтиПоНаименованию("Диагностика"); Отбор = Новый Структура;
Отбор.Вставить("Номенклатура", Услуга ); Цена = РегистрыСведений[ИмяРегистра].ПолучитьПервое(ТекущаяДата(), Отбор).Цена;
3.// объект РегистрСведенийМенеджер.<имя>
//СоздатьКлючЗаписи()
//Пример: активизировать требуемую строку списка регистра сведений. СтруктураКлючевыхПолей = Новый Структура; СтруктураКлючевыхПолей.Вставить("Период", Дата("20040331000000")); СтруктураКлючевыхПолей.Вставить(
"Номенклатура", Справочники.Номенклатура.НайтиПоКоду("0000006")); Элементы.Материалы.ТекущаяСтрока = РегистрыСведений.Цены.СоздатьКлючЗаписи(
СтруктураКлючевыхПолей);
Краткий справочник разработчика 927
4.// объект РегистрСведенийМенеджер.<имя>
//СоздатьНаборЗаписей()
//Пример: показать номенклатуру, цена на которую была установлена в заданную дату и время. Набор = РегистрыСведений.Цены.СоздатьНаборЗаписей(); Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина); Набор.Прочитать(); Для Каждого ОчереднаяЗапись Из Набор Цикл
Сообщить("Номенклатура = "+ ОчереднаяЗапись.Номенклатура +", цена = "+ ОчереднаяЗапись.Цена);
КонецЦикла;
5.// объект РегистрСведенийМенеджер.<имя> // СоздатьМенеджерЗаписи()
// Пример: добавить новое значение цены в регистр "Цены". Запись = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); Запись.Период = ТекущаяДата();
Запись.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("0000005"); Запись.Цена = 568; Запись.Записать();
6.// объект РегистрСведенийНаборЗаписей.<имя>
//[<индекс элемента коллекции>]
//Для Каждого … Из … Цикл … КонецЦикла;
//Пример: показать номенклатуру, цена на которую была установлена в заданную дату и время. Набор = РегистрыСведений.Цены.СоздатьНаборЗаписей(); Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина); Набор.Прочитать(); Для Каждого ОчереднаяЗапись Из Набор Цикл
Сообщить("Номенклатура = "+ ОчереднаяЗапись.Номенклатура + ", цена = " + ОчереднаяЗапись.Цена);
КонецЦикла;
7.// объект РегистрСведенийВыборка.<имя> // ПолучитьМенеджерЗаписи()
// Пример: удалить все записи регистра сведений за текущий месяц. Выборка = РегистрыСведений.Цены.Выбрать(
НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата())); Пока Выборка.Следующий() цикл Выборка.
ПолучитьМенеджерЗаписи().Удалить();
КонецЦикла;
8.// объект РегистрСведенийМенеджер.<имя>
//Выбрать()
//ВыбратьПоРегистратору()
// Пример: показать изменение цен на элемент номенклатуры в течение года.
Отбор = Новый Структура("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("0000005")); Выборка = РегистрыСведений.Цены.Выбрать(НачалоГода(ТекущаяДата()), ТекущаяДата(), Отбор); Пока Выборка.Следующий() цикл
Сообщить("Дата = " + Выборка.Период + ", цена = " + Выборка.Цена); КонецЦикла;
Краткий справочник разработчика 929
ПРИМЕЧАНИЕ
Заливкой выделены события, выполняющиеся в транзакции записи.
Работа с формой записи регистра сведений осуществляется при помощи объекта РегистрСведенийМенеджерЗаписи.<имя>, который,
в свою очередь, использует объект РегистрСведенийНаборЗапи-
сей.<имя>.
Особенности внутренней реализации объекта РегистрСведенийМенеджерЗаписи.<имя> таковы, что в случае сохранения существующей записи регистра сведений обработчики события Перед Записью() и ПриЗаписи() модуля набора записей будут вызваны дважды: сначала для старого набора записей (с количеством записей 0) и затем для нового (с количеством записей 1).