d9e5a92d

Глава 14 Работа с Регистрами оперативного учета

Регистры — это специфический инструмент системы 1С:Предприятие, сред­ство накопления сводной информации. Регистры являются внутренним инст­рументом конфигурации, к которым нет непосредственного доступа через ин­терфейс пользователя. Информация о результатах хозяйственных операций, которая появляется при оформлении документов, накапливается в регистрах при «проведении» документов, а отображение информации, содержащейся в регистрах, осуществляется при помощи формирования отчетов. Информация из


регистров используется для анализа хозяйственной деятельности за прошедший период. При создании регистра определяется, как будет обрабатываться, группиро­ваться и сохраняться сводная информация. Регистры могут быть двух видов: оборотные регистры и регистры остатков. Регистр остатков — это объект, предназначенный для ведения остатков «ре­сурсов» на момент времени с привязкой к некоторому набору «измерений».

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

Ресурсами регистра могут являться любые категории учета, которые могут быть представлены в числовом виде, такие как: «количество товара», «долг клиента», «сумма наличных» и т. п. Измерения регистра — это оси координат, на пересечении которых регистр хранит конкретные значения ресурсов. Кроме того, при записи движения регистра можно задавать «реквизиты» регистра. Значения реквизитов регистра просто сопровождают запись о движении реги­стра (подобно комментарию) для возможности в дальнейшем производить фильтрацию движений при выборке.

Пример:

* Предположим, что в конфигураторе создан регистр остатков «Товарные_Запасы», который должен содержать сведения об остатке каждого то­вара на каждом складе, за каждым материально ответственным лицом. В дальнейшем предполагается получать информацию такого типа: «остаток конкретного товара на конкретном складе», «остаток конкретного товара всего» и т. п. В идеологии системы 1С:Предприятие такой регистр пред­ставляет собой прямоугольную систему координат, измерениями этого ре­гистра являются: «Товар», «Склад», «МОЛ». Регистр имеет один ресурс — «Количество». Содержание данного регистра можно представить в виде следующей таблицы, где по каждому конкретному товару на конкретном складе за конкретным МОЛ числится определенное Количество.

Товар Склад МОЛ Количество
Стол Первый Иванов 10
Стол Первый Петров 20
Стол Второй Иванов 5
Шкаф Первый Петров 7
Шкаф Второй Иванов 2
Шкаф Второй Петров 8
Шкаф Третий Петров 10
Структура каждого конкретного вида регистра определяется при его созда­нии в конфигураторе. Измерения, ресурсы и реквизиты регистров определяют­ся в конфигураторе конкретно для каждого создаваемого вида регистра.

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

Под термином «остаток» ресурса для регистра остатков следует понимать числовое значение, которое имеет ресурс на какой-то момент времени. Именно здесь и проявляется понятие Точки Актуальности (далее ТА). ТА — это тот момент времени (дата+время), на который все необоротные регистры содержат текущие значения своих ресурсов. Другими словами, если просто запросить у регистра остатков значение какого-либо ресурса, то он выдаст его именно на момент ТА. Если необходимо узнать значение ресурса на какой-либо прошед­ший момент времени, то надо либо сдвинуть в прошлое ТА (для этого исполь­зуется интерактивная операция «Управления итогами»), либо при помощи средств встроенного языка следует запустить «временный расчет» регистра. При «временном расчете» регистра остатков можно задать момент времени, на который необходимо получить значение ресурса. В этом случае значение ресур­са рассчитывается, что требует несколько большего времени процессора, чем если получать ресурс на ТА. Однако, «временный расчет» рассчитывается не с начала всех времен, а от начала месяца. Регистры остатков хранят промежуточ­ные значения ресурсов на начало каждого месяца (именно с этим связана про­цедура «переход на новый период»). Таким образом, если при «временном рас­чете» указать момент времени в начале месяца, то, в общем случае, расчет будет выполнен быстрее, чем если указать конец месяца.

Кроме хранения остатка или оборота ресурсов, регистры хранят все «приращения» (приход со знаком «+», расход со знаком «-»), произведенные доку­ментами (это обозначается термином «движения регистра»). Причем, эти «при-оащения» регистров хранятся со ссылками на те документы, которые их вы­звали. Поэтому, во встроенном языке системы 1С:Предприятие есть методы, чтобы получить из регистра все его движения (с привязкой к документам), указав интервал времени, за который они нужны.

Документы, как объекты прикладной задачи, тесно связаны с регистрами. Именно документы, и только они могут изменять значения ресурсов в регист­рах (этот алгоритм прописывается в предопределенной процедуре ОбработкаПроведения для каждого вида документа). Никаким другим способом, кроме как через проведение документов на содержимое регистров повлиять нельзя. Например, нельзя создать отчет, который бы изменял значения, хранящиеся в регистрах. Движения (приращения) регистров выполняются в момент «прове­дения» документа. С другой стороны, документы не порождают в регистрах необратимых действий. Что это значит? Если ранее проведенный документ удалить или сделать его непроведенным, то удалятся и все движения регистров, порожденные им. Если отредактировать (изменить) ранее проведенный доку­мент, то после перепроведения документа все движения регистров, порожден­ные ранее, удалятся и заменятся новыми.

Замечание: Формирование движений документов по регистрам доступно только в Модуле документа в системной предопределенной процедуре ОбработкаПроведения.

Контекст работы с регистрами В синтаксисе языка применение атрибутов и вызов методов регистров мо­жет выполняться двумя способами:

· Средства языка предоставляют возможность непосредственного доступа к атрибутам и методам регистров, объявленных в конфигураторе в лю­бом программном модуле (все объявленные в конфигураторе регистры принадлежат глобальному контексту конфигурации). Во всех текстах программных модулей доступ к атрибутам, вызовы методов регистров можно записывать просто через точку после полного имени регистра.

Пример:

Флаг = Регистр.ОстаткиТовара.Приход;

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

Регистр.ХХХХХ

где ХХХХХ — вид регистра, объявленный в конфигураторе. Англоязычный синоним ключевого слова Регистр — Register.

Пример:

Рег = СоздатьОбъект(Регистр.ТовЗап);

Атрибуты регистров

Приход

Флаг движения регистра «приход».

Синтаксис:

Приход

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

Income

Описание:

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

Данный атрибут не имеет смысла для оборотных регистров.

Пример:

Рег1 = СоздатьОбъект(Регистр.Взаиморасчеты);

Если Режим = Подробно Тогда

   Рег1.УстановитьФильтр(Клиент);

   Рег1.ВыбратьДвижения(ДатаНачало, );

   Пока Рег1.ПолучитьДвижение()0 Цикл

      Если Число(Рег1.Клиент.Код) Число(Запрос.Клиент.Код) Тогда

         Продолжить;

      КонецЕсли;

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Приход = 1 Тогда

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

      Иначе

         Таб.ВывестиСекцию(Расход);

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

Расход

Флаг движения регистра «расход».

Синтаксис:

Расход

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

Outcome

Описание:

Атрибут Расход содержит значение флага записи движения регистра и ис­пользуется только при обращении к существующим записям движений регист­ров. Данный атрибут только для чтения. Атрибут Расход может принимать числовое значение 1 — если текущее движение регистра расход, 0 — если нет.

Данный атрибут не имеет смысла для оборотных регистров.

Пример:

Рег1 = СоздатьОбъект(Регистр.Взаиморасчеты);

Если Режим = Подробно Тогда

   Рег1.УстановитьФильтр(Клиент);

   Рег1.ВыбратьДвижения(ДатаНачало, );

   Пока Рег1.ПолучитьДвижение() 0 Цикл

      Если Число(Рег1.Клиент.Код) Число(Запрос.Клиент.Код) Тогда

         Продолжить;

      КонецЕсли;

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Расход = 1 Тогда

         Таб.ВывестиСекцию(Расход);

      Иначе

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

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

Измерение

Установить значение измерения регистра.

Синтаксис:

Измерение

Описание:

Атрибут Измерение задает значение выбранного измерения регистра. В тексте программного модуля используется название конкретного измерения регистра, как он назван в конфигураторе.

Пример:

Процедура ОбработкаПроведения()

   // В регистре ТовЗап измерениями являются Склад и Товар

   // ресурсами являются Количество и Стоимость

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока (ПолучитьСтроку() 0) Цикл

      Регистр.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

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

Ресурс

Установить значение ресурса регистра.

Синтаксис:

Ресурс

Описание:

Атрибут Ресурс задает значение выбранного ресурса регистра. В тексте программного модуля используется название конкретного ресурса регистра, как он назван в конфигураторе.

Пример:

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

Реквизит

Установить значение реквизита регистра.

Синтаксис:

Реквизит

Описание:

Атрибут Реквизит задает значение выбранного реквизита регистра. В тексте программного модуля используется название конкретного реквизита регистра, как он назван в конфигураторе.

Пример:

Процедура ОбработкаПроведения()

   // В регистре ТовЗап измерениями являются Склад и Товар

   // ресурсами являются Количество и Стоимость

   // реквизитом является ВнутрПеремещение

   Регистр.ТовЗап.Склад = Склад;

   Если Вид() = Перемещение Тогда

      Регистр.ТовЗап.ВнутрПеремещение = 1;

   Иначе

      Регистр.ТовЗап.ВнутрПерсмещение = 0;

   КонецЕсли;

   ВыбратьСтроки();

   Пока ПолучитьСтроку() 0 Цикл

      Регистр.ТовЗап.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

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

Методы оборотных регистров

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

ИспользоватьПериод

Установить период выборки итогов оборотного регистра.

Синтаксис 1:

ИспользоватьПериод(Дата)

Синтаксис 2:

ИспользоватьПериод(Год, Месяц, День)

Синтаксис 3:

ИспользоватьПериод(Год, НомерНедели)

Синтаксис 4:

ИспользоватьПериод (Год, Месяц, НомерДекады)

Синтаксис 5:

ИспользоватьПериод(Год, Месяц)

Синтаксис 6:

ИспользоватьПериод(Год, НомерКвартала)

Синтаксис 7:

ИспользоватьПериод(Год)

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

UseРег1od

Параметры:

Дата Выражение типа «дата».
Год Числовое выражение, содержащее номера года.
Месяц Числовое выражение, содержащее номер месяца.
День Числовое выражение, содержащее номер дня месяца.
НомерДекады Числовое выражение, содержащее номер декады ме­сяца.
НомерКвартала Числовое выражение, содержащее номер квартала.
Описание:

Метод ИспользоватьПериод устанавливает период выборки итогов обо­ротного регистра. Различный синтаксис вызова данного метода зависит от заданного в конфигураторе интервала оборотного регистра.

Заданный в конфигураторе

Интервал
Используемый синтаксис
День синтаксис 1 и 2.
Неделя синтаксис 1 и 3.
Декада синтаксис 4.
Месяц синтаксис 5.
Квартал синтаксис 6.
Год синтаксис 7.
Данный метод используется до вызова методов оборотных регистров. Даль­нейшая выборка итогов будет происходить по указанному периоду. Если при работе с оборотным регистром этот метод опущен, то по умолчанию использу­ется текущий период, в котором находится ТА.

Пример:

Регистр.ОборотыТоваров.ИспользоватьПериод(1996);

Итог

Возвратить итог одного ресурса оборотного регистра.

Синтаксис:

Итог(Измерен1, Измерен2..., ИмяРесурса)

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

Total

Параметры:

Измерен1, Измерен2... Выражения со значениями измерений регистра.
ИмяРесурса Строковое выражение, содержащее на­звание требуемого ресурса регистра, как оно названо в конфигураторе.
Возвращаемое значение:

Численое значение итога заданного ресурса регистра.

Описание:

Метод Итог возвращает итог по ранее установленному периоду ресурса ИмяРесурса оборотного регистра.

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

Пример:

Функция ПолучитьИтог(Товар, Склад, Год);

   Регистр.ОборотыТоваров.ИспользоватьПериод(Год);

   Возврат Регистр.ОборотыТоваров.Итог(Товар, Склад, ОборотТовара);

КонецФункции

Итоги

Извлечь все итоги ресурсов оборотного регистра.

Синтаксис:

Итоги(Измерен1, Измерен2...)

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

Totals

Параметры:

Измерен1, Измерен2... Выражения со значениями измерений регистра.
Описание:

Метод Итоги извлекает итоги по всем ресурсам по ранее установленному периоду оборотного регистра. Полученные итоги ресурсов затем можно считы­вать из атрибутов регистра.

Данный метод используется только для оборотного регистра.

Пример:

Регистр.ОборотыТоваров.ИспользоватьПериод(Год);

Регистр.ОборотыТоваров.Итоги(Товар, Склад);

ОбТов = Регистр.ОборотыТоваров.ОборотТовара;

СводныйИтог

Возвратить сводный итог ресурса оборотного регистра.

Синтаксис:

СводныйИтог(Измерен1, Измерен2..., ИмяРесурса)

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

ConsolidatedTotal

Параметры:

Измерен1, Измерен2... Выражения со значениями измерений регистра.
ИмяРесурса Строковое выражение, содержащее на­звание требуемого ресурса регистра, как оно названо в конфигураторе.
Возвращаемое значение:

Численое значение сводного итога заданного ресурса регистра.

Описание:

Метод СводныйИтог возвращает сводный итог ресурса ИмяРесурса оборотного регистра. Данный метод работает аналогично методу Итог, однако здесь могут быть заданы не все значения измерений, а только несколько, но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе. Измерения могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируют­ся только указанные измерения.

Данный метод используется только для оборотного регистра.

Пример:

Функция ПолучитьСводныйИтог(Товар, Год);

   Регистр.ОборотыТоваров.ИспользоватьПериод(Год);

   Возврат Регистр.ОборотыТоваров.СводныйИтог(Товар, , ОборотТовара);

КонецФункции

СводныеИтоги

Извлечь сводные итоги ресурсов оборотного регистра.

Синтаксис:

СводныеИтоги(Измерен1, Измерен2...)

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

ConsolidatedTotals

Параметры:

Измерен1, Измерен2... Выражения со значениями измерений регистра.
Описание:

Метод СводныеИтоги извлекает по переданным в качестве параметров из­мерениям сводные итоги всех ресурсов оборотного регистра. Полученные ре­сурсы затем можно считывать из атрибутов регистра. Метод работает аналогич­но процедуре Итоги, однако здесь могут быть заданы не все значения измере­ний, а только несколько, но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в кон­фигураторе. Измерения могут задаваться с пропусками (неуказанное значение -просто запятая), фиксируются только указанные измерения.

Данный метод используется только для оборотного регистра.

Пример:

Регистр.ОборотыТоваров.ИспользоватьПериод(Год);

Регистр.ОборотыТоваров.СводниеИтоги(Товар, );

ПолныйОбТов = Регистр.ОборотыТоваров.ОборотТовара;

ИтогиПолучить

Получить все ресурсы по регистру.

Синтаксис:

ИтогиПолучить()

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

TotalsGet

Описание:

Метод ИтогиПолучить извлекает все итоги ресурсов оборотного регистра по измерениям, содержащимся в атрибутах. Полученные ресурсы затем можно считывать из атрибутов регистра.

Данный метод используется только для оборотного регистра.

Пример:

Регистр.ОборотыТоваров.Товар = Конт.Товар;

Регистр.ОборотыТоваров.Склад = Конт.Склад;

Регистр.ОборотыТоваров.ИтогиПолучить();

Сообщить(Оборот товара= + Регистр.ОборотыТоваров.ОборотТовара;

Методы регистров остатков

Описанные в данном разделе методы используются только для регистров остатков.

Остаток

Возвратить остаток одного ресурса регистра.

Синтаксис:

Остаток(Измерен1, Измерен2..., ИмяРесурса)

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

Rest

Параметры:

Измерен1, Измерен2... Выражения со значениями измерений регистра.
ИмяРесурса Строковое выражение, содержащее на­звание требуемого ресурса регистра, как оно задано в конфигураторе.
Возвращаемое значение:

Численое значение остатка заданного ресурса регистра.

Описание:

Метод Остаток возвращает остаток ресурса ИмяРесурса по регистру. Данный метод используется только для регистров остатков.

Пример:

Процедура ПолучитьОстаток(Товар, Склад, Ост, Стоим);

   Ост = Регистр.УчетТовара.Остаток(Товар, Склад, ОстаткиТовара);

   Стоим = Регистр.УчетТовара.Остаток(Товар, Склад, СтоимостьТовара);

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

СводныйОстаток

Возвратить сводный остаток ресурса по регистру

Синтаксис:

СводныйОстаток(Измерен1, Измерен2..., ИмяРесурса)

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

ConsolidatedRest

Параметры:

Измepeнl, Измepeн2... Выражения со значениями измерений регистра.
ИмяРесурса Строковое выражение, содержащее на­звание требуемого ресурса регистра, как оно названо в конфигураторе.
Возвращаемое значение:

Численное значение сводного остатка заданного ресурса регистра.

Описание:

Метод СводныйОстаток возвращает сводный остаток ресурса ИмяРесурса по регистру. Данный метод работает аналогично методу Остаток, однако здесь могут быть заданы не все значения измерений, а только несколько, но обязательно в правильной последовательности, соответствующей структуре измерений данного регистра, как она задана в конфигураторе. Изме­рения могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируются только указанные измерения.

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

Пример:

* Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.СводныйОстаток(Тов1, , ОстатокТовара);

означает, что ресурс «ОстатокТовара» будет получен только по одному то­вару (Тов1), но по всем складам и всем МОЛам.

*

Процедура ПолучитьСводныйОстаток(Товар, Ост);

   Ост = Регистр.УчетТовара.СводныйОстаток(Товар, , ОстаткиТовара);

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

Остатки

Извлечь все ресурсы по регистру.

Синтаксис:

Остатки(Измерен1, Измерен2...)

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

Rests

Параметры:

Измерен1, Измерен2... Выражения со значениями измерений регистра.
Описание:

Метод Остатки извлекает по переданным в качестве параметров измерени­ям все ресурсы по регистру. Полученные ресурсы затем можно считывать из атрибутов регистра.

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

Пример:

Процедура ПолучитьОстатки(Товар, Склад, ОстатокТовара, Стоимость);

   Регистр.УчетТовара.Остатки(Товар, Склад);

   ОстатокТовара = Регистр.УчетТовара.ОстаткиТовара;

   Стоимость = Регистр.УчетТовара.СтоимостьТовара;

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

СводныеОстатки

Извлечь сводные ресурсы по регистру.

Синтаксис:

СводныеОстатки(Измерен1, Измерен2...)

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

ConsolidatedRests

Параметры:

Измерен1, Измерен2... Выражения со значениями измерений регистра.
Описание:

Метод СводныеОстатки извлекает по переданным в качестве параметров измерениям все ресурсы по регистру. Полученные ресурсы затем можно считы­вать из атрибутов регистра. Метод работает аналогично процедуре Остатки, однако здесь могут быть заданы не все значения измерений, а только несколь­ко, но обязательно в правильной последовательности, соответствующей струк­туре измерений данного регистра, как она задана в конфигураторе. Измерения могут задаваться с пропусками (неуказанное значение — просто запятая), фик­сируются только указанные измерения.

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

Пример:

* Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.СводныеОстатки(Тов1, , );

означает, что ресурсы будут получены только по одному товару (Тов1), но по всем складам и всем МОЛам.

*

Процедура ПолучитьСводныеОстатки(Товар, ОстатокТовара, Стоимость);

   Регистр.УчетТовара.СводныеОстатки(Товар, );

   ОстатокТовара = Регистр.УчетТовара.ОстаткиТовара;

   Стоимость = Регистр.УчетТовара.СтоимостьТовара;

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

ОстаткиПолучить

Получить все ресурсы по регистру.

Синтаксис:

ОстаткиПолучить()

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

GetRests

Описание:

Метод ОстаткиПолучить извлекает все ресурсы регистра по измерениям содержащимся в атрибутах. Полученные ресурсы затем можно считывать из атрибутов регистра.

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

Пример:

Регистр.Взаиморасчеты.Клиент = Конт.Клиент;

Регистр.Взаиморасчеты.ОстаткиПолучить();

Сообщить(Долг клиента по заиморасчетам=

         + СокрЛ(Регистр.Взаиморасчеты.СуммаВалютная);

Выбрать ДвиженияСОстатками

Выбрать все движения регистра с остатками.

Синтаксис:

ВыбратьДвиженияСОстатками(КонецВыборки, ГрафаОтбора)

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

SelectActsWithRests

Параметры:

КонецВыборки Выражение типа дата, документ или позиция докумен­та задающее конец временного интервала выбора дви­жений регистра.
ГрафаОтбора Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфигу­раторе. Данный параметр устанавливает режим ис­пользования определенной графы отбора.

* — автоматический выбор графы отбора.

Пустая строка — не использовать графу отбора.

По умолчанию устанавливается автоматический выбор графы отбора.
Описание:

Метод ВыбратьДвиженияСОстатками инициирует выбор всех движении регистра в указанном интервале дат. До вызова данной процедуры может быть установлен фильтр (см. УстановитьФильтр), ограничивающий выборку зна­чений из регистра. Если КонецВыборки не указан или равен 0, то конном временного интервала выбора движений регистра считается ТА.

Данный метод отличается от метода ВыбратьДвижения тем, что после получения очередного движения метод Остаток будет выдавать актуальные значения остатков для этого регистра. Но для этого перед вызовом метода ВыбратьДвиженияСОстатками регистру должен быть установлен признак временногоРасчета» (см. ВременныйРасчет) и должен быть выполнен вре­менный расчет (см. РассчитатьРегистрыНа и РассчитатьРегистрыПо) — его дата и будет являться начальной датой выбираемых движений регистра. Данная возможность не может быть использована совместно с дальнейшими «Временными» расчетами.

Собственно выбор первого и последующих движений регистра осуществля­ется методом ПолучитьДвижение.

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

Пример:

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

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент, );

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, Задолженность);

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

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

КонецЦикла;

См. также: УстановитьФильтр, ПолучитьДвижение, ВыбратьДвиже­ния, ВременныйРасчет, РассчитатьРегистрыНа, РассчитатьРегистрыПо

Общие методы регистров

Описанные в данном разделе методы используются как для регистров ос­татков так и для оборотных регистров.

Вид

Определить название вида регистра.

Синтаксис:

Вид()

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

Kind

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

Строковое значение, содержащее название вида регистра.

Описание:

Метод Вид позволяет определить название вида регистра, как он задан ь конфигураторе.

Пример:

// отобразим вид регистра в строке состояния

Состояние(Рег1.Вид());

ПредставлениеВида

Определить пользовательское представление вида регистра.

Синтаксис:

ПредставлениеВида()

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

KindPresent

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

Строковое значение, содержащее пользовательское представление вида ре­гистра (синоним регистра или, если он пустой, то идентификатор).

Описание:

Метод ПредставлениеВида позволяет получить пользовательское пред­ставление вида регистра, как оно задано в конфигураторе.

Пример:

// отобразим пользовательское представление в строке состояния Состояние

(Рег1.ПредставлениеВида());

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

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

Синтаксис:

НазначитьТип(ИмяРеквизита, ИмяТипа, Длина, Точность)

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

SetType

Параметры:

ИмяРеквизита Строковое выражение — название реквизита регистра неопределенного типа, как он назван в конфигурато­ре.
ИмяТипа Строковое выражение — название типа данных (или Вид субконто), который назначается реквизиту реги­стра. Например:

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

Метод НазначитьТип позволяет назначить тип для реквизита, которому в конфигураторе назначен тип «Неопределенный».

Пример:

Регистр.УчетТМЦ.НазначитьТип(ТМЦ, Справочник.Товары);

УстановитьАтрибут

Установить значение атрибута по имени идентификатора.

Синтаксис:

УстановитьАтрибут(ИмяРеквизита, 3начение)

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

SetAttrib

Параметры:

ИмяРеквизита Строковое выражение, содержащее имя атрибута, как оно задано в конфигураторе.
3начение Выражение, содержащее устанавливаемое значе­ние атрибута.
Описание:

Метод УстановитьАтрибут позволяет установить значение атрибута по имени идентификатора, как оно задано в конфигураторе.

Пример;

Рег.УстановитьАтрибут(Сумма, СуммаТов);

ПолучитьАтрибут

Получить значение атрибута по идентификатору.

Синтаксис:

ПолучитьАтрибут(ИмяАтрибута)

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

GetAttrib

Параметры:

ИмяAтpибyтa Строковое выражение, содержащее имя атрибута, как оно задано в конфигураторе.
Возвращаемое значение:

Значение атрибута ИмяАтрибута.

Описание:

Метод ПолучитьАтрибут позволяет получить значение атрибута по иден­тификатору, как оно задано в метаданных.

Пример:

СуммаТов = Рег.ПолучитьАтрибут(Сумма);

ВыбратьДвижения

Выбрать все движения регистра по датам.

Синтаксис:

ВыбратьДвижения(НачалоВыборки, КонецВыборки, ГрафаОтбора)

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

SelectActs

Параметры:

НачалоВыборки Выражение типа дата, документ или позиция доку­мента, задающее начало временного интервала выбо­ра движений регистра.
КонецВыборки Выражение типа дата, документ или позиция доку­мента задающее конец временного интервала выбора движений регистра.
ГрафаОтбора Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в конфи­гураторе. Данный параметр устанавливает режим использования определенной графы отбора. * — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический вы­бор графы отбора.
Описание:

Метод ВыбратьДвижения инициирует выбор всех движений регистра в указанном интервале дат. До вызова данной процедуры может быть установлен фильтр (см. УстановитьФильтр), ограничивающий выборку значений из регистра. Если КонецВыборки не указан или равен 0, то концом временно­го интервала выбора движений регистра считается ТА.

Собственно выбор первого и последующих движений регистра осуществля­ется функцией ПолучитьДвижение.

Пример:

Рег1 = СоздатьОбъект(Регистр.Взаиморасчеты);

Если Режим = Подробно Тогда

   Рег1.УстановитьФильтр(Клиент);

   Рег1.ВыбратьДвижения(ДатаНачало, );

   Пока Рег1.ПолучитьДвижение() 0 Цикл

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Расход = 1 Тогда

         Таб.ВывестиСекцию(Расход2);

      Иначе

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

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

См. также: ПолучитьДвижение

ВыбратьДвиженияДокумента

Выбрать все движения регистра по документу.

Синтаксис:

ВыбратьДвиженияДокумента(Документ)

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

SelectDocActs

Параметры:

Документ Значение типа Документ.
Возвращаемое значение:

Число: 1 — если действие выполнено и в выборке есть хотя бы один эле­мент; 0 — если действие не выполнено или в выборке нет ни одного элемента.

Описание:

Метод ВыбратьДвиженияДокумента инициирует выбор всех движений регистра по указанному документу Документ.

Собственно выбор первого и последующих движений регистра осуществля­ется функцией ПолучитьДвижение.

Пример:

Процедура Взаиморасчеты(ВыбКлиент, ДатаНачало, ДатаКонец)

   // Создание Таблицы для выходного отчета

   Заг = Неизвестно.;

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

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

   Клн.ИспользоватьДату(ДатаКонец);

   Док = СоздатьОбъект(Документ);

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

   Рег1 = СоздатьОбъект(Регистр.Взаиморасчеты);

   Рег.ВременныйРасчет();

   РассчитатьРегистрыНа(ДатаКонец);

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

      //Без условий

      Заг = По всем клиентам.;

   ИначеЕсли ВыбКлиент.ЭтоГруппа() = 1 Тогда

      Клн.ВключатьПодчиненные(ВыбКлиент);

      Клн.ИспользоватьРодителя(ВыбКлиент);

      Заг = По клиентам группы + ВыбКлиент.Наименование;

   Иначе

      Предупреждение(Выберите группу клиентов!);

      Возврат;

   КонецЕсли;

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

   Клн.ВыбратьЭлементы();

   Пока Клн.ПолучитьЭлемент() 0 Цикл

      Если Клн.ЭтоГруппа() = 1 Тогда

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

      Иначе

         Рег.Клиент = Клн.ТекущийЭлемент();

         Рег.ОстаткиПолучить();

         Баз_сум = Рег.СуммаБазовая;

         Вал_сум = Рег.СуммаВалютная;

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

         // цикл по всем документам

         Док.ВыбратьДокументы(ДатаНачало, ДатаКонец);

         Пока Док.ПолучитьДокумент() 0 Цикл

            // отфильтруем документы

            Если (Док.Вид() = Перемещение) ИЛИ (Док.Вид() = Счет) ИЛИ

                 (Док.Вид() = Списание) ИЛИ

                 (Док.Вид() = РучноеИзмОстатка) Тогда

               // Эти Документы не изменяют Взаиморасчеты

               Продолжить;

            КонецЕсли;

            // выберем все движения регистра по документу

            Рег1.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());

            Пока Рег1.ПолучитьДвижение() 0 Цикл

               Если Строка(Рег1.Клиент.Код) Строка(Клн.Код) Тогда

                  // не тот клиент

                  Продолжить;

               КонецЕсли;

               Дв_Баз_Сум = Рег1.СуммаБазовая;

               Дв_Вал_Сум = Рег1.СуммаВалютная;

               Если Рег1.Приход = 1 Тогда

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

               Иначе

                  Таб.ВывестиСекцию(Расход);

               КонецЕсли;

            КонецЦикла;

         КонецЦикла;

      КонецЕсли;

   КонецЦикла;

   //Вызов выходного отчета в окно просмотра и редактирования.

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

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

   Таб.Показать(Взаиморасчеты с клиентами, );

   ВыбКлиент = 0;

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

См. также: ПолучитьДвижение

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

Установить порядок выборки документов.

Синтаксис:

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

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

BackwardOrder

Параметры:

Режим Необязательный параметр. Числовое выражение: 1 — выбирать движения документов в обратном по­рядке даты и времени; 0 — выбирать движения до­кументов в порядке возрастания даты и времени.
Возвращаемое значение:

Числовое значение, содержащее текущее значение режима порядка выборки документов (на момент до исполнения метода).

Описание:

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

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

В тексте программного модуля возможно использование данного метода как процедуры или как функции. При использовании в качестве функции, возвра­щаемое значение соответствует текущему порядку выборки, которое было до вызова данного метода.

Пример:

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

Если Режим = Подробно Тогда

   Рег1.УстановитьФильтр(Клиент);

   // Открываем выборку

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

   Рег1.ВыбратьДвижения(ДатаНачало, );

   // Цикл выбора движений по регистру

   Пока Рег1.ПолучитьДвижение() 0 Цикл

      Если Строка(Рег1.Клиент.Код) Строка(Запрос.Клиент.Код) Тогда

         Продолжить;

      КонецЕсли;

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Расход = 1 Тогда

         Таб.ВывестиСекцию(Расход2);

      Иначе

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

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

ПолучитьДвижение

Выбрать очередное движение регистра.

Синтаксис:

ПолучитьДвижение()

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

GetDocAct

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

Число: 1 — если следующее движение регистра выбрано успешно; 0 — если движение регистра не найдено (отсутствует).

Описание:

Метод ПолучитьДвижение выбирает следующее движение регистра в по­следовательности выборки, открытой перед этим при помощи методов ВыбратьДвиженияДокумента или ВыбратьДвижения или ВыбратьДвиженияСОстатками. Данный метод используется для организации цикла по регистру.

После выполнения даннго метода все атрибуты регистра: измерения, ресур­сы, Приход и Расход содержат значения текущей записи движения регистра.

Данный метод может использоваться только для позиционируемых объек­тов, созданных функцией СоздатьОбъект.

Пример:

Рег1 = СоздатьОбъект(Регистр.Взаиморасчеты);

Если Режим = Подробно Тогда

   Рег1.УстановитьФильтр(Клиент);

   // Открываем выборку

   Рег1.ВыбратьДвижения(ДатаНачало, );

   // Цикл выбора движений по регистру

   Пока Рег1.ПолучитьДвижение() 0 Цикл

      Если Строка(Рег1.Клиент.Код) Строка(Запрос.Клиент.Код) Тогда

         Продолжить;

      КонецЕсли;

      Док = Рег1.ТекущийДокумент();

      Дв_Баз_Сум = Рег1.СуммаБазовая;

      Дв_Вал_Сум = Рег1.СуммаВалютная;

      Если Рег1.Расход = 1 Тогда

         Таб.ВывестиСекцию(Расход2);

      Иначе

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

      КонецЕсли;

   КонецЦикла;

КонецЕсли;

См. также: ВыбратьДвиженияДокумента, ВыбратьДвижения, ВыбратьДвиженияСОстатками

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

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

Синтаксис:

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

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

CurrentDocument

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

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

Описание:

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

Данный метод может использоваться только для переменных созданных функцией СоздатьОбъект.

Пример:

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

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент, );

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, Задолженность);

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

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

КонецЦикла;

См. также: ПолучитьДвижение, НомерСтроки

НомерСтроки

Возвратить номер строки документа, выполнившего движение регистра.

Синтаксис:

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

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

LineNum

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

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

Описание:

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

Данный метод может использоваться только для переменных созданных Функцией СоздатьОбъект.

Пример:

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

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент);

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, Задолженность);

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

   НомСтр = Рег.НомерСтроки();

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

КонецЦикла;

См. также: ПолучитьДвижение, ТекущийДокумент, ПривязыватьСтроку

ВыбратьИтоги

Выбрать все остатки регистра.

Синтаксис:

ВыбратьИтоги()

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

SelectTotals

Описание:

Метод ВыбратьИтоги инициирует перебор текущих или временных (см. ВременныйРасчет) остатков по регистру, при этом используется фильтр, если он установлен (см. УстановитьФильтр). Открывается выборка остатков по всем записанным значениям измерений.

Собственно выбор первого и последующих остатков регистра осуществляет­ся функцией ПолучитьИтог.

Пример:

Процедура ВыбратьКредит()

   Список = СоздатьОбъект(СписокЗначений);

   Рег = СоздатьОбъект(Регистр.ТоварныйКредит);

   Рег.УстановитьФильтр(Клиент, );

   Рег.ВыбратьИтоги();

   Ном = 0;

   Пока Рег.ПолучитьИтог() = 1 Цикл

      Док = Рег.Документ;

      Список.ДобавитьЗначение(Док, + Док + — Остаток = + Рег.Долг);

      Если Ном = 0 Тогда

         ВыбДок = Док;

      КонецЕсли;

      Ном = Ном + 1;

   КонецЦикла;

   Если Ном 0 Тогда

      Если Список.ВыбратьЗначение(ВыбДок, Выберите кредит) = 1 Тогда

         ДокКредита = ВыбДок;

      КонецЕсли;

   КонецЕсли;

   Возврат;

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

См. также: УстановитьФильтр, ПолучитьИтог, ВыбратьДвижения, ВременныйРасчет, РассчитатьРегистрыНа, РассчитатьРегистрыПо

ПолучитьИтог

Выбрать очередной остаток по регистру.

Синтаксис:

ПолучитьИтог()

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

GetTotal

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

Число: 1 — если очередной остаток по регистру выбран успешно; 0 — если очередной остаток по регистру не найден (отсутствует).

Описание:

Метод ПолучитьИтог выбирает очередной остаток по регистру в последо­вательности выборки, открытой перед этим при помощи метода ВыбратьИто­ги. Данный метод используется для организации цикла по регистру — позволя­ет перебрать текущие или временные (см. ВременныйРасчет) остатки по ре­гистру. При этом используется фильтр, если он установлен (см. УстановитьФильтр). Открывается выборка остатков по всем записанным зна­чениям измерений.

Итоги с нулевыми остатками не выдаются. Порядок выдачи для измерений типа «справочник» и «документ» не определен.

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

Пример:

Процедура ВыбратьКредит()

   Список = СоздатьОбъект(СписокЗначений);

   Рег = СоздатьОбъект(Регистр.ТоварныйКредит);

   Рег.УстановитьФильтр(Клиент, );

   Ном = 0;

   Рег.ВыбратьИтоги();

   Пока Рег.ПолучитьИтог() = 1 Цикл

      Док = Рег.Документ;

      Список.ДобавитьЗначение(Док, + Док + — Остаток = + Рег.Долг);

      Если Ном = 0 Тогда

         ВыбДок = Док;

      КонецЕсли;

      Ном = Ном + 1;

   КонецЦикла;

   Если Ном 0 Тогда

      Если Список.ВыбратьЗначение(ВыбДок, Выберите кредит) = 1 Тогда

         ДокКредита = ВыбДок;

      КонецЕсли;

   КонецЕсли;

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

См. также: ВыбратьИтоги

ВыгрузитьИтоги

Выгрузить все итоги регистра с текущим фильтром в таблицу значений.

Синтаксис:

ВыгрузитьИтоги(Та6лЗнач, ВключатьИзмерФильтра, ПредварительноОчищать)

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

RetrieveTotals

Параметры:

ТаблЗнач Объект типа ТаблицаЗначений, куда сис­тема выгрузит все итоги регистра.
ВключатьИзмерФильтра Необязательный параметр. Число: 1 — в получаемую таблицу включаются измере­ния, закрепленные фильтром; 0 — не включаются. Значение по умолчанию — 0.
ПредварительноОчищать Необязательный параметр. Число: 1 — пе­ред выгрузкой таблица значений очищает­ся; 0 — не очищается. Значение по умолча­нию — 1.
Описание:

Метод ВыгрузитьИтоги выгружает все итоги регистра с текущим фильт­ром (см. УстановитьФильтр) в таблицу значений.

Пример:

Функция ВыбратьКредит(ВыбКлиент)

   Список = СоздатьОбъект(ТаблицаЗначений);

   Рег = СоздатьОбъект(Регистр.ТоварныйКредит);

   Рег.УстановитьФильтр(ВыбКлиент, );

   Рег.ВыгрузитьИтоги(Список, 1);

   Возврат Список;

КонецФункции

См. также: УстановитьФильтр

ВременныйРасчет

Установить флаг участия регистра во временном расчете.

Синтаксис:

ВременныйРасчет(Флаг)

Англоязычный термин:

TempCalc

Параметры:

Флаг Необязательный параметр. Числовое выражение. 1 — установить флаг участия регистра во временном расчете; 0 — сбросить флаг участия регистра во временном расчете. Значение по умолчанию — 1.
Возвращаемое значение:

Текущее числовое значение флага участия регистра во временном расчете.

Описание:

Метод ВременныйРасчет устанавливает флаг участия регистра во времен­ном расчете. После такой установки можно выполнять процедуры рассчитатьРегистрыНа и РассчитатьРегистрыПо, тогда у данного регист­ра методы обращения к остаткам будут выдавать рассчитанные значения остат­ков на заданный момент времени.

Замечание. В один момент времени только по одному объекту регистров каж­дого вида могут участвовать во временном расчете.

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

Рег = СоздатьОбъект(Регистр.УчетРеализации);

Рег.ВременныйРасчет();

РассчитатьРегистрыНа(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

См. также: РассчитатьРегистрыНа, РассчитатьРегистрыПо

УстановитьФильтр

Назначить фильтр для оптимизации действий с регистром.

Синтаксис:

УстановитьФильтр(Измер1, Измер2..., Рекв1, Рекв2, ...)

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

SetFilter

Параметры:

Измер1 , Измер2 Выражения со значениями измерений регистра.
Рекв1, рекв2 Необязательные параметры. Выражения со значениями реквизитов регистра. Заданные значения реквизитов будут влиять только на отбор движе­ний регистра.
Описание:

Метод УстановитьФильтр назначает фильтр для оптимизации действий с регистром (временные расчеты, выбор движений и итогов).

В качестве фильтра задаются конкретные значения измерений и реквизитов регистра. Могут быть заданы не все значения, а только несколько, но обяза­тельно в правильной последовательности, соответствующей структуре выбран­ного регистра, как она задана в конфигураторе. Измерения и реквизиты могут задаваться с пропусками (неуказанное значение — просто запятая), фиксируют­ся только указанные значения.

Пример:

* Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.УстановитьФильтр(Тов1, , );

означает, что расчеты будут проводиться только по одному товару (Тов1), но по всем складам и МОЛам.

*

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

Рег.ВременныйРасчет();

Рег.УстановитьФильтр(Клиент, );

РассчитатьРегистрыНа(ДатаНачала);

Рег.ВыбратьДвиженияСОстатками(ДатаКонца);

Пока Рег.ПолучитьДвижение() = 1 Цикл

   Прих = 0;

   Расх = 0;

   Если Рег.Приход = 1 Тогда

      Прих = Рег.Долг;

   Иначе

      Расх = Рег.Долг;

   КонецЕсли;

   ТекущееСальдо = Рег.Остаток(Клиент, Задолженность);

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

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

КонецЦикла;

См. также: ВременныйРасчет

УстановитьЗначениеФильтра

Установить значение фильтра для оптимизации расчетов.

Синтаксис:

УстановитьЗначениеФильтра(ИзмерИлиРеквизит, 3начен, Вариант)

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

SetFilterValue

Параметры:

ИзмерИлиРеквизит Идентификатор измерения или реквизита.
3начен Значение или список значений.
Вариант Необязательный параметр. Число: 0 — не фильт­ровать; 1 — фильтровать по значению; 2 — искать вхождение. Значение по умолчанию 1.

Для варианта «2»:

- если параметр 3начен — это группа справоч­ника, то осуществляется проверка вхождения в группу;

- если параметр 3начен — это простой элемент справочника или другой тип значения, то осуще­ствляется просто фильтрация по значению;

- для списка значений осуществляется проверка вхождения в список;

- если пустое значение или пустой список значе­ний, то условие не проверяется.
Описание:

Метод УстановитьЗначениеФильтра назначает фильтр для оптимизации расчетов. В качестве фильтра для измерения или реквизита регистра может задаваться либо конкретное значение, либо список значений либо группа для справочника.

Пример:

* Для регистра с измерениями «Товар», «Склад», «МОЛ» запись

Рег.УстановитьЗначениеФильтра(Товар, ВыбГруппаТоваров, 2);

означает, что расчеты будут проводиться по товарам из группы ВыбГруппа­Товаров.

Методы контекста Модуля документа

Следующие методы доступны только в контексте Модуля документа в сис­темной предопределенной процедуре ОбработкаПроведения.

Замечание. Перечисленные в этом разделе методы можно применять только к регистрам, непосредст­венно доступным в контексте Модуля документа, т. е. нельзя создать объ­ект типа «регистр» с помощью функции СоздатьОбъект и к нему при­менять метод из данного раздела.

ПривязыватьСтроку

Записать номер строки документа в движении регистра.

Синтаксис:

ПривязыватьСтроку(НомерСтроки)

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

LinkLine

Параметры:

НомерСтроки Выражение, содержащее номер строки документа

Описание:

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

Метод ПривязыватьСтроку может быть использован как системная про­цедура: тогда он будет устанавливать номер строки для всех регистров по кото­рым выполняются движения, или как метод конкретного регистра: тогда он будет устанавливать номер строки только для данного регистра.

Данный метод доступен только в контексте Модуля документа в предопре­деленной процедуре ОбработкаПроведения (см. Гл. «Работа с Документа­ми»).

Пример:

Процедура ОбработкаПроведения()

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока(ПолучитьСтроку() 0) Цикл

      Регистр.ТовЗап.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

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

ДвижениеПриход

Выполнить запись прихода в регистр по параметрам.

Синтаксис:

ДвижениеПриход (Измерен1, Измерен2 ... , Ресурс1, Ресурс2 ...)

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

ActIncome

Параметры:

Измерен1, Измерен2 Выражения со значениями измерений регистра.
Ресурс1, Ресурс2 Выражения со значениями ресурсов регистра.
Описание:

Метод ДвижениеПриход выполняет запись прихода в регистр для текущего документа. Измерения регистра, по которым записывается приход передаются параметрами Измерение1, Измерение2, ... Величина приращений прихо­дуемых ресурсов регистра передаются параметрами Ресурс1, Ресурс2...

Данный метод доступен только в контексте Модуля документа в предопре­деленной процедуре ОбработкаПроведения (см. Гл. «Работа с Документа­ми»).

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

Пример:

Процедура ОбработкаПроведения();

   ВыбратьСтроки();

   Пока ПолучитьСтроку() 0 Цикл

      Регистр.ТовЗап.ПривязыватьСтроку(НомерСтроки);

      Регистр.ТовЗап.ДвижениеПриход(Склад, Товар, Количество, Стоимость);

   КонецЦикла;

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

См. также: ОбработкаПроведения

ДвижениеРасход

Выполнить запись расхода в регистр по параметрам.

Синтаксис:

ДвижениеРасход(Измерен1, Измерен2..., Ресурс1, Ресурс2...)

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

ActOutcome

Параметры:

Измерен1, Измерен2 Выражения со значениями измерений регистра.
Ресурс1 , Ресурс2 Выражения со значениями ресурсов регистра.
Описание:

Метод ДвижениеРасход выполняет запись расхода в регистр для текущего документа. Измерения регистра, по которым записывается расход передаются Измервн1, Измерен2, .. Величина приращений расходуемых ресурсов регистра передаются параметрами Ресурс1, Ресурс2...

Данный метод доступен только в контексте Модуля документа в предопре­деленной процедуре ОбработкаПроведения (см. Гл. «Работа с Документа­ми»).

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

Пример:

Процедура ОбработкаПроведения();

   ВыбратьСтроки();

   Пока( ПолучитьСтроку() 0) Цикл

      Регистр.ТовЗап.ДвижениеРасход(Склад, Товар, Количество, Стоимость);

   КонецЦикла;

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

См. также: ОбработкаПроведения

ДвижениеПриходВыполнить

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

Синтаксис:

ДвижениеПриходВыполнить()

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

DoActIncome

Описание:

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

Данный метод доступен только в контексте Модуля документа в предопре­деленной процедуре ОбработкаПроведения (см. Гл. «Работа с Документа­ми»).

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

Пример:

Процедура ОбработкаПроведения();

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока(ПолучитьСтроку() 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеПриходВыполнить();

   КонецЦикла;

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

См. также: ОбработкаПроведения

ДвижениеРасходВыполнить

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

Синтаксис:

ДвижениеРасходВыполнить()

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

DoActOutcome

Описание:

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

Данный метод доступен только в контексте Модуле документа в предопре­деленной процедуре ОбработкаПроведения (см. Гл. «Работа с Документа­ми»).

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

Пример:

Процедура ОбработкаПроведения()

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока(ПолучитьСтроку() 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

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

См. также: ОбработкаПроведения

Движение

Выполнить запись движения в оборотный регистр по параметрам.

Синтаксис:

Движение(Измерен1, Измерен2..., Ресурс1 , Ресурс2...)

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

Act

Параметры:

Измерен1 , Измерен2 Выражения со значениями измерений регистра.
Ресурс1, Ресурс2 Выражения со значениями ресурсов регистра.
Описание:

Метод Движение выполняет запись движения в оборотный регистр для те­кущего документа. Измерения регистра, по которым записывается движение передаются в параметрах Измерен1, Измерен2, .. Величины приращений ресурсов регистра передаются параметрами Ресурс1, Ресурс2...

Данный метод доступен только в контексте Модуля документа в предопре­деленной процедуре ОбработкаПроведения (см. Гл. «Работа с Документа­ми»).

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

Пример:

Процедура ОбработкаПроведения();

   ВыбратьСтроки();

   Пока ПолучитьСтроку() 0 Цикл

      Регистр.ОборотыТоваров.Движение(Товар, Склад, ОборотТовара);

   КонецЦикла;

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

См. также: ОбработкаПроведения

ДвижениеВыполнить

Выполнить запись движения в оборотный регистр по атрибутам.

Синтаксис:

ДвижениеВыполнить()

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

DoAct

Описание:

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

Данный метод доступен только в контексте Модуля документа в предопре­деленной процедуре ОбработкаПроведения (см. Гл. Работа с Документа­ми).

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

Пример:

Процедура ОбработкаПроведения();

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока (ПолучитьСтроку() 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Оборот = Оборот;

      Регистр.ТовЗап.ДвижениеВыполнить();

   КонецЦикла;

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

См. также: ОбработкаПроведения

Системные процедуры работы с регистрами

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

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

Рассчитать все временные регистры на начало события.

Синтаксис:

РассчитатьРегистрыНа(ГраницаРасчета, ГрафаОтбора)

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

CalcRegsOnBeg

Параметры:

ГраницаРасчета Выражение со значением типа дата, документ или позиция документа.
ГpaфaOтбopa Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в кон­фигураторе. Данный параметр устанавливает режим использования определенной графы отбора. * — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.
Описание:

Процедура РассчитатьРегистрыНа рассчитывает все регистры, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет), на момент начала события. Если при вызове метода в параметре передана дата, то расчет временных регистров производится на начало указанной даты. Если при вызове метода в параметре передан документ, то расчет временных регистров производится на момент до проведения данного документа.

Применение данной процедур в тексте любого программного модуля непо­средственное, т. е. просто имя процедуры с параметрами (без предварительной ссылки на объект).

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

Рег = СоздатьОбъект(Регистр.УчетРеализации);

Рег.ВременныйРасчет();

РассчитатьРегистрыНа(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

РассчитатьРегистрыПо

Рассчитать все регистры на конец события.

Синтаксис:

РассчитатьРегистрыПо(ГраницаРасчета, ГрафаОтбора)

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

CalcRegsOnEnd

Параметры:

ГраницаРасчета Выражение со значением типа дата, документ или позиция документа.
ГрафаОтбора Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в кон­фигураторе. Данный параметр устанавливает режим использования определенной графы отбора. * — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.
Описание:

Процедура РассчитатьРегистрыПо рассчитывает все регистры, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет), на момент окончания события. Если при вызове метода в параметре передана дата, то расчет временных регистров производится на конец указанной даты. Если при вызове метода в параметре передан документ, то расчет временных регист­ров производится на момент после проведения данного документа.

Применение данной процедуры в тексте любого программного модуля непо­средственное, т. е. просто имя процедуры с параметрами (без предварительной ссылки на объект).

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

Рег = СоздатьОбъект(Регистр.УчетРеализации);

Рег.ВременныйРасчет();

РассчитатьРегистрыПо(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

Вспомогательный объект Регистры В системе 1С:Предприятие есть возможность создавать вспомогательные объекты типа «Регистры». Использование этих объектов дает возможность пре­одолеть ограничение на выполнение временного расчета в один момент време­ни только по одному регистру каждого вида. Система позволяет выполнять параллельно временные расчеты одних и тех же регистров, но для разных объ­ектов «Регистры». Дело в том, что регистры одного объекта воспринимаются системой независимо от регистров другого объекта.

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

Пример:

СпецРег = СоздатьОбъект(Регистры);

Объект «Регистры» через свои атрибуты предоставляет доступ к любому виду регистра конфигурации. Методы данного объекта позволяют выполнять временный расчет именно для регистров данного объекта, независимо от реги стров другого (аналогичного) объекта.

Атрибуты объекта Регистры

ИдентификаторРегистра

Регистр конфигурации.

Синтаксис:

ИдентификаторРегистра

Описание:

Атрибут ИдентификаторРегистра предоставляет доступ к регистру конфигурации конкретного вида. В тексте программного модуля используется название конкретного регистра, как он назван в конфигураторе.

Пример:

СпецРег = СоздатьОбъект(Регистры);

СпецРег.УчетТоваров.СводныйОстаток(ВыбТовар, ВыбСклад, Количество)

Методы объекта Регистры

ПолучитьАтрибут

Получить значение атрибута по идентификатору.

Синтаксис:

ПолучитьАтрибут(ИмяАтрибута)

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

GetAttrib

Параметры:

ИмяАтрибута Строковое выражение, содержащее идентифика­тор регистра конфигурации.
Возвращаемое значение:

Значение атрибута ИмяАтрибута.

Описание:

Метод ПолучитьАтрибут позволяет получить значение регистра по иден­тификатору, как он задан в метаданных.

Пример:

СпецРег = СоздатьОбъект(Регистры);

Рег = СпецРег.ПолучитьАтрибут(ОстаткиТоваров);

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

Рассчитать все временные регистры на начало события.

Синтаксис:

РассчитатьРегистрыНа(ГраницаРасчета, ГрафаОтбора)

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

CalcRegsOnBeg

Параметры:

ГраницаРасчета Выражение со значением типа дата, документ или позиция документа.
ГрафаОтбора Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в кон­фигураторе. Данный параметр устанавливает режим использования определенной графы отбора. * — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.
Описание:

Процедура РассчитатьРегистрыНа рассчитывает для объекта типа «Реги­стры» все регистры, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет), на момент начала события. Если при вызове метода в параметре передана дата, то расчет временных регистров производится на нача­ло указанной даты. Если при вызове метода в параметре передан документ, то расчет временных регистров производится на момент до проведения данного документа.

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

СпецРег = СоздатьОбъект(Регистры);

Рег = СпецРег.УчетРеализации;

Рег.ВременныйРасчет();

СпецРег.РассчитатьРегистрыНа(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

РассчитатьРегистрыПо

Рассчитать все регистры на конец события.

Синтаксис:

РассчитатьРегистрыПо(ГраницаРасчета, ГрафаОтбора)

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

CalcRegsOnEnd

Параметры:

ГраницаРасчета Выражение со значением типа дата, документ или позиция документа.
ГрафаОтбора Необязательный параметр. Строковое выражение — идентификатор графы отбора, как он задан в кон­фигураторе. Данный параметр устанавливает режим использования определенной графы отбора * — автоматический выбор графы отбора. Пустая строка — не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.
Описание:

Процедура РассчитатьРегистрыПо рассчитывает для объекта типа «Реги­стры» все регистры, у которых установлен флаг участия во временном расчете (см. ВременныйРасчет), на момент окончания события. Если при вызове ме­тода в параметре передана дата, то расчет временных регистров производится на конец указанной даты. Если при вызове метода в параметре передан доку­мент, то расчет временных регистров производится на момент после проведе­ния данного документа.

Пример:

// если итоги не актуальны, то стоимости берем из временного расчета

// регистра УчетРеализации

СпецРег = СоздатьОбъект(Регистры);

Рег = СпецРег.УчетРеализации;

Рег.ВременныйРасчет();

СпецРег.РассчитатьРегистрыПо(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;

Актуальность

Устанавливает флаг актуальности временного расчета.

Синтаксис:

Актуальность(ФлагАктуальности)

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

Actual

Параметры:

ФлагАктуальности Необязательный параметр. Число: 1 — временный расчет поддерживать в актуальном состоянии; 0 — не поддерживать актуальность временного расче­та. Если параметр не задан, то метод просто воз­вращает текущий флат актуальности не меняя его.
Возвращаемое значение:

Текущее состояние флага актуальности временного расчета. Число: 1 — временный расчет поддерживается в актуальном состоянии; 0 — не поддержива­ется.

Описание:

Метод Актуальность устанавливает для объекта типа «Регистры» флаг ак­туальности временного расчета. Если флаг установлен, то все последующие движения регистров будут изменять итоги временного расчета, а значит итоги регистров временного расчета будут все время (при проведении документа) находиться в актуальном состоянии.

Внимание. Данный метод можно использовать только в модуле проведения документа.

Пример:

// стоимости берем из временного расчета

// регистра УчетРеализации

СпецРег = СоздатьОбъект(Регистры);

СпецРег.Актуальность(1);

Рег = СпецРег.УчетРеализации;

Рег.ВременныйРасчет();

СпецРег.РассчитатьРегистрыНа(ТекущийДокумент());

Рег.Товар = Товар;

Рег.Клиент = Клиент;

Рег.ОстаткиПолучить();

ТекОстаток = Рег.ОстатокТовара;

ТекСтоимость = Рег.Стоимость;

ТекПродСтоимость = Рег.ПродСтоимость;


Содержание раздела