Основная страница

Глава 8
Системные предопределенные процедуры


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

ВНИМАНИЕ! Системные предопределенные процедуры не являются встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком конфигурации в соответствующих программных модулях.

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

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

Предопределенные процедуры Глобального модуля

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в глобальном программном модуле. Данные процедуры, например, могут использоваться для расширения возможности программного управления правами доступа пользователя к системе.

ПриНачалеРаботыСистемы

Предопределенная процедура при начале работы задачи.

Синтаксис:

ПриНачалеРаботыСистемы()

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

OnStartSystem

Описание:

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

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриНачалеРаботыСистемы()

   Курс = Константа.ОсновнаяВалюта.Текущ_Курс.Получить(ТекущаяДата();

   Предупреждение("Добро пожаловать! Сегодня " + " " + ТекущаяДата() +

         РазделительСтрок + "Сейчас установлен курс доллара=" + Курс), 7);

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

См. также: СтатусВозврата

ПриЗавершенииРаботыСистемы

Предопределенная процедура при завершении работы задачи.

Синтаксис:

ПриЗавершенииРаботыСистемы()

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

OnFinishSystem

Описание:

Вызов предопределенной процедуры ПриЗавершенииРаботыСистемы производится системой 1С:Предприятие неявно при завершении работы пользователя с системой. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если пользователь не выполнил какие-либо штатные операции), то работа системы не будет завершена, т. е. пользователь не сможет выйти из программы.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриЗавершенииРаботыСистемы()

   Предупреждение("До свидания !", 2);

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

См. также: СтатусВозврата

ПриУдаленииДокумента

Предопределенная процедура при удалении документа и при отмене пометки на удаление.

Синтаксис:

ПриУдаленииДокумента(<УдалДокум>, <Режим>)

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

OnDeleteDoc

Параметры:

<УдалДокум>

Значение удаляемого документа.

<Режим>

Значение флага непосредственного удаления: 1 — непосредственное удаление; 0 — пометка на удаление.

Описание:

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

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриУдаленииДокумента(Док, Реж)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (Док.Вид() = "РасходнаяНакл") И (Реж = 1) Тогда

         Предупреждение("У вас нет права удалять накладную!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата

ПриУдаленииЭлемента

Предопределенная процедура при удалении элемента справочника и при отмене пометки на удаление.

Синтаксис:

ПриУдаленииЭлемента(<УдалЭлем>, <Режим>)

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

OnDeleteItem

Параметры:

<УдалЭлем>

Значение удаляемого элемента справочника.

<Режим>

Значение флага непосредственного удаления: 1 — непосредственное удаление; 0 — пометка на удаление.

Описание:

Вызов предопределенной процедуры ПриУдаленииЭлемента производится системой 1С:Предприятие неявно при интерактивном удалении элемента справочника и в случае отмены пометки на удаление. В этом случае, условия вызова можно узнать методом ПометкаУдаления элемента справочника. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если нарушается ссылочная целостность системы), то удаление элемента справочника не будет выполнено.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриУдаленииЭлемента(Элем, Реж)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (Элем.Вид() = "Товар") И (Реж = 1) Тогда

         Предупреждение("У вас нет права удалять Товар!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата

ПриОткрытииИстории

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

Синтаксис:

ПриОткрытииИстории(<ТипОбъекта>, <Объект>, <ТолькоПросмотр>)

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

OnOpenHistory

Параметры:

<ТипОбъекта>

Название периодического объекта конфигурации, как оно задано в конфигураторе (например, "Справочник.Валюты.ТекущийКурс" или " Константа. ИмяДиректора"). Строковое название агрегатного типа данных может передаваться системой в русском или англоязычном написании (Справочник или Reference, Константа или Const) — в зависимости от установки флага основного языка системы (см. ОсновнойЯзык).

<Объект>

Элемент справочника, для которого выполняется открытие окна истории периодического реквизита. Имеет смысл только для периодических реквизитов справочников, а не для констант.

<ТолькоПросмотр>

Флаг установки режима "только просмотр" для окна истории значения. Если значение этого параметра установить в 1 (в предопределенной процедуре), то окно истории будет открыто только для чтения. Установка значения в 0 — введет режим по умолчанию (определенный правами). Уже открытое окно истории соответствующим образом изменит режим (если это случай, когда процедура обрабатывает не открытие окна, а смену отображаемого объекта). Значение по умолчанию — 0.

Описание:

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

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриОткрытииИстории(ТипОб, Об, ФлагРежима)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (ТипОб = "Справочник.Валюты.ТекКурс") И

           (Об = Константа.ОсновнаяВалюта)) Тогда

         Предупреждение("У вас нет права просматривать историю курса!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата, ОсновнойЯзык

ПриЗаписиИстории

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

Синтаксис:

ПриЗаписиИстории(<ТипОбъекта>, <Объект>, <3начение>, <ДатаИстории>)

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

OnWriteHistory

Параметры:

<ТипОбъекта>

Название периодического объекта конфигурации, как оно задано в конфигураторе (например, "Справочник.Валюты.ТекущийКурс" или "Константа. ИмяДиректора"). Строковое название агрегатного типа данных может передаваться системой в русском или англоязычном написании (Справочник или Reference, Константа или Const) — в зависимости от установки флага основного языка системы (см. ОсновнойЯзык).

<Объект>

Элемент справочника, для которого выполняется изменение периодического реквизита. Имеет смысл только для периодических реквизитов справочников, а не для констант.

<3начение>

Значение периодической записи.

<ДатаИстории>

Дата периодической записи.

Описание:

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

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриЗаписиИстории(ТипОб, Об, Значен, ДатаИстор)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (ТипОб = "Справочник.Валюты.ТекКурс") И

           (Об = Константа.ОсновнаяВалюта) И (ДатаИстор > РабочаяДата()) Тогда

         // Записывается курс для валюты, которая записана в Константе

         Предупреждение("У вас нет права устанавливать курс на будущую дату!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

Ом. также: СтатусВозврата, ОсновнойЯзык

ПриУдаленииИстории

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

Синтаксис:

ПриУдаленииИстории(<ТипОбъекта>, <Объект>, <3начение>, <ДатаИстории>)

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

OnDeleteHistory

Параметры:

<ТипОбъекта>

Название периодического объекта конфигурации, как оно задано в конфигураторе (например, "Справочник.Валюты.ТекущийКурс" или " Константа. ИмяДиректора"). Строковое название агрегатного типа данных может передаваться системой в русском или англоязычном написании (Справочник или Reference, Константа или Const) — в зависимости от установки флага основного языка системы (см. ОсновнойЯзык).

<Объект>

Элемент справочника, для которого выполняется изменение периодического реквизита. Имеет смысл только для периодических реквизитов справочников, а не для констант.

<3начение>

Значение периодической записи.

<ДатаИстории>

Дата периодической записи.

Описание:

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

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриУдаленииИстории(ТипОб, Об, Значен, ДатаИстор)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (ТипОб = "Справочник.Валюты.ТекКурс") И

           (Об=Константа.ОсновнаяВалюта) И (ДатаИстор < РабочаяДата() - 7) Тогда

         // Удаляется курс для валюты, которая записана в Константе

         Предупреждение("У вас нет права удалять прошлый курс!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата, ОсновнойЯзык

ПриЗаписиКонстанты

Предопределенная процедура при записи значения константы.

Синтаксис:

ПриЗаписиКонстанты(<ИмяКонстанты>, <3начение>)

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

OnWriteConst

Параметры:

<ИмяКонстанты>

Название константы, как оно задано в конфигураторе (например, "СкладПоУмолчанию").

<3начение>

Новое значение константы.

Описание:

Вызов предопределенной процедуры ПриЗаписиКонстанты производится системой 1С:Предприятие неявно при интерактивной записи значения константы. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данное значение константы запрещено), то запись константы не будет выполнена.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриЗаписиКонстанты(ИмяКонстанты, Значение)

   Если ИмяКонстанты = "ТекущийПрефикс" Тогда

      Если НазваниеНабораПрав() = "Продавец" Тогда

         Предупреждение("У вас нет права менять префикс!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата

ПриОтменеПроведенияДокумента

Предопределенная процедура при отмене проведения документа.

Синтаксис:

ПриОтменеПроведенияДокумента(<Докум>)

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

OnUnPosting

Параметры:

<Докум>

Значение обрабатываемого документа.

Описание:

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

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

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

   Если Док.ДатаДок <= Константа.ДатаЗащитыДокументов Тогда

      Предупреждение("Нельзя снимать с проведения архив!", 2);

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата, СделатьНеПроведенным

ПриИзмененииВремениДокумента

Предопределенная процедура при изменении времени документа.

Синтаксис:

ПриИзмененииВремениДокумента(<Докум>)

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

OnChangeTimeDoc

Параметры:

<Докум>

Значение обрабатываемого документа.

Описание:

Вызов предопределенной процедуры ПриИзмененииВремениДокумента производится самой системой 1С:Предприятие неявно при интерактивной попытке изменить время документа. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если время данного документа нельзя менять), изменение времени документа не будет выполнено.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриИзмененииВремениДокумента(Док)

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Предупреждение("У вас нет права менять время документа!", 2);

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата

ПриУстановкеОтбора

Предопределенная процедура при установке отбора.

Синтаксис:

ПриУстановкеОтбора(<ИмяРеквизОтбора>, <3начение>)

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

OnSetSelectInJournal

Параметры:

<ИмяРеквизОтбора>

Строковое значение — название общего реквизита документа (как оно задано в конфигураторе), по которому производится отбор (например, "Автор").

<3начение>

Значение реквизита отбора. Допустим, у документов существует общий реквизит "Автор", по которому решено провести отбор, значит в этом параметре будет передано конкретное значение этого реквизита, по которому решено провести отбор (например, "Сидоров И.А.").

Описание:

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

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

Пример:

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

   Если НазваниеНабораПрав() = "Продавец" Тогда

      Если (Имя0тбора = "Автор") И (ЗначОтбора <> ТекущПользователь) Тогда

         Предупреждение("У вас нет права просматривать чужие документы!", 2);

         СтатусВозврата(0);

      КонецЕсли;

   КонецЕсли;

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

См. также: СтатусВозврата

ПриСменеРасчетногоПериода

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

Синтаксис:

ПриСменеРасчетногоПериода(<ЖурналРасчетов>, <Период>)

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

OnРег1odChange

Параметры:

<ЖурналРасчетов>

Журнал расчетов, период которого изменяется (агрегатный объект типа «ЖурналРасче-тов»).

<Период>

Устанавливаемый расчетный период (значение типа «ПериодРасчета»).

Описание:

Вызов предопределенной процедуры ПриСменеРасчетногоПериода на исполнение производится системой 1C:Предприятие неявно при попытке смены текущего расчетного периода любого журнала расчетов. Если в данной предопределенной процедуре установить статус возврата — 0, то текущий расчетный период не будет изменен.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриСменеРасчетногоПериода(ЖР, Период)

   Если ЖР.Вид() = "Зарплата" Тогда

      Предупреждение("Это смена текущего расчетного периода для журнала

                          | Зарплата");

   КонецЕсли;

   Если Период.ДатаНачала <= ЖР.НачалоТекущегоПериода Тогда

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

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата

ПриУдаленииСчета

Предопределенная процедура, выполняемая при удалении бухгалтерского счета.

Синтаксис:

ПриУдаленииСчета(<УдалСчет>, <Режим>)

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

OnDeleteAccount

Параметры:

<УдалСчет>

Значение типа «Счет» — удаляемый бухгалтерский счет.

<Режим>

Режим удаления. Может принимать значения:

1 — счет будет удален;

0 — счет будет помечен на удаление.

Описание:

Вызов предопределенной процедуры ПриУдаленииСчета производится системой 1С:Предприятие неявно при интерактивном удалении счета из плана счетов. В качестве параметров в процедуру передаются значение удаляемого счета и режим удаления: непосредственное удаление или пометка на удаление.

Если в данной процедуре установить статус возврата 0 (например, если нарушается ссылочная целостность системы), то счет не будет удален (или помечен на удаление).

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриУдаленииСчета(УдСчет)

   Если УдСчет.Валютный() = 1 Тогда

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата

ПриВыклВклПроводокОперации

Предопределенная процедура, выполняемая при выключении или включении проводок.

Синтаксис:

ПриВыклВклПроводокОперации(<Документ>)

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

OnOperEntryOffOn

Параметры:

<Документ>

Значение типа «Документ» — документ, которому принадлежит операция.

Описание:

Вызов предопределенной процедуры ПриВыклВклПроводокОперации производится системой 1С:Предприятие неявно при интерактивном выключении или включении проводок. В качестве параметра в процедуру передается значение документа, которому принадлежит операция.

Если в данной процедуре установить статус возврата 0, то действие не будет выполнено.

Данная предопределенная процедура может располагаться только в глобальном программном модуле.

Пример:

Процедура ПриВыклЗклПроводокОперации(Док)

   Если Док.Вид() <> "Операция" Тогда

      СтатусВозврата(0);

   КонецЕсли;

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

См. также: СтатусВозврата







Перейти  к оглавлению: Описание встроенного языка