Контекст работы с журналами операций
Журнал операций — это средство для работы со списком операций. В терминах языка журнал операций не является специальным типом данных (он не имеет значения и его нельзя создать при помощи функции СоздатьОбъект()
).
С журналом в системе связана форма отображения списка операций и программный модуль формы журнала операций. В локальном контексте этого программного модуля непосредственно доступны реквизиты формы. Кроме того, здесь непосредственно доступен объект "
Операция"
, содержащий значение выбранной в журнале операции. Другими словами, в модуле формы журнала операций обращение к атрибутам и методам текущей операции выполняется напрямую.
Модуль Формы журнала операций размещается в разделе конфигурации: Метаданные – Журнал операций – Форма. Модуль запускается при открытии формы журнала операций из программы. Чтобы открыть модуль для редактирования, необходимо щёлкнуть правой кнопкой мыши по значку «Операция» и в появившемся контекстном меню последовательно выбрать «Формы журнала» и имя соответствующего журнала:

Методы контекста Модуля формы журнала операций
Методы для работы с интервалом видимости записей в журнале
Установить интервал видимости записей в журнале операций позволяет метод УстановитьИнтервал()
(англоязычный синоним — SetRange()
). Метод доступен только в контексте Модуля формы журнала операций. После вызова данного метода в журнале операций будут доступны только операции, даты которых лежат внутри заданного интервала (включая указанные даты).
Синтаксис:
УстановитьИнтервал(<ДатаНач>, <ДатаКон>, <ФлагИзменения>)
где
- <ДатаНач> — выражение типа
"
Дата"
— начальная дата интервала журнала операций; - <ДатаКон> — выражение типа
"
Дата"
— конечная дата интервала журнала операций; - <ФлагИзменения> — флаг, регулирующий возможность интерактивного изменения интервала журнала. Если установлено значение 1, то пользователь может изменить интервал журнала интерактивно, а если 0 — пользователь не может интерактивно изменить интервал журнала. Параметр является необязательным. Значение по умолчанию 1.
Пример записи метода:
УстановитьИнтервал(НИ, КИ)
Примечание: Установить интервал видимости записей в журнале операций может любой пользователь через главное меню программы (пункты «Действия -> Интервал»), либо с помощью кнопки «Интервал» () на панели инструментов журнала. Метод УстановитьИнтервал() позволяет сделать недоступными эти кнопки и пункты меню для отдельных категорий пользователей.
По умолчанию же в журнале используется интервал видимости записей, установленный в окне «Настройка параметров системы».

Получить начальную дату интервала журнала операций позволяет метод НачалоИнтервала()
(англоязычный синоним — BegOfRange()
). Параметров у метода нет. Возвращаемым значением метода является значение типа "
Дата"
.
Пример записи метода:
НИ = НачалоИнтервала();
Получить конечную дату интервала журнала операций позволяет метод КонецИнтервала()
(англоязычный синоним — EndOfRange()
). Параметров у метода нет. Возвращаемым значением метода является значение типа "
Дата"
.
Пример записи метода:
КИ = КонецИнтервала();
Методы для организации отборов
Механизм отбора операций предоставляет пользователю возможность просматривать в журнале операции, отобранные по некоторому значению их реквизитов (по сумме, по содержанию). Настраивается механизм отбора в Конфигураторе ещё на этапе конфигурирования, когда определяются виды отбора. Разрешение на отбор по основным реквизитам операции даётся в окне редактирования объекта "
Операция"
, путём включения соответствующих опций:

Каждой включенной опции соответствует системное имя отбора:
СуммаОперации
— отбор по сумме операции;Содержание
— отбор по содержанию операции
Эти системные имена отборов потом выдаются пользователю в диалоге «Отбор». Эти имена можно также использовать во встроенном языке системы «1С:Предприятие», например, при вызове метода ВидыОтбора()
, речь о котором пойдёт ниже.
Кроме этого, в Конфигураторе можно включить возможность выполнять отборы по дополнительным реквизитам операции. Для этого используется опция «Отбор» на вкладке «Дополнительные» палитры свойств дополнительного реквизита операции (см. рис. ниже). В этих случаях в качестве имён отбора следует использовать идентификаторы дополнительных реквизитов операции.

Кроме того в качестве имён отборов могут выступать идентификаторы граф отбора, в которых участвуют бухгалтерские документы или виды субконто, или данные операции или проводки. Также в журнале операций возможен отбор по видам документов, для которых установлен признак «Бухгалтерский учет». Имена этих отборов определяются идентификаторами видов документов.
В дальнейшем для установки отбора по конкретному реквизиту пользователю необходимо будет только последовательно выбрать в главном меню программы пункты «Действия -> Отбор по значению -> Отобрать…», либо щёлкнуть по кнопке «Отбор по значению» () на панели инструментов журнала. При этом на экран будет выведено диалоговое окно «Отбор»:

Установить же отбор программными средствами, а также ограничить список видов отбора для определённых групп пользователей, позволяют методы, описание которых приведено ниже.
Установить доступные виды отборов журнала операций позволяет метод ВидыОтбора()
(англоязычный синоним — KindsOfSelection()
). Использование данного метода влияет на полноту списка видов отбора, который выдается пользователю в диалоге «Отбор» (см. рис. выше) при работе с системой «1С:Предприятие». Метод также позволяет совсем запретить выполнение отбора в журнале операций.
Синтаксис:
ВидыОтбора(<СписокОтборов>)
где <СписокОтборов> — строковое выражение, которое может принимать следующие значения:
*
(символ «звёздочка») — для журнала используются все назначенные в Конфигураторе виды отборов;""
(пустая строка) — запрещаются все виды отборов;- список имён отборов через запятую — в журнале операций будут доступны только указанные виды отборов.
Примечание: Ограничение списка отборов, выполненное при помощи метода ВидыОтбора()
, не исключает использование «запрещённого» отбора средствами встроенного языка. Например, методом ВидыОтбора("")
можно запретить использование любых отборов в журнале операций, но тут же из языка установить отбор операций по конкретному содержанию операции. В этом случае пользователь будет просматривать операции с конкретным содержанием, но не будет иметь возможность отобрать операции с другим содержанием.
Пример записи метода:
ВидыОтбора("Клиент, Пользователь");
Установить в форме журнала операций закладки для интерактивного осуществления отбора позволяет метод ЗакладкиОтбора()
(англоязычный синоним — TabCtrlSelection()
). При включении закладок в верхней части журнала операций появляются ярлыки, соответствующие значениям отбора. Щелчком мыши по ярлыку можно открыть «страницу» журнала операций: такая «страница» будет содержать операции, отобранные по указанному значению.
Синтаксис метода:
ЗакладкиОтбора(<ИмяОтбора>, <ВИнтервалеЖурнала>, <УстановитьНаЗначение>, <ЗначениеОтбора>)
где
- <ИмяОтбора> — строковое выражение — имя отбора. Список имён всех возможных системных отборов был приведён выше. В качестве имён отборов по дополнительным реквизитам и субконто следует использовать идентификаторы соответствующих реквизитов и субконто. Если же параметру присвоить значение
""
(пустая строка), закладки, установленные ранее методомЗакладкиОтбора()
, будут удалены; - <ВИнтервалеЖурнала> — числовое выражение — признак отбора только в интервале журнала. Может принимать значения: 1 — текущие значения отбора для закладок выбираются только по операциям в установленном интервале журнала; 0 — текущие значения отбора для закладок выбираются по всем операциям журнала. Параметр является необязательным. Значение по умолчанию — 0;
- <УстановитьНаЗначение> — числовое выражение — признак выбора значения отбора для показа. Параметр может принимать значения: 1 — для показа выбирается отбор по значению, указанному в параметре <ЗначениеОтбора>; 0 — текущее значение отображаемой закладки отбора устанавливается на первое существующее значение. Параметр является необязательным. Значение по умолчанию — 0;
- <ЗначениеОтбора> — значение отбора. Параметр является необязательным.
Пример записи метода:
ЗакладкиОтбора("Автор", 1,,);
Принудительно установить отбор для журнала операций позволяет метод УстановитьОтбор()
(англоязычный синоним — SetSelection()
). Для установки отбора методу должны быть переданы два параметра: имя отбора и значение отбора.
Синтаксис метода:
УстановитьОтбор(<ИмяОтбора>, <ЗначениеОтбора>)
где
- <ИмяОтбора> — строковое выражение — имя отбора. Список имён всех возможных системных отборов был приведён выше. В качестве имён отборов по дополнительным реквизитам и субконто следует использовать идентификаторы соответствующих реквизитов и субконто. Если же параметру присвоить значение
""
(пустая строка), отбор отключается; - <ЗначениеОтбора> — значение отбора. Параметр является необязательным, если в первом параметре используется пустая строка.
Пример записи метода:
УстановитьОтбор("Склады", Склад1);
Определить, включен отбор или нет, позволяет метод ПолучитьОтбор()
(англоязычный синоним — GetSelection()
). Возвращаемым значением метода будет число 1, если отбор включен, или 0, если отключен. Имя отбора и текущее значение отбора записываются в переменные, передаваемые методу в качестве параметров.
Синтаксис метода:
ПолучитьОтбор(<ИмяОтбора>, <ЗначениеОтбора>)
где
- <ИмяОтбора> — имя переменной, куда будет записано строковое значение имени отбора. Параметр является необязательным;
- <ЗначениеОтбора> — имя переменной, куда будет записано значение отбора. Параметр является необязательным.
Пример записи метода:
Изм = ПолучитьОтбор();
Примечание: Выбирать все существующие значения отбора позволяет глобальная встроенная функция ПолучитьЗначенияОтбора()
(англоязычный синоним — GetSelectionValues()
). Данная функция выбирает все возможные существующие значения указанного отбора, заполняет выбранными значениями объект типа "
СписокЗначений"
и передает ссылку на этот объект в указанную переменную.
Функция может работать и с выбранными в конфигурации отборами операций и проводок ("
СуммаОперации"
, "
Содержание"
, "
Сумма"
, "
Валюта"
, "
Количество"
, "
ВалСумма"
, "
Счет"
, "
СчетДт"
, "
СчетКт"
, "
ПланСчетов"
, по реквизитам операции, по реквизитам проводки, по видам субконто) для которых установлен режим отбора.
Синтаксис функции:
ПолучитьЗначенияОтбора(<ИмяОтбора>, <СписокЗначений>, <ДатаНач>, <ДатаКон>)
где
- <ИмяОтбора> — строковое выражение с полным названием общего реквизита документа или графы отбора, как они названы в конфигурации;
- <СписокЗначений> — идентификатор переменной. Если при вызове метода данная переменная содержит объект типа
"
СписокЗначений"
, то система заполнит его всеми возможными существующими значениями отбора. Если при вызове метода данная переменная содержит любое другое значение кроме объекта типа"
СписокЗначений"
, то система сама создаст объект типа"
СписокЗначений"
, заполнит его существующими значениями отбора и присвоит переменной ссылку на этот объект; - <ДатаНач> — дата начала интервала, в котором будет производиться отбор. Параметр является необязательным. Если параметр не задан, то отбор будет производиться по всем данным;
- <ДатаКон> — дата конца интервала, в котором будет производиться отбор. Параметр является необязательным. Если параметр не задан, то отбор будет производиться до ТА.
Пример использования:
// Выбрать существующие значения Авторов документов ПолучитьЗначенияОтбора("Автор", Спис,,);
Предопределенные процедуры Модуля формы журнала операций
При попытке интерактивной установки интервала в журнале операций системой «1С:Предприятие» производится вызов предопределённой процедуры ПриУстановкеИнтервала()
(англоязычный синоним — OnSetSelectInJournal()
). Если в данной предопределённой процедуре установить статус возврата в 0 (например, если данному пользователю нельзя изменять интервал журнала), установка не будет выполнена.
Синтаксис процедуры:
Процедура ПриУстановкеИнтервала(<ДатаНач>, <ДатаКон>) . . . КонецПроцедуры
где
- <ДатаНач> — дата начала интервала журнала;
- <ДатаКон> — дата конца интервала журнала.
Пример использования:
Процедура ПриУстановкеИнтервала(Дата1, Дата2) Если НазваниеНабораПрав() = "Продавец" Тогда Предупреждение("У вас нет права изменять интервал журнала!", 2); СтатусВозврата(0); КонецЕсли; КонецПроцедуры
При попытке интерактивно установить отбор в журнале операций системой «1С:Предприятие» производится вызов предопределённой процедуры ПриУстановкеОтбора()
(англоязычный синоним — OnSetSelectInJournal()
). Если в данной предопределённой процедуре установить статус возврата в 0 (например, если данному пользователю нельзя устанавливать данное значение отбора операций), установка отбора не будет выполнена.
Примечание: Данная предопределённая процедура может располагаться в глобальном программном модуле и модуле формы журнала. Если данная процедура присутствует в модуле формы соответствующего журнала, то будет вызвана она, если нет, то будет вызвана процедура из глобального модуля.
Синтаксис:
Процедура ПриУстановкеОтбора(<ИмяОтбора>, <ЗначениеОтбора>) . . . КонецПроцедуры
где
- <ИмяОтбора> — строковое значение, представляющее собой имя отбора;
- <ЗначениеОтбора> — значение отбора.
Пример использования:
Процедура ПриУстановкеОтбора(ИмяОтбора, ЗначОтбора) Если НазваниеНабораПрав() = "Оператор" Тогда Если (ИмяОтбора = "Автор")И(ЗначОтбора <> ТекущПользователь) Тогда Предупреждение("У вас нет права просматривать чужие операции!", 2); СтатусВозврата(0); КонецЕсли; КонецЕсли; КонецПроцедуры
Другие статьи по схожей тематике