Имя: Пароль:
1C
1С v8
Приоритет выбор записи в запросе
, ,
0 reznik911
 
25.06.14
10:35
1с Предприятие УТП для казахстана 2.0.3.6. есть отчет подписка ИТС1 в СКД. в запросе СКД есть связь между ВТ и регистром сведений Контактная информация. мне нужно чтобы он выбрал телефон контрагента, а если его нет то телефон бухгалтера.если есть оба то все равно выбрать телефон контрагента.


вот сам запрос

ВЫБРАТЬ
    ИТС_ПодпискиСрезПоследних.Организация,
    ИТС_ПодпискиСрезПоследних.Контрагент КАК Контрагент,
    ИТС_ПодпискиСрезПоследних.ВидПодписки,
    ИТС_ПодпискиСрезПоследних.ДатаНачала,
    ИТС_ПодпискиСрезПоследних.ДатаЗавершения,
    ИТС_ПодпискиСрезПоследних.Контрагент.ОсновноеКонтактноеЛицо,
    ИТС_ПодпискиСрезПоследних.СостояниеЗаявки,
    ИТС_ПодпискиСрезПоследних.Заявка.РегНомер КАК РегистрационныйНомер,
    ИТС_ПодпискиСрезПоследних.Заявка,
    ВЫРАЗИТЬ(ИТС_ПодпискиСрезПоследних.Контрагент.ДополнительноеОписание КАК СТРОКА(300)) КАК ДополнительноеОписание
ПОМЕСТИТЬ ВТ_ИТСПодпискиСрезПоследних
ИЗ
    РегистрСведений.ИТС_Подписки.СрезПоследних(&Дата, Организация = &Организация) КАК ИТС_ПодпискиСрезПоследних

ИНДЕКСИРОВАТЬ ПО
    Контрагент
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ИТСПодпискиСрезПоследних.Организация,
    ВТ_ИТСПодпискиСрезПоследних.Контрагент,
    ВТ_ИТСПодпискиСрезПоследних.ВидПодписки,
    ВТ_ИТСПодпискиСрезПоследних.ДатаНачала,
    ВТ_ИТСПодпискиСрезПоследних.ДатаЗавершения,
    МАКСИМУМ(ВЫБОР
            КОГДА НЕ ЕСТЬNULL(КонтактнаяИнформация.Поле6, "") = ""
                ТОГДА "Ул. " + КонтактнаяИнформация.Поле6 + ВЫБОР
                        КОГДА НЕ ЕСТЬNULL(КонтактнаяИнформация.Поле7, "") = ""
                            ТОГДА ", Дом " + КонтактнаяИнформация.Поле7 + ВЫБОР
                                    КОГДА НЕ ЕСТЬNULL(КонтактнаяИнформация.Поле8, "") = ""
                                        ТОГДА ", " + КонтактнаяИнформация.Поле8 + ВЫБОР
                                                КОГДА НЕ ЕСТЬNULL(КонтактнаяИнформация.Поле9, "") = ""
                                                    ТОГДА ", " + КонтактнаяИнформация.Поле9
                                                ИНАЧЕ ""
                                            КОНЕЦ
                                    ИНАЧЕ ""
                                КОНЕЦ
                        ИНАЧЕ ""
                    КОНЕЦ
            ИНАЧЕ ""
        КОНЕЦ) КАК Адрес,
    ВТ_ИТСПодпискиСрезПоследних.Контрагент.ОсновноеКонтактноеЛицо,
    ВТ_ИТСПодпискиСрезПоследних.СостояниеЗаявки,
    ВТ_ИТСПодпискиСрезПоследних.Заявка.РегНомер КАК РегистрационныйНомер,
    ВТ_ИТСПодпискиСрезПоследних.Заявка КАК Заявка,
    ВТ_ИТСПодпискиСрезПоследних.ДополнительноеОписание,
    КонтактнаяИнформация1.Поле3 КАК Телефон
ПОМЕСТИТЬ ПодпискиИТС
ИЗ
    ВТ_ИТСПодпискиСрезПоследних КАК ВТ_ИТСПодпискиСрезПоследних
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        ПО (ВТ_ИТСПодпискиСрезПоследних.Контрагент = (ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.Контрагенты)))
            И (КонтактнаяИнформация.Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес))
            И (КонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента))
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация1
        ПО (ВТ_ИТСПодпискиСрезПоследних.Контрагент = (ВЫРАЗИТЬ(КонтактнаяИнформация1.Объект КАК Справочник.Контрагенты)))
            И (КонтактнаяИнформация1.Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
            И (ВЫБОР
                КОГДА КонтактнаяИнформация1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)                    
                ТОГДА КонтактнаяИнформация1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
                ИНАЧЕ КонтактнаяИнформация1.Вид.Наименование = "Телефон бух"
            КОНЕЦ)

СГРУППИРОВАТЬ ПО
    ВТ_ИТСПодпискиСрезПоследних.ВидПодписки,
    ВТ_ИТСПодпискиСрезПоследних.Организация,
    ВТ_ИТСПодпискиСрезПоследних.Контрагент,
    ВТ_ИТСПодпискиСрезПоследних.ДатаНачала,
    ВТ_ИТСПодпискиСрезПоследних.ДатаЗавершения,
    ВТ_ИТСПодпискиСрезПоследних.СостояниеЗаявки,
    ВТ_ИТСПодпискиСрезПоследних.Заявка,
    ВТ_ИТСПодпискиСрезПоследних.Контрагент.ОсновноеКонтактноеЛицо,
    ВТ_ИТСПодпискиСрезПоследних.Заявка.РегНомер,
    ВТ_ИТСПодпискиСрезПоследних.ДополнительноеОписание,
    КонтактнаяИнформация1.Поле3

ИНДЕКСИРОВАТЬ ПО
    Заявка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ИТС_ДискиСрезПоследних.Заявка КАК Заявка,
    СУММА(ВЫБОР
            КОГДА ИТС_ДискиСрезПоследних.СостояниеДиска = ЗНАЧЕНИЕ(Перечисление.ИТС_ВидыСостоянийДисков.Получен)
                ТОГДА 1
        КОНЕЦ) КАК КоличествоНеОтгруженных,
    ДОБАВИТЬКДАТЕ(ИТС_ДискиСрезПоследних.Заявка.ДатаНачала, МЕСЯЦ, ИТС_ДискиСрезПоследних.Заявка.ВидПодписки.Периодичность * (ИТС_ДискиСрезПоследних.НомерПериода - 1)) КАК ДатаДиска
ПОМЕСТИТЬ ДискиИТС
ИЗ
    РегистрСведений.ИТС_Диски.СрезПоследних(&Дата, Организация = &Организация) КАК ИТС_ДискиСрезПоследних

СГРУППИРОВАТЬ ПО
    ИТС_ДискиСрезПоследних.Заявка,
    ДОБАВИТЬКДАТЕ(ИТС_ДискиСрезПоследних.Заявка.ДатаНачала, МЕСЯЦ, ИТС_ДискиСрезПоследних.Заявка.ВидПодписки.Периодичность * (ИТС_ДискиСрезПоследних.НомерПериода - 1))

ИНДЕКСИРОВАТЬ ПО
    Заявка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПодпискиИТС.Организация,
    ПодпискиИТС.Контрагент,
    ПодпискиИТС.ВидПодписки,
    ПодпискиИТС.ДатаНачала,
    ПодпискиИТС.ДатаЗавершения,
    ПодпискиИТС.Телефон,
    ПодпискиИТС.Адрес,
    ПодпискиИТС.КонтрагентОсновноеКонтактноеЛицо,
    ПодпискиИТС.СостояниеЗаявки,
    ПодпискиИТС.РегистрационныйНомер,
    ДискиИТС.КоличествоНеОтгруженных,
    ДискиИТС.ДатаДиска,
    ПодпискиИТС.ДополнительноеОписание
ИЗ
    ПодпискиИТС КАК ПодпискиИТС
        ЛЕВОЕ СОЕДИНЕНИЕ ДискиИТС КАК ДискиИТС
        ПО ПодпискиИТС.Заявка = ДискиИТС.Заявка
1 reznik911
 
25.06.14
10:38
ПО (ВТ_ИТСПодпискиСрезПоследних.Контрагент = (ВЫРАЗИТЬ(КонтактнаяИнформация1.Объект КАК Справочник.Контрагенты)))
            И (КонтактнаяИнформация1.Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
            И (ВЫБОР
                КОГДА КонтактнаяИнформация1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)                    
                ТОГДА КонтактнаяИнформация1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
                ИНАЧЕ КонтактнаяИнформация1.Вид.Наименование = "Телефон бух"
            КОНЕЦ)
2 acsent
 
25.06.14
10:42
2 соединения с контактной информацией.
Если Заполнен 1 то 1 Если заполнен 2 то 2 иначе 1
3 reznik911
 
25.06.14
10:44
(2) нет если заполнен 1 то 1, если заполнен 1 и2 то 1, если заполнен только 2 то 2
4 reznik911
 
25.06.14
10:46
(2) если запрос не менять мне о выдает и 1 и 2, хотя стоит условие если заполнен 1 то 1 иначе 2
5 VRednaia
 
25.06.14
10:49
(3) Нет. Если в первом случае проверили что 1 заполнен, то нет смысла проверять заполнен ли 2.
6 VRednaia
 
25.06.14
10:50
(4) Где у тебя в запросе это условие?
см (2):
2(!!) (ДВА) соединения с контактной информацией.
7 reznik911
 
25.06.14
10:52
(6)в первом то соединении задействован лишь адрес а не телефон
8 acsent
 
25.06.14
10:52
(7) 2 соединения на телефон
9 VRednaia
 
25.06.14
10:53
(7) Еще раз. Тебе нужно сделать два соединения. Одно - для получения телефона контрагента второе для получения телефона бухгалтера. И из них выбирать то, которое тебе нужно.
10 reznik911
 
25.06.14
10:54
(9) а потом куда и как мне это условие реализовать?
11 catena
 
25.06.14
10:59
(10)ЕстьNULL(ТелефонКонтрагента,ТелефонБухгалтера)
12 reznik911
 
25.06.14
11:00
(11) это куда писать?
13 VRednaia
 
25.06.14
11:02
(12) в поле запроса "телефон"
14 reznik911
 
25.06.14
11:04
(13) это же у меня не объекты чтоб перевыбирать это все лишь соединения
15 reznik911
 
25.06.14
11:04
(13) а телефон  КонтактнаяИнформация1.поле3 что то гоните
16 catena
 
25.06.14
11:09
(15)Серьезно?


Выбрать
<.......>
ЕстьNULL(КонтактнаяИнформация1.поле3,КонтактнаяИнформация2.поле3)
из <.......>
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация1
ПО (ВТ_ИТСПодпискиСрезПоследних.Контрагент = (ВЫРАЗИТЬ(КонтактнаяИнформация1.Объект КАК Справочник.Контрагенты)))
И (КонтактнаяИнформация1.Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
И КонтактнаяИнформация1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонКонтрагента)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация2
ПО (ВТ_ИТСПодпискиСрезПоследних.Контрагент = (ВЫРАЗИТЬ(КонтактнаяИнформация2.Объект КАК Справочник.Контрагенты)))
И (КонтактнаяИнформация2.Вид.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
И КонтактнаяИнформация2.Вид.Наименование = "Телефон бух"
17 VRednaia
 
25.06.14
11:10
почитай книжку
http://v8.1c.ru/metod/books/book.jsp?id=436
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший