Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Радченко М.Г. 1С- Предприятие 8.3. Практическое пособие разработчика. Примеры и типовые приемы (2013).word.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
20.81 Mб
Скачать

Рис. 29.11. Последовательность событий при записи вида характеристики

Из формы элемента

ПРИМЕЧАНИЕ

Планы счетов

Объекты встроенного языка для работы с планами счетов

На следующей схеме изображено взаимодействие объектов встроен­ного языка для работы с планами счетов (рис. 29.12).

Рис. 29.12. Объекты встроенного языка для работы с планами счетов ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными.

УЗНАЙ БОЛЬШЕ!

Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты встроенного языка для работы с прикладными данными» на стр. 896.

ПланСчетовВидыСубконто.<имя>. Используется для доступа к методам специальной табличной части счета ВидыСубконто в целом.

ПланСчетовВидыСубконтоСтрока.<имя>. Строка специальной табличной части счета ВидыСубконто.

Свойства и методы взаимодействия перечисленных объектов в боль­шинстве своем аналогичны свойствам и методам объектов, пред­назначенных для работы со справочниками (см. раздел «Объекты встроенного языка для работы со справочниками» на стр. 905).

Последовательность событий при записи счета из формы счета (записать и закрыть)

Рис. 29.13. Последовательность событий при записи счета из формы счета

ПРИМЕЧАНИЕ

Планы видов расчета

Объекты встроенного языка для работы с планом видов расчета

На следующей схеме изображено взаимодействие объектов встроен­ного языка для работы с планами видов расчета (рис. 29.14).

Рис. 29.14. Объекты встроенного языка для работы с планами видов расчета

ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными. УЗНАЙ БОЛЬШЕ!

Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты встроенного языка для работы с прикладными данными» на стр. 896.

ВытесняющиеВидыРасчета.<имя>. Предопределенная табличная часть вида расчета - список вытесняющих видов расчета. Такая табличная часть определена только для планов видов расчета с признаком ИспользуетПериодДействия. Имеет единственную колонку - ВидРасчета типа ПланВидовРасчетаСсылка.<имя>.

ВытесняющиеВидыРасчетаСтрока.<имя>. Строка предопределенной таблицы вытесняющих видов расчета.

ВедущиеВидыРасчета.<имя>. Предопределенная табличная часть вида расчета - список ведущих видов расчета. Имеет единственную колонку - ВидРасчета типа ПланВидовРасчетаСсылка.<имя>.

ВедущиеВидыРасчетаСтрока.<имя>. Строка предопределенной

таблицы ведущих видов расчета.

БазовыеВидыРасчета.<имя>. Предопределенная табличная часть вида расчета - список ведущих видов расчета. Такая табличная часть (свойство БазовыеВидыРасчета) определена только для планов видов расчета со свойством ЗависимостьОтБазы, не равным значению Не зависит. Имеет единственную колонку - Вид Расчета типа ПланВидовРасчетаСсылка.<имя>.

БазовыеВидыРасчетаСтрока.<имя>. Строка предопределенной

таблицы базовых видов расчета.

Свойства и методы взаимодействия перечисленных объектов в боль­шинстве своем аналогичны у объектов, предназначенных для работы со справочниками (см. раздел «Объекты встроенного языка для работы со справочниками» на стр. 905).

Последовательность событий при записи вида расчета из формы вида расчета (записать и закрыть)

Рис. 29.15. Последовательность событий при записи вида расчета из формы вида расчета

ПРИМЕЧАНИЕ

Регистры сведений

Объекты встроенного языка для работы с регистрами сведений

На следующей схеме изображено взаимодействие объектов встроен­ного языка для работы с регистрами сведений (рис. 29.16).

Рис. 29.16. Объекты встроенного языка для работы с регистрами сведений ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными. Метод объекта, от которого идет стрелка, приводится в листинге под соответствующей цифрой, а объект, к которому идет стрелка, - это тип объекта, возвра­щаемого методом.

УЗНАй БОЛЬШЕ!

Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты, встроенного языка для работы с прикладными данными» на стр. 896.

РегистрСведенийМенеджерЗаписи.<имя>. Позволяет читать, запи­сывать и удалять отдельную запись регистра сведений. Используется только для регистров сведений, не изменяемых регистраторами, т. е. для которых в конфигураторе установлен режим записи Независимый.

РегистрСведенийЗапись.<имя>. Предоставляет доступ к записи регистра сведений. Объект не создается непосредственно, а предо­ставляется другими объектами, связанными с регистром сведений. Например, данный объект представляет записи регистра в наборе записей.

РегистрСведенийКлючЗаписи.<имя>. Представляет собой набор значений, однозначно идентифицирующих запись регистра. Объект используется в тех случаях, когда необходимо сослаться на опреде­ленную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.

Ниже приведены примеры использования объектов встроенного языка для работы с регистрами сведений (листинг 29.8).

Листинг 29.8. Примеры использования объектов

// Глобальный контекст // РегистрыСведений

// Пример: получить текущую цену из периодического регистра сведений "Цены".

Элемент = Справочники.Номенклатура.НайтиПоКоду(4);

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

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

Цена = ЗначенияРесурсов.Цена;

// объект РегистрыСведенийМенеджер // .<имя регистра сведений>

// [<имя регистра сведений>]

// Для Каждого ... Из ... Цикл ... КонецЦикла;

// Пример: Получить начальную цену из периодического регистра сведений Цены.

ИмяРегистра = "Цены";

Услуга = Справочники.Номенклатура.НайтиПоНаименованию("Диагностика");

Отбор = Новый Структура;

Отбор.Вставить("Номенклатура", Услуга );

Цена = РегистрыСведений[ИмяРегистра].ПолучитьПервое(ТекущаяДата(), Отбор).Цена;

// объект РегистрСведенийМенеджер.<имя>

// СоздатьКлючЗаписи()

// Пример: активизировать требуемую строку списка регистра сведений.

СтруктураКлючевыхПолей = Новый Структура;

СтруктураКлючевыхПолей.Вставить("Период", Дата("20040331000000")); СтруктураКлючевыхПолей.Вставить(

"Номенклатура", Справочники.Номенклатура.НайтиПоКоду("0000006")); Элементы.Материалы.ТекущаяСтрока = РегистрыСведений.Цены.СоздатьКлючЗаписи( СтруктураКлючевыхПолей);

// объект РегистрСведенийМенеджер.<имя>

// СоздатьНаборЗаписей()

// Пример: показать номенклатуру, цена на которую была установлена в заданную дату и время. Набор = РегистрыСведений.Цены.СоздатьНаборЗаписейО; Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина);

Набор.Прочитать();

Для Каждого ОчереднаяЗапись Из Набор Цикл Сообщить("Номенклатура =

"+ ОчереднаяЗапись.Номенклатура +", цена = "+ ОчереднаяЗапись.Цена);

КонецЦикла;

// объект РегистрСведенийМенеджер.<имя>

// СоздатьМенеджерЗаписи()

// Пример: добавить новое значение цены в регистр "Цены".

Запись = РегистрыСведений.Цены.СоздатьМенеджерЗаписиО;

Запись.Период = ТекущаяДата();

Запись.Номенклатура = Справочники.Номенклатура.НайтиПоКодуС'0000005'');

Запись.Цена = 568;

Запись.Записать();

// объект РегистрСведенийНаборЗаписей.<имя>

// [<индекс элемента коллекции>]

// Для Каждого ... Из ... Цикл ... КонецЦикла;

// Пример: показать номенклатуру, цена на которую была установлена в заданную дату и время. Набор = РегистрыСведений.Цены.СоздатьНаборЗаписейО; Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина);

Набор.Прочитать();

Для Каждого ОчереднаяЗапись Из Набор Цикл Сообщить("Номенклатура =

"+ ОчереднаяЗапись.Номенклатура + ", цена = " + ОчереднаяЗапись.Цена);

КонецЦикла;

// объект РегистрСведенийВыборка.<имя>

// ПолучитьМенеджерЗаписи()

// Пример: удалить все записи регистра сведений за текущий месяц.

Выборка = РегистрыСведений.Цены.Выбрать(

НачалоМесяца(ТекущаяДатаО), КонецМесяца(ТекущаяДата())); Пока Выборка.СледующийО цикл Выборка.

ПолучитьМенеджерЗаписи().Удалить();

КонецЦикла;

// объект РегистрСведенийМенеджер.<имя>

// Выбрать()

// ВыбратьПоРегистратору()

// Пример: показать изменение цен на элемент номенклатуры в течение года.

Отбор = Новый Структура("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("0000005")); Выборка = РегистрыСведений.Цены.Выбрать(НачалоГода(ТекущаяДатаО), ТекущаяДата(), Отбор); Пока Выборка.СледующийО цикл

Сообщить("Дата = " + Выборка.Период + ", цена = " + Выборка.Цена);

КонецЦикла;

Рис. 29.17. Последовательность событий при сохранении данных из формы записи регистра сведений

Последовательность событий при сохранении данных из формы записи регистра сведений (записать и закрыть)

ПРИМЕЧАНИЕ

Заливкой выделены события, выполняющиеся в транзакции записи.

Работа с формой записи регистра сведений осуществляется при помощи объекта РегистрСведенийМенеджерЗаписи.<имя>, который, в свою очередь, использует объект РегистрСведенийНаборЗапи- сей.<имя>.

Особенности внутренней реализации объекта РегистрСведенийМе- неджерЗаписи.<имя> таковы, что в случае сохранения суще­ствующей записи регистра сведений обработчики события Перед Записью() и ПриЗаписи() модуля набора записей будут вызваны дважды: сначала для старого набора записей (с количеством записей 0) и затем для нового (с количеством записей 1).

Последовательность событий при сохранении данных из формы набора записей регистра сведений (записать и закрыть)

Рис. 29.18. Последовательность событий при сохранении данных из формы набора записей регистра сведений

Регистры накопления

Объекты встроенного языка для работы с регистрами накопления

На следующей схеме изображено взаимодействие объектов встроен­ного языка для работы с регистрами накопления (рис. 29.19).

Рис. 29.19. Объекты встроенного языка для работы с регистрами накопления

ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными. Метод объекта, от которого идет стрелка, приводится в листинге под соответствующей цифрой, а объект, к которому идет стрелка, - это тип объекта, возвра­щаемого методом.

УЗНАй БОЛЬШЕ!

Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты встроенного языка для работы с прикладными данными» на стр. 896.

РегистрНакопленияЗапись.<имя>. Используется для доступа к записи регистра накопления. Объект не создается непосредственно, а предоставляется другими объектами, отвечающими за регистр накопления. Например, данный объект представляет записи регистра в наборе записей.

РегистрНакопленияКлючЗаписи.<имя>. Представляет собой набор значений, однозначно идентифицирующих запись регистра. Объект используется в тех случаях, когда необходимо сослаться на опреде­ленную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.

Ниже приведены примеры использования объектов встроенного языка для работы с регистрами сведений (листинг 29.9).

Листинг 29.9. Примеры использования объектов

// Глобальный контекст // РегистрыНакопления

// Пример: выполнить полный пересчет итогов регистра "ОстаткиМатериалов". РегистрыНакопления.ОстаткиМатериалов.ПересчитатьИтогиО;

// объект РегистрыНакопленияМенеджер // .<имя регистра накопления>

// [<имя регистра накопления^

// Для Каждого ... Из ... Цикл ... КонецЦикла;

// Пример: рассчитать итоги регистра "ОстаткиМатериалов" на указанную дату.

ИмяРегистра = ОстаткиМатериалов;

РегистрыНакопления[ИмяРегистра].УстановитьПериодРассчитанныхИтогов(УказаннаяДата);

// объект РегистрНакопленияМенеджер.<имя>

// СоздатьКлючЗаписи()

// Пример: активизировать требуемую строку списка регистра накопления.

СтруктураКлючевыхПолей = Новый Структура;

СгруктураКлючевыхПолей.Вставить(

"Регистратор", Документы.ПриходнаяНакладная.НайтиПоНомеру("0000002")); СтруктураКлючевыхПолей.Вставить("НомерСтроки", 2);

Элементы.Материалы.ТекущаяСтрока =

РегистрыНакопления.ОстаткиМатериалов.СоздатьКлючЗаписи(СтруктураКлючевыхПолей);

// объект РегистрНакопленияМенеджер.<имя>

// СоздатьНаборЗаписей()

// Пример: получить движения документа.

НужныйДокумент = Документы.ПриходнаяНакладная.НайтиПоНомеру(4);

Движения = РегистрыНакопления.ОстаткиМатериалов.СоздатьНаборЗаписей(); Движения.Отбор.Регистратор.Значение = НужныйДокумент;

Движения.Прочитать();

// объект РегистрНакопленияМенеджер.<имя>

// Выбрать()

// ВыбратьПоРегистратору()

// Пример: выбрать все записи регистра "ОстаткиМатериалов" за текущий месяц.

Выборка = РегистрыНакопления.ОстаткиМатериалов.Выбрать(

НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДатаО));

6. // объект РегистрНакопленияНаборЗаписей.<имя>

// [<индекс элемента коллекции>]

// Для Каждого ... Из ... Цикл ... КонецЦикла;

// Пример: получить движения документа.

НужныйДокумент = Документы.ПриходнаяНакладная.НайтиПоНомеру(4);

Движения = РегистрыНакопления.ОстаткиМатериалов.СоздатьНаборЗаписейО; Движения.Отбор.Регистратор.Значение = НужныйДокумент;

Движения.Прочитать();

Для Каждого ОчередноеДвижение Из Движения Цикл // Алгоритм обработки движений

КонецЦикла;

Рис. 29.20. Последовательность событий при сохранении набора записей регистра накопления из формы набора записей

Последовательность событий при сохранении набора записей регистра накопления из формы набора записей

Регистры бухгалтерии

Объекты встроенного языка для работы с регистрами бухгалтерии

На следующей схеме изображено взаимодействие объектов встроен­ного языка для работы с регистрами бухгалтерии (рис. 29.21).

Рис. 29.21. Объекты встроенного языка для работы с регистрами бухгалтерии

ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными.

УЗНАЙ БОЛЬШЕ!

Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты встроенного языка для работы с прикладными данными» на стр. 896.

РегистрБухгалтерииЗапись.<имя>. Используется для доступа к записи регистра бухгалтерии. Объект не создается непосред­ственно, а предоставляется другими объектами, отвечающими за регистр бухгалтерии. Например, данный объект представляет записи регистра в наборе записей.

РегистрБухгалтерииСубконто.<имя>. Коллекция значений субконто записи регистра бухгалтерии. Установка и получение значения конкретного субконто осуществляются через оператор [], в качестве параметра которому передается вид субконто, или через имя предо­пределенного субконто.

РегистрБухгалтерииКлючЗаписи.<имя>. Набор значений, одно­значно идентифицирующий запись регистра. Объект используется в тех случаях, когда необходимо сослаться на определенную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.

Свойства и методы взаимодействия перечисленных объектов в боль­шинстве своем аналогичны у объектов, предназначенных для работы с регистрами накопления (см. раздел «Объекты встроенного языка для работы с регистрами накопления» на стр. 905).

Модуль формы

набора записей

клиент

Перед

записью

Модуль формы

набора записей

сервер

Обработка

проверки заполнения

на сервере

Перед записью

на сервере

Модуль

набора записей

сервер

Обработка

проверки заполнения

Перед записью

Последовательность событий при сохранении набора записей регистра бухгалтерии из формы

Запись набора

записей

При записи

При записи

на сервере

После записи

После записи

на сервере

Перед

закрытием

При

закрытии

в базу данных

Рис. 29.22. Последовательность событий при сохранении набора записей регистра бухгалтерии из формы

Регистры расчета

Объекты встроенного языка для работы с регистрами расчетов

На следующей схеме изображено взаимодействие объектов встроен­ного языка для работы с регистрами расчета (рис. 29.23).

Глобальный контекст

РегистрыРасчетаМенеджер

РегистрРасчетаМенеджер.<имя>

РегистрРасчетаКлючЗаписи.<имя>

РегистрРасчетаВыборка.<имя>

РегистрРасчетаНаборЗаписей.<имя>

РегистрРасчетаЗапись.<имя>

ПерерасчетыМенеджер.<имя регистра оасчета>

ФактическийПериодДействия

ПерерасчетМенеджер.<имя>

ЭлементФактическогоПериодаДействия

ПерерасчетНаборЗаписей.<имя>

ПерерасчетЗапись.<имя>

Рис. 29.23. Объекты встроенного языка для работы с регистрами расчетов ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными.

УЗНАЙ БОЛЬШЕ!

Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты, встроенного языка для работы с прикладными данными» на стр. 896.

РегистрРасчетаЗапись.<имя>. Используется для доступа к записи регистра расчета. Объект не создается непосредственно, а предо­ставляется другими объектами, отвечающими за регистр расчета. Например, данный объект представляет записи регистра в наборе записей.

РегистрРасчетаКлючЗаписи.<имя>. Представляет собой набор значений, однозначно идентифицирующих запись регистра. Объект используется в тех случаях, когда необходимо сослаться на опреде­ленную запись. Например, он выступает в качестве значения свойства ТекущаяСтрока табличного поля, отображающего список записей регистра.

ПерерасчетыМенеджер.<имя регистра расчета>. Менеджер всех менеджеров перерасчетов регистра расчетов.

ПерерасчетМенеджер.<имя перерасчета>. Менеджер перерасчета служит для получения набора записей перерасчета.

ПерерасчетНаборЗаписей.<имя перерасчетах Набор записей пере­расчета.

ПерерасчетЗапись.<имя перерасчета>. Объект используется для доступа к записи перерасчета.

ФактическийПериодДействия. Массив значений типа ЭлементФакти- ческогоПериодаДействия.

ЭлементФактическогоПериодаДействия. Элемент фактического

периода действия.

Свойства и методы взаимодействия перечисленных объектов в боль­шинстве своем аналогичны у объектов, предназначенных для работы с регистрами накопления (см. раздел «Объекты встроенного языка для работы с регистрами накопления» на стр. 905).

Рис. 29.24. Последовательность событий при сохранении набора записей регистра расчета из формы

Последовательность событий при сохранении набора записей регистра расчета из формы

Планы обмена

Объекты встроенного языка для работы с планами обмена

На следующей схеме изображено взаимодействие объектов встроен­ного языка для работы с планами обмена (рис. 29.25).

Рис. 29.25. Объекты встроенного языка для работы с планами обмена ПРИМЕЧАНИЕ

Заливкой выделен объект манипулирования данными.

УЗНАЙ БОЛЬШЕ!

Про основные виды объектов встроенного языка можно прочитать в разделе «Объекты встроенного языка для работы с прикладными данными» на стр. 896.

ЗаписьСообщенияОбмена - объект предназначен для организации записи сообщения обмена данными.

ЧтениеСообщенияОбмена - объект предназначен для приема сообщений обмена данными. При начале чтения он осуществляет проверку правильности задания заголовка сообщения и отвергает неправильные сообщения. При завершении чтения данный объект модифицирует значение реквизита НомерПринятого соответствующего узла плана обмена в соответствии с номером принятого сообщения.

Свойства и методы взаимодействия перечисленных объектов в боль­шинстве своем аналогичны у объектов, предназначенных для работы со справочниками (см. раздел «Объекты встроенного языка для работы со справочниками» на стр. 905).

Последовательность событий при записи узла плана обмена из формы узла (записать и закрыть)