Поставка link_blob.cf (8.3.24.1467)
- включает подсистему дпДополнительныеПодсистемы.СсылкиХранилищаЗначений
- включает пример объекта подключенного к подсистеме Справочник.дпСсылкиХранилищаЗначений_Шаблон
- на форме элемента реализовано интерактивное редактирование списка ссылок РеквизитХранилищеЗначений
- на форме списка реализован интерактивный вызов для актуализации ссылок найденных в РеквизитХранилищеЗначений
Подключение объекта к подсистеме
- добавить ссылку в определяемый тип дпОбъектСХранилищемЗначений
- добавить объект в определяемый тип дпОбъектСХранилищемЗначенийОбъект
- добавить в объект служебную табличную часть дпСсылкиХранилищеЗначений с реквизитом Значение типа ЛюбаяСсылка
- добавить в модуль объекта вызов
#Область дпДополнительныеПодсистемыСсылкиХранилищаЗначений
// см. ПередЗаписью()
//
Процедура ПередЗаписьюОбъектаСХранилищемЗначений(Отказ) Экспорт
дпСсылкиХранилищаЗначений.УстановитьСсылкиХранилищаЗначений(ЭтотОбъект);
КонецПроцедуры
#КонецОбласти
Назначение объектов подсистемы
Команда.дпСсылкиХранилищаЗначений, ОбщаяФорма.дпСсылкиХранилищаЗначений предназначены для просмотра служебной табличной части дпСсылкиХранилищеЗначений в форме объекта и форме списка объектов

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

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