Использует три SQL-базы - [Adv] - собственно, сама база 1С, [Tools] - база, где находится аггрегирующая функция Concatenate и база [AdvDW], куда помещается итоговая таблица связей Relations. Названия баз следует поменять на свои. Использовать три разных базы особой необходимости нет, просто мне так удобно.
Идея работы скрипта состоит в том, что 1С использует единый ключ типа binary(16) для всех таблиц. Поэтому, если связать (Select * from Ti inner join Tj on Ti.IDNi=Tj.IDNj) попарно все поля binary(16) всех таблиц и проверить, существует для каждого соединения хотя бы одна запись, то можно установить, существует ли связь между этими таблицами.
Аггрегирующая функция Concatenate служит для построения динамического sql. Это просто конкатенация строк заданной таблицы, описано подробно здесь http://msdn.microsoft.com/ru-ru/library/ms131056.aspx. Собственно, в сети можно найти аналоги без использования clr, но эта удобнее.
Чтобы проще понять, как все работает, можно раскомментировать Print.
Буду благодарен за любую конструктивную критику. Особо интересно оценить скорость работы на больших (минимум 10 млн. проводок ) живых базах.
Связи между таблицами без конфигуратора (sql)
Разработка - Инструментарий разработчика
Скачать файл
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Наименование | По подписке [?] | Купить один файл | |
---|---|---|---|
Определение связей RC.rar
.rar 1,00Kb
55
|
См. также
8400 руб.
20.08.2024 14795 108 46
9360 руб.
17.05.2024 27421 96 48