Сравнение таблиц в СКД

1. host_kms 125 08.10.21 03:45 Сейчас в теме
Дано к примеру три таблицы:



Как вывести отчет на СКД примерно в следующем виде:



Прикладываю файлы схем XML и для ИР Консоль компоновки данных
Прикрепленные файлы:
Схема_СКД.xml
ИР_ККД.dcf
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. glek 119 08.10.21 07:29 Сейчас в теме
(1) Недостаточно информации: по каким критериям идет сопоставление?
3. KoC_one 08.10.21 07:54 Сейчас в теме
(2) ну,судя по всему по гуиду, исходя из картинок..
4. host_kms 125 08.10.21 08:47 Сейчас в теме
Сопоставление должно идти по всем трем значениям "GUID или Код или Наименование", если по какому-то равно, считать что это одна и та же ссылка на справочник.
5. user952544 08.10.21 12:27 Сейчас в теме
ВЫБРАТЬ
Запр.ГУИД1 КАК ГУИД1,
Запр.Код1 КАК Код1,
Запр.Имя1 КАК Имя1,
Запр.ГУИД2 КАК ГУИД2,
Запр.Код2 КАК Код2,
Запр.Имя2 КАК Имя2,
Запр.ГУИД3 КАК ГУИД3,
Запр.Код3 КАК Код3,
Запр.Имя3 КАК Имя3,
выбор когда запр.гуид1=запр.гуид2 и запр.гуид1=запр.гуид3 и запр.код1=запр.код2 и запр.код1=запр.код3 и запр.имя1=запр.имя2 и запр.имя1=запр.имя3 тогда "Нет различий" когда запр.гуид1=запр.гуид2 и запр.гуид1=запр.гуид3 и запр.код1=запр.код2 и запр.код1=запр.код3 тогда "Различия в наименовании" иначе "Различия в нескольких реквизитах" конец КАК РезультатСравнения
ИЗ
(ВЫБРАТЬ
База1.ГУИД КАК ГУИД1,
База1.Код КАК Код1,
База1.Имя КАК Имя1,
База2.ГУИД КАК ГУИД2,
База2.Код КАК Код2,
База2.Имя КАК Имя2,
База3.ГУИД КАК ГУИД3,
База3.Код КАК Код3,
База3.Имя КАК Имя3
ИЗ База1 КАК База1
левое соединение База2 как База2 по база2.код=база1.код или база2.гуид=база1.гуид или база2.имя=база1.имя
левое соединение База3 как База3 по база3.код=база1.код или база3.гуид=база1.гуид или база3.имя=база1.имя
сгруппировать по База1.ГУИД,База1.Код,База1.Имя,База2.ГУИД,База2.Код,База2.Имя,База3.ГУИД,База3.Код,База3.Имя
объединить все
ВЫБРАТЬ
База1.ГУИД КАК ГУИД1,
База1.Код КАК Код1,
База1.Имя КАК Имя1,
База2.ГУИД КАК ГУИД2,
База2.Код КАК Код2,
База2.Имя КАК Имя2,
База3.ГУИД КАК ГУИД3,
База3.Код КАК Код3,
База3.Имя КАК Имя3
ИЗ База2 КАК База2
левое соединение База1 как База1 по база2.код=база1.код или база2.гуид=база1.гуид или база2.имя=база1.имя
левое соединение База3 как База3 по база3.код=база2.код или база3.гуид=база2.гуид или база3.имя=база2.имя
сгруппировать по База1.ГУИД,База1.Код,База1.Имя,База2.ГУИД,База2.Код,База2.Имя,База3.ГУИД,База3.Код,База3.Имя
объединить все
ВЫБРАТЬ
База1.ГУИД КАК ГУИД1,
База1.Код КАК Код1,
База1.Имя КАК Имя1,
База2.ГУИД КАК ГУИД2,
База2.Код КАК Код2,
База2.Имя КАК Имя2,
База3.ГУИД КАК ГУИД3,
База3.Код КАК Код3,
База3.Имя КАК Имя3
ИЗ База3 КАК База3
левое соединение База1 как База1 по база3.код=база1.код или база3.гуид=база1.гуид или база3.имя=база1.имя
левое соединение База2 как База2 по база3.код=база2.код или база3.гуид=база2.гуид или база3.имя=база2.имя
сгруппировать по База1.ГУИД,База1.Код,База1.Имя,База2.ГУИД,База2.Код,База2.Имя,База3.ГУИД,База3.Код,База3.Имя) КАК Запр
сгруппировать по Запр.ГУИД1,Запр.ГУИД2,Запр.ГУИД3,Запр.Код1,Запр.Код2,Запр.Код3,Запр.Имя1,Запр.Имя2,Запр.Имя3
//////////////
Показать

только позиции могут двоится, если, например со второй базой совпадение по ГУИД, с третьей по коду
6. host_kms 125 10.10.21 14:18 Сейчас в теме
(5) Так я тоже написал) я хочу именно на СКД реализовать без нумерации Код1, Код2, Код3. Дело в том, что баз может быть и три и восемь, все расписывать не охота, хочется именно универсальное решение. Не обязательно как у меня на скринах, хотя бы просто в Результат сравнения: Есть различия, Нет различий.
7. user952544 10.10.21 20:10 Сейчас в теме
(6) Текст запроса вполне может написать сама 1с в зависимости от количества таблиц, блоки повторяются и легко описываются. Если речь идет именно об СКД, то вряд ли можно написать в СКД запрос, который будет соединять заранее неизвестное число таблиц. Однако если на вход подавать не энное количество таблиц, а одну, в которой кроме полей имя, код, гуид будет поле номербазы, то можно просто посчитать количество различных по сумме код+имя+гуид, если количество равно количеству различных по полю номербазы, то совпадение полное, если нет, то нет.
8. host_kms 125 15.10.21 02:24 Сейчас в теме
(7) Неизвестное число таблиц можно соединить программно и потом передать в набор объект.
В файле пример итоговой таблицы переданной в "Набор данных - объект".
Наименование центра - это имя базы.
Осталось только сравнить "ГУИД, Код, Наименование" между базами и выдать результат, а вот как это сделать пока не могу сообразить. Попытки выложены в файл схемы в теме.
Прикрепленные файлы:
9. user952544 15.10.21 08:58 Сейчас в теме
(8)
ВЫБРАТЬ
Запр.Код+Запр.Наименование+Запр.ГУИД как уникальнаякомбинация,
выбор когда КОЛИЧЕСТВОРАЗЛИЧНЫХ(НаименованиеЦентра)=&КвоБаз тогда "Все совпадает" иначе "Есть различия" конец КАК РезультатСравнения
из &НаборДанных КАК Запр
сгруппировать по Запр.Код+Запр.Наименование+Запр.ГУИД
////////////////////////

где &КвоБаз - количество сравниваемых баз, &НаборДанных - итоговая таблица.
можно уже на стороне клиента создать в СКД пользовательские поля (Код+Наименование+ГУИД) и функцию (выбор когда КОЛИЧЕСТВОРАЗЛИЧНЫХ(НаименованиеЦентра)=&КвоБаз тогда "Все совпадает" иначе "Есть различия" конец) и сделать группировку по первому
10. host_kms 125 02.11.21 04:16 Сейчас в теме
(9) Спасибо конечно, что пытаетесь помочь, но я не могу до конца сообразить как реализовать данное решение.
Можете подробнее осветить метод решения.
Спасибо!
11. user952544 02.11.21 07:24 Сейчас в теме
(10) Должна быть таблица на входе ГУИД, Код, Наименование,НаименованиеЦентра. Если во всех базах код, наименование, гуид совпадают, то количество различных центров по данной комбинации будет равно общему количеству центров. Неясно, что именно вам непонятно, уточните вопрос.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот