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

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 Сейчас в теме
отбор по полю торговая точка
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)