|
Вытащить контактнуную информацию из справочника | ☑ | ||
---|---|---|---|---|
0
Lite777888
naïve
24.10.24
✎
16:57
|
Здравствуйте, УТ 11,
нужно запросом вытащить контактную информацию из спр. «Контрагенты» в виде таблицы: Контрагент-ИНН-юрадрес/элпочта и т.д., проблема: ТЧ КонтактнаяИнформация имеет поле «ДействуетС» — история для юр. адреса, нужно взять с наибольшей датой, запрос такой: ВЫБРАТЬ РАЗРЕШЕННЫЕ Контрагенты.Ссылка КАК Ссылка, Контрагенты.Партнер КАК Партнер, Контрагенты.ИНН КАК ИНН ПОМЕСТИТЬ ВТ1 ИЗ Справочник.Контрагенты КАК Контрагенты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка, КонтрагентыКонтактнаяИнформация.Представление КАК ЮРАДРЕС , КонтрагентыКонтактнаяИнформация.ДействуетС ПОМЕСТИТЬ ВТ2 ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация ГДЕ КонтрагентыКонтактнаяИнформация.Вид = &ЮРАДРЕС2 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка, КонтрагентыКонтактнаяИнформация.Представление КАК ДОСТАВКИАДРЕС ПОМЕСТИТЬ ВТ3 ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация ГДЕ КонтрагентыКонтактнаяИнформация.Вид = &ДОСТАДРЕС ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗРЕШЕННЫЕ ПартнерыКонтактнаяИнформация.Ссылка КАК Ссылка, ПартнерыКонтактнаяИнформация.Представление КАК ФАКТАДРЕС, ПартнерыКонтактнаяИнформация.Ссылка.ОсновнойМенеджер КАК ОсновнойМенеджер ПОМЕСТИТЬ ВТ4 ИЗ Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация ГДЕ ПартнерыКонтактнаяИнформация.Вид = &ФАКТАДРЕС ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка, КонтрагентыКонтактнаяИнформация.Представление КАК ПОЧТАОБМЕНЭЛДОКАМИ ПОМЕСТИТЬ ВТ5 ИЗ Справочник.Партнеры.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация ГДЕ КонтрагентыКонтактнаяИнформация.Вид = &ОБМЕНЭЛЕКТРДОК ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка, КонтрагентыКонтактнаяИнформация.Представление КАК ЭЛПОЧТАСПРАВОЧНО ПОМЕСТИТЬ ВТ6 ИЗ Справочник.Партнеры.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация ГДЕ КонтрагентыКонтактнаяИнформация.Вид = &АДРЕСЭЛПОЧТЫСПРАВОЧН ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ1.Ссылка КАК Ссылка, ВТ1.ИНН КАК ИНН, ВТ2.ЮРАДРЕС КАК ЮРАДРЕС, МАКСИМУМ (ВТ2.ДЕЙСТВУЕТС) КАК ДЕЙСТВУЕТС , ВТ3.ДОСТАВКИАДРЕС КАК ДОСТАВКИАДРЕС, ВТ4.ФАКТАДРЕС КАК ФАКТАДРЕС, ВТ4.ОсновнойМенеджер КАК ОсновнойМенеджер, ВТ5.ПОЧТАОБМЕНЭЛДОКАМИ КАК ПОЧТАОБМЕНЭЛДОКАМИ, ВТ6.ЭЛПОЧТАСПРАВОЧНО КАК ЭЛПОЧТАСПРАВОЧНО ИЗ ВТ1 КАК ВТ1 ЛЕВОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2 ПО (ВТ2.Ссылка = ВТ1.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ ВТ3 КАК ВТ3 ПО (ВТ3.Ссылка = ВТ1.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ ВТ4 КАК ВТ4 ПО (ВТ4.Ссылка = ВТ1.Партнер) ЛЕВОЕ СОЕДИНЕНИЕ ВТ5 КАК ВТ5 ПО (ВТ5.Ссылка = ВТ1.Партнер) ЛЕВОЕ СОЕДИНЕНИЕ ВТ6 КАК ВТ6 ПО (ВТ6.Ссылка = ВТ1.Партнер) СГРУППИРОВАТЬ ПО ВТ1.Ссылка , ВТ1.ИНН , ВТ2.ЮРАДРЕС , ВТ3.ДОСТАВКИАДРЕС , ВТ4.ФАКТАДРЕС , ВТ4.ОсновнойМенеджер , ВТ5.ПОЧТАОБМЕНЭЛДОКАМИ , ВТ6.ЭЛПОЧТАСПРАВОЧНО УПОРЯДОЧИТЬ ПО ВТ1.Ссылка.Наименование |
|||
1
Lite777888
naïve
24.10.24
✎
16:55
|
Но выдает результат с дубляжами строк по контрагентам
|
|||
2
Волшебник
24.10.24
✎
16:59
|
ВЫБРАТЬ ПЕРВЫЕ 1 КИ.Ссылка КАК Ссылка, КИ.Представление КАК ЮРАДРЕС , КИ.ДействуетС ПОМЕСТИТЬ ВТ2 ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ ГДЕ КИ.Вид = &ЮРАДРЕС2 УПОРЯДОЧИТЬ ПО КИ.Период УБЫВ |
|||
3
Мультук
гуру
24.10.24
✎
17:03
|
(0)
Первая же мысль. В БСП должна быть готовая функция // Возвращает таблицу, содержащую контактную информацию нескольких объектов. // // Параметры: // Источник - Массив - владельцы контактной информации. // Отбор - см. ОтборКонтактнойИнформации. // // Возвращаемое значение: // ТаблицаЗначений: // * Объект - ЛюбаяСсылка - владелец контактной информации. // * Вид - СправочникСсылка.ВидыКонтактнойИнформации - вид контактной информации. // * Тип - ПеречислениеСсылка.ТипыКонтактнойИнформации - тип контактной информации. // * Значение - Строка - контактная информация во внутреннем формате JSON. // * Представление - Строка - представление контактной информации. // * Дата - Дата - дата, с которой действует запись контактной информации. // * ИдентификаторСтрокиТабличнойЧасти - Число - идентификатор строки этой табличной части // * ЗначенияПолей - Строка - устаревший XML, соответствующий XDTO пакетам КонтактнаяИнформация или Адрес. Для // обратной совместимости. // УправлениеКонтактнойИнформацией.КонтактнаяИнформация() |
|||
4
AAA
24.10.24
✎
17:03
|
А зачем сначала разрезали шапку и табличную часть, да еще и по каждому виду контактной информации, а затем обратно все собирали из временных таблиц? Или сейчас мода на временные таблицы?
|
|||
5
Timon1405
24.10.24
✎
17:04
|
УправлениеКонтактнойИнформацией.КонтактнаяИнформацияОбъектов(СсылкиИлиОбъекты, Знач ТипыКонтактнойИнформации = Неопределено, Знач ВидыКонтактнойИнформации = Неопределено, Дата = Неопределено) Экспорт
|
|||
6
Мультук
гуру
24.10.24
✎
17:06
|
(5)
+1 |
|||
7
Lite777888
naïve
24.10.24
✎
17:10
|
(2) Как бы выберется , но один элемент в запросе будет
|
|||
8
Волшебник
24.10.24
✎
17:21
|
(7) да, чего-то неправильно получится... Тогда так:
ВЫБРАТЬ КИ.Ссылка КАК Ссылка, МАКСИМУМ(КИ.ДействуетС) КАК ДействуетС ПОМЕСТИТЬ ВТ_ЮрАдреса ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ ГДЕ КИ.Вид = &ЮРАДРЕС2 СГРУППИРОВАТЬ ПО КИ.Ссылка ; ВЫБРАТЬ КИ.Ссылка КАК Ссылка, КИ.Представление КАК ЮРАДРЕС , КИ.ДействуетС ПОМЕСТИТЬ ВТ2 ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КИ ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЮрАдреса ПО ВТ_ЮрАдреса.Ссылка = КИ.Ссылка И ВТ_ЮрАдреса.ДействуетС = КИ.ДействуетС |
|||
9
Lite777888
naïve
24.10.24
✎
17:18
|
(4) А как вы предлагаете ? КОГДА ..ТОГДА ...,одинмм запросом,
как выделять, поле Представление одно , а мне нужно его на колонки разбить нужные |
|||
10
Волшебник
24.10.24
✎
17:25
|
Вот ещё вариантик от ChatGPT:
ВЫБРАТЬ Контрагенты.Ссылка КАК Контрагент, КонтактнаяИнформация.Представление КАК ЮридическийАдрес ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформация ПО Контрагенты.Ссылка = КонтактнаяИнформация.Ссылка ГДЕ КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Перечисление.ВидКонтактнойИнформации.ЮридическийАдрес) И (КонтактнаяИнформация.ДействуетС = (ВЫБРАТЬ МАКСИМУМ(КонтактнаяИнформация2.ДействуетС) ИЗ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтактнаяИнформация2 ГДЕ КонтактнаяИнформация2.Ссылка = Контрагенты.Ссылка И КонтактнаяИнформация2.Вид = КонтактнаяИнформация.Вид)) |
|||
11
AAA
24.10.24
✎
17:31
|
(8)Надо же максимум выбирать видимо не просто по ссылке, а еще и по каждому виду КИ
|
|||
12
Timon1405
24.10.24
✎
17:31
|
писать свои запросы в БСП - зло. в любой момент может поменяться хранение информации и самописный запрос перестанет работать. нужно использовать механизм представлений(там конечно тоже может сломаться логика вендора, но шанс этого намного ниже)
|
|||
13
Волшебник
24.10.24
✎
17:34
|
(11) Не, я уже устал
|
|||
14
AAA
24.10.24
✎
17:37
|
(12) Это религиозный спор БСП или не БСП. По правильному, безусловно БСП. Но на практике так не всегда, столько уже было подстав. БСП - очень живое образование)
|
|||
15
AAA
24.10.24
✎
17:44
|
Кстати, раз уж по КИ. Недавно обнаружил. В БП3 предопределенные Виды контактной информации контрагентов имеют идентификаторы типа "...Контрагента", вот EMAIL почему то "Контрагенты" )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |