Имя: Пароль:
1C
1С v8
Контактная информация адрес телефон в одном результате?
,
0 AugustBlack
 
21.11.12
12:41
привет, приведу пример простой запрос по данным КИ  в БП 2.0
сделал временную таблицу для получения адресов контрагентов, но чегото запутил на одном месте мне нужно результат запроса "представление" адреса вывести в одном поле т.е адрес+телефон возможно ли при данном составе регистра КИ?
ВЫБРАТЬ
   ВЫБОР
       КОГДА КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
           ТОГДА КонтактнаяИнформация.Представление
   КОНЕЦ КАК Телефон,
   ВЫБОР
       КОГДА КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
           ТОГДА КонтактнаяИнформация.Представление
   КОНЕЦ КАК Адрес,
   КонтактнаяИнформация.Объект
ПОМЕСТИТЬ АдресаКонтрагентов
ИЗ
   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
   КонтактнаяИнформация.Объект В
           (ВЫБРАТЬ
               Контрагенты_ТЗ.Контрагент
           ИЗ
               Контрагенты_ТЗ КАК Контрагенты_ТЗ)
;
1 Азат
 
21.11.12
12:42
возможно, делай
2 AugustBlack
 
21.11.12
12:43
(1) подскажи, чет не пойму как
3 YF
 
21.11.12
12:43
(0) Группируй по контрагенту
4 viktor_vv
 
21.11.12
12:49
Выбрать
ТЗКонтр.Контаргент,
ISNULL(КонтактнаяИнформацияТелефон.Представление,"") + "  "
ISNULL(КонтактнаяИнформацияАдрес.Представление,"") КАК ТелАдрес
ИЗ
Контрагенты_ТЗ КАК ТЗКонтр
Левое соединение РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияТелефон
  ПО КонтактнаяИнформацияТелефон.Объект = ТЗКонтр.Контрагент
     И КонтактнаяИнформацияТелефон.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
Левое соединение РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияАдрес
  ПО КонтактнаяИнформацияАдрес.Объект = ТЗКонтр.Контрагент
     И КонтактнаяИнформацияАдрес.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)


Неуверен насчет, но вроде должно прокатить

ISNULL(КонтактнаяИнформацияТелефон.Представление,"") + "  "
ISNULL(КонтактнаяИнформацияАдрес.Представление,"") КАК ТелАдрес
5 Китайский Муй
 
21.11.12
13:05
Можно так:

Сведения = Новый Структура("Телефоны, ЮридическийАдрес, ФактическийАдрес");

Сведения.Вставить("Телефоны",         ПолучитьТелефонИзКонтактнойИнформации(ЮрФизЛицо));
Сведения.Вставить("ЮридическийАдрес", ПолучитьАдресИзКонтактнойИнформации(ЮрФизЛицо,"Юридический"));
Сведения.Вставить("ФактическийАдрес", ПолучитьАдресИзКонтактнойИнформации(ЮрФизЛицо,"Фактический"));

Функция ПолучитьТелефонИзКонтактнойИнформации(Объект)

ВидТелефона = Новый СписокЗначений;
   ВидТелефона.Добавить(Справочники.ВидыКонтактнойИнформации["ТелефонОрганизации"].ПолучитьОбъект().Ссылка);
ВидТелефона.Добавить(Справочники.ВидыКонтактнойИнформации["ТелефонКонтрагента"].ПолучитьОбъект().Ссылка);
ВидТелефона.Добавить(Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Мобильный телефон").ПолучитьОбъект().Ссылка);

Запрос = Новый Запрос;
   
   Запрос.УстановитьПараметр("Объект", Объект);
   Запрос.УстановитьПараметр("Тип"   , Перечисления.ТипыКонтактнойИнформации.Телефон);

Запрос.УстановитьПараметр("Вид"   , ВидТелефона);
   
   Запрос.Текст = "
   |ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
   |    КонтактнаяИнформация.Представление
   |ИЗ
   |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
   |ГДЕ
   |    КонтактнаяИнформация.Объект = &Объект
   |    И
   |    КонтактнаяИнформация.Тип = &Тип
   |    И
   |    КонтактнаяИнформация.Вид В (&Вид)
   |";
   
   РезультатЗапроса = Запрос.Выполнить();
   
   Возврат РезультатЗапроса;
КонецФункции


Для адреса - аналогичная функция.
6 sanja26
 
21.11.12
13:07
http://infostart.ru/public/121841/

группировки на скриншоте все видны
7 eklmn
 
гуру
21.11.12
13:07
ФормированиеПечатныхФормСервер.ОписаниеОрганизации нету в БП?
8 AugustBlack
 
21.11.12
14:02
я хочу одним запросом все выдрать из базы...вроде сделал, теперь в 2-х словах у меня поля в промежуточной таблице не складываются в представление адрес+телефон..можно было бы написать так из 2х полей адрес и телефон одно сделать "ПредставлениеАдреса" пишу АдресаКонтрагентов.Адрес + ТелефоныКонтрагентов.Телефон говорит неверные параметры WTF?
вот конечный запрос из пакета:
ВЫБРАТЬ
   ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
   ХозрасчетныйОстатки.Счет КАК Счет,
   ВЫБОР
       КОГДА ХозрасчетныйОстатки.Субконто1 ССЫЛКА Справочник.ФизическиеЛица
           ТОГДА ХозрасчетныйОстатки.Субконто1.Наименование
       КОГДА ХозрасчетныйОстатки.Субконто1 ССЫЛКА Справочник.Контрагенты
           ТОГДА ХозрасчетныйОстатки.Субконто1.НаименованиеПолное
       ИНАЧЕ ХозрасчетныйОстатки.Счет.Наименование
   КОНЕЦ КАК Наименование,
   ХозрасчетныйОстатки.Субконто2 КАК Договор,
   ХозрасчетныйОстатки.Субконто3 КАК Документ,
   ХозрасчетныйОстатки.СуммаОстатокДт КАК Дебет,
   ХозрасчетныйОстатки.СуммаОстатокКт КАК Кредит,
   АдресаКонтрагентов.Адрес,
   ТелефоныКонтрагентов.Телефон
ИЗ
   РегистрБухгалтерии.Хозрасчетный.Остатки(
           &ДатаКон,
           Счет В ИЕРАРХИИ
               (ВЫБРАТЬ
                   СписокСчетов_ТЗ.СчетРасчетов
               ИЗ
                   СписокСчетов_ТЗ КАК СписокСчетов_ТЗ),
           ,
           Организация = &Организация
               И Субконто1 В
                   (ВЫБРАТЬ
                       Контрагенты_ТЗ.Контрагент
                   ИЗ
                       Контрагенты_ТЗ КАК Контрагенты_ТЗ)) КАК ХозрасчетныйОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ АдресаКонтрагентов КАК АдресаКонтрагентов
       ПО ХозрасчетныйОстатки.Субконто1 = АдресаКонтрагентов.Объект
       ЛЕВОЕ СОЕДИНЕНИЕ ТелефоныКонтрагентов КАК ТелефоныКонтрагентов
       ПО ХозрасчетныйОстатки.Субконто1 = ТелефоныКонтрагентов.Объект
9 AugustBlack
 
21.11.12
14:03
не беда конечно, но почему не складываются 2 строковых поля
вроде как если создать новое поле "первая" + " вторая" получим "первая вторая"
10 AugustBlack
 
21.11.12
14:04
(9)а строковые не хочет АдресаКонтрагентов.Адрес+ТелефоныКонтрагентов.Телефон не складывает
11 viktor_vv
 
21.11.12
16:46
(10) Попробуй
Выбрать
Выразить(Поле1 КАК Строка(100)) + Выразить(Поле2 КАК Строка(100))

А то там представление неограниченной длины.
12 AugustBlack
 
22.11.12
07:18
сам сделал через 2 временных таблицы, в итоговой таблице просто вывел 2 поля адрес+телефон соедению в выборке, ладна.
потом чувак подкинул еще интересный запрос=)) мб кому интересно будет, работает на 1-2мс быстрее чем мой.
ВЫБРАТЬ РАЗЛИЧНЫЕ
               Адрес.Объект КАК Объект,
               МАКСИМУМ(ВЫБОР
                                              КОГДА Адрес.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
                                                              ТОГДА ПОДСТРОКА(Адрес.Представление, 0, 255)
                              КОНЕЦ + ВЫБОР
                                              КОГДА Телефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
                                                              ТОГДА ПОДСТРОКА(Телефон.Представление, 0, 255)
                              КОНЕЦ) КАК Контакт
ИЗ
               РегистрСведений.КонтактнаяИнформация КАК Адрес
                              ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК Телефон
                              ПО Адрес.Объект = Телефон.Объект
ГДЕ
               НЕ ВЫБОР
                                                              КОГДА Адрес.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
                                                                             ТОГДА ПОДСТРОКА(Адрес.Представление, 0, 255)
                                              КОНЕЦ + ВЫБОР
                                                              КОГДА Телефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
                                                                             ТОГДА ПОДСТРОКА(Телефон.Представление, 0, 255)
                                              КОНЕЦ = ""

СГРУППИРОВАТЬ ПО
               Адрес.Объект

УПОРЯДОЧИТЬ ПО
               Объект
13 AugustBlack
 
22.11.12
07:18
(11) не срабатывало почему то пробовал