|   |   | 
| 
 | Условие в запросе | ☑ | ||
|---|---|---|---|---|
| 0
    
        yurikmellon2 21.08.19✎ 08:33 | 
        Добрый день.
 Коллеги, подскажите с условием. Что то туплю, не могу сообразить. Конфа БП 3.0 Есть нетиповой справочник "График платежей", в нём табличная часть "Платежи" с колонками ДатаПлатежа и СуммаПлатежа. Это плановые данные. И есть документы ПоступлениеНаРасчётныйСчет - это фактические данные. Отчёт на СКД выводит соответствующую таблицу с отбором по датам. Когда платежи месяц в месяц, всё хорошо. Но если график нарушается, то не видны плановые цифры, так как условие по датам не выполняется. Не могу сообразить, как задать условие, чтобы плановые цифры выводились всегда, а факт, когда он есть. Запрос: ВЫБРАТЬ ГрафикПлатежей.Наименование КАК Наименование, ГрафикПлатежей.Контрагент КАК Контрагент, ГрафикПлатежей.Договор КАК Договор, ГрафикПлатежей.Платежи.( НомерСтроки КАК НомерСтроки, ДатаПлатежа КАК ДатаПлатежа, СуммаПлатежа КАК СуммаПлатежа ) КАК Платежи, ХозрасчетныйОстаткиИОбороты.СуммаОборот КАК СуммаОборот, ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Субконто1, ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Субконто2, ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Субконто3, ХозрасчетныйОстаткиИОбороты.Счет КАК Счет, ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК СуммаОборотКт ИЗ Справочник.ГрафикПлатежей КАК ГрафикПлатежей ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты КАК ХозрасчетныйОстаткиИОбороты ПО ГрафикПлатежей.Договор = ХозрасчетныйОстаткиИОбороты.Субконто2 ГДЕ МЕСЯЦ(ГрафикПлатежей.Платежи.ДатаПлатежа) = МЕСЯЦ(ХозрасчетныйОстаткиИОбороты.Субконто3.Дата) И ГОД(ГрафикПлатежей.Платежи.ДатаПлатежа) = ГОД(ХозрасчетныйОстаткиИОбороты.Субконто3.Дата) Скрин: https://i.ibb.co/936Wx3S/image.jpg Видно, что в июне 2017 было два платежа, за июнь и за июль, поэтому плановые цифры за июль в отчет не попали. Подскажите с условием, плиз. | |||
| 1
    
        Cyberhawk 21.08.19✎ 08:35 | 
        Кому охота разбираться в твоей структуре и отчете     | |||
| 2
    
        yurikmellon2 21.08.19✎ 08:38 | 
        (1) если у кого то есть время и желание помочь, то почему бы и нет?
 Субконто1 это Контрагент Субконто2 это Договор Субконто3 это Документ | |||
| 3
    
        dezss 21.08.19✎ 08:40 | 
        А чего ТЧ не левым цепляешь?
 И ты ж в ГДЕ как раз к дате и цепляешься, так что он тебе должен выводить? И благодаря этому ГДЕ, у тебя левое становится внутренним. Переноси условие из ГДЕ в условия соединения, может тогда чета поменяется) | |||
| 4
    
        yurikmellon2 21.08.19✎ 08:44 | 
        (3) Соединение идёт по Договору. Я понимаю, что условие отбирает только те данные, в которых дата совпадает. Как переделать условие, чтобы план по попадал в таблицу всегда, вне зависимости от того был в этом месяце факт или нет?     | |||
| 5
    
        dezss 21.08.19✎ 08:51 | 
        (4) Переноси условие из ГДЕ в условия соединения!     | |||
| 6
    
        catena 21.08.19✎ 08:57 | 
        (4)Потому что условие на левую таблицу превращает левое соединение во внутреннее. Слушай dezss     | |||
| 7
    
        yurikmellon2 21.08.19✎ 08:59 | 
        (5) пытаюсь перенести условие в соединение
 ИЗ Справочник.ГрафикПлатежей КАК ГрафикПлатежей ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты КАК ХозрасчетныйОстаткиИОбороты ПО ГрафикПлатежей.Договор = ХозрасчетныйОстаткиИОбороты.Субконто2 И (МЕСЯЦ(ГрафикПлатежей.Платежи.ДатаПлатежа) = МЕСЯЦ(ХозрасчетныйОстаткиИОбороты.Субконто3.Дата) И ГОД(ГрафикПлатежей.Платежи.ДатаПлатежа) = ГОД(ХозрасчетныйОстаткиИОбороты.Субконто3.Дата)) при формировании выдает "Запрос невозможно исполнить. В условиях соединения запроса не допускается обращение к табличным частям" | |||
| 8
    
        dezss 21.08.19✎ 09:01 | 
        (7) Вооот. Так что цепляй ТЧ левым, а не обращайся к ней через точку.     | |||
| 9
    
        yurikmellon2 21.08.19✎ 09:03 | 
        (8) вроде все слова по отдельности понятны, а смысл от меня ускользает) Как это сделать?     | |||
| 10
    
        Cyberhawk 21.08.19✎ 09:06 | 
        (9) Вместо "ИЗ 
 Справочник.ГрафикПлатежей" надо "ИЗ Справочник.ГрафикПлатежей.Платежи" | |||
| 11
    
        DmVl76 21.08.19✎ 09:06 | 
        (8) Выбираешь из ГрафикПлатежей.Платежи
 И вот это зачем? МЕСЯЦ(ГрафикПлатежей.Платежи.ДатаПлатежа) = МЕСЯЦ(ХозрасчетныйОстаткиИОбороты.Субконто3.Дата) И ГОД(ГрафикПлатежей.Платежи.ДатаПлатежа) = ГОД(ХозрасчетныйОстаткиИОбороты.Субконто3.Дата) Есть выражение НАЧАЛОПЕРИОДА, Субконто3.Дата - практически стопроцентные тормоза. Здесь можно избавиться от них, периодичность виртуальной таблицы устанавливаешь месяц и добавляешь к условиям соединения НАЧАЛОПЕРИОДА(ГрафикПлатежей.Платежи.ДатаПлатежа) = ХозрасчетныйОстаткиИОбороты.Период, ГДЕ выкидываешь. | |||
| 12
    
        dezss 21.08.19✎ 09:13 | 
        (11) Только НАЧАЛОПЕРИОДА(ГрафикПлатежей.Платежи.ДатаПлатежа,"МЕСЯЦ")     | |||
| 13
    
        dezss 21.08.19✎ 09:14 | 
        (10) Не, лучше именно левым, а то у него из Справочник.ГрафикПлатежей в выборку поля вытягиваются.     | |||
| 14
    
        dezss 21.08.19✎ 09:15 | 
        (9) Таб часть - это отдельная таблица, она не хранится в таблице самого документа. Связь между ними делается через ссылку.     | |||
| 15
    
        Cyberhawk 21.08.19✎ 09:16 | 
        (13) Вытянет от ссылки, которая есть в тч     | |||
| 16
    
        yurikmellon2 21.08.19✎ 09:25 | 
        ИЗ
 Справочник.ГрафикПлатежей.Платежи КАК ГрафикПлатежейПлатежи ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ГрафикПлатежей КАК ГрафикПлатежей ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты КАК ХозрасчетныйОстаткиИОбороты ПО ГрафикПлатежей.Договор = ХозрасчетныйОстаткиИОбороты.Субконто2 ПО (МЕСЯЦ(ГрафикПлатежейПлатежи.ДатаПлатежа) = МЕСЯЦ(ХозрасчетныйОстаткиИОбороты.Субконто3.Дата)) И (ГОД(ГрафикПлатежейПлатежи.ДатаПлатежа) = ГОД(ХозрасчетныйОстаткиИОбороты.Субконто3.Дата)) выводит вообще все поступления https://i.ibb.co/mhmpVWP/image.jpg | |||
| 17
    
        DmVl76 21.08.19✎ 09:51 | 
        ГрафикПлатежейПлатежи.Ссылка.Контрагент,
 ... ... ИЗ Справочник.ГрафикПлатежей.Платежи КАК ГрафикПлатежейПлатежи ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(, , Месяц) КАК ХозрасчетныйОстаткиИОбороты ПО ГрафикПлатежейПлатежи.Ссылка.Договор = ХозрасчетныйОстаткиИОбороты.Субконто2 И НАЧАЛОПЕРИОДА(ГрафикПлатежейПлатежи.ДатаПлатежа,МЕСЯЦ) = ХозрасчетныйОстаткиИОбороты.Период | |||
| 18
    
        yurikmellon2 21.08.19✎ 10:15 | 
        (17) да, похоже на правду. Спасибо большое     | |||
| 19
    
        yurikmellon2 21.08.19✎ 10:49 | 
        (17) тогда уж ещё в догонку вопрос. Выводятся только строки по которым было поступление. Как вывести строки из Графика платежей, по которым поступлений ещё не было?     | |||
| 20
    
        Cyberhawk 21.08.19✎ 10:53 | 
        (19) Убери "где"     | |||
| 21
    
        yurikmellon2 21.08.19✎ 11:37 | 
        Разобрался, всем спасибо, задача решена     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |