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