Защита объектов от изменения обменом

29.01.24

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

Расширение позволяет пользователю заблокировать объект 1С (документ, справочник) от изменения последующими загрузками данных или обменами.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Расширение: Защита объектов от изменения обменом (версия 04.01.2022 с отказом):
.cfe 21,81Kb
60 4 200 руб. Купить
Расширение: Защита объектов от изменения обменом (версия 04.01.2022 без отказа с восстановлением от Malfarion):
.cfe 21,92Kb
43 4 200 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Во многих базах 1С работают обмены данными и загрузки из различных источников в Базу-приемник. И было бы неплохо в такой ситуации дать возможность пользователю защитить объект (документ, справочник) в Базе-приемнике от повторного затирания следующими итерациями обменов. Это необходимо, например, когда объекты в Базу-приемник приходят частично или не совсем корректно заполненными и ответственные пользователи вручную проверяют пришедший объект и дозаполняют его до нужного состояния. Но не могут зафиксировать свою работу предотвратив случайное затирание при следующей загрузке.

Примечание: Стандартная дата запрета не защищает объекты 1С от изменения загрузками данных, т.к. не контролирует внесение изменений объекта в режиме ЭтотОбъект.ОбменДанными.Загрузка = Истина, в котором работают загрузки и обмены, поэтому требуется доработка контроля. Я, например, использовал это расширение при загрузках универсальным обменом данными из УПП в ЕРП в период перехода с одной базы на другую, вообще можно использовать при любых обменах между базами (см. ниже блок Проверка работоспособности в конфигурациях).

Немного о расширении:

  • Кнопка установки защиты на объект выводится динамически в верхнюю панель формы справочников, документов, планов видов характеристик через перехват методов общих модулей: ВерсионированиеОбъектов и УправлениеСвойствами. Действие нажатия кнопки обрабатывается через перехват методов общего модуля ПодключаемыеКомандыКлиент;
  • В режиме обмена/загрузки в подписках на событие перед записью проверяется запрет на изменение объектов и запрещается менять защищенный пользователем объект . ПримечаниеПри этом менять сам объект в базе пользователю можно, запрет действует только на изменение объекта обменом или загрузкой;
  • Поддерживается два статуса объекта:  - обмен объекта разрешен,  - перезапись объекта обменом запрещена;
  • Сами ссылки на защищенные объекты хранятся в расширении регистре сведений "ЗИО: Закрытые от изменения объекты" (навигационная ссылка) e1cib/list/РегистрСведений.зио_ЗакрытыеОтИзмененияОбъекты, в нем можно перейти к объекту и отредактировать состояние вручную.

Ниже пара простых примеров установки блокировки:

 
  Пример 1: Защита приема на работу и сотрудника от затирания в 1С:Зарплата и управление персоналом
 
  Пример 2: Защита заявки и контрагента от затирания в 1С:ERP
 
 Пример 3: Защита платежа от затирания в 1С:Бухгалтерия предприятия

 

Проверка работоспособности в конфигурациях:

Работа расширения успешно проверено на платформе 1С:Предприятие 8.3 (8.3.18.1520) в конфигурациях:

  • 1С:ERP Управление предприятием 2 (2.4.11.91, 2.5.7.201)
  • 1С:Комплексная автоматизация 2 (2.4.9.98)
  • 1С:Управление торговлей, редакция 11 (11.4.8.84)
  • 1С:Зарплата и управление персоналом, редакция 3.1 (3.1.18.337, 3.1.20.97) 
  • 1С:Бухгалтерия предприятия, редакция 3.0 (3.0.106.60) 

Т.к. в расширении подписки на события используются, то Режим совместимости конфигурации нужен от Версия 8.3.16 (либо удаляйте подписки из расширения и делайте перехват процедур от подписок перед записью из конфигурации)

Расширение использует универсальные механизмы, общие для многих продуктов 1С, поэтому может быть подключено к разным продуктам 1С либо доработано с минимальными затратами. Конфигурация продукта 1С должна быть построена на базе БСП (Библиотеки стандартных подсистем, входит в типовые конфигурации 8.3)

ВЕРСИИ ДЛЯ СКАЧИВАНИЯ: 

  • Расширение: Защита объектов от изменения обменом (версия 04.01.2022 с отказом) - При загрузка выполняется отказ от записи защищенного объекта, нужно сочетать с признаком продолжения загрузки при возникновении ошибки, либо анализировать и убирать из регистрации в источнике запрещенный объект. Обратите внимание, что 

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

  • Расширение: Защита объектов от изменения обменом (версия 04.01.2022 без отказа с восстановлением от Malfarion) - При загрузке отказ не выполняется, а выполняется восстановление объекта ЗаполнитьЗначенияСвойств(ЭтотОбъект,Ссылка) , восстанавливая объект. Кому-то потребуется чуть посложнее обвязку сделать, дело в том что у ЗаполнитьЗначениеСвойств() есть проблема с реквизитами "Владелец" и "Родитель". Например если справочник не подчиненный он на этой конструкции выкинет ошибку на то что пытается записать "владельца", а этот реквизит недоступен для записи. Это скорее проблема у ЗаполнитьЗначениеСвойств, но в текущих платформах надо самому это определять и ставить в список исключающих свойств. По табличным частям также сами сделайте восстановление выгрузкой из ссылки и загрузкой в объект (если необходимо)

 
 Как подключить расширение к базе 1С?
 
 Другие публикации автора