|   |   | 
| 
 | Правильный алгоритм запроса | ☑ | ||
|---|---|---|---|---|
| 0
    
        LivingStar 12.09.13✎ 12:52 | 
        Как правильнее построить данную выборку.
 1. Нужно получить СуммуОплаты по трем документам РасходныйКассовыйОрдер, ПлатежноеПоручениеИсходящее, ВозвратыПоставщику. То есть это сумма реквизита СуммаДокумента этих документов. 2. Выборка по документу ПоступлениеТоваровУслуг с суммойДокумента отсортированная по убыванию. 3. Затем нужно уменьшать (погашать) СуммуОплаты, суммами документов ПоступлениеТоваровУслуг. 4. Как нехватило СуммыОплаты для гашения сумм ПоступленияТоваровУслуг, идут сверка даты документа и даты договора, допустимого числа дней задолженности. Этот пункт не самый важный так как уже есть накопленная Суммаоплаты выборка и идет просто её перебор. Думаю как лучше это сделать в запросе??? Пакетные запросы врят ли подойдут? | |||
| 1
    
        LivingStar 12.09.13✎ 12:57 | 
        Думаю использовать вложенный запрос.     | |||
| 2
    
        Godofsin 12.09.13✎ 12:58 | 
        думаю объединение с "-" на суммы     | |||
| 3
    
        Maxus43 12.09.13✎ 12:59 | 
        ОТкуда ты узнаешь что Платёжкой хаплатили за конкретный документ ПТУ?     | |||
| 4
    
        cw014 12.09.13✎ 12:59 | 
        Правильный вариант - обращение к регистру накопления "Взаиморасчеты с контрагентами"     | |||
| 5
    
        Maxus43 12.09.13✎ 13:01 | 
        Без ведения договоров по документам расчета задача не решается     | |||
| 6
    
        LivingStar 12.09.13✎ 13:12 | 
        (3) Тз так поставили. Свалить сумму трех документов в кучу, это будет сумма оплаты. И ею гасить суммы ПоступленияТоваровУслуг, пока её хватит. Вот пока думаю как это сделать, делаю Вложенным запросом.
 (4) Нужно будет его рассмотреть, то есть из него выбирать суммы этих трех документов? (5) Возможно правильно вести договора по документам расчетов, но мне не понятно как это. Если в данной базе это не делается может это по каким то причинам. Или потому что не продуманно. Пока это смутно представляю. | |||
| 7
    
        Тролль главный 12.09.13✎ 13:13 | 
        у запросов нет алгоритмов, запросы пишутся на декларативном, а не алгоритмическом языке     | |||
| 8
    
        LivingStar 12.09.13✎ 13:17 | 
        Вверху будет сумма, но она общая, так как выборка будет строиться на какую то дату, не пойму это что всегда нужно будет таскать с собой эту сумму????
 ВЫБРАТЬ ВложенныйЗапрос.Ссылка КАК Ссылка, СУММА(ВложенныйЗапрос.СуммаДокумента) КАК СуммаДокумента ИЗ (ВЫБРАТЬ ЕСТЬNULL(РасходныйКассовыйОрдер.СуммаДокумента, 0) КАК СуммаДокумента, РасходныйКассовыйОрдер.Ссылка КАК Ссылка ИЗ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЕСТЬNULL(ПлатежноеПоручениеИсходящее.СуммаДокумента, 0), ПлатежноеПоручениеИсходящее.Ссылка ИЗ Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЕСТЬNULL(ВозвратТоваровПоставщику.СуммаДокумента, 0), ВозвратТоваровПоставщику.Ссылка ИЗ Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику) КАК ВложенныйЗапрос ГДЕ ВложенныйЗапрос.СуммаДокумента <> 0 СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Ссылка УПОРЯДОЧИТЬ ПО Ссылка ИТОГИ ПО ОБЩИЕ | |||
| 9
    
        LivingStar 12.09.13✎ 13:32 | 
        Беру итоговую сумму (8), сейчас выбираю Поступление товаров услуг и начинаю гасить !!! Не пойму до конца только выборка по документам будет всегда вестись  с самого начала???     | |||
| 10
    
        catena 12.09.13✎ 13:44 | 
        (9)Минимальная дата документа и будет датой возникновения задолженности:
 ВЫБРАТЬ
 | |||
| 11
    
        LivingStar 12.09.13✎ 13:59 | 
        (10) Спасибо большое, завтра поразбираю )     | |||
| 12
    
        LivingStar 13.09.13✎ 05:51 | 
        (10) Оригинальная у вас выборка Катена, но долги все с минусом идут. И на сколько она корректна? Пока не могу сообразить...     | |||
| 13
    
        catena 13.09.13✎ 05:57 | 
        (12)Долги все с минусом, потому что условие такое:
 где тзОплаты.СуммаПлатежа - тзРаспределениеДолга.СуммаДокументаДО - тзРаспределениеДолга.СуммаДокумента <0 Убрать это условие и посмотреть, как распределяется задолженность по документам. | |||
| 14
    
        LivingStar 13.09.13✎ 05:58 | 
        (10) Вы этим реально пользуетесь? Или по этому топику накидали запрос?
 Я хотел взять итог выборки (8) и ею погашать суммы выбранных документов ПоступлениеТоваровУслуг. | |||
| 15
    
        catena 13.09.13✎ 06:03 | 
        (14)Нет, не пользуюсь. Я ж разве заставляю, каждый волен самостоятельно выбирать способ наступать на грабли.     | |||
| 16
    
        LivingStar 13.09.13✎ 06:05 | 
        (15) Да просто я пока не разобрался с запросом и пытался узнать, применимо ли это у вас.     | |||
| 17
    
        LivingStar 13.09.13✎ 06:07 | 
        (15) А документы РасходныйКассовыйОрдер и ВозвратПоставщику вы не ичитываете?     | |||
| 18
    
        LivingStar 13.09.13✎ 06:12 | 
        (15) Катена а можно узнать что такое СуммаДокументаДО ?     | |||
| 19
    
        catena 13.09.13✎ 06:29 | 
        (17)Я специально выделила отдельно таблицы оплат и покупок, можете их формировать по своему усмотрению, сохраняя общую структуру.
 (18) Это накопленный итог сумм до даты документа. | |||
| 20
    
        LivingStar 13.09.13✎ 06:32 | 
        (19) так в таблице оплат у вас не учитываются документы РасходныйКассовыйОрдер и ВозвратПоставщику, это принципиально?     | |||
| 21
    
        catena 13.09.13✎ 06:36 | 
        (20)Еще раз: я сделала пример. Добавьте в таблицу оплат всё, что вам надо и запрос будет так же работать. Я показала принцип, а уж адаптировать его под себя придется самостоятельно, извините.     | |||
| 22
    
        LivingStar 13.09.13✎ 06:39 | 
        (21) Ясно спасибо вам, понял!!!     | |||
| 23
    
        LivingStar 13.09.13✎ 07:18 | 
        (21) Можно ещё вопрос? В тзОплаты вы берёте Сумму из табличной части документа, а СуммаДокумента для этого не подойдет?     | |||
| 24
    
        catena 13.09.13✎ 07:32 | 
        (23)Подойдет.     | |||
| 25
    
        LivingStar 13.09.13✎ 08:14 | 
        (24) Ок!     | |||
| 26
    
        LivingStar 13.09.13✎ 12:48 | 
        (24) Катена, можно ещё вопрос, если он вам не осложнит ситуацию?!
 В тзРаспределениеДолга, 2 вложенных запроса, тч тзПокупки и тзПокупки1 в первом не используется группировка вообще, а во втором используется и суммирование Сумма(СуммаДокумента) - это значит что в первом вложенном запросе всегда будет просто сумма документа, а во втором эта сумма будет накапливаться? | |||
| 27
    
        LivingStar 13.09.13✎ 12:52 | 
        (26) или, не, ошибочное мнение, группировка и суммирование только в тзРаспределениеДолга, где связанны 2 таблицы, а в тзПокупки и тзПокупки1 нет группировки вообще ....     | |||
| 28
    
        catena 13.09.13✎ 13:02 | 
        (26)Там нет вложенных запросов. Там тзПокупки соединяется сама с собой по дате, т.е. для каждой строки тзПокупки мы собираем все строки из той же тзПокупки с меньшей датой. И суммируем.
 т.е. тзПокупки.СуммаДокумента - сумма текущего документа СУММА(тзПокупки1.СуммаДокумента) - это сумма всех предыдущих документов. | |||
| 29
    
        LivingStar 17.09.13✎ 08:32 | 
        (28) большое спасибо за ответ, продолжаю разбираться с алгоритмом!!!     | |||
| 30
    
        LivingStar 17.09.13✎ 08:52 | 
        Сейчас разбираюсь с итоговым запросом. Выясняю какие секреты он скрывает, как настраеваем, какую информацию выводит...     | |||
| 31
    
        LivingStar 17.09.13✎ 08:55 | 
        не вижу суммы оплат, только итоговая (...     | |||
| 32
    
        LivingStar 17.09.13✎ 11:34 | 
        Вопрос в том, может ли запрос в (10).
 Показывать как гасится сумма оплаты суммами покупки может нужно какие группировки убрать, пока в выборке не могу отследить какую либо связь, уловил это только в одной строке, потом все размыто становится... | |||
| 33
    
        LivingStar 17.09.13✎ 11:44 | 
        а вот, вот это важно в итоговом запросе:
 УПОРЯДОЧИТЬ ПО Контрагент, ДоговорКонтрагента, Дата Интересно можно ли без этого как то связать оптаты с покупками. Без сортировки я так понимаю все расплывается. | |||
| 34
    
        LivingStar 17.09.13✎ 11:50 | 
        приболел, ерунду говорю какую то, смотрю дальше эту интересную выборку     | |||
| 35
    
        LivingStar 10.10.13✎ 11:33 | 
        (10) Скажите пожалуйста что такое СуммаДокумента в итоговом запросе? Сумма эта не сходится ни с какими данными, не приумножается ли она из за того что есть связь с таблицей товары???     | |||
| 36
    
        LivingStar 10.10.13✎ 12:59 | 
        (35+) Не могу понять СуммаДокумента, что это за значение, у всех строк одинаковое по каждому контрагенту....     | |||
| 37
    
        LivingStar 10.10.13✎ 13:00 | 
        СуммаПлатежа то есть.....опять опечатался     | |||
| 38
    
        kabanoff 10.10.13✎ 13:28 | 
        Тяжелый случай.     | |||
| 39
    
        LivingStar 10.10.13✎ 13:51 | 
        все Ок, разобрался...... спасибо!
 буду дорабатывать выборку! | |||
| 40
    
        Aprobator 10.10.13✎ 14:00 | 
        песец. И это чудо еще интересуется на чем можно калымить кроме 1С. Да тебя к 1С вообще подпускать нельзя.     | |||
| 41
    
        LivingStar 11.10.13✎ 11:06 | 
        В запросе (10) хочу добавить несколько документов к тзОплаты и отнять один документ от ПоступленияТоваровУслуг. А именно:
 тзОплаты - ПлатежноеПоручениеИсходящее - РасходныйКассовыйОрдер - АвансовыйОтчет - ПоступленниеТоваровУслуг (минус ВозвратТоваровПоставщику) Кому не сложно подскажите как это лучше сделать в теории? Добавить пакетные запросы, связать из в итоговом и рассчитать? Или нужно делать вложенные запросы, менять структуру этой выборки? | |||
| 42
    
        LivingStar 11.10.13✎ 11:44 | 
        up!     | |||
| 43
    
        LivingStar 11.10.13✎ 13:08 | 
        Почему пропали суммы из колонок СуммаПлатежа и Долг ?
 Что я не так выбрал? ВЫБРАТЬ ПлатежноеПоручениеИсходящее.ДоговорКонтрагента, ПлатежноеПоручениеИсходящее.Контрагент, СУММА(ЕСТЬNULL(ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.СуммаПлатежа, 0)) КАК СуммаПлатежа ПОМЕСТИТЬ тзОплаты_ПлатежноеПоручениеИсходящее ИЗ Документ.ПлатежноеПоручениеИсходящее.РасшифровкаПлатежа КАК ПлатежноеПоручениеИсходящееРасшифровкаПлатежа ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее ПО ПлатежноеПоручениеИсходящееРасшифровкаПлатежа.Ссылка = ПлатежноеПоручениеИсходящее.Ссылка ГДЕ ПлатежноеПоручениеИсходящее.Проведен И ПлатежноеПоручениеИсходящее.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийППИсходящее.ОплатаПоставщику) СГРУППИРОВАТЬ ПО ПлатежноеПоручениеИсходящее.ДоговорКонтрагента, ПлатежноеПоручениеИсходящее.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РасходныйКассовыйОрдер.ДоговорКонтрагента, РасходныйКассовыйОрдер.Контрагент, СУММА(ЕСТЬNULL(РасходныйКассовыйОрдерРасшифровкаПлатежа.СуммаПлатежа, 0)) КАК СуммаПлатежа ПОМЕСТИТЬ тзОплаты_РасходныйКассовыйОрдер ИЗ Документ.РасходныйКассовыйОрдер.РасшифровкаПлатежа КАК РасходныйКассовыйОрдерРасшифровкаПлатежа ЛЕВОЕ СОЕДИНЕНИЕ Документ.РасходныйКассовыйОрдер КАК РасходныйКассовыйОрдер ПО РасходныйКассовыйОрдерРасшифровкаПлатежа.Ссылка = РасходныйКассовыйОрдер.Ссылка ГДЕ РасходныйКассовыйОрдер.Проведен И РасходныйКассовыйОрдер.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийРКО.ОплатаПоставщику) СГРУППИРОВАТЬ ПО РасходныйКассовыйОрдер.ДоговорКонтрагента, РасходныйКассовыйОрдер.Контрагент ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ АвансовыйОтчетОплатаПоставщикам.Контрагент, АвансовыйОтчетОплатаПоставщикам.ДоговорКонтрагента, СУММА(ЕСТЬNULL(АвансовыйОтчетОплатаПоставщикам.Сумма, 0)) КАК СуммаПлатежа ПОМЕСТИТЬ тзОплаты_АвансовыйОтчет ИЗ Документ.АвансовыйОтчет.ОплатаПоставщикам КАК АвансовыйОтчетОплатаПоставщикам ГДЕ АвансовыйОтчетОплатаПоставщикам.Ссылка.Проведен СГРУППИРОВАТЬ ПО АвансовыйОтчетОплатаПоставщикам.Контрагент, АвансовыйОтчетОплатаПоставщикам.ДоговорКонтрагента ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеТоваровУслуг.Ссылка, ПоступлениеТоваровУслуг.Номер КАК НомерДокумента, ПоступлениеТоваровУслуг.НомерВходящегоДокумента КАК НомерВходящегоДокумента, ПоступлениеТоваровУслуг.Дата КАК ДатаДокумента, ПоступлениеТоваровУслуг.ДоговорКонтрагента КАК Договор, ПоступлениеТоваровУслуг.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности, ПоступлениеТоваровУслуг.Контрагент КАК Контрагент, ЕСТЬNULL(ПоступлениеТоваровУслуг.СуммаДокумента, 0) КАК СуммаКОплате, НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ПоступлениеТоваровУслуг.Дата, ДЕНЬ, ПоступлениеТоваровУслуг.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности), ДЕНЬ) КАК ПоследняяДатаОплаты ПОМЕСТИТЬ тзПокупки ИЗ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг ГДЕ ПоступлениеТоваровУслуг.Проведен И ПоступлениеТоваровУслуг.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности <> 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ тзПокупки.Ссылка, тзПокупки.ДатаДокумента, тзПокупки.НомерДокумента, тзПокупки.НомерВходящегоДокумента, тзПокупки.Контрагент, тзПокупки.Договор, тзПокупки.ДопустимоеЧислоДнейЗадолженности, тзПокупки.СуммаКОплате, тзПокупки.ПоследняяДатаОплаты, СУММА(тзПокупки1.СуммаКОплате) КАК СуммаКОплатеДО ПОМЕСТИТЬ тзРаспределениеДолга ИЗ тзПокупки КАК тзПокупки ЛЕВОЕ СОЕДИНЕНИЕ тзПокупки КАК тзПокупки1 ПО тзПокупки.Контрагент = тзПокупки1.Контрагент И тзПокупки.Договор = тзПокупки1.Договор И тзПокупки.ДатаДокумента > тзПокупки1.ДатаДокумента СГРУППИРОВАТЬ ПО тзПокупки.Ссылка, тзПокупки.ДатаДокумента, тзПокупки.НомерДокумента, тзПокупки.НомерВходящегоДокумента, тзПокупки.Контрагент, тзПокупки.Договор, тзПокупки.ДопустимоеЧислоДнейЗадолженности, тзПокупки.СуммаКОплате, тзПокупки.ПоследняяДатаОплаты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ тзРаспределениеДолга.Ссылка КАК Ссылка, тзРаспределениеДолга.Договор КАК Договор, тзРаспределениеДолга.НомерДокумента КАК НомерДокумента, тзРаспределениеДолга.НомерВходящегоДокумента КАК НомерВходящегоДокумента, тзРаспределениеДолга.ДатаДокумента КАК ДатаДокумента, тзРаспределениеДолга.Контрагент КАК Контрагент, тзОплаты_ПлатежноеПоручениеИсходящее.СуммаПлатежа + тзОплаты_РасходныйКассовыйОрдер.СуммаПлатежа + тзОплаты_АвансовыйОтчет.СуммаПлатежа КАК СуммаПлатежа, тзРаспределениеДолга.СуммаКОплате КАК СуммаКОплате, тзРаспределениеДолга.СуммаКОплатеДО КАК СуммаКОплатеДО, тзРаспределениеДолга.СуммаКОплате + тзРаспределениеДолга.СуммаКОплатеДО КАК СуммаКОплатеВсего, тзРаспределениеДолга.ДопустимоеЧислоДнейЗадолженности КАК ДопустимоеЧислоДнейЗадолженности, тзОплаты_ПлатежноеПоручениеИсходящее.СуммаПлатежа + тзОплаты_РасходныйКассовыйОрдер.СуммаПлатежа + тзОплаты_АвансовыйОтчет.СуммаПлатежа - тзРаспределениеДолга.СуммаКОплате - тзРаспределениеДолга.СуммаКОплатеДО КАК Долг, тзРаспределениеДолга.ПоследняяДатаОплаты КАК ПоследняяДатаоплаты ИЗ тзРаспределениеДолга КАК тзРаспределениеДолга ЛЕВОЕ СОЕДИНЕНИЕ тзОплаты_ПлатежноеПоручениеИсходящее КАК тзОплаты_ПлатежноеПоручениеИсходящее ПО тзРаспределениеДолга.Контрагент = тзОплаты_ПлатежноеПоручениеИсходящее.Контрагент И тзРаспределениеДолга.Договор = тзОплаты_ПлатежноеПоручениеИсходящее.ДоговорКонтрагента ЛЕВОЕ СОЕДИНЕНИЕ тзОплаты_РасходныйКассовыйОрдер КАК тзОплаты_РасходныйКассовыйОрдер ПО тзРаспределениеДолга.Контрагент = тзОплаты_РасходныйКассовыйОрдер.Контрагент И тзРаспределениеДолга.Договор = тзОплаты_РасходныйКассовыйОрдер.ДоговорКонтрагента ЛЕВОЕ СОЕДИНЕНИЕ тзОплаты_АвансовыйОтчет КАК тзОплаты_АвансовыйОтчет ПО тзРаспределениеДолга.Договор = тзОплаты_АвансовыйОтчет.ДоговорКонтрагента И тзРаспределениеДолга.Договор = тзОплаты_АвансовыйОтчет.ДоговорКонтрагента УПОРЯДОЧИТЬ ПО Контрагент, Договор, ДатаДокумента | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |