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

По теме из базы знаний
- История оптимизации одного большого запроса средствами MSSQL Profiler и 1С
- Анализируем SQL сервер глазами 1С-ника
- Расширенная проверка для 1С:Бухгалтерия 3.0: 45 видов доп. проверок
- Битва с призраками прошлого: ищем "битые" запросы после обновления релиза
- Семерых одним ударом: ищем все ошибки в запросе за один раз!
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) открываешь консоль запросов и смотришь цифры и реквизиты по каждой таблице.
Скорее всего проблема в том что ты не можешь объединить разные записи вот и косяк.
Но если ты делал на СКД, то период ты должен обозначить ролью и тогда все склеится!
Посмотри уроки Гилева по СКД.
Скорее всего проблема в том что ты не можешь объединить разные записи вот и косяк.
Но если ты делал на СКД, то период ты должен обозначить ролью и тогда все склеится!
Посмотри уроки Гилева по СКД.
При формировании врем. таблицы ЗаказыПоставщикамРаспределение у вас связь по количеству точно нужна?
Вот здесь:
Как по мне, достаточно
Вот здесь:
ПО ЗаказыПоставщикам.ЗаказПоставщику = РазмещениеЗаказовПокупателейТоварыУслуги.ЗаказПоставщику
И ЗаказыПоставщикам.Номенклатура = РазмещениеЗаказовПокупателейТоварыУслуги.Номенклатура
И ЗаказыПоставщикам.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателейТоварыУслуги.ХарактеристикаНоменклатуры
И ЗаказыПоставщикам.Количество = РазмещениеЗаказовПокупателейТоварыУслуги.Количество
Как по мне, достаточно
ПО ЗаказыПоставщикам.ЗаказПоставщику = РазмещениеЗаказовПокупателейТоварыУслуги.ЗаказПоставщику
И ЗаказыПоставщикам.Номенклатура = РазмещениеЗаказовПокупателейТоварыУслуги.Номенклатура
И ЗаказыПоставщикам.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателейТоварыУслуги.ХарактеристикаНоменклатуры
Одну ошибку нашла :) По-запарке в таблице ВсеВыбранныеПлатежи поставила вместо . Проблема количества строк в заказе поставщику снята, работает как со строками, связанными с одним заказом покупателя, так и с разными.
Остался вопрос с корректировкой заказа.
ОБЪЕДИНИТЬ
ОБЪЕДИНИТЬ ВСЕ
Остался вопрос с корректировкой заказа.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот