Опубликовано: 03.06.2022

Работа с журналом операций

Контекст работы с журналами операций

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

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

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

Формы журнала операций

Методы контекста Модуля формы журнала операций

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

Установить интервал видимости записей в журнале операций позволяет метод УстановитьИнтервал() (англоязычный синоним — 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);
      КонецЕсли;
   КонецЕсли;
КонецПроцедуры

Другие статьи по схожей тематике