Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Полное соединение табличных частей документов          
HNKOVAN Подменю пользователя
сообщение 18.03.14, 16:12
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Я начинающий погромист, не судите строго. :-)
А с SQL столкнулся вчера в первый раз.
Искать ответ в интернете уже нету сил, нигде ясного ответа не нашёл.
Возникла необходимость проверить фактическое выполнение заказов. Для этого слепил в конструкторе запрос с "полным соединением" табличных частей документов ЗаказПокупателя и РеализацияТоваровУслуг по полям Номенклатура и Контрагент.
Но почему-то в результате выполнения запроса отсутствуют данные о тех позициях номенклатуры заказов, которые совсем не были выполнены (их нет в табличной части документа РеализацияТоваровУслуг). Но это же ПОЛНОЕ соединение? Что я делаю не так? От безысходности пробовал ПРАВОЕ, ЛЕВОЕ - вожделенные "NULLи" не появляются. :-)

ВЫБРАТЬ
        ЗаказПокупателяТовары.Ссылка.Номер,
        ЗаказПокупателяТовары.Ссылка.Дата,
        ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки,
        ЗаказПокупателяТовары.Ссылка.Контрагент,
        ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Ссылка.Контрагент),
        ЗаказПокупателяТовары.Номенклатура,
        ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура),        
        ЗаказПокупателяТовары.Количество КАК Количество,      
        РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер1,
        РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата1,
        РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент1,
        ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК КонтрагентПредставление1,
        РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура1,
        ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура) КАК НоменклатураПредставление1,
        РеализацияТоваровУслугТовары.Количество КАК Количество1

ИЗ
        Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                ПОЛНОЕ СОЕДИНЕНИЕ Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
                ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент = ЗаказПокупателяТовары.Ссылка.Контрагент
                        И РеализацияТоваровУслугТовары.Номенклатура = ЗаказПокупателяТовары.Номенклатура

ГДЕ
        РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач
        И РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон
        И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &ДатаНач
        И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаКон



 i 

Правила, п.12
 


На другом форуме говорят, что у меня получилось ВНУТРЕННЕЕ соединение. Действительно, результат запроса так и выглядел.
Даже предложили рабочий вариант (пока не пробовал, сейчас нет возможности). Но разжевывать "для чайника" не хотят. А мне всё ещё не понятно, в чём суть исправления. Ну да ладно, буду вникать глубже и тщательнее. Спасибо им за советы - есть уже над чем поразмыслить.

ВЫБРАТЬ
    ЗаказПокупателяТовары.Ссылка.Номер,
    ЗаказПокупателяТовары.Ссылка.Дата,
    ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки,
    ЗаказПокупателяТовары.Ссылка.Контрагент,
    ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Ссылка.Контрагент),
    ЗаказПокупателяТовары.Номенклатура,
    ПРЕДСТАВЛЕНИЕ(ЗаказПокупателяТовары.Номенклатура),
    ЗаказПокупателяТовары.Количество КАК Количество,
    РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер1,
     РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата1,
    РеализацияТоваровУслугТовары.Ссылка.Контрагент КАК Контрагент1,
    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Ссылка.Контрагент) КАК КонтрагентПредставление1,
    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура1,
    ПРЕДСТАВЛЕНИЕ(РеализацияТоваровУслугТовары.Номенклатура) КАК НоменклатураПредставление1,
    РеализацияТоваровУслугТовары.Количество КАК Количество1
ИЗ
    Документ.ЗаказПокупателя.Товары КАК ЗаказПокупателяТовары
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
        ПО РеализацияТоваровУслугТовары.Ссылка.Контрагент = ЗаказПокупателяТовары.Ссылка.Контрагент
            И РеализацияТоваровУслугТовары.Номенклатура = ЗаказПокупателяТовары.Номенклатура
            И (РеализацияТоваровУслугТовары.Ссылка.Дата >= &ДатаНач)
            И (РеализацияТоваровУслугТовары.Ссылка.Дата < &ДатаКон)
ГДЕ
    ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки >= &ДатаНач
    И ЗаказПокупателяТовары.Ссылка.ДатаОтгрузки < &ДатаКон


Сообщение отредактировал logist - 18.03.14, 15:21

Vofka Подменю пользователя
сообщение 18.03.14, 16:36
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(HNKOVAN @ 18.03.14, 16:12) *
Но разжевывать "для чайника" не хотят. А мне всё ещё не понятно, в чём суть исправления

Соединения по другим полям.

HNKOVAN Подменю пользователя
сообщение 18.03.14, 16:57
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Vofka @ 18.03.14, 16:36) *
Соединения по другим полям.


Контрагент и Номенклатура было и осталось же. Не?

Petre Подменю пользователя
сообщение 18.03.14, 17:05
Сообщение #4

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(HNKOVAN @ 18.03.14, 16:12) *
На другом форуме говорят, что у меня получилось ВНУТРЕННЕЕ соединение.

Проблема вашего запроса в конструкции "ГДЕ". Либо перенесите условия в конструкцию соединения "ПО", либо измените условия так, чтобы они предусматривали наличие NULL в полях.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Спасибо сказали: HNKOVAN,

HNKOVAN Подменю пользователя
сообщение 18.03.14, 17:41
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Petre @ 18.03.14, 17:05) *
Проблема вашего запроса в конструкции "ГДЕ". Либо перенесите условия в конструкцию соединения "ПО", либо измените условия так, чтобы они предусматривали наличие NULL в полях.


!!!!!
Спасибо! Это очень похоже на правду, и толково, и понятно.
Спасибо ещё раз.

Цитата(Petre @ 18.03.14, 17:05) *
Проблема вашего запроса в конструкции "ГДЕ". Либо перенесите условия в конструкцию соединения "ПО", либо измените условия так, чтобы они предусматривали наличие NULL в полях.


Похоже, важно понимать приоритет, т.е. последовательность обработки сервером текста запроса. А я этого совершенно не понимаю.
Выходит "ГДЕ" применяется уже к результату соединения, да?

Petre Подменю пользователя
сообщение 18.03.14, 18:04
Сообщение #6

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2905
Из: Київ, Україна
Спасибо сказали: 1147 раз
Рейтинг: 1228.9

Цитата(HNKOVAN @ 18.03.14, 17:41) *
Выходит "ГДЕ" применяется уже к результату соединения, да?

Да.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 28.04.24, 3:54
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!