![]() |
|
Замена "СКРЫТЫХ" ссылок групп спр.Номенклатура. Где могут храниться? | ☑ | ||
---|---|---|---|---|
0
kittystark
10.11.22
✎
06:01
|
нарисовалась задача замены групп справочника Номенклатура ссылками из другой базы
хочу допилить стандартную обработку "Поиск и замена значений", но она способна находить и менять лишь явные ссылки, а ведь есть всякие "потаенные места", типа Хранилищ Значений, где ссылки могут быть использованы и в неявном виде на ум приходит несколько примеров: - справочник ВариантыОтчетов - в нем поле Настройки - Хранилище Значений, по сути Настройки СКД со своими отборами и параметрами (в т.ч. и пользовательские настройки СКД) - справочник РассылкиОтчетов - тоже самое - настройки форм пользователей - отборы если с первыми двумя есть понимание как работать Хранилище.Получить() - пробежаться по ПараметрыДанных.Элементы / Отбор.Элементы, поменять - Хранилище.Записать(), то с формами куда копать - пока не знаю, пожалуйста, подскажите плюс, наверняка есть еще неведомые мне места... как их найти ? бежать по метаданным, смотреть на реквизиты, если тип - ХЗ, ну нашел, а дальше что ? в общем, кто что подскажет, как грамотно заменить одни группы другими, чтоб воплей не было "вы все сломали" ? конфа типовая КА 2.5.8 |
|||
1
Chai Nic
10.11.22
✎
07:29
|
А может быть ещё и XML или JSON сериализация. В общем, задачка веселая и в общем случае вряд ли выполнимая.
|
|||
2
Serg_1960
10.11.22
✎
08:19
|
(0) Совет (бесплатно): Изучайте типовую конфигурацию. Тогда для Вас в неё не будет "неведомых мест" :)
Там чудеса: там леший бродит, Русалка на ветвях сидит; Там на неведомых дорожках Следы невиданных зверей; |
|||
3
Chai Nic
10.11.22
✎
08:27
|
(2) В любой типовой могут быть внешние обработки, хранящие данные где-то в присоединенных файлах или настройках пользователя, чтобы не менять конфигурацию)
|
|||
4
Serg_1960
10.11.22
✎
08:32
|
PS: имхо, достаточно учесть «Версионирование объектов» для всех тех объектов, где могут сохраняться ссылки на группы номенклатуры. Такие объекты легко определяются через метаданные в конфигураторе.
(3) Это "их проблемы"(с). В таких случаях ни платформа, ни конфигурация не гарантируют ссылочную целостность - так почему об этом должна болеть голова у прогера? Не грузите его лишней информацией - он и без темы ветки автора в типовой конфигурации может встретиться с аналогичной ситуацией :( |
|||
5
kittystark
10.11.22
✎
15:32
|
(2) оригинально, оригинально...
|
|||
6
kittystark
10.11.22
✎
15:33
|
(3) все внешние обработки и отчеты - мои, там нет такого
|
|||
7
kittystark
10.11.22
✎
16:55
|
(4) вот сколько не пытался вспомнить хоть один объект, где бы фигурировали ГРУППЫ номенклатуры в версионировании,
кроме самого справочника номенклатуры с его полем Родитель - ничего на ум не приходит... |
|||
8
kittystark
10.11.22
✎
16:55
|
(4) >> Такие объекты легко определяются через метаданные в конфигураторе. >>
Это как ? |
|||
9
kittystark
10.11.22
✎
17:32
|
до кучи из потенциально возможного:
- ограничение доступа по RLS - настройки обмена с сайтом |
|||
10
Serg_1960
11.11.22
✎
14:48
|
(8) Ну "Поиск ссылок на объект" же - анализируем найденные ссылки :)
Для справочников и документов - это строки вида "*.Реквизит.*.Тип"- открываем свойства реквизита и если там в свойстве "Выбор групп и элементов" указано не "Элементы" - то это наш клиент. Если значение "Элементы" - проходим мимо. Аналогичная ситуация с регистрами и прочими объектами. Этот анализ конфигурации можно реализовать программно. |
|||
11
kittystark
11.11.22
✎
15:57
|
(10) ес-ес, кэпитэн..., все ж просто, да
а, про сферическое хранилище значений в вакууме есть что сказать? |
|||
12
Kassern
11.11.22
✎
16:07
|
(11) Ну круто, что. А что можете сказать за внешние xml/json файлы, где гуиды указаны старые?)
|
|||
13
Kassern
11.11.22
✎
16:07
|
Так можно далеко зайти. ну встретите косячную позицию, поправите по ходу, а вообще не надо ссылками злоупотреблять в хранилищах.
|
|||
14
kittystark
11.11.22
✎
16:18
|
(12), (13) кроме подсистемы "Версионирование объектов" других XML просто не знаю, ну разве что выгрузка в Битрикс
на версионирование - забьем >> а вообще не надо ссылками злоупотреблять в хранилищах >> ну этож не я злоупотребляю - это фабричным пейсателям нужно адре-насовать |
|||
15
Chai Nic
14.11.22
✎
08:33
|
(12) Как вариант, пробежаться по ВСЕМ метаданным, проверять если это двоичные данные или строка длины не менее длины гуида - пытаться их интерпретировать по порядку по всем известным вариантам хранения гуидов или сериализации, в десериализованном полученном нечте произвести полный рекурсивный перебор, найдя - заменить. Потом обратно сериализовать тем же методом и запихнуть где взял.
|
|||
16
Serg_1960
14.11.22
✎
08:49
|
Вы ещё забыли упомянуть бэкапы баз данных - вот где полный беспредел хранения устаревших ссылок. Ужас, ужас, ужас.
|
|||
17
kittystark
14.11.22
✎
10:28
|
(16) если не дай Бог восстанавливаться из бэкапа... тьфу-тьфу...
перелопатим - благо запрограммирую "списки что на что менять" через файлики, 3 тычка мыши и готово |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |