Как правильно джойнить таблицы в 1с?
Подскажите, как правильно соединять таблицы в 1с, а точнее мне нужно соединить регистр накоплений ЗаказыКлиентовОстаткиИОбороты и ЦеныНоменклатуры, по Артикулу/Номенклатуре и Дате
Вот запрос который имеется:
ВЫБРАТЬ
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура КАК Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Артикул КАК НоменклатураАртикул,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Дата КАК ЗаказКлиентаДата,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Контрагент.Наименование КАК ЗаказКлиентаКонтрагентНаименование,
КонтрагентыКонтактнаяИнформация.Город КАК Город,
КонтрагентыКонтактнаяИнформация.Страна КАК Страна,
КонтрагентыКонтактнаяИнформация.Регион КАК Регион,
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноОборот КАК ЗаказаноОборот,
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноПриход КАК ЗаказаноПриход,
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход КАК ЗаказаноРасход,
ЗаказыКлиентовОстаткиИОбороты.КОформлениюОборот КАК КОформлениюОборот,
ЗаказыКлиентовОстаткиИОбороты.КОформлениюПриход КАК КОформлениюПриход,
ЗаказыКлиентовОстаткиИОбороты.КОформлениюРасход КАК КОформлениюРасход,
ЗаказыКлиентовОстаткиИОбороты.КПередачеОборот КАК КПередачеОборот,
ЗаказыКлиентовОстаткиИОбороты.КПередачеПриход КАК КПередачеПриход,
ЗаказыКлиентовОстаткиИОбороты.КПередачеРасход КАК КПередачеРасход,
ЦеныНоменклатуры.Цена КАК Цена,
ЦеныНоменклатуры.МаркетинговоеМероприятие.Наименование КАК МаркетинговоеМероприятиеНаименование,
ЗаказыКлиентовОстаткиИОбороты.Склад КАК Склад
ИЗ
РегистрНакопления.ЗаказыКлиентов.ОстаткиИОбороты КАК ЗаказыКлиентовОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
ПО (КонтрагентыКонтактнаяИнформация.Ссылка = ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Контрагент)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО (ЦеныНоменклатуры.Номенклатура.Ссылка = ЗаказыКлиентовОстаткиИОбороты.Номенклатура
И ЦеныНоменклатуры.Регистратор = ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Дата)
ГДЕ
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Дата МЕЖДУ ДАТАВРЕМЯ(2024, 1, 1) И ДАТАВРЕМЯ(2024, 2, 28)
Но ответе запроса поля цен пустые, что именно я делаю не так?
Так же вопрос, как обработать дату и время в поле Дата как дату(предполагаю, что из-за этого не джойнится)
Ответы (2 шт):
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
ПО (ЦеныНоменклатуры.Номенклатура.Ссылка = ЗаказыКлиентовОстаткиИОбороты.Номенклатура
И ЦеныНоменклатуры.Регистратор = ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Дата)
Обратите внимание на условие:
"...И ЦеныНоменклатуры.Регистратор = ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Дата"
вы соединяете регистратор с датой.
Вообще, у вас не очень "красиво" написан запрос. Можно улучшить согласно методическим стандартам.
Например, это:
"ЦеныНоменклатуры.Номенклатура.Ссылка = ЗаказыКлиентовОстаткиИОбороты.Номенклатура"
можно заменить на:
"ЦеныНоменклатуры.Номенклатура = ЗаказыКлиентовОстаткиИОбороты.Номенклатура"
Решением для меня стал следующий запрос. Он выводить соединяет ко всем заказам контрагентов, берет цены и документа заказа, так же соединяет контактную информацию контрагента. Вот текст запроса:
ВЫБРАТЬ РАЗЛИЧНЫЕ
КонтрагентыКонтактнаяИнформация.Ссылка КАК Ссылка,
КонтрагентыКонтактнаяИнформация.Страна КАК Страна,
КонтрагентыКонтактнаяИнформация.Регион КАК Регион,
КонтрагентыКонтактнаяИнформация.Город КАК Город,
КонтрагентыКонтактнаяИнформация.Представление КАК Представление
ПОМЕСТИТЬ КонтактнаяИнформация
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
ПО (КонтрагентыКонтактнаяИнформация.Ссылка = Контрагенты.Ссылка)
ГДЕ
КонтрагентыКонтактнаяИнформация.Вид = &Вид
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ЗаказКлиентаТовары.Ссылка КАК Ссылка,
ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
ЗаказКлиентаТовары.НомерСтроки КАК НомерСтроки,
ЗаказКлиентаТовары.Цена КАК Цена
ПОМЕСТИТЬ ЦеныТЧ
ИЗ
Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
ЗаказыКлиентовОстаткиИОбороты.Номенклатура КАК Номенклатура,
ЗаказыКлиентовОстаткиИОбороты.Номенклатура.Артикул КАК НоменклатураАртикул,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Дата КАК ЗаказКлиентаДата,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Контрагент.Наименование КАК ЗаказКлиентаКонтрагентНаименование,
ЗаказыКлиентовОстаткиИОбороты.Склад КАК Склад,
ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента КАК ЗаказКлиента,
ЗаказыКлиентовОстаткиИОбороты.ЗаказаноРасход КАК ЗаказаноРасход,
ЦеныТЧ.Цена КАК Цена,
КонтактнаяИнформация.Страна КАК Страна,
КонтактнаяИнформация.Регион КАК Регион,
КонтактнаяИнформация.Город КАК Город,
КонтактнаяИнформация.Представление КАК Представление
ИЗ
РегистрНакопления.ЗаказыКлиентов.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, , , ) КАК ЗаказыКлиентовОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ КонтактнаяИнформация КАК КонтактнаяИнформация
ПО ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента.Контрагент = КонтактнаяИнформация.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ ЦеныТЧ КАК ЦеныТЧ
ПО ЗаказыКлиентовОстаткиИОбороты.ЗаказКлиента = ЦеныТЧ.Ссылка
И ЗаказыКлиентовОстаткиИОбороты.Номенклатура = ЦеныТЧ.Номенклатура
УПОРЯДОЧИТЬ ПО
ЗаказКлиента