Левое соединение в запросах 1С
HTML-код
- Опубликовано: 6 фев 2025
- Как работать с левым соединением в таблицах 1С на примерах. Работа с условием соединения. Что такое уникальный идентификатор (УИД). Как присвоить псевдоним таблицам.
Наша статья:
programmist1s.r...
Читайте статьи по 1С на нашем сайте:
programmist1s.r...
Насколько доступно и за 7 минут! Спасибо гуру!
Привет Илья. Сегодня наконец сподобился наставить лайков на всё просмотренные уроки. Очень всё доходчиво и с юмором. Это здорово заменяет "семки", как Вы их назвали как то.))
Термин Левое, да и Правое соединение был бы более понятен, если бы Вы написали имена соединяемых таблиц в одну строку. А так лучше назвать их Верхнее и Нижнее соединение)))))))))
Удачи в делах и не бросайте нас в это тяжёлое время!!!!
Кстати, на личный канал я тоже подписатся. Поздравляю.... СЕБЯ)))
Как работать с левым соединением в таблицах 1С на примерах. Работа с условием соединения. Что такое уникальный идентификатор (УИД). Как присвоить псевдоним таблицам.
Наша статья:
programmist1s.ru/yazyik-zaprosa-1s/
Услуги 1С программиста в Москве:
1cproger.ru/
Читайте статьи по 1С на нашем сайте:
programmist1s.ru/materialyi-po-1s/
Спасибо за наглядное объяснение соединений, стало гораздо понятней.
Спасибо! Коротко и понятно.
Немного сложновато для первого понимания, но суть понятна. Спасибо. Думаю в процессе утрясется все)
Отличные видеоуроки!!! Большое Благодарю!!!
СПАСИБО за СУТЬ и полезность!!
почти 2000 просмотров, никто не может нажать "не нравится", совесть мучает)) благодарен так же как все!
:)))) спасибо!)
может запутывать то, что в экселе левая таблица помещена в правую часть - поэтому обращайте внимание именно на код в консоли запросов - в консоли таблица РегистрСведений.КадровыеПеремещения находится слева, соответственно таблица Справочник.Сотрудники находится справа.
Хотелось бы немного громче делать записи. Увы не всегда без акустического усилителя возможно разобрать что было сказано.
Дата рождения при выборке не работает при соединении ПО Сотрудник = Ссылка, в полях ДатаРождения при таком соединении появляется значение Null.
Заработало либо по Сотрудник = Ссылка.Наименование, либо Сотрудник = Наименование. Скорее всего запрос просто не понимает что такое "Ссылка" и возвращает пустое значение. При этом при запросе ВЫБРАТЬ * ИЗ Справочник.Сотрудники возвращается таблица, содержащая столбец "Ссылка" в котором как раз указанны все ссылки, т.е. значение явно не Null. 1с 8.3
Спасибо тебе! А то я что-то подзавис на этом моменте. При этом если писал вместо левого соединения правое, то выводилась как раз только дата рождения
Довольно трудная тема. Спасибо
Все супер! Только две вещи. Первое, почему в екселе таблицу справа называют "левой", а таблицу слева - "правой". Второе, столбец с датами не выравнивания из-за ошибки данных - 31 февраля не существует (в месяце максимум 29 дней)
как расположены таблицы в экселе это все равно, главное как они расположены в запросе, в нашей задаче слева от слов ЛЕВОЕ СОЕДИНЕНИЕ располагается основная таблица РегистрСведений.КадровыеПеремещения, и в неё подставляется поле с данными(в нашем случае дата рождения) от справочника сотрудники
да где же слева если под словами ЛЕВОЕ СОЕДИНЕНИЕ, что то я тоже туплю
Возможно, я действительно несколько усложнил понимание примера, расположим таблицы в Экселе таким образом.
На самом деле неважно, каким образом расположены таблице в Экселе ) Главное - чтобы вы понимали суть.
Левая таблица - основная, все записи левого соединения будут представлены в результате запроса.
А в результате правого соединения к записям левой просто будут дописываться из правой.
2:34 Проблема в Excel не с выравниваем, а с тем, что дата 31 февраля не существует. Поэтому Excel воспринял запись "31.02.1980" как строку, а не как дату. А строки в Excel выравниваются автоматически по левому краю.
При объяснении в Экселе про левое соединение левая таблица справа, а правая таблица слева
Не понятно всё-таки, какая таблица считается левой, какая правой. Как их вообще классифицировать на левые, правые. Во время произношения слов "из левой таблицы" на 8:35 помечается в экселя таблица, нарисованная справа. Ошибка или как это понять?
в видео да - левая таблица реально находится справа но это неважно. Важно какая таблица находится слева(сверху) от ключевых слов ЛЕВОЕ СОЕДИНЕНИЕ - именно она считается левой, независимо от реального местоположения. Чтобы было проще сбросить отвлекающее внимание можно вспомнить, что когда таблицы в памяти компа, там вообще нет понятий левее-правее.
Спасибо. Вроде ничего сложного.
Честно говоря, не очень понял вот эту часть:
"ПО Т1.Сотрудник= Т2.Ссылка"
Вы сказали:
1. Слева в выражении мы пишем "Сотрудник", т.к.: "..не сотрудник.код, а "сотрудник", потому что поле сотрудник и является этим кодом, здесь находится ссылка на сотрудника..."
2. А справа мы пишем "Ссылка", т.к.: "уникальный код сотрудника это и есть его ссылка".
Т.е. что "Сотрудник", что "Ссылка" - по сути одно и тоже?
Но я перепробовал любые другие комбинации:
ПО Т1.Ссылка = Т2.Ссылка;
ПО Т1.Ссылка = Т2.Сотрудник;
ПО Т1.Сотрудник = Т2.Сотрудник;
ни одна не сработала.
В связи с чем у меня вопрос (чисто для понимания): почему важно справа в выражении (т.е. для присоединяемой таблицы) писать "ссылка", а для таблице к которой присоединяем - "сотрудник". Почему нельзя в обоих случаях писать "Сотрудник" (если чисто на уровне БД - поле "Сотрудник" как раз содержит ссылку) или в обоих случаях "Ссылка" и т.п.
Тут есть какое-то правило/объяснение (если да - хотелось бы его понять) или просто "вот так 1С устроено"?
Если актуально то отвечу: Для понимания нужно выполлнить запрос:
ВЫБРАТЬ *
ИЗ Справочник.Сотрудники
В результате он длает возможность понять что есть что. Щелкните по результату (по полю таблицы) и увидите что "ссылка" возращает "форму" в которой есть все, а если по наименованю то только "Имя", только значение поля в котором нет датырожд. (возможно не правильно объяснил, сам учусь. ну и сам к этому пришел разбираясь, "почему ссылка?!")
В справочнике "Сотрудник" нет поля сотрудник, это наименование справочника. А вот ССЫЛКА у любого элемента данного справочника есть. И эта ссылка как раз его код. В регистре сведений нет ссылки как реквизита, а каждое поле уже является ссылкой на данное поле другой таблицы. Именно поэтому любое поле регистра является ссылкой на какую то таблицу (справочник, документ, план видов характеристик и т.д.). Поэтому в варианте:
ПО Т1.Сотрудник = Т2.Сотрудник Т1 сравнивает запись сотрудник с самим справочником. Естественно это сделать не может, нам же надо найти именно элемент, а не сам справочник. Ну как то так) Успехов (тоже являюсь "стажер" в мире проектирования 1С)
понятно все ок только для начинающих левая таблица находится справа, поменяй а то путаница а так пасипа смотрю все уроки и мне нравится хоть с 1с уже 20 лет. И не поверишь есть новые моменты, особенно в понимании. Предложение: В начле каждого урока брать пайнт и рисовать задачу а после ее выполнять. ВоМногих Есть но не во всех. А так круто, Спасибо.
спасибо!
Всё круто, но обычно под ЛЕВЫМ СОЕДИНЕНИЕМ подразумевается, что из ЛЕВОЙ ТАБЛИЦЫ берутся все поля, а из правой - по условию ЛЕВОГО СОЕДИНЕНИЯ, а в примере таблиц из экселя всё наоборот (т.е. правое соединение получилось) и поэтому можно запутаться.
Возможно я вперёд забегаю, но есть пример работы с базой SQL или нет никакой разницы?
Оказывается в 1С у Запроса (SELECT) синтаксис обычного SQL. Смотрю, ба, да это же LEFT OUTER JOIN ))
правильно, левое внешнее соединение и в 1с оно так же - точнее - получается это - внут. соединение двух таблиц (пересекающиеся данные по полям так скажем) + все что есть в левой таблице
Не понял что я упустил но пока я писал Т2.ссылка не работало соединение, заработало только так Т2.Наименование
Подскажите пжл. Где 17 секунда видео у меня выходит ошибка {(9;4)} Таблица не найдена "РегистрСведений.КадровыеПеремещения.............. Как можно сверить, если я что-то написал не так?
Что непонятно: почему где "ПО" мы сравниваем не поле сотрудник = поле наименование, а поле сотрудник = ссылка? Что такое это ссылка, если в справочнике такого поля нет??
Я только учусь всему этому (решил уходить с линии тех. поддержки 1с в сторону программирования) Но у меня вопрос... Такое ощущение что тут только на обычных формах запрос, например: тут просто ПЕРИОД - а у меня в конструкторе запросов КадроваяИсторияСотрудников.Период КАК Период...
У меня вопрос к автору, зачем в экселе левую таблицу размещать справа было?_ чтобы новичкам было понятнее?))))
Ну в целом понятно
Все делаю также, но строки дублируются, почему так может быть?
При соеденении поле ДатаРождения осталось пустым.А все потому что я измерение Сотрудник В регистре сделал не ссылкой справочником а просто строкой оставил по невнимательности.
Можете пожалуйста по подробнее рассказать, у меня та же проблема, захожу в список кадровые перемещения, нажимаю на строку, в поле сотрудник нажимаю 3 точки и выбираю сотрудника из справочника, но даты рождения после выполнения запроса не появляются
@@АртёмГоловкин-л1г проверьте типы данных что все соответствует как в видео. Я просто по невнимательности строку оставил. Строке и ссылаться то некуда))
Сказал что при левом соединений вся таблица слева попадает в результат, а сам правую целиком взял.
it this SQL language in Russia?
Yes, these crazy Russians program in Cyrillic SQL
Здравствуйте! Подскажите, можно ли в конце использовать функцию ПОДОБНО, применив её к столбцам Должность, Оклад, Подразделение?
Нашёл, в 31 видео. Через "Параметры".
Кто заметил что чистый аналог SQL запросов Left JOIN ? =)
точно так же как и все команды до этого, просто переведенные на русский. Select - выбрать, AS - как, And - и, и т.д. ПОка никакой разницы с SQL не видно вообще )
Про null надо было пример подобрать, ибо он тоже может возникнуть при соединениях. А так все хорошо.
для новичков обязательно было указать, что значение правого поля если оно NULL нужно конвертировать в какой нибудь нужный пустой тип (или 0 если число) с помощью EстьNULL()
@@НикНиконор Вы можете рассказать по подробнее об этом? я столкнулся с данной проблемой
Бред имени 1с.как таблица сотрудников может быть левой, если она справа
Впр только в 1с
Немного взрывает мозг то что правую таблицу, называют левой и наоборот. У программеров частенько так... :-)
с таблицами лево право путаница или я что то неправильно понял,четыре раза пересматриваю...
как расположены таблицы в экселе это все равно, главное как они расположены в запросе, в нашей задаче слева от слов ЛЕВОЕ СОЕДИНЕНИЕ располагается основная таблица РегистрСведений.КадровыеПеремещения, и в неё подставляется поле с данными(в нашем случае дата рождения) от справочника сотрудники
Возможно, я действительно несколько усложнил понимание примера, расположим таблицы в Экселе таким образом.
На самом деле неважно, каким образом расположены таблице в Экселе ) Главное - чтобы вы понимали суть.
Левая таблица - основная, все записи левого соединения будут представлены в результате запроса.
А в результате правого соединения к записям левой просто будут дописываться из правой.
Я один запутался какая таблица слева, а какая справа?
обрати внимание на код, таблица регистра находится слева.
Тупой Эксель не понимает 31 февраля!
Учусь запросам. Каждый урок по запросам делаю идентично как на экране только очень редко это работает в других базах. Теории слишком мало. Работает ТОЛЬКО в условиях что предлагает автор. Практической пользы информация не несет так как в реальной базе запросы в 95% не работают. Ставлю дизлайк
Автор объясняет логику работы, а для каждого отдельного случая нужно составлять свой запрос.
Смешной Вы Рома...Это не ваше.
31 февраля🤣🤣🤣🤣
Огромное спасибо! Отличные уроки!