Основная страница

 

Глава 27
Работа с объектом Периодический


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

Контекст работы с объектом Периодический

Во всех программных модулях доступ к атрибутам и вызов методов объекта Периодический может выполняться только при помощи переменной со ссылкой на объект этого типа. Объект создается при помощи функции СоздатьОбъект, ссылка на который присваивается переменной. Чтобы вызвать метод объекта, имя метода (с указанием необходимых параметров) пишется через точку после идентификатора переменной.

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

Англоязычный синоним ключевого слова ПериодическийPeriodic.

Пример:

ВремРеквизиты = СоздатьОбъект("Периодический");

Атрибуты объекта Периодический

Значение

Значение периодического реквизита справочника или константы.

Синтаксис:

Значение

Англоязычный синоним:

Value

Описание:

Атрибут Значение предоставляет доступ к значению выбранного периодического реквизита справочника или константы.

Пример:

Вал = СоздатьОбъект("Справочник.Валюты");

// Позиционируем созданный объект Вал по известному коду

Вал.НайтиПоКоду(1);

Если Вал.Выбран() = 1 Тогда

   Доллар = Вал.ТекущийЭлемент();

Иначе

   Предупреждение("Не найдена валюта!");

   Возврат;

КонецЕсли;

ПерВал = СоздатьОбъект("Периодический");

ПерВал.ИспользоватьОбъект("Текущ_курс".Доллар);

ПерВал.ОбратныйПорядок(1);

ПерВал.ВыбратьЗначения();

Пока ПерВал.ПолучитьЗначение() = 1 Цикл

   Курс = ПерВал.Значение;

   ДатаКурса = ПерВал.ДатаЗнач;

КонецЦикла;

ДатаЗнач

Дата значения периодического реквизита справочника или константы.

Синтаксис:

ДатаЗнач

Англоязычный синоним:

DateVal

Описание:

Атрибут ДатаЗнач предоставляет доступ к дате значения выбранного периодического реквизита справочника или константы.

Пример:

См. предыдущий пример

Методы объекта Периодический

ИспользоватьОбъект

Задать объект применения.

Синтаксис:

ИспользоватьОбъект(<ИмяРеквизита>, <Объект>)

Англоязычный синоним:

UseObject

Параметры:

<ИмяРеквизита>

Строковое выражение, задающее название периодического реквизита справочника или название периодической константы, как они названы в конфигураторе.

<Объект>

Необязательный параметр. Значение элемента справочника, для которого задается применение объекта «Периодический». Данный параметр требуется задавать только в случае, если <ИмяРеквизита> — периодический реквизит справочника.

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод ИспользоватьОбъект задает соответствие созданного ранее объекта типа «Периодический» тому периодическому реквизиту справочника или периодической константе, для которой он будет применяться. Если параметр <ИмяРеквизита> не задан (пустая строка), а параметр <Объект> задает элемент справочника, то выборка будет осуществляться по всем периодическим реквизитам справочника.

Пример:

Вал = СоздатьОбъект("Справочник.Валюты");

// Позиционируем созданный справочник Валюты по известному коду

Вал.НайтиПоКоду(1);

Если Вал.Выбран() = 1 Тогда

   Доллар = Вал.ТекущийЭлемент();

Иначе

   Предупреждение{"Не найдена валюта!");

   Возврат;

КонецЕсли;

ПерВал = СоздатьОбъект("Периодический");

ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);

ПерВал.ОбратныйПорядок(1);

ПерВал.ВыбратьЗначения();

Пока ПерВал.ПолучитьЗначение() = 1 Цикл

   Курс = ПерВал.Значение;

   ДатаКурса = ПерВал.ДатаЗнач;

КонецЦикла;

НазначитьТип

Назначить тип для периодического объекта неопределенного типа.

Синтаксис:

НазначитьТип(<ИмяТипа>, <Длина>, <Точность>)

Англоязычный синоним:

SetType

Параметры:

<ИмяТипа>

Строковое выражение — название типа данных, который назначается периодическому реквизиту справочника или периодической константе неопределенного типа. Например: "Строка", "Число", "Справочник.Товары", "Документ.РасходнаяНакладная" и т. п.

<Длина>

Необязательный параметр. Числовое выражение — длина поля представления данных. Имеет смысл только при задании числового или строкового типа.

<Точность>

Необязательный параметр. Числовое выражение — число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Описание:

Метод НазначитьТип позволяет назначить тип периодического реквизита справочника или периодической константе неопределенного типа.

Пример:

Тов = СоздатьОбъект("Справочник.Номенклатура");

// Позиционируем созданный справочник по известному коду

Тов.НайтиПоКоду(51);

Если Тов.Выбран() = 1 Тогда

   ВыбТМЦ = Тов.ТекущийЭлемент();

Иначе

   Предупреждение("Не найден товар!");

   Возврат;

КонецЕсли;

ПерТМЦ = СоздатьОбъект("Периодический");

ПерТМЦ.ИспользоватьОбъект("ТМЦ", ВыбТМЦ);

ПерТМЦ.НазначитьТип("Справочник.Товары");

ЗначениеНаДату

Получить актуальное значение на заданную дату.

Синтаксис:

ЗначениеНаДату(<Дата>)

Англоязычный синоним:

ValueOnDate

Параметры:

<Дата>

Выражение, задающее значение даты, на которую требуется получить периодический реквизит справочника или периодическую константу.

Возвращаемое значение:

Полученное актуальное значение на заданную дату.

Описание:

С помощью метода ЗначениеНаДату можно получить значение, актуальное на заданную дату. Причем текущая позиция выборки (см. ВыбратьЗначение) не сдвигается и не сбрасывается.

Пример:

К = ПерВал.ЗначениеНаДату(ДатаП);

НайтиЗначение

Найти значение на заданную дату.

Синтаксис:

НайтиЗначение(<Дата>, <Режим>)

Англоязычный синоним:

FindValue

Параметры:

<Дата>

Выражение, задающее значение даты, на которую требуется найти периодический реквизит справочника или периодическую константу.

<Режим>

Числовое выражение, значение которого задает режим поиска, если на заданную дату не существует значения периодического реквизита. Если -1 (минус единица) — возвращается значение на предыдущую дату, если 0 — возвращается код завершения неуспешной операции, если 1 — возвращается значение на последующую дату.

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

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

Пример:

Если ПерВал.НайтиЗначение(ДатаП, Нап) = 0 Тогда

   Предупреждение("Не нашли значение!", 3);

   Возврат;

КонецЕсли;

ВыбратьЗначения

Открыть выборку периодических значений по датам.

Синтаксис:

ВыбратьЗначения(<ДатаНачала>, <ДатаКонца>)

Англоязычный синоним:

Selectltems

Параметры:

<ДатаНачала>

Необязательный параметр. Выражение типа «дата» — дата начала периода выборки периодических значений. Если параметр не задан, то выборка начинается с самой ранней имеющейся даты.

<ДатаКонца>

Необязательный параметр. Выражение типа «дата» — дата конца периода выборки периодических значений. Если параметр не задан, то выборка заканчивается самой последней имеющейся датой.

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод ВыбратьЗначения предоставляет возможность (открывает выборку) выбирать периодические значения при помощи метода ПолучитьЗначение.

Дальнейшая выборка при помощи метода ПолучитьЗначение будет происходить среди периодических значений текущего объекта применения, заданного методом ИспользоватьОбъект.

Пример:

Процедура КурсыВалюты(КодВалюты)

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(КодВалюты);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент();

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текуш_курс", Доллар);

   ПерВал.ОбратныйПорядок(1);

   ПерВал.ВыбратьЗначения();

   Пока ПерВал.ПолучитьЗначение() = 1 Цикл

      Сообщить("Курс: " + Строка(ПерВал.ДатаЗнач) + ПерВал.Значение);

   КонецЦикла;

КонецПроцедуры

См. также: ПолучитьЗначение, ИспользоватьОбъект

ВыбратьПоДокументу

Открыть выборку всех изменений периодических реквизитов справочника, сделанных документом.

Синтаксис:

ВыбратьПоДокументу(<Документ>)

Англоязычный синоним:

SelectByDoc

Параметры:

<Документ>

Выражение со значением типа «документ».

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод ВыбратьПоДокументу предоставляет возможность (открывает выборку) выбирать все периодические значения (по всем справочникам и реквизитам), заданные в справочнике документом.

Дальнейшая выборка осуществляется при помощи метода ПолучитьЗначение. При использовании данного метода не используется (игнорируется) установка объекта применения, задаваемая методом ИспользоватьОбъект.

См. также: УстановитьРеквизитСправочника, ТекущийОбъект, ТекущийРеквизит, ПолучитьЗначение

Пример:

Процедура ПечатьУстановокДокумента(Док)

   Если Док.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет" );

   Ист = СоздатьОбъект ("Периодический");

   Ист.ВыбратьПоДокументу(Док);

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      Таб.ВывестиСекцию("Строка");

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

ПолучитьЗначение

Получить из выборки следующее периодическое значение.

Синтаксис:

ПолучитьЗначение()

Англоязычный синоним:

GetValue

Возвращаемое значение:

Число: 1 — если элемент выбран успешно, 0 — если элемент не выбран (отсутствует).

Описание:

Метод ПолучитьЗначение выбирает периодическое значение в последовательности выборки, открытой перед этим при помощи метода ВыбратьЗначения или ВыбратьПоДокументу. Само полученное значение следует считывать из атрибута Значение. Дату этого значения можно считать из атрибута ДатаЗнач. Если значение периодического реквизита установлено документом, то этот документ можно получить при помощи метода ТекущийДокумент. Метод ТекущийОбъект позволит определить значение текущего элемента справочника, а метод ТекущийРеквизит — определить наименование текущего реквизита справочника.

Пример:

Процедура КурсыВалюты(КодВалюты)

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(КодВалюты);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент();

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);

   ПерВал.ОбратныйПорядок(1);

   ПерВал.ВыбратьЗначения();

   Пока ПерВал.ПолучитьЗначение() = 1 Цикл

      Сообщить("Курс на " + Строка(ПерВал.ДатаЗнач) + " = " + ПерВал.Значение);

   КонецЦикла;

КонецПроцедуры

См. также: ВыбратьЗначения, ВыбратьПоДокументу, ТекущийОбъект, ТекущийРеквизит, ТекущийДокумент

ОбратныйПорядок

Установить порядок выборки периодических значений.

Синтаксис:

ОбратныйПорядок(<Режим>)

Англоязычный синоним:

BackwardOrder

Параметры:

<Режим>

Необязательный параметр. Числовое выражение, значение которого задает режим выборки периодических значений. Если 0 — прямой порядок выборки, если значение отлично от 0 — обратный порядок выборки. По умолчанию — 1.

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод ОбратныйПорядок устанавливает порядок выборки периодических значений. Данный метод используется до вызова метода ВыбратьЗначения, который фактически открывает выборку. Дальнейшая выборка при помощи ПолучитьЗначение будет происходить в заданном порядке.

Пример:

Процедура ЗаполнитьСписокОбр()

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(1);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент(};

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текущ_курс", Доллар);

   ПерВал.ОбратныйПорядок(1);

   ПерВал.ВыбратьЗначения();

   Пока ПерВал.ПолучитьЗначение() = 1 Цикл

      СпВал.ДобавитьЗначение(ПерВал.Значение, Строка(ПерВал.ДатаЗнач) +

                             ПерВал.Значение);

   КонецЦикла;

КонецПроцедуры

См. также: ВыбратьЗначения, ПолучитьЗначение

ТекущийДокумент

Возвращает документ, который установил значение периодического реквизита справочника.

Синтаксис:

ТекущийДокумент()

Англоязычный синоним:

Current Document

Возвращаемое значение:

Документа, который задал значение периодического реквизита справочника.

Описание:

Метод ТекущийДокумент возвращает документ, который задал значение периодического реквизита справочника. Метод используется после получения очередного значения из выборки (см. метод ПолучитьЗначение).

Пример:

Процедура ПечатьИстории(Элем)

   Если Элем.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет");

   Ист = СоздатьОбъект("Периодический");

   // Просмотрим все периодические реквизиты справочника

   Ист.ИспользоватьОбъект("", Элем);

   Ист.ВыбратьЗначения();

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      ДокИст = Ист.ТекущийДокумент();

      Если ДокИст.Выбран() = 1 Тогда

         // если значение задано документом

         Таб.ВывестиСекцию("ПоДокументу");

      Иначе

         // если значение задано интерактивно

         Таб.ВывестиСекцию("Строка");

      КонецЕсли;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

См. также: УстановитьРеквизитСправочника

ТекущийОбъект

Возвращает значение текущего элемента справочника.

Синтаксис:

ТекущийОбъект()

Англоязычный синоним:

CurrentObj

Возвращаемое значение:

Значение текущего элемента справочника.

Описание:

Метод ТекущийОбъект возвращает значение текущего элемента справочника. Метод используется после получения очередного значения из выборки, особенно полезен при выборке по документу (см. методы ВыбратьПоДокументу, ПолучитьЗначение).

Пример:

Процедура ПечатьУстановокДокумента(Док)

   // выведем все установки, которые произвел документ

   Если Док.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет");

   Ист = СоздатьОбъект("Периодический");

   Ист.ВыбратьПоДокумекту(Док);

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      ИстОбъект = Ист.ТекущийОбъект();

      Если ИстОбъект.Вид() = "Товары" Тогда

         // если документом заданы изменения в справочнике Товары

         Таб.ВывестиСекцию("ПоТовару");

      ИначеЕсли ИстОбъект.Вид() = "Клиенты" Тогда

         // если документом заданы изменения в справочнике Клиенты

         Таб.ВывестиСекцию("ПоКлиенту");

      КонецЕсли;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

См. также: УстановитьРеквизитСправочника, ВыбратьПоДокументу, ПолучитьЗначение

ТекущийРеквизит

Возвращает наименование текущего реквизита справочника.

Синтаксис:

ТекущийРеквизит()

Англоязычный синоним:

CurrentAttrubute

Возвращаемое значение:

Строковое значение — наименование текущего реквизита справочника.

Описание:

Метод ТекущийРеквизит возвращает наименование текущего реквизита справочника. Если выборка производится по документу, то в возвращаемом значении сначала записано наименование справочника, а затем через точку наименования реквизита. Метод используется после получения очередного значения из выборки, особенно полезен при выборке по документу или по всем реквизитам.

Пример:

Процедура ПечатьУстановокДокумента(Док)

   // выведем все установки, которые произвел документ

   Если Док.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет");

   Ист = СоздатьОбъект("Периодический");

   Ист.ВыбратьПоДокументу(Док);

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      Если Ист.ТекущийРеквизит() = "Товары.Цена" Тогда

         // если документом заданы изменения Цены Товара

         Таб.ВывестиСекцию("ПоЦенеТовара");

      ИначеЕсли Ист.ТекущийРеквизит() = "Клиенты.Статус" Тогда

         // если документом заданы изменения Статуса Клиента

         Таб.ВывестиСекцию("ПоСтатусу Клиента");

      КонецЕсли;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

См. также: УстановитьРеквизитСправочника, ВыбратьЗначения, ВыбратьПоДокументу, ПолучитьЗначение

НомерСтроки

Возвращает номер строки текущего документа, изменившего периодическое значение реквизита справочника.

Синтаксис:

НомерСтроки()

Англоязычный синоним:

LineNurn

Возвращаемое значение:

Числовое значение — номер строки документа, изменившего периодическое значение реквизита справочника.

Описание:

Метод НомерСтроки возвращает значение номера строки документа, изменившего периодическое значение реквизита справочника (в случае, когда в Модуле документа использовали метод ПривязыватьСтроку). Метод используется после получения очередного значения из выборки, особенно полезен при выборке по документу или по всем реквизитам (см. методы ВыбратьЗначения, ВыбратьПоДокументу, ПолучитьЗначение).

Пример:

Процедура ПечатьИстории(Элем)

   Если Элем.Выбран() = 0 Тогда

      Возврат;

   КонецЕсли;

   Таб = СоздатьОбъект("Таблица");

   Таб.ИсходнаяТаблица("ПечатьИстории");

   Таб.ВывестиСекцию("Отчет");

   Ист = СоздатьОбъект("Периодический");

   // Просмотрим все периодические реквизиты справочника

   Ист.ИспользоватьОбъект("", Элем);

   Ист.ВыбратьЗначения();

   Пока Ист.ПолучитьЗначение() = 1 Цикл

      ДокИст = Ист.ТекущийДокумент();

      Если ДокИст.Выбран() = 1 Тогда

         // если значение задано документом

         НомСтрДок = Ист.НомерСтроки();

         Таб.ВывестиСекцию("ПоДокументу");

      Иначе

         // если значение задано интерактивно

         Таб.ВывестиСекцию("Строка");

      КонецЕсли;

   КонецЦикла;

   Таб.Опции(0, 0, 0, 0);

   Таб.ТолькоПросмотр(1);

   Таб.Показать("Отчет");

КонецПроцедуры

См. также: УстановитьРеквизитСправочника, ВыбратьПоДокументу, ПолучитьЗначение

Записать

Записать (обновить) периодическое значение.

Синтаксис:

Записать()

Англоязычный синоним:

Write

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод Записать выполняет запись периодического значения на заданную дату. Если на заданную дату уже существует запись, то она модифицируется. До вызова данного метода следует само значение записать в атрибут Значение. Дату этого значения следует записать в атрибут ДатаЗнач.

Пример:

Процедура ЗаписьКурсаДоллара(Курс)

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(1);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент();

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текущ_курс".Доллар);

   ПерВал.Значение = Курс;

   ПерВал.ДатаЗнач = РабочаяДата();

   ПерВал.Записать();

КонецПроцедуры

Удалить

Удалить периодическое значение.

Синтаксис:

Удалить()

Англоязычный синоним:

Delete

Возвращаемое значение:

Число: 1 — если вызов метода закончился успешно, 0 — если нет.

Описание:

Метод Удалить удаляет периодическое значение на заданную дату. До вызова данного метода атрибут ДатаЗнач должен содержать дату удаляемого периодического значения..

Пример:

Процедура ЧисткаКурсов()

   Вал = СоздатьОбъект("Справочник.Валюты");

   // Позиционируем созданный объект Вал по известному коду

   Вал.НайтиПоКоду(1);

   Если Вал.Выбран() = 1 Тогда

      Доллар = Вал.ТекущийЭлемент();

   Иначе

      Предупреждение("Не найдена валюта!");

      Возврат;

   КонецЕсли;

   ПерВал = СоздатьОбъект("Периодический");

   ПерВал.ИспользоватьОбъект("Текущ_курс".Доллар);

   ПерВал.ВыбратьЗначения();

   Пока ПерВал.ПолучитьЗначение() = 1 Цикл

      Курс = ПерВал.Значение;

      ДатаКурса = ПерВал.ДатаЗнач;

      Если Курс < 1000 Тогда

         ПерВал.Удалить();

      КонецЕсли;

   КонецЦикла;

КонецПроцедуры







Перейти  к оглавлению: Описание встроенного языка