Якщо основний реквізит форми має тип значення ДокументОб'ект.<Имя>, то для даної форми діє розширення форми документа. За допомогою нього вирішуються питання специфічною функціональності форми документа. Розширення допомагає обробляти різні команди користувача, виконувати попередні перевірки і інші сервісні дії.
Крім того, дія розширення форми документа поширюється і на механізми записи і проведення документа. При цьому неважливо, була викликана запис документа інтерактивними діями користувача в формі документа або засобами мови Записати ().
Розглянемо ряд прикладів роботи цих механізмів.
Установка дати документа при відкритті форми
Якщо дата документа спочатку не встановлена, то при відкритті форми нового документа відбувається установка датою документа значення поточної дати сеансу.
Причому час документа буде встановлено в залежності від наступних установок. Якщо властивість АвтоВремя розширення форми документа має значення невикористаних той час документа буде встановлено за значенням поточної дати сеансу. В інших випадках датою документа присвоюється час початку дня (00:00:00).
Установка дати нового документа під час запису нового документа в формі
При записи документа в режимі оперативного проведення значення дати документа встановлюється згідно з виданою оперативної позначці часу. Тут настройки властивостей розширення форми не грають ролі.
Але якщо час документа "нульове" (0:00:00), то при неоперативне проведенні документа воно буде змінено відповідно до налаштувань властивості АвтоВремя. Виняток - коли АвтоВремя має значення невикористаних тоді час документа не змінюється.
.
Заборона інтерактивної записи проведеного документа без проведення (перепроведення)
Заборона інтерактивної записи проведеного документа без проведення (перепроведення) використовується, щоб не створювалася, наприклад, така ситуація: спочатку документ реалізації був заповнений і проведено, при проведенні сформовані руху по регістру із зазначенням кількості, що відповідає кількості в документі. Після цього користувач виправив дані документа і зберіг без проведення.
В результаті таких маніпуляцій в документі будуть записані нові дані, а в рухах по регістру залишаться дані від минулого проведення документа, тобто вони ніяк не відповідатимуть поточними даними документа.
Запобігання подібних ситуацій досягається за рахунок установки властивості розширення форми документа ПріЗапісіПерепроводіть значення Істина. Тоді відмова в обробці проведення призведе до відкату транзаціі - документ не буде і перезаписан.
Установка режиму проведення
При проведенні документа з форми система перевіряє наявність у користувача відповідних прав (Проведення, Інтерактивне проведення, Інтерактивне проведення неоперативне). Якщо їх немає, то видається повідомлення про неможливість проведення документа, і запис з проведенням документа з форми скасовується. Ми будемо розглядати тільки можливість відсутності / наявності прав на неоперативне проведення, в залежності від якого система може міняти свою поведінку, так як якщо немає перших двох прав, то документ не може бути проведений з форми в принципі.
Якщо інтерактивне проведення дозволено, сам вибір варіанту проведення повинен бути обумовлений логікою застосування механізму установки режиму проведення з форми. Тобто в деяких ситуаціях система повинна вибирати режим жорстко, в деяких право вибору режиму можна надати користувачеві. Для цього розробник має низку можливостей, що надаються системою за допомогою розмежування прав і розширеннями форми документа.
При записи документа з форми розширення форми документа виконує установку режиму проведення документа.
Для реалізації даного функціоналу система використовує варіант (Автоматично, Оперативний, Неоперативне, Запитувати) зазначений в якості значення властивості ІспользоватьРежімПроведенія розширення форми документа.
Варіант Автоматично встановлюється за допомогою вибору значення Автоматично у властивості ІспользоватьРежімПроведенія розширення форми документа. Платформа стандартно встановлює це значення для нової форми.
При испльзование даного варіанту, в залежності від ситуації і налаштувань, відбувається первинний підбір режиму проведення з варіантів Оперативний або Неоперативне.
Для проведеного документа відбувається перевірка стану дати документа щодо поточної дати сеансу.
Якщо дата документа (без урахування часу) дорівнює поточній даті сеансу, то система автоматично вибирає варіант проведення Оперативний.
Якщо дата документа (без урахування часу) більше поточної дати сеансу, користувачеві видається попередження: "Дата оперативно проведеного документа більше поточної. Документ не може бути проведено оперативно!", І проведення документа скасовується.
Якщо дата документа (без урахування часу) менше поточної дати сеансу, вибирається варіант проведення Неоперативне. При цьому якщо у користувача немає права на неоперативне проведення, видається попередження: "Недостатньо прав для неоперативного проведення", і проведення документа скасовується.
Варіант Оперативний встановлюється за допомогою вибору значення Оперативний у властивості ІспользоватьРежімПроведенія розширення форми документа.
В даному варіанті, якщо дата документа (без урахування часу) менше поточної дати сеансу, видається попередження: "Дата оперативно проведеного документа менше поточної. Документ не може бути проведено оперативно!", І проведення документа скасовується.
Якщо дата документа (без урахування часу) дорівнює поточній даті сеансу, проводиться запис документа з оперативним проведенням.
Якщо дата документа (без урахування часу) більше поточної дати сеансу, видається попередження: "Дата оперативно проведеного документа більше поточної. Документ не може бути проведено оперативно!", І проведення документа скасовується.
Варіант Неоперативне встановлюється за допомогою вибору значення Неоперативне у властивості ІспользоватьРежімПроведенія розширення форми документа.
При испльзование даного варіанту проведення документа з форми завжди проводиться в неоперативне режимі, незалежно від положення дати документа по відношенню до поточної дати сеансу.
При цьому еслу у користувача немає права на неоперативне проведення, видається попередження: "Недостатньо прав для неоперативного проведення", і проведення документа скасовується.
Варіант Запитувати встановлюється за допомогою вибору значення Запитувати у властивості ІспользоватьРежімПроведенія розширення форми документа.
Даний варіант реалізований в системі для того, щоб допомогти користувачеві прийняти рішення про вибір режиму проведення для кожної конкретної ситуації.
В даному варіанті користувач перед початком проведення повинен буде вибрати режим проведення документа в спеціальному системному вікні.
Поведінка системи при цьому варіанті визначається насамперед положенням дати документа (без часу) по відношенню до поточної дати сеансу.
У разі рівного розподілу цих дат далі перевіряється, чи має користувач право проводити документ неоперативно. Якщо користувач такого права не має, система проводить даний документ в оперативному режимі. Якщо право на неоперативне проведення є, користувачеві видається діалог з режимом вибору проведення. Після вибору режиму проведення система проводить документ відповідно в оперативному або неоперативне режимі.
Якщо дата документа (без урахування часу) менше поточної дати сеансу, поведінка системи визначається знову ж наявністю права на неоперативне проведення у користувача. Якщо користувач такого права не має, видається попередження: "Дата оперативно проведеного документа менше поточної. Документ не може бути проведено оперативно!", І проведення документа скасовується.
Якщо право на неоперативне проведення є, користувачеві видається діалог з режимом вибору проведення. Після вибору неоперативного режиму проведення система проводить документ в неоперативне режимі. Якщо ж користувач вибере оперативний режим проведення, видається попередження: "Дата оперативно проведеного документа менше поточної. Документ не може бути проведено оперативно!", І проведення документа скасовується.
Якщо дата документа (без урахування часу) більше поточної дати сеансу, система не дозволяє проводити документ оперативно. Тому якщо права неоперативного проведення немає, відразу видається попередження: "Дата оперативно проведеного документа більше поточної. Документ не може бути проведено оперативно!", І проведення документа скасовується.
Якщо право на неоперативне проведення є, користувачеві видається діалог з режимом вибору проведення. Після вибору неоперативного режиму проведення система проводить документ в неоперативне режимі. Якщо ж користувач вибере оперативний режим проведення, буде видано попередження: "Дата оперативно проведеного документа більше поточної. Документ не може бути проведено оперативно!", І проведення документа скасується.
Крім вибору режиму проведення та встановлення дати документа, розширення форми документа реалізує також наступний функціонал: