Различия
Здесь показаны различия между двумя версиями данной страницы.
common_all:workingwithobjects [2015/06/08 14:47] |
common_all:workingwithobjects [2015/06/08 14:47] (текущий) |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | {{ :common_pics:1c_128.png?nolink&128|}} | ||
+ | ====== Приемы работы с объектами конфигурации ====== | ||
+ | |||
+ | [[common_all:managedforms|назад]] | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ===== Константы ===== | ||
+ | |||
+ | Примеры использования объектов: | ||
+ | <code>1. // Глобальный контекст | ||
+ | // Константы | ||
+ | // Пример: установить значение константы. | ||
+ | |||
+ | Константы.Бухгалтер.Установить("Сидоров Петр Иванович"); | ||
+ | |||
+ | |||
+ | 2. // объект КонстантыМенеджер | ||
+ | // .<имя константы> | ||
+ | // [<имя константы>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // Пример: прочитать значение константы. | ||
+ | |||
+ | Результат = Константы.ПрефиксНумерации.Получить(); | ||
+ | Сообщить("Значение константы ПрефиксНумерации = "+ Результат); | ||
+ | |||
+ | // Пример: установить значение константы ПрефиксНумерации равным ЦБ. | ||
+ | |||
+ | Константы["ПрефиксНумерации"].Установить("ЦБ"); | ||
+ | Сообщить("Новое значение = " + Константы["ПрефиксНумерации"].Получить()); | ||
+ | |||
+ | // Пример: очистить значения всех констант. | ||
+ | |||
+ | Для КаждогоОчереднаяКонстанта ИзКонстанты Цикл | ||
+ | ОчереднаяКонстанта.Установить(Неопределено); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 3. // объект КонстантыМенеджер | ||
+ | // СоздатьНабор() | ||
+ | // Пример: установить новые значения нескольких констант. | ||
+ | |||
+ | Набор = Константы.СоздатьНабор("Руководитель, Бухгалтер"); | ||
+ | Набор.Руководитель = "Николаев Денис Павлович"; | ||
+ | Набор.Бухгалтер = "Николаева Людмила Сергеевна"; | ||
+ | Набор.Записать(); | ||
+ | |||
+ | |||
+ | 4. // объект КонстантаМенеджер.<имя> | ||
+ | // СоздатьМенеджерЗначения() | ||
+ | // Пример: вывести значения всех констант, существующих в конфигурации. | ||
+ | |||
+ | Для Каждого ОчереднаяКонстанта Из Константы Цикл | ||
+ | ИмяКонст = ОчереднаяКонстанта.СоздатьМенеджерЗначения().Метаданные().Имя; | ||
+ | ЗначениеКонст = ОчереднаяКонстанта.Получить(); | ||
+ | Сообщить("Константа "+ ИмяКонст +" = "+ ЗначениеКонст); | ||
+ | КонецЦикла;</code> | ||
+ | |||
+ | |||
+ | |||
+ | ===== Справочники ===== | ||
+ | |||
+ | Примеры использования объектов: | ||
+ | <code>1. // Глобальный контекст | ||
+ | // Справочники | ||
+ | // Пример: вывести все типы ссылок на элементы справочников, существующие в конфигурации. | ||
+ | |||
+ | Массив = Справочники.ТипВсеСсылки().Типы(); | ||
+ | Для Каждого ОчереднойТип из Массив Цикл | ||
+ | Сообщить(ОчереднойТип); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 2. // объект СправочникиМенеджер | ||
+ | // .<имя справочника> | ||
+ | // [<имя справочника>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // Пример: создать новую группу справочника "Номенклатура". | ||
+ | |||
+ | НоваяГруппа = Справочники.Номенклатура.СоздатьГруппу(); | ||
+ | НоваяГруппа.Наименование = "Моя новая группа"; | ||
+ | НоваяГруппа.Записать(); | ||
+ | |||
+ | // Пример: получить ссылку на справочник "Номенклатура". | ||
+ | |||
+ | Справочники["Номенклатура"].ПолучитьСсылку(); | ||
+ | |||
+ | |||
+ | 3. // объект СправочникМенеджер.<Имя справочника> | ||
+ | // НайтиПоКоду() | ||
+ | // НайтиПоНаименованию() | ||
+ | // НайтиПоРеквизиту() | ||
+ | // ПустаяСсылка() | ||
+ | // ПолучитьСсылку() | ||
+ | // .<имя предопределенного элемента справочника> | ||
+ | // Пример: проверить, помечен ли на удаление элемент справочника "Номенклатура" с кодом 13. | ||
+ | |||
+ | Если Справочники.Номенклатура.НайтиПоКоду(13).ПометкаУдаления Тогда | ||
+ | Сообщить("Элемент с кодом 13 помечен на удаление"); | ||
+ | КонецЕсли; | ||
+ | |||
+ | // Пример: является ли элемент справочника "Номенклатура" с наименованием "Услуги" группой. | ||
+ | |||
+ | Если Справочники.Номенклатура.НайтиПоНаименованию("Услуги", Истина).ЭтоГруппа Тогда | ||
+ | Сообщить("Элемент Услуги является группой"); | ||
+ | КонецЕсли; | ||
+ | |||
+ | // Пример: проверить, что для всех элементов задан вид номенклатуры. | ||
+ | |||
+ | ПустаяСсылкаПеречисления = Перечисления.ВидыНоменклатуры.ПустаяСсылка(); | ||
+ | Если Не Справочники.Номенклатура.НайтиПоРеквизиту("ВидНоменклатуры", ПустаяСсылкаПеречисления).Пустая() Тогда | ||
+ | Сообщить("Есть элементы, для которых не задан вид номенклатуры"); | ||
+ | КонецЕсли; | ||
+ | |||
+ | // Пример: передать пустую ссылку в параметр метода. | ||
+ | |||
+ | Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка()); | ||
+ | |||
+ | |||
+ | 4. // объект СправочникМенеджер.<Имя справочника> | ||
+ | // Выбрать() | ||
+ | // ВыбратьИерархически() | ||
+ | // Пример: вывести список элементов, расположенных в корне справочника. | ||
+ | |||
+ | Выборка = Справочники.Номенклатура.Выбрать(Справочники.Номенклатура.ПустаяСсылка()); | ||
+ | Пока Выборка.Следующий() Цикл | ||
+ | Если Не Выборка.ЭтоГруппа тогда | ||
+ | Сообщить(Выборка); | ||
+ | КонецЕсли; | ||
+ | КонецЦикла; | ||
+ | |||
+ | // Пример: удалить все элементы иерархического справочника. | ||
+ | |||
+ | Выборка = Справочники.Номенклатура.ВыбратьИерархически(); | ||
+ | Пока Выборка.Следующий() Цикл | ||
+ | Выборка.Удалить(); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 5. // объект СправочникМенеджер.<Имя справочника> | ||
+ | // СоздатьГруппу() | ||
+ | // СоздатьЭлемент() | ||
+ | // Пример: создать новый элемент справочника "Сотрудники". | ||
+ | |||
+ | НовыйЭлемент = Справочники.Сотрудники.СоздатьЭлемент(); | ||
+ | НовыйЭлемент.Наименование = "Смирнов Андрей Анатольевич"; | ||
+ | |||
+ | // Заполнить табличную часть "ТрудоваяДеятельность". | ||
+ | |||
+ | НоваяСтрокаТабличнойЧасти = НовыйЭлемент.ТрудоваяДеятельность.Добавить(); | ||
+ | НоваяСтрокаТабличнойЧасти.Организация = "ООО НТЦ"; | ||
+ | НоваяСтрокаТабличнойЧасти.НачалоРаботы = Дата(2013,02,01); | ||
+ | НоваяСтрокаТабличнойЧасти.ОкончаниеРаботы = Дата(2013,08,31); | ||
+ | НоваяСтрокаТабличнойЧасти.Должность = "Программист"; | ||
+ | НовыйЭлемент.Записать(); | ||
+ | |||
+ | |||
+ | 6. // объект СправочникОбъект.<Имя справочника>, СправочникСсылка.<Имя справочника> | ||
+ | // Владелец | ||
+ | // Родитель | ||
+ | // Ссылка | ||
+ | // Пример: запретить изменение подчиненных элементов, если у | ||
+ | // владельца установлено соответствующее свойство | ||
+ | // "ИзмененияЗапрещены" в модуле формы элемента справочника. | ||
+ | |||
+ | Процедура ПередЗаписью(Отказ) | ||
+ | Если Владелец.ИзмененияЗапрещены Тогда | ||
+ | Отказ = Истина; | ||
+ | КонецЕсли; | ||
+ | КонецПроцедуры | ||
+ | |||
+ | |||
+ | 7. // объект СправочникСсылка.<Имя справочника> | ||
+ | // ПолучитьОбъект() | ||
+ | // СправочникОбъект.<Имя справочника> | ||
+ | // Скопировать() | ||
+ | // Пример: изменить наименование элемента справочника. | ||
+ | |||
+ | Элемент = Справочники.Номенклатура.НайтиПоКоду(10).ПолучитьОбъект(); | ||
+ | Элемент.Наименование = "Мое новое наименование"; | ||
+ | Элемент.Записать(); | ||
+ | |||
+ | // Пример: заполнить справочник тестовыми данными. | ||
+ | |||
+ | Элемент = Справочники.Номенклатура.СоздатьЭлемент(); | ||
+ | Элемент.Наименование = "Тестовый элемент"; | ||
+ | Элемент.Записать(); | ||
+ | Для ш = 1 по 1000 Цикл | ||
+ | НовыйЭлемент = Элемент.Скопировать(); | ||
+ | НовыйЭлемент.Записать(); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 8. // объект СправочникВыборка.<Имя справочника> | ||
+ | // Ссылка | ||
+ | // Пример: заполнить табличную часть документа | ||
+ | // "ПриходнаяНакладная" всеми элементами из указанной группы справочника "Номенклатура". | ||
+ | |||
+ | Выборка = Справочники.Номенклатура.ВыбратьИерархически(ПолеВвода1); | ||
+ | Пока Выборка.Следующий() Цикл | ||
+ | СсылкаНаНоменклатуру = Выборка.Ссылка; | ||
+ | Если СсылкаНаНоменклатуру.ЭтоГруппа Тогда | ||
+ | Продолжить; | ||
+ | КонецЕсли; | ||
+ | НоваяСтрока = Материалы.Добавить(); | ||
+ | НоваяСтрока.Материал = СсылкаНаНоменклатуру; | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 9. // объект СправочникВыборка.<Имя справочника> | ||
+ | // ПолучитьОбъект() | ||
+ | // Пример: пометить все элементы неиерархического справочника на удаление. | ||
+ | |||
+ | Выборка = Справочники.Клиенты.Выбрать(); | ||
+ | Пока Выборка.Следующий() Цикл | ||
+ | Выборка.ПолучитьОбъект().УстановитьПометкуУдаления(Истина); | ||
+ | КонецЦикла;</code> | ||
+ | |||
+ | |||
+ | ===== Документы ===== | ||
+ | |||
+ | Примеры использования объектов: | ||
+ | <code>1. // Глобальный контекст | ||
+ | // Документы | ||
+ | // Пример: вывести все типы ссылок на элементы справочников, существующие в конфигурации. | ||
+ | |||
+ | Массив = Документы.ТипВсеСсылки().Типы(); | ||
+ | Для Каждого ОчереднойТип из Массив Цикл | ||
+ | Сообщить(ОчереднойТип); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 2. //объект ДокументыМенеджер | ||
+ | // .<имя документа> | ||
+ | // [<имя документа>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // Пример: получить макет для печати документа "Оказание услуги". | ||
+ | |||
+ | Макет = Документы["ОказаниеУслуги"].ПолучитьМакет("Печать"); | ||
+ | |||
+ | // Пример: получить ссылку на каждый из документов, существующих в конфигурации. | ||
+ | |||
+ | Для КаждогоОчереднойДокумент ИзДокументы Цикл | ||
+ | Ссылка = ОчереднойДокумент.ПолучитьСсылку(); | ||
+ | … | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 3. // объект ДокументМенеджер.<Имя документа> | ||
+ | // НайтиПоНомеру() | ||
+ | // НайтиПоРеквизиту() | ||
+ | // ПустаяСсылка() | ||
+ | // Пример: Проверить, проведен ли документ ПриходнаяНакладная с номером 3. | ||
+ | |||
+ | Если Документы.ПриходнаяНакладная.НайтиПоНомеру(3).Проведен Тогда | ||
+ | Сообщить("Документ с номером 3 проведен"); | ||
+ | КонецЕсли; | ||
+ | |||
+ | // Пример: Проверить, что во всех документах ПриходнаяНакладная заполнен реквизит Склад. | ||
+ | |||
+ | ПустаяСсылкаСклада = Справочники.Склады.ПустаяСсылка(); | ||
+ | Если Не Документы.ПриходнаяНакладная.НайтиПоРеквизиту("Склад", ПустаяСсылкаСклада).Пустая() Тогда | ||
+ | Сообщить("Есть документы, у которых не заполнен реквизит Склад"); | ||
+ | КонецЕсли; | ||
+ | |||
+ | |||
+ | 4. // объект ДокументМенеджер.<Имя документа> | ||
+ | // Выбрать() | ||
+ | // Пример: Выбрать все документы ПриходнаяНакладная за текущий месяц. | ||
+ | |||
+ | Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата())); | ||
+ | Пока Выборка.Следующий() Цикл | ||
+ | Сообщить(Выборка); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 5. // объект ДокументМенеджер.<Имя документа> | ||
+ | // СоздатьДокумент() | ||
+ | // Пример: Создать новый документ ПриходнаяНакладная. | ||
+ | |||
+ | НовыйДокумент = Документы.ПриходнаяНакладная.СоздатьДокумент(); | ||
+ | НовыйДокумент.Дата = ТекущаяДата(); | ||
+ | НовыйДокумент.Склад = Справочники.Склады.Основной; | ||
+ | |||
+ | // Заполнить табличную часть Материалы | ||
+ | |||
+ | НоваяСтрокаТабличнойЧасти = НовыйДокумент.Материалы.Добавить(); | ||
+ | НоваяСтрокаТабличнойЧасти.Материал = Справочники.Номенклатура.НайтиПоКоду(6); | ||
+ | НоваяСтрокаТабличнойЧасти.Количество = 10; | ||
+ | НоваяСтрокаТабличнойЧасти.Цена = 22.5; | ||
+ | НоваяСтрокаТабличнойЧасти.Сумма = 225; | ||
+ | НовыйДокумент.Записать(); | ||
+ | |||
+ | |||
+ | 6. // объект ДокументОбъект.<Имя документа>, объект ДокументСсылка.<Имя документа> | ||
+ | // Ссылка | ||
+ | // Пример: в модуле объекта вызвать процедуру проверки заполнения реквизитов документа. | ||
+ | |||
+ | Если Не ПроверитьЗаполнениеРеквизитов(ЭтотОбъект.Ссылка) Тогда | ||
+ | Сообщить("Реквизиты документа не заполнены!"); | ||
+ | КонецЕсли; | ||
+ | |||
+ | |||
+ | 7. // объект ДокументСсылка.<Имя документа>, объект ДокументОбъект.<Имя документа> | ||
+ | // ПолучитьОбъект() | ||
+ | // Скопировать() | ||
+ | // Пример: пометить документ на удаление. | ||
+ | |||
+ | НенужныйДокумент = Документы.ОказаниеУслуги.НайтиПоНомеру(13).ПолучитьОбъект(); | ||
+ | НенужныйДокумент.УстановитьПометкуУдаления(Истина); | ||
+ | |||
+ | |||
+ | 8. // объект ДокументВыборка.<Имя документа> | ||
+ | // Ссылка | ||
+ | // Сформировать список ссылок на все документы "ПриходнаяНакладная" за текущий месяц. | ||
+ | |||
+ | СписокНакладных = Новый СписокЗначений; | ||
+ | Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), | ||
+ | КонецМесяца(ТекущаяДата())); | ||
+ | Пока Выборка.Следующий() Цикл | ||
+ | СписокНакладных.Добавить(Выборка.Ссылка); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 9. // объект ДокументВыборка.<Имя документа> | ||
+ | // ПолучитьОбъект() | ||
+ | // Пример: удалить все документы "ПриходнаяНакладная". | ||
+ | |||
+ | Выборка = Документы.ПриходнаяНакладная.Выбрать(); | ||
+ | Пока Выборка.Следующий() Цикл | ||
+ | Выборка.ПолучитьОбъект().Удалить(); | ||
+ | КонецЦикла;</code> | ||
+ | |||
+ | |||
+ | ===== Перечисления ===== | ||
+ | |||
+ | Примеры использования объектов: | ||
+ | <code>1. // Глобальный контекст | ||
+ | // Перечисления | ||
+ | // Пример: получить значение перечисления по индексу. | ||
+ | |||
+ | Перечисления.ВидыНоменклатуры.Получить(0); | ||
+ | |||
+ | |||
+ | 2. // объект ПеречисленияМенеджер | ||
+ | // .<имя перечисления> | ||
+ | // [<имя перечисления>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // Пример: получить количество значений перечисления | ||
+ | Перечисления.["ВидыНоменклатуры"].Количество(); | ||
+ | |||
+ | |||
+ | 3. // объект ПеречислениеМенеджер.<Имя> | ||
+ | // .<имя значения перечисления> | ||
+ | // [<имя значения перечисления>] | ||
+ | // [<индекс элемента коллекции>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // ПустаяСсылка() | ||
+ | // Пример: получить пустую ссылку на значение перечисления. | ||
+ | |||
+ | … | ||
+ | ПустаяСсылкаПеречисления = Перечисления.ВидыНоменклатуры.ПустаяСсылка(); | ||
+ | Если ТекущаяНоменклатура.ВидНоменклатуры = ПустаяСсылкаПеречисления Тогда | ||
+ | // Предложить заполнение вида номенклатуры. | ||
+ | … | ||
+ | КонецЕсли; | ||
+ | …</code> | ||
+ | |||
+ | |||
+ | ===== Планы видов характеристик, Планы счетов, Планы видов расчета, Планы обмена ===== | ||
+ | |||
+ | Свойства и методы во многом аналогичны работе со свойствами и методами при работе со справочниками. | ||
+ | |||
+ | |||
+ | ===== Регистры сведений ===== | ||
+ | |||
+ | Примеры использования объектов: | ||
+ | <code>1. // Глобальный контекст | ||
+ | // РегистрыСведений | ||
+ | // Пример: получить текущую цену из периодического регистра сведений "Цены". | ||
+ | |||
+ | Элемент = Справочники.Номенклатура.НайтиПоКоду(4); | ||
+ | Отбор = Новый Структура("Номенклатура", Элемент); | ||
+ | ЗначенияРесурсов = РегистрыСведений.Цены.ПолучитьПоследнее(ТекущаяДата(), Отбор); | ||
+ | Цена = ЗначенияРесурсов.Цена; | ||
+ | |||
+ | |||
+ | 2. // объект РегистрыСведенийМенеджер | ||
+ | // .<имя регистра сведений> | ||
+ | // [<имя регистра сведений>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // Пример: Получить начальную цену из периодического регистра сведений Цены. | ||
+ | |||
+ | ИмяРегистра = "Цены"; | ||
+ | Услуга = Справочники.Номенклатура.НайтиПоНаименованию("Диагностика"); | ||
+ | Отбор = Новый Структура; | ||
+ | Отбор.Вставить("Номенклатура", Услуга ); | ||
+ | Цена = РегистрыСведений[ИмяРегистра].ПолучитьПервое(ТекущаяДата(), Отбор).Цена; | ||
+ | |||
+ | |||
+ | 3. // объект РегистрСведенийМенеджер.<имя> | ||
+ | // СоздатьКлючЗаписи() | ||
+ | // Пример: активизировать требуемую строку списка регистра сведений. | ||
+ | |||
+ | СтруктураКлючевыхПолей = Новый Структура; | ||
+ | СтруктураКлючевыхПолей.Вставить("Период", Дата("20040331000000")); | ||
+ | СтруктураКлючевыхПолей.Вставить("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("0000006")); | ||
+ | Элементы.Материалы.ТекущаяСтрока = РегистрыСведений.Цены.СоздатьКлючЗаписи(СтруктураКлючевыхПолей); | ||
+ | |||
+ | |||
+ | 4. // объект РегистрСведенийМенеджер.<имя> | ||
+ | // СоздатьНаборЗаписей() | ||
+ | // Пример: показать номенклатуру, цена на которую была установлена в заданную дату и время. | ||
+ | |||
+ | Набор = РегистрыСведений.Цены.СоздатьНаборЗаписей(); | ||
+ | Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина); | ||
+ | Набор.Прочитать(); | ||
+ | Для Каждого ОчереднаяЗапись Из Набор Цикл | ||
+ | Сообщить("Номенклатура = "+ ОчереднаяЗапись.Номенклатура +", цена = "+ ОчереднаяЗапись.Цена); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 5. // объект РегистрСведенийМенеджер.<имя> | ||
+ | // СоздатьМенеджерЗаписи() | ||
+ | // Пример: добавить новое значение цены в регистр "Цены". | ||
+ | |||
+ | Запись = РегистрыСведений.Цены.СоздатьМенеджерЗаписи(); | ||
+ | Запись.Период = ТекущаяДата(); | ||
+ | Запись.Номенклатура = Справочники.Номенклатура.НайтиПоКоду("0000005"); | ||
+ | Запись.Цена = 568; | ||
+ | Запись.Записать(); | ||
+ | |||
+ | |||
+ | 6. // объект РегистрСведенийНаборЗаписей.<имя> | ||
+ | // [<индекс элемента коллекции>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // Пример: показать номенклатуру, цена на которую была установлена в заданную дату и время. | ||
+ | |||
+ | Набор = РегистрыСведений.Цены.СоздатьНаборЗаписей(); | ||
+ | Набор.Отбор.Период.Установить(ЗаданнаяДата, Истина); | ||
+ | Набор.Прочитать(); | ||
+ | Для КаждогоОчереднаяЗапись ИзНабор Цикл | ||
+ | Сообщить("Номенклатура = "+ ОчереднаяЗапись.Номенклатура + ", цена = " + ОчереднаяЗапись.Цена); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 7. // объект РегистрСведенийВыборка.<имя> | ||
+ | // ПолучитьМенеджерЗаписи() | ||
+ | // Пример: удалить все записи регистра сведений за текущий месяц. | ||
+ | |||
+ | Выборка = РегистрыСведений.Цены.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата())); | ||
+ | Пока Выборка.Следующий() цикл Выборка.ПолучитьМенеджерЗаписи().Удалить(); | ||
+ | КонецЦикла; | ||
+ | |||
+ | |||
+ | 8. // объект РегистрСведенийМенеджер.<имя> | ||
+ | // Выбрать() | ||
+ | // ВыбратьПоРегистратору() | ||
+ | // Пример: показать изменение цен на элемент номенклатуры в течение года. | ||
+ | |||
+ | Отбор = Новый Структура("Номенклатура", Справочники.Номенклатура.НайтиПоКоду("0000005")); | ||
+ | Выборка = РегистрыСведений.Цены.Выбрать(НачалоГода(ТекущаяДата()), ТекущаяДата(), Отбор); | ||
+ | Пока Выборка.Следующий() цикл | ||
+ | Сообщить("Дата = " + Выборка.Период + ", цена = " + Выборка.Цена); | ||
+ | КонецЦикла;</code> | ||
+ | |||
+ | |||
+ | ===== Регистры накопления ===== | ||
+ | |||
+ | Примеры использования объектов: | ||
+ | <code>1. // Глобальный контекст | ||
+ | // РегистрыНакопления | ||
+ | // Пример: выполнить полный пересчет итогов регистра "ОстаткиМатериалов". | ||
+ | |||
+ | РегистрыНакопления.ОстаткиМатериалов.ПересчитатьИтоги(); | ||
+ | |||
+ | |||
+ | 2. // объект РегистрыНакопленияМенеджер | ||
+ | // .<имя регистра накопления> | ||
+ | // [<имя регистра накопления>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // Пример: рассчитать итоги регистра "ОстаткиМатериалов" на указанную дату. | ||
+ | |||
+ | ИмяРегистра = ОстаткиМатериалов; | ||
+ | РегистрыНакопления[ИмяРегистра].УстановитьПериодРассчитанныхИтогов(УказаннаяДата); | ||
+ | |||
+ | |||
+ | 3. // объект РегистрНакопленияМенеджер.<имя> | ||
+ | // СоздатьКлючЗаписи() | ||
+ | // Пример: активизировать требуемую строку списка регистра накопления. | ||
+ | |||
+ | СтруктураКлючевыхПолей = Новый Структура; | ||
+ | СтруктураКлючевыхПолей.Вставить("Регистратор", Документы.ПриходнаяНакладная.НайтиПоНомеру("0000002")); | ||
+ | СтруктураКлючевыхПолей.Вставить("НомерСтроки", 2); | ||
+ | Элементы.Материалы.ТекущаяСтрока = РегистрыНакопления.ОстаткиМатериалов.СоздатьКлючЗаписи(СтруктураКлючевыхПолей); | ||
+ | |||
+ | |||
+ | 4. // объект РегистрНакопленияМенеджер.<имя> | ||
+ | // СоздатьНаборЗаписей() | ||
+ | // Пример: получить движения документа. | ||
+ | |||
+ | НужныйДокумент = Документы.ПриходнаяНакладная.НайтиПоНомеру(4); | ||
+ | Движения = РегистрыНакопления.ОстаткиМатериалов.СоздатьНаборЗаписей(); | ||
+ | Движения.Отбор.Регистратор.Значение = НужныйДокумент; | ||
+ | Движения.Прочитать(); | ||
+ | |||
+ | |||
+ | 5. // объект РегистрНакопленияМенеджер.<имя> | ||
+ | // Выбрать() | ||
+ | // ВыбратьПоРегистратору() | ||
+ | // Пример: выбрать все записи регистра "ОстаткиМатериалов" за текущий месяц. | ||
+ | |||
+ | Выборка = РегистрыНакопления.ОстаткиМатериалов.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата())); | ||
+ | |||
+ | |||
+ | 6. // объект РегистрНакопленияНаборЗаписей.<имя> | ||
+ | // [<индекс элемента коллекции>] | ||
+ | // Для Каждого … Из … Цикл … КонецЦикла; | ||
+ | // Пример: получить движения документа. | ||
+ | |||
+ | НужныйДокумент = Документы.ПриходнаяНакладная.НайтиПоНомеру(4); | ||
+ | Движения = РегистрыНакопления.ОстаткиМатериалов.СоздатьНаборЗаписей(); | ||
+ | Движения.Отбор.Регистратор.Значение = НужныйДокумент; | ||
+ | Движения.Прочитать(); | ||
+ | Для КаждогоОчередноеДвижение ИзДвижения Цикл | ||
+ | // Алгоритм обработки движений | ||
+ | … | ||
+ | КонецЦикла;</code> | ||
+ | |||
+ | |||
+ | ===== Регистры бухгалтерии, Регистры расчета ===== | ||
+ | Свойства и методы работы с объектами в большинстве своем аналогичны свойствам и методам для регистров накопления. | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | <code></code> | ||