|   |   | 
| 
 | 256 таблиц, 2 примера с "выразить", какой правильнее? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Ns33 10.12.14✎ 18:17 | 
        Набросал 2 примера использования ВЫРАЗИТЬ (по итогам поиска по форуму с проблемой 256 таблиц). Какой правильнее?
 1) ВЫБРАТЬ ПартииТоваровНаСкладахОбороты.Регистратор, ВЫБОР КОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОбороты.Регистратор КАК Документ.ПоступлениеТоваровУслуг) ССЫЛКА Документ.ПоступлениеТоваровУслуг ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОбороты.Регистратор КАК Документ.ПоступлениеТоваровУслуг).Контрагент КОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг) ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг).Контрагент ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК Поле1, ПартииТоваровНаСкладахОбороты.КоличествоОборот ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПартииТоваровНаСкладахОбороты 2) ВЫБРАТЬ ПартииТоваровНаСкладахОбороты.Регистратор, ВЫБОР КОГДА ПартииТоваровНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОбороты.Регистратор КАК Документ.ПоступлениеТоваровУслуг).Контрагент КОГДА ПартииТоваровНаСкладахОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ВЫРАЗИТЬ(ПартииТоваровНаСкладахОбороты.Регистратор КАК Документ.РеализацияТоваровУслуг).Контрагент ИНАЧЕ НЕОПРЕДЕЛЕНО КОНЕЦ КАК Поле1, ПартииТоваровНаСкладахОбороты.КоличествоОборот ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&Дата1, &Дата2, Регистратор, ) КАК ПартииТоваровНаСкладахОбороты | |||
| 1
    
        Господин ПЖ 10.12.14✎ 18:19 | 
        эм... а скуль обновить - никак?     | |||
| 2
    
        Господин ПЖ 10.12.14✎ 18:20 | 
        зы в регистраторах ПартииТоваровНаСкладах 256 таблиц разве наберется?     | |||
| 3
    
        DirecTwiX 10.12.14✎ 18:20 | 
        Первый упадёт, второй взлетит     | |||
| 4
    
        vicof 10.12.14✎ 18:23 | 
        (0) И шо таки значит пгавильнее?     | |||
| 5
    
        Ns33 10.12.14✎ 18:25 | 
        (2) Это просто для примера, реальный запрос другой. В реальном запросе много мест, где надо оптимизировать, поэтому мне желательно знать какой вариант, чтобы не переделывать.
 (3) Оба вышеуказанных запроса работают. | |||
| 6
    
        Господин ПЖ 10.12.14✎ 18:28 | 
        (5) тут только вскрытие покажет - смотреть что на скуль приходит     | |||
| 7
    
        Fragster гуру 10.12.14✎ 18:28 | 
        если они отличаются только Выразить в куске "когда" то вариант 2 правильнее. первый вариант возвращает лажу     | |||
| 8
    
        DirecTwiX 10.12.14✎ 18:32 | 
        (5) Уверен?
 У меня на подобном запросе вылезает несоответствие типов 
 | |||
| 9
    
        DirecTwiX 10.12.14✎ 18:33 | 
        Точнее, "Несовместимые типы ВЫРАЗИТЬ ..."
 А такой работает 
 | |||
| 10
    
        Господин ПЖ 10.12.14✎ 18:34 | 
        (8) работать не будет - это и так понятно     | |||
| 11
    
        DirecTwiX 10.12.14✎ 18:39 | 
        Вот ещё:
 http://zapros-1c-8.ru/interest/11-express >Регистратор у регистров часто имеет составной тип, чтобы преобразовать его к одиночному типу используйте конструкцию ВЫРАЗИТЬ правда если на этапе выборки вы попытаетесь преобразовать документ реализацию в документ поступление, то запрос обязательно вылетит с ошибкой, поэтому перед преобразованием следует проверить тип ссылки. | |||
| 12
    
        DirecTwiX 10.12.14✎ 18:41 | 
        Да и выражать одно поле по несколько раз не очень оптимально.     | |||
| 13
    
        Ns33 10.12.14✎ 18:52 | 
        Поставил себе SQL EXPRESS, сделал в тестовой базе 300 видов документов, у одного вида реквизит контрагент. Сделал регистр сведений с измерением типа документ.ссылка. И запрос к этому измерению вида РегистрСведений.Документ.Контрагент нормально отрабатывает, вот печаль.     | |||
| 14
    
        Йохохо 10.12.14✎ 19:32 | 
        (13) здиш     | |||
| 15
    
        vvp91 10.12.14✎ 23:09 | 
        > (0) Какой правильнее?
 Правильнее так: ВЫБРАТЬ Партии.Регистратор, ЕСТЬNULL(Поступления.Контрагент, ЕСТЬNULL(Реализации.Контрагент, НЕОПРЕДЕЛЕНО)) КАК Контрагент, Партии.КоличествоОборот ИЗ РегистрНакопления.ПартииТоваровНаСкладах.Обороты(&Дата1, &Дата2, Регистратор, ) КАК Партии ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК Поступления ПО Поступления.Ссылка = Партии.Регистратор ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК Реализации ПО Реализации.Ссылка = Партии.Регистратор | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |