Устанавливаем дату запрета изменения данных для собственного документа в ERP

Возврат к списку

В сегодняшней статье речь пойдет о том, как прикрутить типовой механизм запрета изменения данных к собственным документам, добавленных в конфигурацию 1С ERP. У нас типовая конфигурация, разработанная компанией 1С с допиской. Дописан документ утЗаявкаКлиента, который включает в себя заказ клиента на перевозку и механизм расчета ЗП, расхода ГСМ, расхода ТЖ, выработки сотрудника и другие сопутствующие документы. Очень удобно, водитель выполнил один рейс по заявке, в этой же заявке можно просчитать себестоимость перевозки.

Итак, нам необходимо прикрутить типовой механизм запрета редактирования данных. Открываем модуль формы документа утЗаявкаКлиента и переходим к процедуре ПриЧтенииНаСервере - добавляем запись:

Эта процедура из общего модуля будет проверять, подходит ли текущий документ под условия даты запрета изменения, и если условия подходят, то открывается форма документа со свойством ТолькоПросмотр - форма документа будет заблокирована для редактирования.

Если говорить кратко о механизме запрета, то он состоит из регистра сведений ДатыЗапретаИзменения (в нем хранится информация о дате запрета, разделах и пользователях ), плана видов характеристик РазделыДатЗапретаИзменения (в предопределенных видах характеристик хранятся разделы ) и подписок на события.

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

ПланВидов.png

На следующем шаге мы должны сказать системе, какие объекты входят в транспортный блок. В общем модуле ДатаЗапретаИзмененияПредопределяемый процедура ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения(ИсточникиДанных) описывает объекты на которые распространяется дата запрета. Для меня удобнее было вынести перечисление объектов в отдельную процедуру, её разместил в общем модуле утОбщегоНазначенияСервер (модуль в котором хранятся основные методы доработок). Итак описываем процедуру, ЗаполнитьИсточникиДанныхДляПроверкиЗапретаИзменения

После прописываем процедуру внутри процедуры заполнения источника данных для проверки.

ПроцедураВОбщемМодуле.png

Все, теперь при загрузке системы в свойство параметров сеанса ДействующиеДатыЗапретаИзменения будут записаны данные об объектах, на которые действует дата запрета изменения. Осталось лишь добавить запись в регистр сведений. Но разработчики защитили регистр от любопытных пользователей, убрав меню списка команду "Создать" и добавили строку Отказ = Истина; в событие перед началом добавления. Вы можете в режиме конфигуратор снять ограничения или воспользоваться внешней обработкой, расположенной в конце статьи.

Пример добавления записи в регистр с помощью внешней обработки.

ДобавлениеЗаписиВРегистр.png

После установки даты, проверим как работает запрет. Для примера откроем документ "Заявка клиента" от 31 декабря 2015 года, форма документа будет заблокирована, а в документе от 3 января 2016 года, блокировки не будет. Но есть одна проблема, если из формы списка, отменить проведение документа от 31 декабря 2015, то документ распроведется, хотя так не должно быть.

Форма документа, который заблокирован: 

ТабличнаяЧастьЗаблокирована.png

Для того, что бы вести контроль изменения данных при записи объектов, нам необходимо отредактировать подписку на событие ПроверитьДатуЗапретаПередЗаписьюДокумента именно в ней на событии ПередЗаписью запускается обработчик ДатыЗапретаИзменения.ПроверитьДатуЗапретаИзмененияПередЗаписьюДокумента() который выполняет необходимые проверки.

Что бы при следующем обновлении конфигурации не затереть изменения в подписке на события, я вручную создал подписку утПроверитьДатуЗапретаПередЗаписьюДокумента и указал свой источник документов.

Запрет изменения ПередЗаписью: 

ПроверкаЗапрета.png

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



ZircoolZircool17.01.2016 в 14:35
0
Обработкой для создания записи в регистре можно не пользоваться, сразу после добавления раздела в план видов характеристик. В обработке "Дата запрета изменения данных" появится раздел. Для него заполняем дату и автоматически появится запись в регистре.
ответная реплика
20.10.2016 в 11:46
0
Спасибо, хорошая статья!
ответная реплика
adminadmin20.10.2016 в 12:14
0
Спасибо!
ответная реплика
29.03.2017 в 16:02
0
Огромное спасибо!!!!
ответная реплика


Возврат к списку