Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Документ левое (полное) соединение с табличным полем / 13 сообщений из 13, страница 1 из 1
16.04.2012, 14:52
    #37755560
TVA_11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
Если я прав, то в случае пустого табличного поля:

левый (полный) документ тоже не будет выведен.


Кто сталкивался?
...
Рейтинг: 0 / 0
16.04.2012, 17:19
    #37755855
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
Запрос Ваш приведите. Возможно Вы условия поместили в секцию ГДЕ, а не в ПО, или функцию ЕСТЬNULL не применили.
...
Рейтинг: 0 / 0
17.04.2012, 13:56
    #37757116
TVA_11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
rigus,

ВЫБРАТЬ
ВедУчетВремени.Ссылка КАК ВедомостьУчета,
эл_ВедомостьУчетаРабочегоВремени.Ссылка,
эл_ВедомостьУчетаРабочегоВремени.Сотрудник.Наименование
ИЗ
Документ.эл_ВедомостьУчетаРабочегоВремени.УчетВремени КАК ВедУчетВремени
ПОЛНОЕ СОЕДИНЕНИЕ Документ.эл_ВедомостьУчетаРабочегоВремени КАК эл_ВедомостьУчетаРабочегоВремени
ПО ВедУчетВремени.Ссылка = эл_ВедомостьУчетаРабочегоВремени.Ссылка
ГДЕ
ВедУчетВремени.Ссылка.Период МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
ВедУчетВремени.Ссылка,
эл_ВедомостьУчетаРабочегоВремени.Ссылка


Если документ по сотруднику имеет незаполненную табличную часть (забыли), то в данную выборку он не попадает (непроверить).
Приходится изощряться иначе, формировать раздельный таблицы в запросе, а потом так же соединять, тогда выходит.

Вот мне и стало интересно, это глюк или такая задумка разработчиков? )
...
Рейтинг: 0 / 0
17.04.2012, 15:55
    #37757397
LexaK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
Народ учите СКЛ! Все отлично работает, когда руки не из ж... растут, т.е. когда голова не ж...

ВЫБРАТЬ
Док.Ссылка КАК ВедомостьУчета,
естьNull(ДокТаб.Сотрудник.Наименование,"Нет сотрудников") как Сотрудник
ИЗ
Документ.эл_ВедомостьУчетаРабочегоВремени КАК Док
левое соединение
Документ.эл_ВедомостьУчетаРабочегоВремени.УчетВремени КАК ДокТаб
ПО Док.Ссылка = ДокТаб.Ссылка
ГДЕ
Док.Период МЕЖДУ &НачалоПериода И &КонецПериода
упорядочить по Док.Ссылка автоупорядочивание
...
Рейтинг: 0 / 0
17.04.2012, 18:59
    #37757855
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
поддерживаю.
Сотрудник.Наименование
создает неявное соединение с со справочником сотрудники. как следствие у Вас получается внутреннее соединение.
В общем я придерживаюсь мнения, что прежде чем начинать писать запросы в 1с, нужно хотябы немного изучить sql и теорию баз данных. Тогда не будет проблем. Нормальность запроса лучше всего смотреть через профайлер где запрос 1с преобразуется в sql запрос заменяя сахар в виде обращения через точку реальными соединениями с таблицами.
...
Рейтинг: 0 / 0
18.04.2012, 00:02
    #37758209
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
rigusподдерживаю.
Сотрудник.Наименование
создает неявное соединение с со справочником сотрудники. как следствие у Вас получается внутреннее соединение.
В общем я придерживаюсь мнения, что прежде чем начинать писать запросы в 1с, нужно хотябы немного изучить sql и теорию баз данных. Тогда не будет проблем. Нормальность запроса лучше всего смотреть через профайлер где запрос 1с преобразуется в sql запрос заменяя сахар в виде обращения через точку реальными соединениями с таблицами.Угу последний запрос по расчету себестоимости содержит 34 виртуальных таблицы уже бегу смотреть.

1. В простых запросах не нужно смотреть, надо просто знать основные правила.
2. А в сложных запросах почти бесполезно смотреть.
3. А еще есть масса запросов где время некритично....
...
Рейтинг: 0 / 0
18.04.2012, 08:30
    #37758375
TVA_11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
Проверю, отпишусь.
...
Рейтинг: 0 / 0
18.04.2012, 12:58
    #37758914
TVA_11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
rigus,

У меня есть
КонсольЗапросов 8.2.epf - это и есть профайлер?
-----------------


Проверил, действительно работает.
Такая особенность касается только соединения с табличной частью?


Например регистры соединил для проверки, у них пропажи не возникает, а выводятся пустые поля если NULL/
...
Рейтинг: 0 / 0
18.04.2012, 15:17
    #37759229
rigus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
Консоль запросов не профайлер.
профайлер и помощник в настройке ядра субд это приложения входящие в комплект MS SQL Server
я ими пользуюсь когда нужно оптимизировать скорость выполнения 1с запроса(и средсвами 1с не понятно как его еще ускорить) , или когда возникает не предвиденый результат от запроса.
т.е. алгоритм примерно такой
запускаем профайлер на запись трассировки
запускаем в 1с нужный нам запрос
останавливает трассировку в профайле и находим нужный нам sql запрос
далее с помощью типовой обработки 1с DBStructure преобразуем SQLные названия таблиц в 1с ные
Далее идет оптимизация SQL запроса - строим план выполнения запроса, определяем где затык, создаем нужные индексы и статистики по необходимости, переписываю запрос, дальше исходя из правильного sql запроса переписываю 1с запрос.
...
Рейтинг: 0 / 0
18.04.2012, 15:25
    #37759248
TVA_11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
Высший пилотаж ).
...
Рейтинг: 0 / 0
26.04.2012, 13:27
    #37772260
TVA_11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
ВЫБРАТЬ
ЗаказНаПро.Ссылка КАК ЗаказНаПроизводство,
ОтчетПроизводстваЗаСмену.Ссылка КАК ОтчетПроизводстваЗаСмену,
Наряд.Ссылка КАК Наряд
ИЗ
Документ.ЗаказНаПроизводство КАК ЗаказНаПро
ПОЛНОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
ПО ЗаказНаПро.Ссылка = ОтчетПроизводстваЗаСмену.ЗаказНаПроизводство
ПОЛНОЕ СОЕДИНЕНИЕ Документ.Наряд КАК Наряд
ПО (ЗаказНаПро.Ссылка = Наряд.Заказ
ИЛИ ЗаказНаПро.Дата МЕЖДУ &НачалоПериода И &КонецПериода)
ГДЕ
Наряд.Дата МЕЖДУ &НачалоПериода И &КонецПериода


Не работает. Пытаюсь сделать тоже самое, что вы уже мне советовали, только в ситуации с тремя документами, а не двумя.

Надо, чтобы Документы.ЗаказНаПроизводство, которые не попали в связь с Нарядом, но попали в период МЕЖДУ &НачалоПериода И &КонецПериода тоже выводились.


Что сдедлал не так?
...
Рейтинг: 0 / 0
26.04.2012, 13:57
    #37772324
TVA_11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
ВЫБРАТЬ
ЗаказНаПро.Ссылка КАК ЗаказНаПроизводство,
ОтчетПроизводстваЗаСмену.Ссылка КАК ОтчетПроизводстваЗаСмену,
Наряд.Ссылка КАК Наряд
ИЗ
Документ.ЗаказНаПроизводство КАК ЗаказНаПро
ПОЛНОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
ПО ЗаказНаПро.Ссылка = ОтчетПроизводстваЗаСмену.ЗаказНаПроизводство
ПОЛНОЕ СОЕДИНЕНИЕ Документ.Наряд КАК Наряд
ПО ЗаказНаПро.Ссылка = Наряд.Заказ
ГДЕ
Наряд.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И ЗаказНаПро.Дата ЕСТЬ НЕ NULL


Сделал так, результат изменился, а правильно или нет неясно.
Много данных.
...
Рейтинг: 0 / 0
26.04.2012, 14:52
    #37772475
TVA_11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Документ левое (полное) соединение с табличным полем
ВЫБРАТЬ
ЗаказНаПро.Ссылка КАК ЗаказНаПроизводство,
ОтчетПроизводстваЗаСмену.Ссылка КАК ОтчетПроизводстваЗаСмену,
Наряд.Ссылка КАК Наряд
ИЗ

Документ.ЗаказНаПроизводство КАК ЗаказНаПро

ПОЛНОЕ СОЕДИНЕНИЕ Документ.ОтчетПроизводстваЗаСмену КАК ОтчетПроизводстваЗаСмену
ПО ЗаказНаПро.Ссылка = ОтчетПроизводстваЗаСмену.ЗаказНаПроизводство

ПОЛНОЕ СОЕДИНЕНИЕ Документ.Наряд КАК Наряд
ПО ЗаказНаПро.Ссылка = Наряд.Заказ


ГДЕ
(Наряд.Дата МЕЖДУ &НачалоПериода И &КонецПериода
ИЛИ ЗаказНаПро.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Наряд.Дата ЕСТЬ NULL
ИЛИ ОтчетПроизводстваЗаСмену.Дата МЕЖДУ &НачалоПериода И &КонецПериода
И Наряд.Дата ЕСТЬ NULL
И ЗаказНаПро.Дата ЕСТЬ NULL )


Вот правильно работающее решение, но как то некрасиво.
А было всего-то надо, вывести все, что есть в данном периоде и по возможности связать, все что может быть связано ).
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Документ левое (полное) соединение с табличным полем / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]