Можно ли в СКД один набор данных связать с несколькими? #600009


#0 by ChAlex
Нужно получить из 3-х наборов A,B и C выходной набор, при этом к набору присоединить наборы B и C по аналогии запроса - ... ИЗ А КАК А ЛЕВОЕ СОЕДИНЕНИЕ В КАК В По А.а=B.а ЛЕВОЕ СОЕДИНЕНИЕ С КАК С По А.а=С.а .... Можно ли такое соединение получить в СКД? Бьюсь - все никак не получается. В СКД Указываю источник связи - набор A во всех строках, естественно приемник соответсвенно В и С. В результате выдает что используются поля несвязанных наборов. Если поменять местами источник и приемние - не ругается, но выборка естественно не верная (пустая). Неужели в СКД такое невозможно? Что-то не догоняю
#1 by Axel2009
в скд возможно тока левое соединение
#2 by ChAlex
Так мне и нужно только левое соединение, единственное к набору а присоединить несколько наборов. Или если несколько наборов то это уже не левое соединение?
#3 by Конфигуратор1с
можно соединить, что то вы не то делаете
#4 by Конфигуратор1с
Вы случайно не пытаетесь в вычисляемых полях использовать поля В и С?
#5 by Terve-R-
Объединение же есть
#6 by ChAlex
Не я первый с эти бодаюсь, в инете встречаются вопросы только не нашел ответов. Я уже убрал всякие вычисляемые поля. Просто к набору А надо присоединить 2 набора B и С. Естественно наборы B и C между собой не связаны. В отчет нужно вывести все поля. Вот тут и спотыкается. Блин в СКД куча всего - типа и иерархию строит, и итоги считает правильно и т.д. и т.п. А элементарное соединение произвести не позволяет. Что уж проще то. Не пойму разработчика
#7 by ChAlex
объединение то есть, только оно тоже не всегда панацея. Структура информации в наборах B и C различная. В результате объединения получаем строки с незаполненные не пересекающимися полями из обоих наборов - как результат - вместо одной строки получаем две (ну или больше).
#8 by Конфигуратор1с
посмотрите в типовых должен быть отчет "Свод начисленой зарплаты организации", посмотрите там
#9 by Конфигуратор1с
на крайний случай можно сделать в запросе левое соединение
#10 by Конфигуратор1с
- Попробовал создать как вы делали, действительно ругается. надо будет поковырять как его обойти
#11 by ChAlex
К сожалению обход через задний проход! И это при всем том, что СКД позиционируется как шаг (если не два) вперед. В простых ситуациях его можно создать. А вот если побольше наборов данных - то заколебаешься все со всеми связывать (на сей момент я свою проблему кое-как решил, исключительно только благодаря тому, что смог описать ненужную связь между наборами B и С, нашлося реквизит, за который смог зацепиться) И почему разработчиками сделана такая проблема в этом - мне например совсем не понятно! Ну хоть стреляйте. Ведь потребности в этом больше чем предостаточно. И не всегда решение можно сделать через соединение в запросе. А сложност в реализации соединения наборов - ну никакой, детский  лепет по сравнению с реализацией всего остального что присутсвует в СКД.
#12 by Конфигуратор1с
ну на счет мелочи, столько раз мне клиенты говорили - так ту всего лишь кнопочку добавить и приходилось им объяснять, что сама по себе кнопочка ничего не значит, а вот пару сотен кода, которые нужно к ней прикрутить не пишутся за полчаса
#13 by ChAlex
ага. только данная ситуация - фундаментальная, а не прикрутить кнопочку, да и СКД уж сколько лет как вроде существует и вроде как развивается. Да и уйму моментов можно было бы обойти, если бы например внешние наборы данных можно было использовать в запросах в СКД. Вот например что сложного в этом. Получается просто в запрос внешнюю таблицу загрузить можно, а в СКД - нет. Ну простое решение в лоб, если уж там это как-то все поперек и не срастается - сделать еще один вид набора данных исключительно для ввода внешней информации, или сделать возможность в параметры загружать таблицу. Затраты на реализацию - минимум - эффект на лицо. В большинстве моментов не надо было бы делать объединений и соединений наборов, а все (ну или почти все) можно было бы сделать на единственном запросе. Ладно - это так из серии "о наболевшем"
#14 by asady
попробуй в СКД добавить связь B.a=C.a
#15 by Конфигуратор1с
так в СКД есть набор данных объект - это и есть внешняя таблица
#16 by ChAlex
Не всегда такое возможно. Для конкретной текущей ситуации я так и сделал (нашлось к чему привязаться). Опять же - этот лишняя связь!! (с точки зрения построения выходного набора данных). Например в строке набора А есть 2 различных ссылочных поля, по каждому из которых и получаем связи к наборам B и C соответственно. Сами наборы B и C - между собой не имеют общих реквизитов и связать их между собой не по чем. Но наборы связаны посредством набора A. Вот тут и вилы - СКД не позволяет такое использование
#17 by ChAlex
- только этот набор в запрос не запихнешь, и как раз необходимость его использования и приводит к вышеописанным граблям
#18 by ChAlex
я догадываюсь приблизительно откуда растут ноги на запрет такого использования - только по-моему это излишне
#19 by Конфигуратор1с
- С другой стороны, Если вы выбираете поля наборов В и С, откуда компоновка знает как их связать? Как нам на курсах объяснили, компоновка  извлекает из базы результат всех запросов отдельно а потом соединяет. И если вы выбрали в настрйоках для вывода поля таблицы С, то он не будет делать запрос по таблице В и А.
#20 by ChAlex
я приблизительно так и думаю о причинах. Но вот тут и возникают колизии, а именно - "ЕСЛИ!! там кто-то чего го сделает" и "система извлекает результаты отдельно а потом связывает". То бишь все идет последовательно как и должно быть:  получаем выходные несвязанные таблицы (пусть согласно того что там пофильтровали и т.п.) ЗАТЕМ!!! соединяем таблицы согласно связей, и только ПОТОМ!!! начинаем обрабатывать выходную таблицу (группировать и т.п.). Так что мешает после объединения таблиц если что-то не так проконтролировать и ругнуться или вывести криво (ну раз криво пользователь что-то накладывает - мало ли что штатно можно сделать такое - что положит работу отчета и без этого). Зачем блокировать сразу?! А если пользователь ничего не меняет - то что не будем делать, поскольку он может изменить?! Бред. Ведь логика необходимости получения наборов B и C уже продиктована наличием полей из этих наборов в выходной таблице. Логика связи наборов никак не нарушает работу СКД в данной части
#21 by Конфигуратор1с
а можно создавать таки соединение одного набора с несколькими. Есть типовый отчет в украинской конфигурации могу прислать. В чем фишка не понял, но я попробовал связать три набора, то пока для числового ресурса регистра сведений не определил его как ресурс, он выдавал ту же ошибку.
#22 by Конфигуратор1с
+ в общем получилось связать три источника без лишнего соединения
#23 by ChAlex
- если не сложно - буду рад отчету - попробую по аналогии (мыло в профиле). Кстати ресурсы я не определял - они мне в данной задаче не нужны, нужны просто детальные записи. Может загвоздка где нибудь и в этом.
#24 by Новиков
Подпишусь из-за интереса :) Очень редко использую объединения/соединения, почему-то всегда в запросе все вытворяю :(
#25 by ChAlex
- если бы можно было не использовать внешний набор данных - тоже в запросах все предпочитаю получать, но иногда все-таки полезно использовать например объединение наборов (ну например при связи набора движений с несколькими таблицами остатков в различных разрезах - нужно иметь общий остаток и плюс остатки по складам и что бы цифры не увеличивались - объединение то что надо.
#26 by Конфигуратор1с
Отправил
#27 by ChAlex
Спасибо. Получил. Правда мало чем помогло. Но вот уже за 2 дня экспериментов выяснились некоторые моменты. Если есть числовые поля - то они могут быть ТОЛЬКО В РЕСУРСАХ. Иначе ошибка об использовании полей из несвязанных наборов. Строковые и ссылочные поля выводятся. То есть связь вроде как работает, но начинает конфликтовать числовые поля из разных наборов. Вот такие пироги. (и чем блин число хуже той же строки?!!). Ну и намудрили. По сути какая разница какого типа поле, ума не приложу. Сегодня надоело уже бодаться, завтра проведу еще ряд экспериментов.
#28 by ChAlex
Короче так толком связь в СКД и не работает! Можно соединить любое количество наборов, но вывести можно только ресурсы из всех наборов и поля из основного набора и из одного набора из правой части соединения. Вывести поля из разных наборов - невозможно, использовать ресурсы из разных наборов в вычисляемых полях - тоже невозможно! Короче лажа и полноценного соединения не получить
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С