Поддержка ссылочной целостности для объектов с реквизитами типа ХранилищеЗначений
Разработка - Инструментарий разработчика
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Поставка link_blob.cf (8.3.24.1467)
- включает подсистему дпДополнительныеПодсистемы.СсылкиХранилищаЗначений
- включает пример объекта подключенного к подсистеме Справочник.дпСсылкиХранилищаЗначений_Шаблон
- на форме элемента реализовано интерактивное редактирование списка ссылок РеквизитХранилищеЗначений
- на форме списка реализован интерактивный вызов для актуализации ссылок найденных в РеквизитХранилищеЗначений
Подключение объекта к подсистеме
- добавить ссылку в определяемый тип дпОбъектСХранилищемЗначений
- добавить объект в определяемый тип дпОбъектСХранилищемЗначенийОбъект
- добавить в объект служебную табличную часть дпСсылкиХранилищеЗначений с реквизитом Значение типа ЛюбаяСсылка
- добавить в модуль объекта вызов
#Область дпДополнительныеПодсистемыСсылкиХранилищаЗначений
// см. ПередЗаписью()
//
Процедура ПередЗаписьюОбъектаСХранилищемЗначений(Отказ) Экспорт
дпСсылкиХранилищаЗначений.УстановитьСсылкиХранилищаЗначений(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
Назначение объектов подсистемы
Команда.дпСсылкиХранилищаЗначений, ОбщаяФорма.дпСсылкиХранилищаЗначений предназначены для просмотра служебной табличной части дпСсылкиХранилищеЗначений в форме объекта и форме списка объектов

ПодпискаНаСобытие.дпПередЗаписьюОбъектаСХранилищемЗначений предназначена для
- очистки служебной табличной части дпСсылкиХранилищеЗначений при любой записи объекта (в том числе и в режиме обмена данными)
- заполнения служебной табличной части дпСсылкиХранилищеЗначений при специальной дозаписи объекта в режиме актуализации ссылок найденных в реквизитах типа ХранилищеЗначений
РегламентноеЗадание.дпОбновлениеСсылокОбъектовСХранилищемЗначений предназначено для
- пакетной обработки объектов подключенных к подсистеме и актуализации ссылок, за одну обработку выбирается не более 100 объектов, предполагается расписание запуска чаще чем 1н раз в день, что бы поддерживать своевременную актуализацию значения ссылок
- выбираются только объекты с пустой служебной табличной частью дпСсылкиХранилищеЗначений
- если в реквизитах типа ХранилищеЗначений не найдено ссылок, то в служебную табличную часть дпСсылкиХранилищеЗначений добавляется служебная запись, что объект обработан

Пример использования подсистемы
- В ИБ создается/изменяется объект хранящий сложные настройки (например отбор СКД) в хранилище значений, ссылки использованные в хранилище значений не доступны при контроле ссылочной целостности и в результате удаления помеченных объектов в этот момент настройки могут быть потеряны.
- В результате работы регламентного задания "Обновление ссылок объектов с хранилищем значений" для этого объекта будет выполнен поиск ссылок в реквизитах хранилище значений и сохранен в служебной табличной части этого же объекта, все найденные ссылки будут доступны при контроле ссылочной целостности.
- Алгоритм поиска ссылок в реквизитах хранилище значений
- по умолчанию используется стандартный алгоритм, который обходит все реквизиты и табличные части объекта и рекурсивно ищет ссылки в хранилище значений
дпСсылкиХранилищаЗначений.УстановитьСсылкиХранилищаЗначений(Объект);можно исключить из стандартного алгоритма реквизиты хранилища значений (например, двоичные данные), в которых не надо искать ссылки
-
ИсключаяСвойства = "Реквизит1, Реквизит2"; дпСсылкиХранилищаЗначений.УстановитьСсылкиХранилищаЗначений(Объект,, ИсключаяСвойства); - можно реализовать свой алгоритм поиска ссылок в объекте
МассивСсылок = СвойАлгоритмПоискаСсылок(); дпСсылкиХранилищаЗначений.УстановитьСсылкиХранилищаЗначений(ЭтотОбъект, МассивСсылок);
- по умолчанию используется стандартный алгоритм, который обходит все реквизиты и табличные части объекта и рекурсивно ищет ссылки в хранилище значений
Вступайте в нашу телеграмм-группу Инфостарт