8.х ЗУП Регистр КонтактнойИнформации и запрос.

Тема в разделе ""1С:Зарплата и управление персоналом ЗУП"", создана пользователем LexaDF, 22 ноя 2012.

  1. TopicStarter Overlay
    LexaDF
    Offline

    LexaDF Опытный в 1С

    Регистрация:
    28 ноя 2011
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Доброго времени суток.
    Делаю выгрузку из ЗуП в excel.
    Столкнулся с проблема с которой не хватает опыта справится :(
    У ФизЛиц есть есть контактная информация, проблема в том, что когда делаю связь в запросе между Регистром конт.инфы и Справочником Физ.лица, он при выгрузке создает 3 либо 4 (в зависимости от кол-ва адресов в конт.инфе) строки. А нужно что бы он не создавал а использовал уже тут что есть,и забивал данные по нужным колонкам(это он делает но сразу в 3 строках :(, ломаю голову над последним камнем преткновения , не знаю как заставить что бы он не создавал лишние строки, а записывался только в те колонки которые я ему указал.
    Спасибо.
  2. svet
    Offline

    svet Профессионал в 1С Команда форума

    Регистрация:
    9 ноя 2007
    Сообщения:
    1.971
    Симпатии:
    59
    Баллы:
    54
    Сделать примерно так в запросе ?

    Код:
    ВЫБРАТЬ
    МАКСИМУМ(ВЫБОР
    КОГДА КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ФактАдресФизЛица)
    ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(500))
    КОНЕЦ) КАК ФактАдрес,
    ФизическиеЛица.Наименование КАК ФизЛицо,
    МАКСИМУМ(ВЫБОР
    КОГДА КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица)
    ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(500))
    КОНЕЦ) КАК ЮрАдрес,
    МАКСИМУМ(ВЫБОР
    КОГДА КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ИнформАдресФизЛица)
    ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(500))
    КОНЕЦ) КАК ИнформАдрес
    ИЗ
    Справочник.ФизическиеЛица КАК ФизическиеЛица
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    ПО (КонтактнаяИнформация.Объект = ФизическиеЛица.Ссылка)
    ГДЕ
    КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
    СГРУППИРОВАТЬ ПО
    ФизическиеЛица.Наименование
  3. TopicStarter Overlay
    LexaDF
    Offline

    LexaDF Опытный в 1С

    Регистрация:
    28 ноя 2011
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Спасибо за идею буду думать как это реализовать в своем запросе .

    Там если посмотреть регистр есть поля от 1 до 10, они содержат представление, точнее представление собирается из этих полей, а поля...могли бы нормально назвать а теперь сиди гадай какое означает квартиру, телефон или индекс.
  4. svet
    Offline

    svet Профессионал в 1С Команда форума

    Регистрация:
    9 ноя 2007
    Сообщения:
    1.971
    Симпатии:
    59
    Баллы:
    54
    Если надо собирать из полей, то в том же запросе можно сделать конструкции типа
    КИ.Поле1 + " " + КИ.Поле2 + и т.д. Это даже проще.
    А если использовать КИ.Представление, то его обязательно надо брать через Выразить(), т.к. это поле неограниченной длины, а они в запросе не группируются.

    А поля сложились исторически, еще в прошлом веке, когда стали требовать сдавать данные в налоговую. :) Там все подряд: индекс, регион, раойн, город ... - в логическом порядке нормального адреса.
  5. TopicStarter Overlay
    LexaDF
    Offline

    LexaDF Опытный в 1С

    Регистрация:
    28 ноя 2011
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Как выглядит сейчас запрос.

    Код:
        "ВЫБРАТЬ
    | СотрудникиОрганизаций.Код КАК Код,
    | СотрудникиОрганизаций.Ссылка,
    | СотрудникиОрганизаций.Организация КАК Организация,
    | СотрудникиОрганизаций.Физлицо КАК ФизлицоДляПорядка,
    | ФизическиеЛица.ИНН КАК ИНН,
    | ФизическиеЛица.Наименование КАК ФИзЛицо,
    | СотрудникиОрганизаций.Наименование КАК НаименованиеСотрОрг,
    | ФизическиеЛица.ДатаРождения КАК ДР,
    | ФизическиеЛица.Пол КАК Пол,
    | ФизическиеЛица.МестоРождения КАК МестоРожд,
    | ФИОФизЛицСрезПоследних.Фамилия КАК Фамилия,
    | ФИОФизЛицСрезПоследних.Имя КАК Имя,
    | ФИОФизЛицСрезПоследних.Отчество КАК Отчество,
    | ФИОФизЛицСрезПоследних.ФизЛицо КАК ФизЛицоИзРегистра,
    | СотрудникиОрганизаций.ДатаУвольнения КАК Тест,
    | ГражданствоФизЛицСрезПоследних.Страна.Наименование КАК Страна,
    | ГражданствоФизЛицСрезПоследних.Страна.НаименованиеПолное КАК СТР,
    | ПаспортныеДанныеФизЛицСрезПоследних.ДокументВид.Наименование КАК ДокПасспорт,
    | ПаспортныеДанныеФизЛицСрезПоследних.ДокументСерия КАК ПасСерия,
    | ПаспортныеДанныеФизЛицСрезПоследних.ДокументНомер КАК ПасНомер,
    | ПаспортныеДанныеФизЛицСрезПоследних.ДокументДатаВыдачи КАК ПасДата,
    | ПаспортныеДанныеФизЛицСрезПоследних.ДокументКемВыдан КАК ПасКемДан,
    | ПаспортныеДанныеФизЛицСрезПоследних.ДокументКодПодразделения КАК КодПодраздел,
    | ФизическиеЛица.СтраховойНомерПФР КАК SocNumber,
    //| КонтактнаяИнформация.Поле1 КАК Х,
    //| КонтактнаяИнформация.Поле2 КАК Р,
    //| КонтактнаяИнформация.Поле3 КАК С,
    //| КонтактнаяИнформация.Вид.Код КАК КодВида,
    //| КонтактнаяИнформация.Поле4 КАК й,
    //| КонтактнаяИнформация.Поле5 КАК ц,
    //| КонтактнаяИнформация.Поле6 КАК м,
    //| КонтактнаяИнформация.Поле7 КАК к,
    //| КонтактнаяИнформация.Поле8 КАК е,
    //| КонтактнаяИнформация.Поле9 КАК н,
    //| КонтактнаяИнформация.Поле10 КАК г,
    //| КонтактнаяИнформация.Вид.Наименование КАК имечко
    |ИЗ
    | Справочник.СотрудникиОрганизаций КАК СотрудникиОрганизаций
    |  ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
    |   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизЛиц.СрезПоследних КАК ФИОФизЛицСрезПоследних
    |   ПО (ФИОФизЛицСрезПоследних.ФизЛицо.Ссылка = ФизическиеЛица.Ссылка)
    |   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГражданствоФизЛиц.СрезПоследних КАК ГражданствоФизЛицСрезПоследних
    |   ПО (ГражданствоФизЛицСрезПоследних.ФизЛицо.Ссылка = ФизическиеЛица.Ссылка)
    |   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних
    |   ПО (ПаспортныеДанныеФизЛицСрезПоследних.ФизЛицо.Ссылка = ФизическиеЛица.Ссылка)
    |   ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |   ПО (КонтактнаяИнформация.Объект = ФизическиеЛица.Ссылка)
    |  ПО СотрудникиОрганизаций.Физлицо = ФизическиеЛица.Ссылка,
    |ГДЕ
    | ФизическиеЛица.ПометкаУдаления = ЛОЖЬ
    | И СотрудникиОрганизаций.ПометкаУдаления = ЛОЖЬ
    | И СотрудникиОрганизаций.Актуальность = ИСТИНА
    | И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    |
    |УПОРЯДОЧИТЬ ПО
    | Код УБЫВ";
    
    Там где //| КонтактнаяИнформация.Поле1 КАК Х, это смотрел что какое поле выгружает.
    Дальше ког идет стандартное заполнение макета,

    и поля я вставлял так :

    Код:
    ОбластьПараметров.Параметры.Addr_Country   =  Стр.Х;
    ОбластьПараметров.Параметры.Addr_Zip	   =  Стр.Р;
    ОбластьПараметров.Параметры.Addr_Region    =  Стр.С;
    Она заполняет нормально.

    Но вот получается что Есть у нас Иванов С.Г. без
    Код:
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |   ПО (КонтактнаяИнформация.Объект = ФизическиеЛица.Ссылка)
    
    Выдается 1 строка, с этой связью он делает строк как кол-во адресов.
    Как то так.
    :)
    Вот не знаю как вашу подсказку реализовать в запросе...
  6. svet
    Offline

    svet Профессионал в 1С Команда форума

    Регистрация:
    9 ноя 2007
    Сообщения:
    1.971
    Симпатии:
    59
    Баллы:
    54
    А, так т.е. адрес-то по сотруднику нужен один, а не все три в одной строке? Тогда надо просто задать еще условия выборки из регистра контактной информации:

    Код:
    ГДЕ
    ФизическиеЛица.ПометкаУдаления = ЛОЖЬ
    И СотрудникиОрганизаций.ПометкаУдаления = ЛОЖЬ
    И СотрудникиОрганизаций.Актуальность = ИСТИНА
    И СотрудникиОрганизаций.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
    И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица)
    
    Выберутся только адреса по прописке сотрудника и задвоения строк не будет.

    И еще я бы не стала делать

    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица

    в сотруднике есть реквизит ФизЛицо, все данные можно брать как Сотрудник.ФизЛицо.ИНН и т.п.
  7. TopicStarter Overlay
    LexaDF
    Offline

    LexaDF Опытный в 1С

    Регистрация:
    28 ноя 2011
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Ну я этот запрос тюнингую уже 2 день, достаточно объемно получилось сначала пробовал в ексель, потом решил через макет сохранять в эксель. А это в итоге прибавилось 70 колонок рутины, как в коде так и макете обозначить. Оптимизировать уже не хочется, там еще косяки в начале есть)) де то находил. Попробую, спасибо вам огромное!
  8. TopicStarter Overlay
    LexaDF
    Offline

    LexaDF Опытный в 1С

    Регистрация:
    28 ноя 2011
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Вооооо получилось :) оказалось все достаточно просто.

    И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
    И КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресФизЛица
    Смысл что то не могу понять, походу уже пришёл мне конец на сегодня...

    Спасибо еще раз :)
  9. svet
    Offline

    svet Профессионал в 1С Команда форума

    Регистрация:
    9 ноя 2007
    Сообщения:
    1.971
    Симпатии:
    59
    Баллы:
    54
    Смысл в том, что в регистре сведений КонтактнаяИнформация может быть несколько строк по одному Объекту = Сотруднику, например :

    Объект - тип - вид

    Иванов - телефон - телефон домашний
    Иванов - адрес - адрес по прописке
    Иванов - адрес - адрес для информирования
    Иванов - адрес - адрес фактический

    А это условие отбирает только те строки в которых тип информации = адрес и вид информации = адрес по прописке, т.е. из приведенных выше 4-х строк отбирается однозначно только одна.
  10. TopicStarter Overlay
    LexaDF
    Offline

    LexaDF Опытный в 1С

    Регистрация:
    28 ноя 2011
    Сообщения:
    132
    Симпатии:
    0
    Баллы:
    26
    Ясненько , спасибо большое за разъяснение и уделенное время :)
  11. svet
    Offline

    svet Профессионал в 1С Команда форума

    Регистрация:
    9 ноя 2007
    Сообщения:
    1.971
    Симпатии:
    59
    Баллы:
    54
    Да не за что. :))

Поделиться этой страницей