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



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

С точки зрения программиста при проведении документа вызывается процедура-обработчик события ОбработкаПроведения, в которой определяются все действия данного документа на встроенном языке.

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

На закладке «Движения» задаются основные параметры проведения документа. Самый первый параметр разрешает или запрещает проведение документа.

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

Стоит отметить, что в 1С:Предприятии 8.0 проведение документа и движения по регистрам не связаны жестко. Документ может быть не проведен и иметь движения.

Рассмотрим параметр «Оперативное проведение». При таком проведении можно контролировать текущие остатки регистров, например, при проведении расходной накладной нужно проверить, достаточно ли товара на складе.

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

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

Процедура ОбработкаПроведения(Отказ, Режим)

//проверка остатка производится

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

Если Режим = РежимПроведенияДокумента.Оперативный Тогда

Если ОстатокНаСкладе < СтрокаСостава.Количество Тогда

Сообщить("Товара "+СокрЛП(СтрокаСостава.Номенклатура)+"имеется только"+Остаток);

Отказ = Истина;

Возврат;

КонецЕсли;

КонецЕсли;

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

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

Оперативная отметка времени

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

Например:

Процедура ПередЗаписью (Отказ, РежимЗаписи, РежимПроведения)

Дата = ПолучитьОперативнуюОтметкуВремени();

....

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

 

Модуль документа

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

Например, там и только там располагаются обработчики следующих событий:


Дата добавления: 2015-12-20; просмотров: 24; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!