Имя: Пароль:
1C
1С v8
Выборка НЕ ЗАПОЛНЕННОЙ контактной информации
0 pin4er
 
06.11.15
14:26
Добрый день, форумчане.

возник вопрос, и пока не понял как с ним разобраться:  

по выбранным контрагентам, выбрать тех у кого не заполнены адрес и Емейл:
п.с. собственно то что заполняется у контрагента на вкладке "Контакты" адреса и телефоны.

ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Тип,
    КонтактнаяИнформация.Вид,
    КонтактнаяИнформация.Представление,
    КонтактнаяИнформация.Комментарий
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Тип В ИЕРАРХИИ(&Тип)
    И КонтактнаяИнформация.Вид В ИЕРАРХИИ(&Вид)
    И КонтактнаяИнформация.Объект В ИЕРАРХИИ(&КонтрагентыСсылка)

Таким запросом мы можем выбрать тех у кого заполнено
тип - Адрес; E-Mail
Вид - Юридический адрес контраг...; Фактический адрес контраг...; Адрес электронной почты к...
КонтрагентыСсылка - группа или элементы.


а этим запросом мы выбираем всех кто в принципе имееться
ВЫБРАТЬ
    Контрагенты.Ссылка
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.Ссылка В ИЕРАРХИИ(&КонтрагентыСсылка)
    
КонтрагентыСсылка - группа или элементы.



т.е. допустим первым запросом нам показывается что у 4 все заполнено, у 2 допустим на половину (у кого-то адрес у кого-то мыло). Вторым запрос выбирается обще количество допустим 10.
Значит результат должен состоять из 6 контрагентов с указанием конкретных не заполненных данных.


вроде бы ни чего сложного (напоминает инверсию НЕ), но как реализовать незнаю...
1 Ненавижу 1С
 
гуру
06.11.15
14:27
через левое соединение
отдельно по адресу , отдельно по e-mail
2 Ёпрст
 
06.11.15
14:27
выбрать клиентоса левое соединение контактная инфа где контактная инфа есть null ...наслаждайся
3 Ненавижу 1С
 
гуру
06.11.15
14:29
нашел даже, лет 5 назад делал:


ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПродажиОбороты.Контрагент,
    ПродажиОбороты.Контрагент.ОсновнойМенеджерПокупателя КАК Менеджер
ПОМЕСТИТЬ Покупатели
ИЗ
    РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Покупатели.Контрагент,
    Покупатели.Менеджер КАК Менеджер,
    МИНИМУМ(ВЫБОР
            КОГДА КонтактнаяИнформация.Вид = &ЮрАдрес
                ТОГДА "ЕСТЬ"
            ИНАЧЕ "НЕТ"
        КОНЕЦ) КАК ЮрАдрес,
    МИНИМУМ(ВЫБОР
            КОГДА КонтактнаяИнформация.Вид = &ФизАдрес
                ТОГДА "ЕСТЬ"
            ИНАЧЕ "НЕТ"
        КОНЕЦ) КАК ФизАдрес,
    МИНИМУМ(ВЫБОР
            КОГДА КонтактнаяИнформация.Вид = &Телефон
                ТОГДА "ЕСТЬ"
            ИНАЧЕ "НЕТ"
        КОНЕЦ) КАК Телефон,
    МИНИМУМ(ВЫБОР
            КОГДА КонтактнаяИнформация.Вид = &ЭлПочта
                ТОГДА "ЕСТЬ"
            ИНАЧЕ "НЕТ"
        КОНЕЦ) КАК ЭлПочта
ИЗ
    Покупатели КАК Покупатели
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО Покупатели.Контрагент = КонтактнаяИнформация.Объект

СГРУППИРОВАТЬ ПО
    Покупатели.Контрагент,
    Покупатели.Менеджер

ИМЕЮЩИЕ
    СУММА(ВЫБОР
            КОГДА КонтактнаяИнформация.Вид = &ЮрАдрес
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ) + СУММА(ВЫБОР
            КОГДА КонтактнаяИнформация.Вид = &ФизАдрес
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ) + СУММА(ВЫБОР
            КОГДА КонтактнаяИнформация.Вид = &Телефон
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ) + СУММА(ВЫБОР
            КОГДА КонтактнаяИнформация.Вид = &ЭлПочта
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ) <> 4
ИТОГИ
    0 КАК ЮрАдрес,
    0 КАК ФизАдрес,
    0 КАК Телефон,
    0 КАК ЭлПочта
ПО
    Менеджер
4 pin4er
 
06.11.15
14:34
(1) я так понимаю в (3) это предлогаеться

(2) пробовал/экспериметировал - у меня либо вообще все пусто, либо только те что заполненные выдает



(3) на отладке глянул, вроде бы да, но вдруг если что-то захочется другое посмотреть? опять пилить запрос? добавлять еже параметров и куски кода?
5 Ёпрст
 
06.11.15
14:34
(3) красиво через имеющиеся с сумой всех показателей.
6 Ёпрст
 
06.11.15
14:35
надо запомнить
7 mxs089
 
06.11.15
14:38
(3) я помню в садике такие задачки решал
8 pin4er
 
06.11.15
15:02
(7) так давайте на ваши куличики посмотрим)
9 pin4er
 
09.11.15
11:17
Боброго дня, ап

как вариант, пока за основу взял (3) спасибо за пример.


кто нибудь делал еще что-то подобное но универсально?
10 pin4er
 
10.11.15
16:26
Ребятушки доброго вечера


еще вариант намутил такой: вывожу и пустые и заполненые


ВЫБРАТЬ
    Контрагенты.Ссылка КАК Контрагент,
    КонтактнаяИнформация.Представление
ИЗ
    Справочник.Контрагенты КАК Контрагенты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО (КонтактнаяИнформация.Объект = Контрагенты.Ссылка)
ГДЕ
    (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
            ИЛИ КонтактнаяИнформация.Тип ЕСТЬ NULL )
    И Контрагенты.Ссылка В ИЕРАРХИИ(&Контрагенты)
    И НЕ Контрагенты.ПометкаУдаления



теперь возник вопрос:
как в место вот этого "Перечисление.ТипыКонтактнойИнформации.Телефон" запилить универсальную подачу Типов и их вывод соответсвенно???
11 pin4er
 
10.11.15
16:29
(10) немного ошибся, вместо ТИПов ВИДы, соответственно можно как подать 1 так и все возможные