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

Атрибуты контекста Модуля формы журнала документов
Доступный только для чтения атрибут ТекущийДокумент
(англоязычный синоним — CurrentDocument
) содержит значение выбранного в журнале документа. Этот атрибут позволяет использовать в программе полученное значение документа. Поскольку данный атрибут фактически является ссылкой на позиционируемый объект типа "
Документ"
, то для передачи или запоминания самого значения текущего документа журнала рекомендуется использовать следующую конструкцию:
ТекущийДокумент.ТекущийДокумент();
Атрибут ТекущийДокумент
может использоваться только в локальном контексте программного модуля формы журнала документов.
Пример использования:
Процедура ПровестиДок() Если ТекущийДокумент.Выбран()=1 Тогда Док = СоздатьОбъект("Документ"); Док.НайтиДокумент(ТекущийДокумент.ТекущийДокумент()); Если Док.Провести()=1 Тогда Предупреждение("Документ " + Док + " проведен."); Иначе Предупреждение("Документ " + Док + " НЕ ПРОВЕДЕН!!!!!!!!!"); КонецЕсли; КонецЕсли; КонецПроцедуры // ПровестиДок()
Методы контекста Модуля формы журнала документов
Работа с интервалом видимости записей в журнале
Установить интервал видимости записей в журнале документов обычно может любой пользователь системы «1С:Предприятие». Сделать это можно через главное меню программы (пункты «Действия −> Интервал»), либо с помощью кнопки «Интервал» () на панели инструментов журнала.
Существует также несколько методов Модуля формы журнала документов, позволяющих управлять интервалом видимости записей в журнале программно.
Установить интервал видимости записей в журнале документов позволяет метод УстановитьИнтервал()
(англоязычный синоним — SetRange()
). При работе с журналом документов будут доступны документы, даты которых лежат внутри указанного интервала (включая указанные даты).
Синтаксис метода:
УстановитьИнтервал(<ДатаНач>, <ДатаКон>, <ФлагИзменения>)
где
- <ДатаНач> — выражение типа
"
Дата"
— начальная дата интервала журнала документов; - <ДатаКон> — выражение типа
"
Дата"
— конечная дата интервала журнала документов; - <ФлагИзменения> — флаг, регулирующий возможность интерактивного изменения интервала журнала. Если установлено значение 1, то пользователь может изменить интервал журнала интерактивно, а если 0 — пользователь не может интерактивно изменить интервал журнала. Параметр является необязательным. Значением по умолчанию является 1.
Таким образом, путём установки параметра <ФлагИзменения> в 0, можно сделать недоступными для отдельных категорий пользователей кнопку и пункты меню, отвечающие за установку интервала видимости записей.
Пример:
Если НазваниеНабораПрав() = "Продавец" Тогда УстановитьИнтервал(РабочаяДата(), РабочаяДата(), 0); КонецЕсли;
Получить начальную дату интервала журнала документов позволяет метод НачалоИнтервала()
(англоязычный синоним — BegOfRange()
). Параметров у метода нет. Возвращаемым значением метода является значение типа "
Дата"
.
Пример использования:
НачИнт = НачалоИнтервала();
Получить конечную дату интервала журнала документов позволяет метод КонецИнтервала()
(англоязычный синоним — EndOfRange()
). Параметров у метода нет. Возвращаемым значением метода является значение типа "
Дата"
.
Пример использования:
КонИнт = КонецИнтервала();
Организация отбора
Механизм отбора документов предоставляет пользователю возможность просматривать в полном или общем журнале документы, отобранные по некоторому значению их реквизитов или по видам документов: например, можно отобрать все документы по конкретному складу или конкретной организации-контрагенту, или отобрать все приходные накладные. Настраивается механизм отбора документов обычно в Конфигураторе ещё на этапе конфигурирования.
В качестве имён отборов могут выступать идентификаторы граф отбора, значениями которых могут быть реквизиты документов, виды субконто, данные операции или проводки, а также измерения регистров и реквизиты регистров. Выбор значений граф отбора на этапе конфигурирования производится в окне редактирования конкретной графы отбора.

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

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