Ут 10.3
Платформа 8.2
Отчет: взаиморасчеты с Комиссионерами
РегистрНакопления: ТоварыПереданные
В данной конфигурации отчет "Взаиморасчеты с Комиссионерами" не охватывает всю потребность нашего предприятия, и мне дали задание создать новый отчет такого типа.
Уже больше неделю ломаю голову как это правильно сделать в СКД.
Так как я на 8.2 не давно не могу найти правильную технологию чтоб товары в рамке одного договора с контрагента группировались по документу "РеализацияТоваровУслуг" и БезДвижения (то есть нету реализации есть только отчет продавца или возврат)
Да трудно объяснить смысл вопроса, но кто работал с этим отчетом на УТ 10.3 поймет (там это реализовано по заказам)
У меня получился вот такой вот отчет, это все в СКД, таблица собрана по частям сперва из Регистра вытащил только по Регистратору (РеализацияТоваровУслуг), к нему приплюсовал (полное соединение) остатки на начало периода, обороты и остатки. Плюс ко всему этому достал долг контрагента по договору комиссии на начало периода из регистра (ВзаиморасчетыСКонтрагентами), суммуОплаты и СуммуВознаграждения из регистра (НДСРасчетыСПоставщиками)
Мне кажется что я иду лесом. и Сумма Оплаты, СуммаВознаграждения и Долг повторяются в итоговом отчете по регистратору. Пробовал убрать в настройках СКД "Ресурсы" не получается.... Если не скучно могу еще выставить кодИзменено 06.10.11 13:56:49
Никогда не пользуюсь полным соединением (только левое)!
1) Посмотри размножило ли тебе таблицу полное соединение и как размножило.
2) Посмотри "уникально" ли условие соединения таблиц.
Без полного соединения никак, потому что номенклатура может быть в остатках но не быть в документе реализация или наоборот. На этот случай поставил проверку в "Объединении" типа Выбор когда ОбщийОборотЗаПереод.СуммаВзаиморасчетовРасход <> 0 Тогда. Так что все ок. В результате нет повторений и товары все попадают в отчет по факту, проверял не раз.
Одна проблема, суммы Сумма Оплаты, СуммаВознаграждения и Долг повторяются по Регистратору в Рамках одного договора. не могу понять в чем фишка..... Проверял в объединении эти суммы приплюсовываются только к тем строкам где есть "Регистратор" хотя соединение по Контрагенту и ДоговоруКонтрагента
Примерно разобрался...
У тебя множится результирующая таблица и множит его полное соединение (и за одно множит результаты остальных таблиц).
Тебе нужно разделить операцию в два шага:
1) Сначала соединить полное соединение (т.е. первые две таблицы).
2) Подзапросом соединить все остальные вместе.
3) Потом соединить таблицы, с первого шага и со второго!
А вообще я бы полностью переписал весь запрос в один - без временных таблиц, но это как кому нравится.....Изменено 06.10.11 14:54:25
Дело в том, что MS SQL не позволяет вязать в один шаг разные соединения (полное и левое), поэтому как там это вяжется в 1С вопрос если честно сложный, надо пробовать...
И еще нужно предусмотреть момент когда у тебя пустой регистратор, нужно как-то исключить строки с пустым регистратором. Возможно вообще сделать по-другому:
Сначала сделать все левые соединения, а только потом вязать полное соединение, так вроде точно не размножит, но вязать сразу все вместе точно не стоит.Изменено 06.10.11 15:16:52
Попробовал варианты выше описанные, все равно получается одно и тоже. Проблема кажется в том что Ресурс "Регистратор" у меня группируется в выводимом отчете. Поэтому суммы Сумма Оплаты, СуммаВознаграждения и Долг там дублируются, стоит группировку убрать по этому реквизиту так суммы не повторяются (должен уточнить что в "Наборе данных" в Выражение представления стоит "Ноль" чтоб не повторять эту сумму в полях номенклатуры)