Разрешить изменение отдельных реквизитов документа, находящегося за границей запрета
Переадресовываю чужой вопрос.
Почти для всех пользователей установлен запрет проведения всех документов вчерашним числом (через стандартный механизм, регистр "Границы запрета изменения данных").
Вопрос: Изменение некоторых реквизитов не влияет на движения документа, например, если в Реализации меняется номер БСО.
Как аккуратно и попроще сделать так, чтобы те реквизиты, которые влияют на движения, изменять было бы нельзя, а те, которые не влияют - можно?
Вопрос: Изменение некоторых реквизитов не влияет на движения документа, например, если в Реализации меняется номер БСО.
Как аккуратно и попроще сделать так, чтобы те реквизиты, которые влияют на движения, изменять было бы нельзя, а те, которые не влияют - можно?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Самый очевидный способ - при проверке сравнить старую и новую версию по документа по ВСЕМ реквизитам, и если изменения только в разрешенных реквизитах, то разрешать запись. Но способ не эффективен - реквизитов, которые должны быть доступны для изменения, не так много.
Есть способ лучше?
Есть способ лучше?
(2) Lovish, Как вариант - на форме документа у элементов, которые можно редактировать задним числом снимается признак "изменяет данные". Если форма открыта в режиме "только просмотр", то элементы, у которых этот признак не стоит можно изменять. Ну и остается сделать запись без перепроведения для документов.
(5) Africa,
Не совсем понимаю, чем этот флаг может помочь. Форма ведь не в состоянии ТолькоПросмотр, просто данные не записываются после проверки на дату запрета. Тем более, как я понимаю, для полей, непосредственно связанных с данными объекта, флаг ни на что не влияет (по умолчанию он как раз-таки снят, и Модифицированность формы будет выставлена в любом случае).
Как вариант - на форме документа у элементов, которые можно редактировать задним числом снимается признак "изменяет данные".
Не совсем понимаю, чем этот флаг может помочь. Форма ведь не в состоянии ТолькоПросмотр, просто данные не записываются после проверки на дату запрета. Тем более, как я понимаю, для полей, непосредственно связанных с данными объекта, флаг ни на что не влияет (по умолчанию он как раз-таки снят, и Модифицированность формы будет выставлена в любом случае).
Делал для комментария в нескольких документах: создавал стандартную кнопку "открыть" - на нее вешал вызов процедуры "Процедура КомментарийОткрытие(Элемент, СтандартнаяОбработка)" и уже в отдельной форме редактирования ПолучитьОбщуюФорму("ФормаРедактированияТекста"...) редактировал, + можно предусмотреть исключения через дополнительные свойства, но тогда их нужно прописать и в общих модулях проверки даты запрета.
(4) AndrewVVS,
В этом случае нужно навешивать обработчик на все запрещенные реквизиты. Иначе как определить, что меняются только разрешенные?
А вот это - хороший вариант! В этом случае обработчики нужно прописать только на разрешенные реквизиты.
можно предусмотреть исключения через дополнительные свойства, но тогда их нужно прописать и в общих модулях проверки даты запрета
В этом случае нужно навешивать обработчик на все запрещенные реквизиты. Иначе как определить, что меняются только разрешенные?
Делал для комментария в нескольких документах: создавал стандартную кнопку "открыть" - на нее вешал вызов процедуры "Процедура КомментарийОткрытие(Элемент, СтандартнаяОбработка)" и уже в отдельной форме редактирования ПолучитьОбщуюФорму("ФормаРедактированияТекста"...) редактировал
А вот это - хороший вариант! В этом случае обработчики нужно прописать только на разрешенные реквизиты.
(6) Lovish, дополнительные свойства по-любому придется прописывать, так как в 10.3 целых 3 проверки по дате запрета: 1. при открытии формы документа, 2 - при его записи даже без проведения (откройте в старом периоде, например инвентаризацию), 3 - при записи регистров, если есть проведение. В общем модуле "НастройкаПравДоступа" в процедуре "ПередЗаписьюДокументаПроверкаДоступностиПериода" прописываете "Если Источник.ДополнительныеСвойства.Свойство("ЗаписьЗаПределамиРазрешенногоПериода") Тогда Возврат;КонецЕсли;"; насчет Цитирую "навешивать обработчик на все запрещенные реквизиты": сделайте отдельную форму сразу на все такие реквизиты (комментарий, грузополучатель и т.д.), то есть будет только 1 обработчик.
(10) AndrewVVS, да, спасибо, я разобрался, что дополнительными свойствами придется пользоваться в любом случае, просто не успел изменить сообщение. Автору вопроса был посоветован Ваш вариант. А делать ли общую форму на редактирование всех "разрешенных к изменению" реквизитов, или поставить обработчик ПриОткрытии с вызовом формы редактирования на каждый реквизит - он решит сам.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот