v8: нужен отчет по контрагентам, на какой договор сколько было оплачено #441044


#0 by Necytij
В общем нужно выводить отчет по контрагентам, на какой договор сколько было оплачено. Написал запрос:                   |    СчетФактураВыданный.ВКассу"; Опыта пока очень мало, только-только почитал книжки. Поэтому и с этим возни у меня возникло довольно много проблем. Но в чем собственно проблема сейчас - должен ведь считать сумму и по счет-фактурам, а не считает их. По приходникам и по кассовым ордерам считает, а по Счет-фактурам нет. '(( Пробовал загнать весь этот текст во вложенный отчет(без СУММА и СГРУППИРОВАТЬ), и потом там установил СУММА(СчетфактураВыданный.СуммаДокумента). Результат тот же - выдает весь список счет-фактур за определенный период, а не с объединением по контрагентам, договорам. Попробовал использовать "ИТОГИ СУММА ПО Контрагент, ДоговорКонтрагента", вообще муть какая-то получается. Помогите, пожалуйста. Посоветуйте что здесь может быть неправильно?
#1 by H A D G E H O G s
"ВзаиморасчетыСКонтрагентами"
#2 by Рэйв
ВБанк ВКассу ..Это суммы. Какого @@@ ты по ним группируешь? Исключи суммируемые поля из группировки и посмотри на результат
#3 by Necytij
[2] Я бы и не группировал, но вот сам построитель запросов и платформа ругаются, да и прочитал, что в 8-й версии 1С, каждое поле из запроса должно либо учавствовать в агрегатной функции, либо быть группировачным полем. Процитировать точно не могу, но спасибо автору этого поста, по-моему где-то тут на форуме и вычитал...
#4 by Necytij
[1] Идея создать регистр - хорошая, спасибо. Но в данном случае мне бы желательно запрос написать. Потому что там муть у них с ведением бухгалтерии и договоров в частности.
#5 by ShoGUN
Он пытался сказать, что у тебя должно быть СУММА(СчетФактураВыданный.ВБанк) СУММА(СчетФактураВыданный.ВКассу) Либо вообще эти поля убери нахрен.
#6 by Necytij
[5] Они у меня суммируются во вложенном запросе, куда мне их еще суммировать? - на каждый договор будет одно значение ВБанк и одно ВКассу. Значение это нужно, никуда убирать его нельзя. Кстати, такой вариант в порывах паники тоже пробовал. Никакой реакции. Если стоит СУММА в основном и вложенном запросе, то результат тот же, что и в том запросе, что написан выше, если СУММА по полям ВБанк и ВКассу только в основном, то количество строк увеличивается (на один договор может быть как несколько счет-фактур так и несколько платежей, при чем их количество может быть не равно), и СУММА складывается там где надо и там где не нужно. (К примеру, в выбранном сроке 2 счет-фактуры и 3 платежа, по всем полям будет сложено 3(или скорее даже 6, честно говоря не стал считать где и как, увидел просто в одной из строк значение в 3 раза превышающее, нужное) значения, что сделает значение поля СуммаПоСчетФактуре неверным, туда будет добавлен дубликат одной из записей счет-фактуры).
#7 by Necytij
"На каждый договор будет одно значение ВБанк и одно ВКассу." В смысле уж как попадется, может и ни одного, просто не более одного значения в поле на каждый договор.
#8 by ShoGUN
Так... Много текста. Как должна выглядеть таблица результата запроса? Нарисуй например mxl и выложи куда-нить.
#9 by HEKPOH
"Они у меня суммируются во вложенном запросе, куда мне их еще суммировать?" - и что? суммируй - хуже не будет)
#10 by Птица
а зачем во внешнем запросе сгруппировать, если ты все равно группируешь по дате и номеру сф? убери дату и номер из группировок и из выбрать
#11 by Птица
к тому же, у тебя суммы двух присоединенных таблиц будут задваиваться, затраиваться и т.д. - по числу счетов-фактур на конкретном договоре
#12 by Птица
в общем, нужно исходить из того, какие договора должны попасть в запрос. если все, то главная таблица будет справочник.Договоры если те, по которым были какие-то движения за период, то лучше сделать через ОБЪЕДИНИТЬ
#13 by Necytij
[10]-[12] оо, и то верно, в этом случае будут увеличиваться суммы платежек. Блин, вторые сутки запрос этот пишу и все равно неправильный написал. ОБЪЕДИНИТЬ, надо покопать в эту сторону. Возможно это вариант. [8] Рисовать, простите, не умею. таблица д.б. такой: Контрагент/ Номер договора/ наименованиеДоговора/ СуммаДоговора/ СуммаВыполненныхРабот (определяется поСчетФактурам)/ ОплаченоВКассу/ ОплаченоВБанк/ ЗадолженностьНаКонецПериода(это поле я пока в запрос не включал, ибо и так не работает))). [9] Я ведь уже писал, что так тоже пробовал.
#14 by ShoGUN
Истину глаголит, потому что связь СчетФактура-Платежка получается многие ко многим. Через договор будут соединяться каждый с каждой, в результате - чушь.
#15 by Птица
кроме того, через левое соединение могут не попасть те договоры, по которым был платеж, но не было счетов-фактур
#16 by Necytij
Всем большое спасибо, пошел назад учиться ))
#17 by Necytij
Не стал делать отдельный регистр, сделал запрос через БухгалтерскийРегистр. Это вообще для вменяемого человека нормально? Т.е. после того как я его написал, я понял, что куда правильнее для меня самого было уговарить клиента сделать по-человечески, ввести регистр, соответствующие движения, пару справочников и взять вдобавок за это больше, чем за один отчет, ведь копался с этим запросом трое суток невылазно. Запрос.Текст =     Еще и потом такая штука - в запросе 1С не стала считать "Долг" = Сумма - ВКассу - ВБанк. В итоге вывожу как текст в ячейку: Область.Область("R1C7").Текст =    Формат(?(Выборка.Сумма = NULL, 0, Выборка.Сумма) - ?(Выборка.ВБанк = NULL, 0, Выборка.ВБанк) - ?(Выборка.ВКассу = NULL, 0, Выборка.ВКассу), "ЧДЦ=2; ЧРД=','; ЧН='0,00'"); Это тоже маразм?
#18 by eklmn
бред уже то, что ты клиенту объясняешь что нужно вписать в конфу , а что нет. "С не стала считать "Долг" = Сумма - ВКассу - ВБанк" тоже бред
#19 by Tafa
И ты за ТАКОЕ берешь деньги?
#20 by Necytij
[18] А ты с клиентом не равзговариваешь? Не говоришь за что он платить будет? Почему именно столько... и т.п. Многие небольшие фирмы когда слышит цену в 3000 рос.руб уже говорят - "иди отсюда пока цел..." А реальные фирмы и 15к берут за небольшую доделку. "1С не стала считать "Долг" = Сумма - ВКассу - ВБанк" тоже бред" Почему это? Писал как функцию в запрос, СУММА(1-2-3) -> не считает, писал как просто набор арифметических операций -> err."нельзя преобразовать в число", так как не в каждой записи есть значение по всем полям. Пришлось дописать до вот такого. [19] Буду брать. Еще ни разу не брал - первый, небольшой заказ. Потому такие ужасы. Не пугайтесь.
#21 by los_hooliganos
надо писать: case when СУММА(ОтчетПоДоговорам.Сумма1) - СУММА(ОтчетПоДоговорам.ВКассу1)- СУММА(ОтчетПоДоговорам.ВБанк1)is null then 0 else СУММА(ОтчетПоДоговорам.Сумма1) - СУММА(ОтчетПоДоговорам.ВКассу1)- СУММА(ОтчетПоДоговорам.ВБанк1) end КАК Долг,
#22 by Necytij
[20] Спасибо. Сохраню себе такую штуку. Но это как я понимаю только сделает вывод нуля в поле Долг, вместо Null, верно? А мне результат запроса просто выдавал пустое поле. Я предполагаю, обработчик запроса также как сам 1С не стал преобразовывать Null в число ноль. Поэтому для этой задачи там выражение изрядно усложниться, пожалуй.
#23 by Necytij
Хотя в агрегатной функции СУММА жалоб на него(Null) не было. (чешу затылок)
#24 by los_hooliganos
Так делать не надо, иначе при агрегировании данных, null и целых чисел вообще непонятно чего получиться.
#25 by Ksandr
#26 by Necytij
[24, 25] Ясно. Спасибо большое за еще один отличный совет. Просто как мне выдал конструктор запроса, я и сделал. Даже не подумал, что может быть по-другому - не Null.
#27 by eklmn
клиент получает то что хочет, а как я это буду делать, его не должно волновать впринципе. Или он у тебя разбирается на уровне прога? думаю клиент уже заподозрил неладное :)
#28 by Necytij
[27] Ты не прав по обоим пунктам. По первому ты меня вообще не понял, по-второму, говоришь абсолютные глупости.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С