Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
26 июн 2024, 15:36

Связать 2 таблицы

Автор pavlo, 24 ноя 2016, 15:44

0 Пользователей и 1 гость просматривают эту тему.

pavlo

Коллеги помогите плизз
Есть ОстаткиИОбороты ВТ бухитогов
Есть Регистр остатков у которого есть измерения те же Субконто1-4 и счет, так же нужные мне ресурсы и одно поле реквизита, которое и нужно будет тоже получить ко всем суммам на каждый день.

Беру ОстаткиИОбороты Бухитогов и пытаюсь джойнить с ОстаткиИОбороты регистра накопления.
Соединение по Счет,Субконто1,Субконто2,Субконто3,Субконто4 соединяется, но понятное дело не верно из-за дат.
Как только в соединение добавляют Период (а в обеих ВТ таблицах стоит периодичность ДЕНЬ) соединение больше не работает и выдает пусто.
С виду явно проблема дат, если сделаю соединение без Период, но выведу Период обеих таблиц в селекте, то увижу что есть одинаковые даты по которым могла бы соединиться.

Кто нибудь нарывался на данную проблему? Можете помочь решить?

sertak

Время в датах точно одинаковое?

pavlo

Цитата: sertak от 24 ноя 2016, 16:06
Время в датах точно одинаковое?
Да, 00:00:00

sertak


pavlo

Цитата: sertak от 24 ноя 2016, 16:59
Покажите запрос
Идея по сути такая документ формируется каждый день или раз в месяц.
Смотрит остатки с последнего такого документа и по свою дату.
Там где бух итоги на дату по всех разрезах 0, посмотреть на эту же дату по тому же разрезу остатки в регистре. Если есть списать эти остатки в регистре. (упрощенно как то так)

Хм, переписал чтобы сюда вложить и соединение заработало :zebzdr:, НО теперь в те моменты когда сработал 0 по счету бухгалтерскому то и в колонке СуммаОстаток из регистра тоже нет ничего видимо потому что движений не было там за это число, а нужно чтобы остаток показало на эту дату. Если взять просто ВТ остатки на эту дату, то покажет остаток.
Возможно нужно мутить временную со всеми датами и джойнить к этим датам остатки из регистра, но нет более нормального варианта (идеи)?


ВЫБРАТЬ
Итог.Период,
Итог.Счет,
Итог.Валюта,
Итог.Субконто1,
Итог.Субконто2,
Итог.Субконто3,
Итог.Субконто4,
СУММА(Итог.СуммаРег) КАК СуммаРег,
СУММА(Итог.СуммаБух) КАК СуммаБух,
СУММА(ЕСТЬNULL(ПереоценкаВалютОстаткиИОбороты.СуммаКонечныйОстаток, 0)) КАК СуммаОстаток,
ПереоценкаВалютОстаткиИОбороты.СчетПереоценки КАК СчетПереоценки
ИЗ
(ВЫБРАТЬ
ПереоценкаВалютОстаткиИОбороты.Период КАК Период,
ПереоценкаВалютОстаткиИОбороты.Счет КАК Счет,
ПереоценкаВалютОстаткиИОбороты.Валюта КАК Валюта,
ПереоценкаВалютОстаткиИОбороты.Субконто1 КАК Субконто1,
ПереоценкаВалютОстаткиИОбороты.Субконто2 КАК Субконто2,
ПереоценкаВалютОстаткиИОбороты.Субконто3 КАК Субконто3,
ПереоценкаВалютОстаткиИОбороты.Субконто4 КАК Субконто4,
ПереоценкаВалютОстаткиИОбороты.СуммаКонечныйОстаток КАК СуммаРег,
0 КАК СуммаБух,
0 КАК СуммаОборот
ИЗ
РегистрНакопления.ПереоценкаВалют.ОстаткиИОбороты(&НачДата, &КонДата, День, , Счет = Счет) КАК ПереоценкаВалютОстаткиИОбороты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
РегистрМСФООстаткиИОбороты.Период,
РегистрМСФООстаткиИОбороты.Счет,
РегистрМСФООстаткиИОбороты.Валюта,
РегистрМСФООстаткиИОбороты.Субконто1,
РегистрМСФООстаткиИОбороты.Субконто2,
РегистрМСФООстаткиИОбороты.Субконто3,
РегистрМСФООстаткиИОбороты.Субконто4,
0,
РегистрМСФООстаткиИОбороты.ВалютнаяСуммаКонечныйОстаток,
РегистрМСФООстаткиИОбороты.СуммаОборот
ИЗ
РегистрБухгалтерии.РегистрМСФО.ОстаткиИОбороты(&НачДата, &КонДата, День, , Счет = Счет, , ) КАК РегистрМСФООстаткиИОбороты) КАК Итог
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПереоценкаВалют.ОстаткиИОбороты(&НачДата, &КонДата, День, , ) КАК ПереоценкаВалютОстаткиИОбороты
ПО Итог.Счет = ПереоценкаВалютОстаткиИОбороты.Счет
И Итог.Валюта = ПереоценкаВалютОстаткиИОбороты.Валюта
И Итог.Субконто1 = ПереоценкаВалютОстаткиИОбороты.Субконто1
И Итог.Субконто2 = ПереоценкаВалютОстаткиИОбороты.Субконто2
И Итог.Субконто3 = ПереоценкаВалютОстаткиИОбороты.Субконто3
И Итог.Субконто4 = ПереоценкаВалютОстаткиИОбороты.Субконто4
И Итог.Период = ПереоценкаВалютОстаткиИОбороты.Период
ГДЕ
Итог.Субконто3 = &Субконто3

СГРУППИРОВАТЬ ПО
Итог.Период,
Итог.Счет,
Итог.Валюта,
Итог.Субконто1,
Итог.Субконто2,
Итог.Субконто3,
Итог.Субконто4,
ПереоценкаВалютОстаткиИОбороты.СчетПереоценки

sertak

Тогда нужно делать полное соединение вместо левого, при этом поля нужно будет выводить примерно так:
ЕСТЬNULL(ВТ1.Поле1,ВТ2.Поле1) КАК Поле1,
ЕСТЬNULL(ВТ1.Поле2,ВТ2.Поле2) КАК Поле2,
...
СУММА(ЕСТЬNULL(ВТ1.КакаяТоСумма,0)) КАК КакаяТоСумма,
СУММА(ЕСТЬNULL(ВТ2.СуммаОстаток,0)) КАК СуммаОстаток
...

pavlo

Цитата: sertak от 24 ноя 2016, 17:48
Тогда нужно делать полное соединение вместо левого, при этом поля нужно будет выводить примерно так:
ЕСТЬNULL(ВТ1.Поле1,ВТ2.Поле1) КАК Поле1,
ЕСТЬNULL(ВТ1.Поле2,ВТ2.Поле2) КАК Поле2,
...
СУММА(ЕСТЬNULL(ВТ1.КакаяТоСумма,0)) КАК КакаяТоСумма,
СУММА(ЕСТЬNULL(ВТ2.СуммаОстаток,0)) КАК СуммаОстаток
...
Это ничего не дает.
на дату нет оборотов и остатков не показывает. и с полным дупятся обычные даты, а на эту все равно нет остатков :(

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск