Приветствую Вас ГостьЧетверг, 16.05.2024, 05:22

Каталог статей


Документы

Автоматическая нумерация

Механизм автонумерации позволяет работать в двух режимах: в режиме с возвратом неиспользованных номеров и в режиме без возврата неиспользованных номеров. Режим устанавливается свойством РежимАвтонумерацииОбъектов (НеОсвобождатьАвтоматически или ОсвобождатьАвтоматически) для всей Конфигурации.

Префикс документа определяется системой путем приведения строковых номеров к числу. Причем к числовому формату цифры номеров приводятся от последней к первой, пока процесс не дойдет до символа, который невозможно распознать как число. После этого символы левой части номера считаются префиксами.

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

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

Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)
    Префикс = Организация.Префикс;
КонецПроцедуры

Событие ПриУстановкеНовогоНомера вызывается при записи документа, только если для данного документа назначена автонумерация и только в транзакции записи, между событиями ПередЗаписью и ПриЗаписи объекта Документ.

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

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

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

Индексы

Для таблиц хранения информации документов создаются следующие индексы:

  • Ссылка;
  • Дата + Ссылка;
  • Номер + Ссылка – если для данного документа длина номера не равна нулю;
  • Реквизит + Ссылка – если для данного реквизита свойство Индексировать установлено в значение Индексировать;
  • Реквизит + Дата + Ссылка – если для данного реквизита свойство Индексировать установлено в значение Индексировать с доп. упорядочиванием;
  • Реквизит – если документ включен в критерий отбора через данный реквизит;
  • ПрефиксНомера + Номер + Ссылка – если для данного документа длина номера не равна нулю.

Копирование

Копирование документа может выполняться интерактивно или программно с помощью метода ДокументОбъект.Скопировать() - Возвращаемое значение: ДокументОбъект.<Имя документа>.

При копировании документа вызывается событие ПриКопировании(<ОбъектКопирования>) в модуле объекта, где <ОбъектКопирования>- исходный документ, который является источником копирования.

Создать на основании

Создание на основании может быть инициировано вручную или с помощью метода ДокументОбъект.Заполнить(<ДанныеЗаполнения>)

При этом вызывается событие ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка) в модуле объекта, где ДанныеЗаполнения - значение, на основании которого заполняется документ. Если событие вызвано методом Заполнить(), то ДанныеЗаполнения равны данным заполнения, переданным в параметре <ДанныеЗаполнения> метода Заполнить(). Если событие вызвано интерактивной операцией, то ДанныеЗаполнения равны основанию заполнения документа.

Определить тип параметра можно следующим образом:

Если ТипЗнч(ДанныеЗаполнения) = Тип("ДокументСсылка.ЗаявкаНаВыполнениеРабот") Тогда

Особенности работы формы документа

  • Установка даты документа при открытии формы

Если дата документа изначально не установлена, то при открытии формы нового документа происходит установка дате документа значения текущей даты сеанса.
Если свойство АвтоВремя расширения формы документа имеет значение НеИспользовать, то время документа будет установлено по значению текущей даты сеанса иначе дате документа присваивается время начала дня (00:00:00)

  • Установка даты нового документа при записи нового документа в форме

При записи документа в режиме оперативного проведения значение даты документа устанавливается согласно выданной оперативной отметке времени. Если это не оперативное проведение и если время не заполнено, то время устанавливается в соответствии с значением свойства АвтоВремя.  

  • Запрет интерактивной записи проведенного документа без проведения (перепроведения). 

Если у формы свойство ПриЗаписиПерепроводить = Истина, то при записи ранее проведенного документа происходит его проведение. Если это свойство равно Ложь, то документ не перепроводится, при это даные в документе могут не соответствовать данным в проводках.

 

 

 

Шаблоны

    // Пример: получить макет для печати документа "Оказание услуги".
    Макет = Документы["ОказаниеУслуги"].ПолучитьМакет("Печать");       
    
    // Пример: получить пустуя ссылку на каждый из документов, существующих в конфигурации.
    Для Каждого ОчереднойДокумент Из Документы Цикл
        Ссылка = ОчереднойДокумент.ПустаяСсылка();
    КонецЦикла;      
    
    // Сформировать список ссылок на все документы "ПриходнаяНакладная" за текущий месяц.
    Выборка = Документы.ПриходнаяНакладная.Выбрать(НачалоМесяца(ТекущаяДата()), КонецМесяца(ТекущаяДата()));
    Пока Выборка.Следующий() Цикл
        СписокНакладных.Добавить(Выборка.Ссылка);
    КонецЦикла;    

    // Пример: пометить документ на удаление.
    НенужныйДокумент = Документы.ОказаниеУслуги.НайтиПоНомеру(13).ПолучитьОбъект();
    НенужныйДокумент.УстановитьПометкуУдаления(Истина);

Последовательности событий

Последовательность событий при записи документа из формы документа

!!! Если надо что-то программно изменить в событии "ПриИзменении", то изменения надо вносить в параметр ТекущийОбъект, а не в ОБъект.

Последовательность событий при проведении документа из формы документа (провести и закрыть)

Автоматическое проведение документа происходит при его записи из формы, если у формы стоит свойство ПриЗаписиПерепроводить = Истина. Это свойство принадлежит расширению формы документа, т.е. когда у формы основной реквизит имеет тип ДокументОбъект.

Если ПриЗаписиПерепроводить - Ложь, тогда  последовательность событий равна предыдущему варианту для простой записи документа.

Если у документа стоит запрет проведения, то из цепочки событий исключается "Обработка проведения"

Последовательность событий при отмене проведения документа из формы документа

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

Статья о проведении документов

Свойства документа

  • Оперативное проведение (Разрешить/Запретить) - определяет возможность оперативного проведения документа (статья по ссылке выше).
  • Удаление движений (Удалять автоматически при отмене проведения/Удалять автоматически/Не удалять автоматически).
  • Удалять автоматически при отмене проведения - записи движений удаляются автоматически только при удалении и отмене проведения документа. При проведении документа движения не удаляются, а перезаписываются.  
  • Удалять автоматически - удаление записей автоматически происходит:
  1. при записи документа с проведением (старые записи удаляются, а новые формируются);
  2. при пометке документа на удаление (процесс, а не состояние);
  3. при отмене проведения документа (процесс, а не состояние);
  • Не удалять автоматически - удаление движений не происходит. Например, ответственность за правильность оформления заказов покупателей лежит на отделе продаж. Однако заказы выборочно контролируются финансовым отделом. При обнаружении нарушений в назначении цен документ снимается с проведения, что означает необходимость его дальнейшей доработки. Но движения по регистрам учета при этом удаляться не должны, чтобы не исключать данный заказ из учета вообще.
  • Запись движений при проведении (Записывать выбранные/Записывать модифицированные). Отображается только на панели свойств справа.
  1. Записывать выбранные - разработчик должен указать в явном виде, какие движения надо записать. При выполнении записи движений, например, при оперативном проведении документа методом Записать(), свойство Записывать у записанных наборов движений сбрасывается в значение Ложь (оптимизация записи). Чтобы запись в нужном наборе движений были выполнены надо у набора движения указать свойство Записывать = Истина.
  2. Записывать модифицированные -  Будут записаны все модифицированные наборы  после выхода из обработки проведения
  • Привилегированный режим при проведении - выполнение операции без контроля прав (максимальное быстродействие).
  • Привилегированный режим при отмене проведения - выполнение операции без контроля прав (максимальное быстродействие).

 

 

 

Категория: Объекты конфигурации и типы данных | Добавил: leshic (21.03.2022)
Просмотров: 595 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Вход на сайт
Поиск
Категории раздела
СКД [48]
Регистры [7]
Формы [41]
Администрирование [35]
Запросы [10]
Объекты конфигурации и типы данных [20]
Взаимодействие с другими базами, приложениями и источниками данных [16]
Программирование [29]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0