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

Работа с журналами проводок

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

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

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

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

Формы журнала проводок

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

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

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

Синтаксис:

УстановитьИнтервал(<ДатаНач>, <ДатаКон>, <ФлагИзменения>)

где

  • <ДатаНач> — выражение типа "Дата" — начальная дата интервала журнала проводок;
  • <ДатаКон> — выражение типа "Дата" — конечная дата интервала журнала проводок;
  • <ФлагИзменения> — флаг, регулирующий возможность интерактивного изменения интервала журнала. Если установлено значение 1, то пользователь может изменить интервал журнала интерактивно, а если 0 — пользователь не может интерактивно изменить интервал журнала. Параметр является необязательным. Значение по умолчанию 1.

Пример записи метода:

УстановитьИнтервал(НИ, КИ)

Примечание: Установить интервал видимости записей в журнале проводок может любой пользователь через главное меню программы (пункты «Действия -> Интервал»), либо с помощью кнопки «Интервал» () на панели инструментов журнала. Метод УстановитьИнтервал() позволяет сделать недоступными эти кнопки и пункты меню для отдельных категорий пользователей.

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

Установка рабочего периода

Получить начальную дату интервала журнала проводок позволяет метод НачалоИнтервала() (англоязычный синоним — BegOfRange()). Параметров у метода нет. Возвращаемым значением метода является значение типа "Дата".

Пример записи метода:

НИ = НачалоИнтервала();

Получить конечную дату интервала журнала проводок позволяет метод КонецИнтервала() (англоязычный синоним — EndOfRange()). Параметров у метода нет. Возвращаемым значением метода является значение типа "Дата".

Пример записи метода:

КИ = КонецИнтервала();

Методы для организации отборов

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

Окно редактирования объекта Проводка

Каждой включенной опции соответствует системное имя отбора:

  • Сумма — отбор по сумме проводки;
  • ВалСумма — отбор по валютной сумме проводки;
  • Валюта — отбор по валюте проводки;
  • Количество — отбор по количеству проводки;
  • Счет — отбор по счетам проводки;
  • СчетДт — отбор по счетам дебета проводки;
  • СчетКт — отбор по счетам кредита проводки;
  • ПланСчетов — отбор по плану счетов.

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

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

Окно свойств реквизита

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

Окно 'Отбор'

Установить же отбор программными средствами, а также ограничить список видов отбора для определённых групп пользователей, позволяют методы, описание которых приведено ниже.

Установить доступные виды отборов журнала проводок позволяет метод ВидыОтбора() (англоязычный синоним — KindsOfSelection()). Использование данного метода влияет на полноту списка видов отбора, который выдается пользователю в диалоге «Отбор» (см. рис. выше) при работе с системой «1С:Предприятие». Метод также позволяет совсем запретить выполнение отбора в журнале проводок.

Синтаксис:

ВидыОтбора(<СписокОтборов>)

где <СписокОтборов> — строковое выражение, которое может принимать следующие значения:

  • *  (символ «звёздочка») — для журнала используются все назначенные в Конфигураторе виды отборов;
  • ""  (пустая строка) — запрещаются все виды отборов;
  • список имён отборов через запятую — в журнале проводок будут доступны только указанные виды отборов.

Примечание: Ограничение списка отборов, выполненное при помощи метода ВидыОтбора(), не исключает использование «запрещённого» отбора средствами встроенного языка. Например, методом ВидыОтбора("") можно запретить использование любых отборов в журнале проводок, но установить отбор проводок по конкретной организации. В этом случае пользователь будет просматривать проводки, относящиеся только к указанной организации, но не будет иметь возможность изменить организацию.

Пример записи метода:

ВидыОтбора("Склад, Клиент, Пользователь");

Установить в форме журнала проводок закладки для интерактивного осуществления отбора позволяет метод ЗакладкиОтбора() (англоязычный синоним — TabCtrlSelection()). При включении закладок в верхней части журнала проводок появляются ярлыки (см. рис. ниже), соответствующие значениям отбора. Щелчком мыши по ярлыку можно открыть «страницу» журнала проводок: такая «страница» будет содержать проводки, отобранные по указанному значению.

Синтаксис метода:

ЗакладкиОтбора(<ИмяОтбора>, <ВИнтервалеЖурнала>, <УстановитьНаЗначение>, <ЗначениеОтбора>)

где

  • <ИмяОтбора> — строковое выражение — имя отбора. Список имён всех возможных системных отборов был приведён выше. В качестве имён отборов по дополнительным реквизитам и субконто следует использовать идентификаторы соответствующих реквизитов и субконто. Если же параметру присвоить значение "" (пустая строка), закладки, установленные ранее методом ЗакладкиОтбора(), будут удалены;
  • <ВИнтервалеЖурнала> — числовое выражение — признак отбора только в интервале журнала. Может принимать значения: 1 — текущие значения отбора для закладок выбираются только по проводкам в установленном интервале журнала; 0 — текущие значения отбора для закладок выбираются по всем проводкам журнала. Параметр является необязательным. Значение по умолчанию — 0;
  • <УстановитьНаЗначение> — числовое выражение — признак выбора значения отбора для показа. Параметр может принимать значения: 1 — для показа выбирается отбор по значению, указанному в параметре <ЗначениеОтбора>; 0 — текущее значение отображаемой закладки отбора устанавливается на первое существующее значение. Параметр является необязательным. Значение по умолчанию — 0;
  • <ЗначениеОтбора> — значение отбора. Параметр является необязательным.

Пример использования метода:

Процедура ПриОткрытии()   // предопределенная процедура
   Разделять = ВосстановитьЗначение("Разделять");
   Если Разделять = 1 Тогда
      ЗакладкиОтбора("НомерЖурнала", 1,,)
   Иначе
      ЗакладкиОтбора("", 1,,)
   КонецЕсли;
КонецПроцедуры

А так выглядят закладки в журнале проводок, создаваемые методом ЗакладкиОтбора():

Результат отбора в журнале проводок

Принудительно установить отбор для журнала проводок позволяет метод УстановитьОтбор() (англоязычный синоним — SetSelection()). Для установки отбора методу должны быть переданы два параметра: имя отбора и значение отбора.

Синтаксис метода:

УстановитьОтбор(<ИмяОтбора>, <ЗначениеОтбора>)

где

  • <ИмяОтбора> — строковое выражение — имя отбора. Список имён всех возможных системных отборов был приведён выше. В качестве имён отборов по дополнительным реквизитам и субконто следует использовать идентификаторы соответствующих реквизитов и субконто. Если же параметру присвоить значение "" (пустая строка), отбор отключается;
  • <ЗначениеОтбора> — значение отбора. Параметр является необязательным, если в первом параметре используется пустая строка.

Пример записи метода:

УстановитьОтбор("Склады", Склад1);

Определить, включен отбор или нет, для журнала проводок позволяет метод ПолучитьОтбор() (англоязычный синоним — GetSelection()). Возвращаемым значением метода будет число 1, если отбор включен, или 0, если отключен. Имя отбора и текущее значение отбора записываются в переменные, передаваемые методу в качестве параметров.

Синтаксис метода:

ПолучитьОтбор(<ИмяОтбора>, <ЗначениеОтбора>)

где

  • <ИмяОтбора> — имя переменной, куда будет записано строковое значение имени отбора. Параметр является необязательным;
  • <ЗначениеОтбора> — имя переменной, куда будет записано значение отбора. Параметр является необязательным.

Пример записи метода:

Изм = ПолучитьОтбор();

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

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

Синтаксис функции:

ПолучитьЗначенияОтбора(<ИмяОтбора>, <СписокЗначений>, <ДатаНач>, <ДатаКон>)

где

  • <ИмяОтбора> — строковое выражение с полным названием общего реквизита документа или графы отбора, как они названы в конфигурации;
  • <СписокЗначений> — идентификатор переменной. Если при вызове метода данная переменная содержит объект типа "СписокЗначений", то система заполнит его всеми возможными существующими значениями отбора. Если при вызове метода данная переменная содержит любое другое значение кроме объекта типа "СписокЗначений", то система сама создаст объект типа "СписокЗначений", заполнит его существующими значениями отбора и присвоит переменной ссылку на этот объект;
  • <ДатаНач> — дата начала интервала, в котором будет производиться отбор. Параметр является необязательным. Если параметр не задан, то отбор будет производиться по всем данным;
  • <ДатаКон> — дата конца интервала, в котором будет производиться отбор. Параметр является необязательным. Если параметр не задан, то отбор будет производиться до ТА.

Пример использования:

// Выбрать существующие значения Авторов документов
ПолучитьЗначенияОтбора("Автор", Спис,,);

Предопределенные процедуры Модуля формы журнала проводок

При попытке интерактивной установки интервала в журнале проводок системой «1С:Предприятие» производится вызов предопределённой процедуры ПриУстановкеИнтервала() (англоязычный синоним — OnSetSelectInJournal()). Если в данной предопределённой процедуре установить статус возврата в 0 (например, если данному пользователю нельзя изменять интервал журнала), установка не будет выполнена.

Синтаксис процедуры:

Процедура ПриУстановкеИнтервала(<ДатаНач>, <ДатаКон>)
    . . .
КонецПроцедуры

где

  • <ДатаНач> — дата начала интервала журнала;
  • <ДатаКон> — дата конца интервала журнала.

Пример использования:

Процедура ПриУстановкеИнтервала(Дата1, Дата2)
   Если НазваниеНабораПрав() = "Продавец" Тогда
      Предупреждение("У вас нет права изменять интервал журнала!", 2);
      СтатусВозврата(0);
   КонецЕсли;
КонецПроцедуры

При попытке интерактивно установить отбор в журнале проводок системой «1С:Предприятие» производится вызов предопределённой процедуры ПриУстановкеОтбора() (англоязычный синоним — OnSetSelectInJournal()). Если в данной предопределённой процедуре установить статус возврата в 0 (например, если данному пользователю нельзя устанавливать данное значение отбора операций), установка отбора не будет выполнена.

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

Синтаксис:

Процедура ПриУстановкеОтбора(<ИмяОтбора>, <ЗначениеОтбора>)
    . . .
КонецПроцедуры

где

  • <ИмяОтбора> — строковое значение, представляющее собой имя отбора;
  • <ЗначениеОтбора> — значение отбора.

Пример использования:

Процедура ПриУстановкеОтбора(ИмяОтбора, ЗначОтбора)
   Если (ИмяОтбора = "Счет")И(ЗначОтбора.Валютный = 1) Тогда
      СтатусВозврата(0);
   КонецЕсли;
КонецПроцедуры

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

В журнале операций такой журнал проводок может быть выведен в нижней части окна:

Показ проводок в журнале документов

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

Синтаксис:

Процедура ПриПоказеПроводокПоДокументу(<Документ>)
    . . .
КонецПроцедуры

где <Документ> — документ по которому выводятся проводки.

Пример использования:

Процедура ПриПоказеПроводокПоДокументу(ТекДок)
   Если ТекДок.Операция.Фирма <> ТекФирма Тогда
      СтатусВозврата(0);
   КонецЕсли;
КонецПроцедуры

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