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

Глава 12-3
Работа с Документами


 

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

Описанные в данном разделе методы доступны только в контексте Модуля формы документа (см. «Виды программных модулей»).

ПриЗаписиПерепроводить

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

Синтаксис:

ПриЗаписиПерепроводить(<Режтл>)

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

ReMakeActionsWhenWrite

Параметры:

<Режим>

Числовое выражение: 1 — устанавливает флаг обязательного перепроведения при записи уже проведенного документа; 0 — снимает флаг обязательного перепроведения при записи уже проведенного документа.

Описание:

Метод ПриЗаписиПерепроводить устанавливает режим обязательного перепроведения при записи ранее проведенного документа (интерактивный отказ от проведения документа или ошибка модуля приведет к отмене записи отредактированного документа).

Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы Пример:

Процедура ПриОткрытии()

   ПриЗаписиПерепроводить(1);

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

ПроводитьПослеТА

Установить режим проведения документа после ТА.

Синтаксис:

ПроводитьПослеТА(<ФлагДляНеПровДокумента>, <ФлагДляПровДокумента>)

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

PostingAfterTA

Параметры:

<ФлагДляНеПровДокумента>

Режим проведения документа после ТА. Число: -1 (минус единица) — проводить документ всегда задним числом; 0 — при проведении запрашивать режим проведения документа; 1 — проводить документ в реальном потоке времени, т. е. при проведении время документа автоматически устанавливается на время после ТА.

<ФлагДляПровДокумента>

Режим перепроведения документа после ТА. Числовое выражение: -1 (минус единица) — проводить документ всегда задним числом; 1 — проводить документ в потоке.

Возвращаемое значение:

Текущее значение режим перепроведения документа в зависимости от про-веденности.

Описание:

Метод ПроводитьПослеТА устанавливает режим проведения документа после ТА. Этот метод относится к случаю проведения документа в пределах даты, в которой находится ТА. Дело в том, что при записи документа, документ кроме даты получает еще и время документа. В многопользовательском режиме часто возникает ситуация, когда в момент проведения документа, он уже оказывается не последним в потоке проводимых документов (провели документ с другого рабочего места), в этом случае система ЮПредприятие дает на выбор три варианта проведения:

·                  провести документ тем временем, каким он был записан, т. е. фактически задним временем (до ТА);

·                  изменить время документа (в рамках текущей даты), чтобы документ стал самым последним и проводился в потоке, т. е. после ТА;

·                  запросить у пользователя, в каком режиме провести документ.

Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

Процедура ПриОткрытии()

   ПроводитьПослеТА(1, 1);

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

АктивизироватьСтроку

Установить курсор на указанной строке многострочной части документа.

Синтаксис:

АктивизироватьСтроку(<НомСтроки>)

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

ActivateLine

Параметры:

<НомСтроки>

Необязательный параметр. Номер строки, которую следует активизировать. Если параметр опущен, то активизируется текущая строка многострочной части документа.

Описание:

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

Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

Процедура ОбработкаПодбора(Выб, КонтФормы)

   Кол = 0;

   Если ВвестиЧисло(Кол, "Введите количество", 10, 0) = 1 Тогда

      НоваяСтрока();

      Товар = Выб;

      УстанЦеныРасх(Контекст);

      Количество = Кол;

      Выч_суммы_накл(Контекст);

      АктивизироватьСтроку();

      Активизировать("Цена");

   КонецЕсли;

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

См. также: ОбработкаПодбора

ИзменениеПорядкаСтрок

Установить режим изменения порядка строк в форме документа.

Синтаксис:

ИзменениеПорядкаСтрок(<Разрешить>)

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

ChangeLinesOrder

Параметры:

<Разрешить>

Необязательный параметр. Число: 1 — разрешить изменение порядка строк в документе; 0 — запретить. Если параметр не задан, то режим не меняется.

Возвращаемое значение:

Режим изменения порядка строк до исполнения метода. Число: 1 — разрешено изменение порядка строк в документе; 0 — запрещено.

Описание:

Метод ИзменениеПорядкаСтрок позволяет установить режим изменения порядка строк в форме документа.

Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

ИзменениеПорядкаСтрок(0);

Модифицированность

Возвратить признак изменения реквизитов текущей формы документа.

Синтаксис:

Модифицированность()

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

Modify

Возвращаемое значение:

Числовое значение: 1 — если реквизиты текущей формы документа были изменены; 0 — если нет.

Описание:

Метод Модифицированность возвращает признак изменения реквизитов формы (в режиме исполнения он отображается символом (*) в заголовке окна формы).

Данный метод доступен только в Модуле формы документа(см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

Изм = Модифицированность();

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

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях формы документов (см. «Виды программных модулей»).

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

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

ВводНового

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

Синтаксис:

ВводНового(<ПризнКопирования>, <ОбъектКопирования>)

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

InputNew

Параметры:

<ПризнКопирования>

Признак того, что объект введен копированием. Число: 1 — объект введен копированием, 0 — просто новый объект. Данный признак может быть использован для анализа необходимости инициализации реквизитов нового объекта.

<ОбъектКопирования>

Объект, который был скопирован.

Описание:

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

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

Пример:

Процедура ВводНового();

   Валюта = Константа.ДефВалютаПродажи;

   Валюта.ИспользоватьДату(ДатаДок);

   Дата_Курса = ДатаДок;

   Если Число(Валюта.Код) = Число(Константа.БазоваяВалюта.Код) Тогда

      //У базовой валюты курс = 1, поэтому отображаем курс Основной валюты

      Константа.ОсновнаяВалюта.ИспользоватьДату(ДатаДок);

      Курс = Константа.ОсновнаяВалюта.Текущ_курс;

   Иначе

      Курс = Валюта.Текущ_курс;

   КонецЕсли;

   Фирма = Константа.ДефФирма;

   Клиент = Константа.ДефПокупатель;

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

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

ВводНаОсновании

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

Синтаксис:

ВводНаОсновании(<ДокументОснование>)

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

InputCausedBy

Параметры:

<ДокументОснование>

Значение документа, на основании которого вводится новый документ.

Описание:

Вызов процедуры ВводНаОсновании производится в системе 1С:Предприятие неявно после выбора пункта меню «Действия» - «Ввести на основании». В этот момент система подставляет фактическое значение параметра <ДокументОснование>, содержащее документ, на котором находился курсор в момент выполнения данной команды.

Данная процедура может использоваться, например, для установки начальных значений (по умолчанию) реквизитов нового документа, вводимого на основании другого. Если в данной предопределенной процедуре установить статус возврата — 0 (например, если данному пользователю нельзя вводить новые документы), ввода нового документа и открытие его формы не будет выполнено.

Процедуру ВводНаОсновании можно размещать только в Модулях форм документов (см. «Виды программных модулей»).

Пример:

Процедура ВводНаОсновании(ДокОснование)

   Если (ДокОснование.Вид() = "ПриходнаяРеализ")

         ИЛИ ДокОснование.Вид() = "РасходнаяРеализ") Тогда

      ПризнакРеализатора = Перечисление.ПризнакиРеализаторов.Реализатор_Клиент;

      ДатаДок = РабочаяДата();

      Валюта = Константа.БазоваяВалюта;

      Валюта.ИспользоватьДату(ДатаДок);

      Дата_Курса = ДокОснование.Дата_Курса;

      Курс = ДокОснование.Курс;

      НДС = ДокОснование.НДС;

      СН = ДокОснование.СН;

      Фирма = ДокОснование.Фирма;

      Основание = "" + ДокОснование + " от " + ДокОснование.ДатаДок;

      ДокОснование.ВыбратьСтроки();

      Пока ДокОснование.ПолучитьСтроку() = 1 Цикл

         НоваяСтрока();

         Товар = ДокОснование.Товар;

         Цена = ДокОснование.Цена;

         Единица = ДокОснование.Единица;

         Коэффициент = ДокОснование.Коэффициент;

         Количество = ДокОснование.Количество;

         Сумма = ДокОснование.Сумма;

      КонецЦикла;

   Иначе

      Предупреждение("Этот Документ можно вводить только на основании

                       |накладных по реализации!");

      ВводНового();

   КонецЕсли;

   Валюта_Прежн = Валюта;

   Курс_Прежн = Курс;

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

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

ПриЗаписи

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

Синтаксис:

ПриЗаписи()

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

OnWrite

Описание:

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

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриЗаписи()

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

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

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

   КонецЕсли;

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

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

ПриНачалеРедактированияСтроки

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

Синтаксис:

ПриНачалеРедактированияСтроки()

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

OnStartEditLine

Описание:

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

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриНачалеРедактированияСтроки()

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

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

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

   КонецЕсли;

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

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

ПриВводеСтроки

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

Синтаксис:

ПриВводеСтроки()

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

OnNewLine

Описание:

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

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриВводеСтроки()

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

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

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

   КонецЕсли;

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

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

ПриРедактированииНовойСтроки

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

Синтаксис:

ПриРедактированииНовойСтроки()

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

OnEditNewLine

Описание:

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

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриРедактированииНовойСтроки()

   Количество = 10;

   Коэффициент = 1;

   Скидка=0;

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

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

ПриОкончанииРедактированияСтроки

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

Синтаксис:

ПриОкончанииРедактированияСтроки(<НовСтр>)

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

OnFinishLineEdit

Параметры:

<НовСтр>

Флаг новой строки. Число: 1 — если произошло окончание ввода новой строки, 0 — если произошло окончание редактирования существующей строки.

Описание:

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

Замечание. Данный метод не вызывается при отказе от ввода новой строки по клавише <Esc>. Однако, метод вызывается при нажатии клавиши <Esc> во время редактирования существующей строки, но при этом последнее значение текущего редактируемого с клавиатуры поля не доступно, т. к. от его значения в данном случае отказываются, т. е. строка доступна в том виде, в котором она собственно и остается в документе.

Данная предопределенная процедура может располагаться в Модулях формы документов (см. «Виды программных модулей»).

Пример:

Процедура ПриОкончанииРедактированияСтроки()

   Если Количество = 0 Тогда

      Количество = 1;

   КонецЕсли;

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

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

ПриУдаленииСтроки

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

Синтаксис:

ПриУдаленииСтроки()

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

OnDeleteLine

Описание:

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

Данная предопределенная процедура может располагаться только в Модулях формы документов (см. «Виды программных модулей»).

Пример:

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

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

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

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

   КонецЕсли;

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

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

ПриИзмененииПорядкаСтрок

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

Синтаксис:

ПриИзмененииПорядкаСтрок(<Действие>)

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

OnChangeLinesOrder

Параметры:

<Действие>

Число: -1 — перемещение строки вверх; 1 — перемещение строки вниз; 0 — перенумерация строк.

Описание:

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

Данная предопределенная процедура может располагаться только в Модулях формы документов (см. «Виды программных модулей»).

Пример:

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

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

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

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

   КонецЕсли;

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

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

Методы контекста Модуля документа

Описанные в данном разделе методы доступны только в контексте Модуля документа (см. «Виды программных модулей»).

ИтогиАктуальны

Возвратить флаг актуальности итогов.

Синтаксис:

ИтогиАктуальны()

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

AreTotalsActual

Возвращаемое значение:

Числовое значение: 1 — итоги актуальны, 0 — нет.

Описание:

Метод ИтогиАктуальны позволяет определить — выполняется ли проведение документа в реальном времени или задним числом (когда нельзя обращаться к текущим остаткам регистров).

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Системные предопределенные процедуры»).

Пример:

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

   // Для расходной накладной ВыбратьСтроки();

   Пока ПолучитьСтроку() > 0 Цикл

      Если ИтогиАктуальны() > 0 Тогда

         // если итоги актуальны,

         // то текущие стоимости берем из текущих остатков

         Регистр.ОстаткиТоваров.Склад = Скпад;

         Регистр.ОстаткиТоваров.Товар = Товар;

         Регистр.ОстаткиТоваров.ОстаткиПолучить();

         Регистр.ОстаткиТоваров.БазоваяСтоимость =

                 Регистр.ОстаткиТоваров.БазоваяСтоимость * Количество *

                 Коэффициент / Регистр.ОстаткиТоваров.ОстатокТовара;

         Регистр.ОстаткиТоваров.ВалютнаяСтоимость =

                 Регистр.ОстаткиТоваров.ВалютнаяСтоимость * Количество *

                 Коэффициент / Регистр.ОстаткиТоваров.ОстатокТовара;

         Регистр.ОстаткиТоваров.ОстатокТовара = Количество * Коэффициент;

         Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();

      Иначе

         // если итоги не актуальны,

         //то стоимости берем из врем. расчета Регистра

         Рег = СоздатьОбъект("Регистр.ОстаткиТоваров");

         Рег.ВременныйРасчет();

         РассчитатьРегистрыНа(ТекущийДокумент());

         Рег.Товар = Товар;

         Рег.Склад = Склад;

         Рег.ОстаткиПолучить();

         Регистр.ОстаткиТоваров.БазоваяСтоимость =

                 Рег.БазоваяСтоимость * Количество * Коэффициент /

                 Рег.ОстатокТовара;

         Регистр.ОстаткиТоваров.ВалютнаяСтоимость =

                 Рег.ВалютнаяСтоимость * Количество * Коэффициент /

                 Рег.ОстатокТовара;

         Регистр.ОстаткиТоваров.ОстатокТовара = Количество * Коэффициент;

         Регистр.ОстаткиТоваров.Склад = Склад;

         Регистр.ОстаткиТоваров.Товар = Товар;

         Регистр.ОстаткиТоваров.ДвижениеРасходВыполнить();

      КонецЕсли;

   КонецЦикла;

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

ГрупповаяОбработка

Возвратить флаг групповой обработки.

Синтаксис:

ГрупповаяОбработка()

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

IsGroupPrосеssing

Возвращаемое значение:

Число: 1 — групповое обработка, 0 — проведение документа по одному.

Описание:

Метод ГрупповаяОбработка позволяет определить, выполняется ли проведение документа группой (при помощи режима «Управление итогами») или по одному (интерактивно).

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. гл. «Системные предопределенные процедуры»).

Пример:

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

   Если ГрупповаяОбработка() > 0 Тогда

      // если групповая проводка документов, то вызываем процедуру

      ПроводкаДокументаГруппой();

   Иначе

      // если не групповая проводка документов, то

      ПроводкаДокументаОдиночного();

   КонецЕсли;

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

См. также: ОбработкаПроведения, Провести

НеПроводитьДокумент

Отменить процесс проведения документа.

Синтаксис:

НеПроводитьДокумент()

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

DoNotTransactDoc

Описание:

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

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Системные предопределенные процедуры»).

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

Пример:

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

   Если Число(Клиент.Выбран()) > 0 Тогда

      ДвиженияРегистраРеализации();

   Иначе

      Сообщить("Не выбран клиент по реализации!!! Документ не проводится!!!");

      НеПроводитьДокумент();

      Возврат;

   КонецЕсли;

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

См. также:

СтатусВозврата

УстановитьРеквизитСправочника

Записать значение периодического реквизита справочника с привязкой к документу.

Синтаксис:

УстановитьРеквизитСправочника(<ЭлементСправочника>, <НазваниеРеквизита>,

                 <3начение>, <ДатаУстановки>, <ИмяТипа>, <Длина>, <Точность>)

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

SetRefField

Параметры:

<ЭлементСправочника>

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

<НазваниеРеквизита>

Строковое выражение — название периодического реквизита справочника (как он назван в конфигураторе) в котором требуется записать новое значение периодического реквизита.

<3начение>

Новое значение периодического реквизита.

<ДатаУстановки>

Выражение типа «дата», на которую требуется установить новое значение периодического реквизита. Этот параметр имеет смысл только для не оперативных документов и позволяет установить значение на другую дату чем дата документа, но тогда с пустым временем.

<ИмяТипа>

Необязательный параметр. Строковое выражение — название типа данных (или Вид субконто).

<Длина>

Необязательный параметр. Число — длина числового или строкового значения.

<Точность>

Необязательный параметр. Число знаков после десятичной точки для числового значения.

Описание:

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

Параметры <ИмяТипа>, <Длина> и <Точность> следует указывать при установке значения периодического реквизита справочника имеющего неопределенный тип.

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения (см. Гл. «Системные предопределенные процедуры»).

Пример:

// при работе в контексте документа, его реквизит "Сотрудник"

// является переменной типа "справочник",

// чтобы установить новое значение периодического

// реквизита "Оклад" этого элемента

// справочника с привязкой к документу

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

   // .....

   Моклад = Константа.МаксимальныйОклад;

   УстановитьРеквизитСправочника(Сотрудник, "Оклад", МОклад, ДатаДок);

   // .....

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

ОчиститьДвижения

Удалить движения документа.

Синтаксис:

ОчиститьДвижения(<ВидыДвижений>)

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

ClearActions

Параметры:

<ВидыДвижений>

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

·                             "Регистр.ХХХХХХ" — движение конкретного регистра, где ХХХХХХ — конкретный вид регистра;

·                             "Операция" — бухгалтерская операция;

·                             "Справочник" — все изменения периодических реквизитов справочников;

·                             "ЖурналРасчетов" — все измененияв журналах расчетов. Если данный параметр не задан, то производится полная очистка всех движений.

Описание:

Метод ОчиститьДвижения удаляет существующие движения документа.

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

Если метод не вызывается при распроведении документа, то существующие движения после распроведения стираются.

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

·                    допроводить документ, т. е. доделывать движения в добавок к уже существующим;

·                    делать движения, анализируя ранее сделанные и уже существующие;

·                    выполнять распроведение документа, анализируя существующие движения;

·                    не очищать существующие движения при перепроведении, если это не нужно.

Замечание. Данный метод доступен только при отключенном в конфигурации флаге «Автоматическое удаление движений».

Замечание. Данный метод доступен только в контексте Модуле формы документа (см. «Виды программных модулей»). Действие данного метода относится только к текущему документу, который доступен в локальном контексте Модуля формы документа.

Пример:

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

   ОчиститьДвижения("Операция; Справочник; ЖурналРасчетов");

   ДвиженияРегистровНакладных(Контекст);

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

// —————————————————————————————————————

Процедура ОбработкаУдаленияПроведения()

   ОчиститьДвижения();

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

ПривязыватьСтроку

Записывать номер строки документа в движениях документа.

Синтаксис:

ПривязыватьСтроку(<НомерСтроки>)

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

LinkLine

Параметры:

<НомерСтроки>

Выражение, содержащее номер строки документа.

Описание:

Метод ПривязыватьСтроку устанавливает, что при выполнении всех последующих движений регистров, при записи значений периодических реквизитов справочников с привязкой к документу, а также при записи бухгалтерских проводок движения будут записываться с номером строки <НомерСтроки>.

Метод ПривязыватьСтроку может быть использован как системная процедура: тогда он будет устанавливать номер строки для всех регистров по которым выполняются движения, или как метод конкретного регистра: тогда он будет устанавливать номер строки только для данного регистра.

Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения.

Пример:

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

   ПривязыватьСтроку(НомерСтроки);

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока(ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.Стоимость = Стоимость;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

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

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

Описанные в данном разделе системные предопределенные процедуры должны располагаться только в Модулях документов (см. «Виды программных модулей»).

Данные предопределенные процедуры вызываются как при интерактивном так и при программном возникновении события.

Предопределенные процедуры не является встроенными процедурами языка. Для них зарезервированы только название и синтаксис. Тело процедур должно быть написано самим разработчиком в соответствующих программных модулях. Вызов предопределенных процедур на исполнение производится в системе 1С:Предприятие неявно при возникновении соответствующего события. Описание предопределенных процедур также см. гл. «Системные предопределенные процедуры».

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

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

Синтаксис:

ОбработкаПроведения(<3нач>)

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

Posting

Параметры:

<3нач>

Необязательный параметр. Идентификатор переменной, в которую системой будет передано значение параметра, если проведение документа запущено программно при помощи метода Провести. Использовать данное значение можно, например, для того, чтобы в процедуре ОбработкаПроведения правильно отработать режим проведения, т. к. в случае вызова метода Провести это будет программный, а не интерактивный и не групповой (см. ГрупповаяОбработка) способ проведения документа.

Описание:

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

Вызов процедуры ОбработкаПроведения производится в системе 1С:Предприятие неявно при выполнении проведения документа в любом режиме (интерактивное проведение документа, групповое проведение, программная инициализация проведения при помощи метода Провести). Если проведение документа запущено программно, то система подставляет фактическое значение параметра <3нач>, содержащее значение параметра, заданного при вызове метода Провести.

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

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

Замечание. В предопределенных процедурах ОбработкаПроведения и ОбработкаУдаленияПроведения нельзя использовать элементы интерактивного управления (например, операторы Предупреждение, Вопрос, ВвестиЧисло и т. п.), т. к. в этом случае при открытой транзакции система ожидает отклика пользователя, а все остальные пользователи ждут завершения транзакции (в результате документы у всех остальных пользователей в этот момент не могут проводиться). Если в конфигурации необходимо при проведении документа выдавать пользователю некоторые coofi щения, то следует использовать операторы Сообщить или Состояние

Для корректного выполнения алгоритма проведения документа в Модуле документа доступны методы ИтогиАктуальны и ГрупповаяОбработка, которые позволяют правильно определить режим проведения документа (см. «Работа с документами»).

Данная предопределенная процедура может располагаться только в Модулях документов (см. «Виды программных модулей»).

Пример:

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

   Регистр.ТовЗап.Склад = Склад;

   ВыбратьСтроки();

   Пока( ПолучитьСтроку() > 0) Цикл

      Регистр.ТовЗап.Товар = Товар;

      Регистр.ТовЗап.Количество = Количество;

      Регистр.ТовЗап.ДвижениеРасходВыполнить();

   КонецЦикла;

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

См. также: СтатусВозврата, МтогиАктуальны, ГрупповаяОбработка, Провести

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

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

Синтаксис:

ОбработкаУдаленияПроведения()

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

UnPostingProcess

Описание:

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

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

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

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

Данная предопределенная процедура может располагаться только в Модулях документов (см. «Виды программных модулей»).

Пример:

Процедура ОбработкаУдаленияПроведения()

   // Процедура выполняется при отмене проведения

   // или удалении документа

   // Сотрудник — это реквизит документа

   СпрСотрудники.НайтиЭлемент(Сотрудник);

   // если нашли сотрудника...

   Если СпрСотрудники.Выбран() = 1 Тогда

      // СтРасч — это реквизит документа

      СпрСотрудники.НайтиЭлемент(СтРасч);

      ВозвратРасч = 0;

      Если СпрСотрудники.Выбран() = 1 Тогда

         // если старый расчетчик еще есть — откатим!

         ВозвратРасч = 1;

      КонецЕсли;

      СпрСотрудники.НайтиЭлемент(Сотрудник);

      Если ВозвратРасч = 1 Тогда

         СпрСотрудники.Родитель = СтРасч;

      КонецЕсли;

      СпрСотрудники.Записать();

   КонецЕсли;

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

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

АрхивироватьДокумент

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

Синтаксис:

АрхивироватьДокумент()

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

ArchiveDocument

Описание:

Вызов процедуры АрхивироватьДокумент производится в системе 1С:Предприятие неявно в процессе смены расчетного периода журнала расчетов "вперед" (т. н. архивация данных расчета), если в журнале расчетов содержатся записи, порожденные данным документом.

Тело процедуры должно быть написано разработчиком конфигурации в Модуле документа, вызываемом в конфигураторе: Документ — Редактировать — Модуль документа.

Пример:

Процедура АрхивироватьДокумент()

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

   ЖР = СоздатьОбъект("ЖурналРасчетов.Зарплата");

   Если Окончание > ЖР.КонецТекущегоПериода() Тогда

      Зарегистрировать(ТекущийДокумент());

   КонецЕсли;

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

Команды организации механизма заполнения документа методом подбора

При вводе документа, процесс заполнения реквизитов многострочной части документа может быть реализован как обычным способом, так и при помощи специального механизма — методом подбора. Этот механизм предназначен для ускорения интерактивного заполнения значений реквизитов документов типа «справочник» и «документ». Реальным примером может служить процесс заполнения спецификации накладной путем подбора нужных товаров из справочника "Товары".

В системе 1С:Предприятие для реализации подбора предназначены следующие системные процедуры:

·                    ОткрытьПодбор;

·                    Активизировать;

·                    АктивизироватьСтроку.

Кроме того, при обработке выбранных в подборе значений участвует следующая системная предопределенная процедура:

·                    ОбработкаПодбора.






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