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

Программная запись/проведение/отмена проведения документа осуществляется при помощи методаЗаписать( , ) ДокументаОбъекта.

В параметр РежимЗаписи передается одно из значений системного перечисления РежимЗаписиДокумента :

  • Запись (Write)
  • ОтменаПроведения (UndoPosting)
  • Проведение (Posting)

Переданное значение и определяет какое действие производить с выбранным документом. Также при помощи параметра РежимПроведения можно указать оперативное или неоперативное проведение мы используем.

Пример №1. Программная запись документа

Пример №2 Программное проведение документа

Пример №3 Программная отмена проведения документа

Как при отмене проведения документа проверить, если документ не содержит ответственный и текущий пользователь отличается отличается от пользователя, то не позволить проведение документа? Я так понимаю это через запрос нужно реализовать?

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

( голосов, в среднем: из 5)

Поддержите нас, расскажите друзьям!

СПРОСИТЕ в комментариях!

Если конфигурация одна из типовых, то информация о текущем пользователе (справочник пользователи) хранится в параметре сеанса:
ПараметрыСеанса.ТекущийПользователь

Делаю через модуль и делаю ссылку на подписку, выдает ошибку » Поле объекта недоступно для записи (Наименование)»

Процедура ПриОтменеПроведенияДокументаОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

Я думаю что можно и без запроса обойтись, но только как?

1) Во-первых, вы можете изменять только реквизиты объектов.
Т.е изменить можно только Источник.Ответственный, но никак не Источник.Ответственный.Наименование (реквизит уже справочника «пользователи»)

2) Во-вторых, задача, вроде бы, сравнить текущего пользователя с пользователем системы. Верно?
Тогда получается нужно сравнить пользователя с пользователем документа и если он не совпадает — выдать ошибку.

Быстрое получение ссылки на текущего пользователя — «ПараметрыСеанса.ТекущийПользователь».
Что бы отменить действие, необходимо указать в переменную «Отказ» значение «Истина».

Специально не даю просто решение, что бы вы задумались))

Проведение документа проходит, но система не должна позволять отменить проведение документа, и еще нужно если реквизит не заполнен, то заполнить текущим пользователем, указываю переменной «Отказ» Ложь не работает… где то не правильно не могу разобраться

Читайте также  Программы для скачивания презентаций бесплатно

Процедура ПриОтменеПроведенияДокументаОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

Пользователь=ПользователиИнформационнойБазы.ТекущийПользователь();
Если Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь
Тогда
Отказ = Истина;
КонецЕсли;
КонецПроцедуры

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

Синтаксис

Процедура ПриОтменеПроведенияДокумента() имеет следующий синтаксис:

А также альтернативный англоязычный синтаксис:

Параметры

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

Имя параметра Тип Описание
Документ* Документ Параметр содержит значение обрабатываемого документа
* — обязательный параметр

Описание

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

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

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

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

Пример кода с использованием процедуры ПриОтменеПроведенияДокумента()

Ссылка на основную публикацию
Adblock
detector