Паранормальное СКД

1. SantiouS 18.10.19 14:21 Сейчас в теме
Написал в СКД отчёт, который показывает торговые точки, их адреса и актуальный тип цены.
Среди множества торговых точек есть выбранная мною точка и тип цены у нее установлен и отображен в отчёте, но когда я делаю отбор по этой точке, то пропадает тип цены с отчёта. Что это такое?
ВЫБРАТЬ
	Партнеры.Ссылка,
	Партнеры.БизнесРегион,
	Партнеры.Наименование,
	ВЫБОР
		КОГДА Партнеры.Родитель = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)
			ТОГДА Партнеры.Ссылка
		ИНАЧЕ Партнеры.Родитель
	КОНЕЦ КАК Родитель,
	Партнеры.Код
ПОМЕСТИТЬ ВТПартнеры
ИЗ
	Справочник.Партнеры КАК Партнеры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТПартнеры.Ссылка,
	ВТПартнеры.БизнесРегион,
	ВТПартнеры.Наименование,
	ВТПартнеры.Код,
	ПартнерыКонтактнаяИнформация.Тип,
	ПартнерыКонтактнаяИнформация.Вид,
	ПартнерыКонтактнаяИнформация.Представление,
	ПартнерыКонтактнаяИнформация.ЗначенияПолей,
	ПартнерыКонтактнаяИнформация.Страна,
	ПартнерыКонтактнаяИнформация.Регион,
	ПартнерыКонтактнаяИнформация.Город,
	ПартнерыКонтактнаяИнформация.АдресЭП,
	ВТПартнеры.Родитель
ПОМЕСТИТЬ ВтПартнерыСКонтактами
ИЗ
	ВТПартнеры КАК ВТПартнеры
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
		ПО ВТПартнеры.Ссылка = ПартнерыКонтактнаяИнформация.Ссылка
ГДЕ
	ПартнерыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СоглашенияСКлиентами.Ссылка,
	СоглашенияСКлиентами.ВидЦен,
	СоглашенияСКлиентами.Партнер
ПОМЕСТИТЬ ВТАктуальныеСоглашения
ИЗ
	Справочник.СоглашенияСКлиентами КАК СоглашенияСКлиентами
ГДЕ
	СоглашенияСКлиентами.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВтПартнерыСКонтактами.Ссылка,
	ВтПартнерыСКонтактами.БизнесРегион,
	ВтПартнерыСКонтактами.Наименование,
	ВтПартнерыСКонтактами.Код,
	ВтПартнерыСКонтактами.Тип,
	ВтПартнерыСКонтактами.Вид,
	ВтПартнерыСКонтактами.Представление,
	ВтПартнерыСКонтактами.ЗначенияПолей,
	ВтПартнерыСКонтактами.Страна,
	ВтПартнерыСКонтактами.Регион,
	ВтПартнерыСКонтактами.Город,
	ВтПартнерыСКонтактами.АдресЭП,
	ВТАктуальныеСоглашения.ВидЦен,
	ВТАктуальныеСоглашения.Ссылка КАК СсылкаНаСоглашение,
	ВтПартнерыСКонтактами.Родитель
ИЗ
	ВтПартнерыСКонтактами КАК ВтПартнерыСКонтактами
		ЛЕВОЕ СОЕДИНЕНИЕ ВТАктуальныеСоглашения КАК ВТАктуальныеСоглашения
		ПО ВтПартнерыСКонтактами.Ссылка = ВТАктуальныеСоглашения.Партнер
Показать
Найденные решения
7. dhurricane 18.10.19 14:29 Сейчас в теме
(1) У Вас путаница в полях получилась. С одной стороны "Ссылка" - это ссылка на партнера в первом запросе пакета. С другой стороны "Ссылка" - это ссылка на соглашение в третьем запросе. Когда Вы устанавливаете отбор по полю "Ссылка", то СКД, оптимизируя запрос, добавляет это условие и в первый, и в третий запрос пакета. Только вот для третьего это неуместно: ссылка здесь не является партнером, а является соглашением.

Два решения:

1. Приведите все единому виду. Например, во всех запросах пакета пусть у Вас поле партнера так и называется - "Партнер", т.е. в первом запросе напишите:
ВЫБРАТЬ
   Партнеры.Ссылка КАК Партнер,
   ...

2. "Объясните" СКД для третьего запроса пакета кто есть кто:
ВЫБРАТЬ
    СоглашенияСКлиентами.Ссылка,
    СоглашенияСКлиентами.ВидЦен,
    СоглашенияСКлиентами.Партнер
ПОМЕСТИТЬ ВТАктуальныеСоглашения
ИЗ
    Справочник.СоглашенияСКлиентами КАК СоглашенияСКлиентами
ГДЕ
    СоглашенияСКлиентами.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
{ГДЕ
    СоглашенияСКлиентами.Ссылка.* КАК СсылкаНаСоглашение,
    СоглашенияСКлиентами.Партнер.* КАК Ссылка}
Показать

P.S. Поправил немного второе решение.
SantiouS; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
7. dhurricane 18.10.19 14:29 Сейчас в теме
(1) У Вас путаница в полях получилась. С одной стороны "Ссылка" - это ссылка на партнера в первом запросе пакета. С другой стороны "Ссылка" - это ссылка на соглашение в третьем запросе. Когда Вы устанавливаете отбор по полю "Ссылка", то СКД, оптимизируя запрос, добавляет это условие и в первый, и в третий запрос пакета. Только вот для третьего это неуместно: ссылка здесь не является партнером, а является соглашением.

Два решения:

1. Приведите все единому виду. Например, во всех запросах пакета пусть у Вас поле партнера так и называется - "Партнер", т.е. в первом запросе напишите:
ВЫБРАТЬ
   Партнеры.Ссылка КАК Партнер,
   ...

2. "Объясните" СКД для третьего запроса пакета кто есть кто:
ВЫБРАТЬ
    СоглашенияСКлиентами.Ссылка,
    СоглашенияСКлиентами.ВидЦен,
    СоглашенияСКлиентами.Партнер
ПОМЕСТИТЬ ВТАктуальныеСоглашения
ИЗ
    Справочник.СоглашенияСКлиентами КАК СоглашенияСКлиентами
ГДЕ
    СоглашенияСКлиентами.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
{ГДЕ
    СоглашенияСКлиентами.Ссылка.* КАК СсылкаНаСоглашение,
    СоглашенияСКлиентами.Партнер.* КАК Ссылка}
Показать

P.S. Поправил немного второе решение.
SantiouS; +1 Ответить
8. SantiouS 18.10.19 14:35 Сейчас в теме
(7) Спасибо большое. Первым способом быстро все поменял. Сейчас сижу вчитываюсь и понимаю что Вы мастер! Спасибо. Я сейчас вникну и если что то не разберусь, то спрошу :)
Большое спасибо!
2. SantiouS 18.10.19 14:24 Сейчас в теме
То есть когда все вывожу то формат будет:
Торговая точка Адрес ТипЦены и все заполнено, а когда делаю отбор, то получаю уже строку одну, но с пустым типом цены. Что это такое как лечить?
3. Bajo 80 18.10.19 14:25 Сейчас в теме
По какому полю именно делаешь отбор? по полю ссылка или партнер?
4. SantiouS 18.10.19 14:27 Сейчас в теме
5. Bajo 80 18.10.19 14:28 Сейчас в теме
Переименуй в итоговом пакете запроса поле ссылка в "ТорговаяТочка", сделай отбор и сформируй и сообщи о результате
9. SantiouS 18.10.19 14:38 Сейчас в теме
(5) Я последовал совету dhurricane и переименовал ссылку на партнера в партнера - помогло.
10. Bajo 80 18.10.19 14:40 Сейчас в теме
(9)Смысл один и тот же. Так же будь внимателен с параметрами виртуальных таблиц. Там тоже есть "паранормальный участок")
11. SantiouS 18.10.19 14:43 Сейчас в теме
(10)
(7)
{ГДЕ
СоглашенияСКлиентами.Ссылка.* КАК СсылкаНаСоглашение,
СоглашенияСКлиентами.Партнер.* КАК Ссылка}


Как то так должно получиться вторым способом?
ВЫБРАТЬ
	Партнеры.Ссылка КАК Ссылка,
	Партнеры.БизнесРегион,
	Партнеры.Наименование,
	ВЫБОР
		КОГДА Партнеры.Родитель = ЗНАЧЕНИЕ(Справочник.Партнеры.ПустаяСсылка)
			ТОГДА Партнеры.Ссылка
		ИНАЧЕ Партнеры.Родитель
	КОНЕЦ КАК Родитель,
	Партнеры.Код
ПОМЕСТИТЬ ВТПартнеры
ИЗ
	Справочник.Партнеры КАК Партнеры
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТПартнеры.БизнесРегион,
	ВТПартнеры.Наименование,
	ВТПартнеры.Код,
	ПартнерыКонтактнаяИнформация.Тип,
	ПартнерыКонтактнаяИнформация.Вид,
	ПартнерыКонтактнаяИнформация.Представление,
	ПартнерыКонтактнаяИнформация.ЗначенияПолей,
	ПартнерыКонтактнаяИнформация.Страна,
	ПартнерыКонтактнаяИнформация.Регион,
	ПартнерыКонтактнаяИнформация.Город,
	ПартнерыКонтактнаяИнформация.АдресЭП,
	ВТПартнеры.Родитель
ПОМЕСТИТЬ ВтПартнерыСКонтактами
ИЗ
	ВТПартнеры КАК ВТПартнеры,
	Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация
ГДЕ
	ПартнерыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СоглашенияСКлиентами.Ссылка КАК Ссылка,
	СоглашенияСКлиентами.ВидЦен,
	СоглашенияСКлиентами.Партнер КАК Партнер
ПОМЕСТИТЬ ВТАктуальныеСоглашения
{ВЫБРАТЬ
	Ссылка.* КАК СсылкаНаСоглашение,
	Партнер.* КАК Ссылка}
ИЗ
	Справочник.СоглашенияСКлиентами КАК СоглашенияСКлиентами
ГДЕ
	СоглашенияСКлиентами.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыСоглашенийСКлиентами.Действует)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВтПартнерыСКонтактами.БизнесРегион,
	ВтПартнерыСКонтактами.Наименование,
	ВтПартнерыСКонтактами.Код,
	ВтПартнерыСКонтактами.Тип,
	ВтПартнерыСКонтактами.Вид,
	ВтПартнерыСКонтактами.Представление,
	ВтПартнерыСКонтактами.ЗначенияПолей,
	ВтПартнерыСКонтактами.Страна,
	ВтПартнерыСКонтактами.Регион,
	ВтПартнерыСКонтактами.Город,
	ВтПартнерыСКонтактами.АдресЭП,
	ВТАктуальныеСоглашения.ВидЦен,
	ВТАктуальныеСоглашения.Ссылка КАК СсылкаНаСоглашение,
	ВтПартнерыСКонтактами.Родитель
ИЗ
	ВтПартнерыСКонтактами КАК ВтПартнерыСКонтактами,
	ВТАктуальныеСоглашения КАК ВТАктуальныеСоглашения
Показать
13. dhurricane 18.10.19 14:47 Сейчас в теме
(11) Неа. Для отборов нужна секция {ГДЕ}, а не {ВЫБРАТЬ}. Ну и "Ссылку" со связями таблиц Вы растеряли.
15. SantiouS 18.10.19 14:54 Сейчас в теме
(13) Где находится "ГДЕ" в конструкторе запроса скд?
Заметил что потерял - нажал сформировать и второй раз за день ноутбук намертво завис.
16. dhurricane 18.10.19 14:58 Сейчас в теме
(15) Все там же, на закладке "Компоновка данных", "Условия".
SantiouS; +1 Ответить
17. SantiouS 18.10.19 15:07 Сейчас в теме
(16) Да, спасибо. Второй способ тоже работает. Получается я пишу запрос свой, а потом ёще заново просматриваю его и если совпадают имена, то нужно скад зайти и в компоновке данных задать иные имена. Так?
Я читал уже об этом несколько статей, но никак не мог осознать как оно и зачем, но когда приходит живой пример - все стало понятно.
А владка "Поля" (где я написал сначала и было слово "ВЫБРАТЬ") для чего? Простыми словами можно от Вас узнать? Как я понимаю, то она обрежет количество выбираемых полей, но не могу осознать смысл.
18. dhurricane 18.10.19 15:12 Сейчас в теме
(17) Ну в моем представлении она действительно для ограничения выбираемых полей. Я ее использую совместно с флажком "Автозаполнение" наборов данных.
Получается я пишу запрос свой, а потом ёще заново просматриваю его
Лучше давайте сразу понятные псевдонимы полей. :)
SantiouS; +1 Ответить
19. SantiouS 18.10.19 15:43 Сейчас в теме
(18) Спасибо за советы! Вы мастер :)
14. Bajo 80 18.10.19 14:47 Сейчас в теме
(11) Нет. Когда дойдешь до виртуальных таблиц регистров есть параметры которые будут появляться автоматически в СКД. Если названия твоих параметров будут одинаковыми с виртуальными там тоже получаются непонятные результаты. Сказал на будущее.
12. SantiouS 18.10.19 14:45 Сейчас в теме
(10) Первый раз за 9 месяцев столкнулся с подобным. Немного понервничать пришлось. Сейчас разбираюсь с переименованием полей в СКД, как я понял это происходит на вкладке "компоновка данных" там где "Поля" и "Условия"
6. Bajo 80 18.10.19 14:29 Сейчас в теме
отбор по полю торговая точка
Оставьте свое сообщение

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