Встановлення періодичного реквізиту довідника під час проведення документа
Транзакції
Проведення документа
Оператор Провести() у наведеному вище прикладі виконає проведення документа. Під час проведення буде викликано зумовлену процедуру ОбробкаПроведення(). Другим реквізитом передається в обробку проведення значення ("Програмно"), за яким процедура ОбробкаПроведення() дізнається про програмне виконання проведення. Це може бути простий рядок чи число, його завдання – лише позначити факт програмного проведення.
Якщо ви працюєте з уже існуючим документом, метод Провести() перепроведе документ. А за допомогою методу Проведено() можна дізнатися, чи проведено якийсь документ:
Якщо Док.Проведено() > 0 Тоді
Повідомити ("Документ №" + Док. НомерДок + "проведено"); …………… // Якісь дії, які потрібно зробити з проведеним документом
Про створення операцій та проводок під час проведення документів читай розділ Операції та проведення глави Бухгалтерія.
При створенні безлічі документів або прискорення роботи можна укласти цикл транзакцію. При цьому реальний запис документів відбудеться лише за командою Зафіксувати транзакцію(). На час транзакції блокується для інших користувачів запис та проведення документів.
Списання Матеріалів = Створити Об'єкт ("Документ. Вимога Накладена"); Почати транзакцію(); Для Ном = 1 По 100 Цикл
Списання Матеріалів. Новий (); ………………… // Заповнення реквізитів СписанняМатеріалів.Записати(); СписанняМатеріалів.Провести();
Нагадаю, що визначена процедура ОбробкаПроведення() самостійно відкриває транзакцію для проведення, проте є невелика особливість документа, створеного функцією СтворитиОб'єкт(). Справа в тому, що про програмне проведення створених документів не виконуєтьсяавтоматичний попередній запис, і для того, щоб при будь-яких збоях та помилках зберігалася узгодженість даних документа та його рухів (операцій), слід об'єднувати запис та проведення документа в одну транзакцію.
Простим прикладом такої дії є встановлення нового окладу співробітнику у довіднику Співробітники під час проведення, наприклад, штатного розкладу.
Встановити Реквізит Довідника (Співробітник, "Оклад", Новий Оклад, Дата Док);