![]() |
![]() |
|
Вывести начало образования задолженности | ☑ | ||
---|---|---|---|---|
0
John83
22.01.16
✎
15:45
|
УТ 10.3
В какой-то момент задолженность по договору может стать нулевой, затем задолженность опять образуется. Нужно вывести период (или документ) начала образования этой задолженности без последующих "разрывов". Пока придумал такое, но выводит только те договоры, по которым были эти самые "разрывы". |
|||
1
John83
22.01.16
✎
15:45
|
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период КАК Период, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Регистратор, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Сделка, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Организация, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Контрагент КАК Контрагент, ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток ПОМЕСТИТЬ Данные ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(, , Регистратор, , ) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(Данные.Период) КАК Период, Данные.ДоговорКонтрагента, Данные.Сделка, Данные.Организация, Данные.Контрагент, Данные.СуммаВзаиморасчетовКонечныйОстаток ПОМЕСТИТЬ ПоследняяЗакрытая ИЗ Данные КАК Данные ГДЕ Данные.СуммаВзаиморасчетовКонечныйОстаток = 0 СГРУППИРОВАТЬ ПО Данные.ДоговорКонтрагента, Данные.Сделка, Данные.Организация, Данные.Контрагент, Данные.СуммаВзаиморасчетовКонечныйОстаток ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Данные.Период КАК Период, Данные.Регистратор, Данные.ДоговорКонтрагента КАК ДоговорКонтрагента, Данные.Сделка, Данные.Организация, Данные.Контрагент КАК Контрагент, Данные.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток ИЗ Данные КАК Данные ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПоследняяЗакрытая КАК ПоследняяЗакрытая ПО Данные.Период >= ПоследняяЗакрытая.Период И Данные.ДоговорКонтрагента = ПоследняяЗакрытая.ДоговорКонтрагента И Данные.Сделка = ПоследняяЗакрытая.Сделка И Данные.Организация = ПоследняяЗакрытая.Организация И Данные.Контрагент = ПоследняяЗакрытая.Контрагент |
|||
2
John83
22.01.16
✎
15:52
|
наверное проще объединить с той же ВТ Данных, в которых нет этих разрывов
|
|||
3
vde69
22.01.16
✎
15:54
|
самое простое это реализовать LIFO
|
|||
4
John83
22.01.16
✎
15:56
|
(3) в запросе?
да, когда-то где-то видел ссылку, но не вштырил |
|||
5
vde69
22.01.16
✎
15:58
|
(4) писал недавно, счас поищу
|
|||
6
John83
22.01.16
✎
16:03
|
(5) в принципе запрос получился на 1.5 секунды - норм,
но все равно буду благодарен - может в будущем пригодится |
|||
7
vde69
22.01.16
✎
16:05
|
Функция ПолучитьДанныеКассовогоКалендаряПоОтгрузкам(Счета, Организации)
Запрос = Новый Запрос(); Запрос.УстановитьПараметр("СписокСчетов", Счета); Запрос.УстановитьПараметр("СписокОрганизаций", Организации); Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ТекущаяДата())); Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ХозрасчетныйОстатки.Счет, | ХозрасчетныйОстатки.Субконто1 КАК Контрагент, | ХозрасчетныйОстатки.Субконто2 КАК Аналитика, | ЕСТЬNULL(ХозрасчетныйОстатки.Валюта, ВалютаРегламентированногоУчета.Значение) КАК Валюта, | ХозрасчетныйОстатки.СуммаОстатокДт, | ЕСТЬNULL(ХозрасчетныйОстатки.ВалютнаяСуммаОстатокДт, 0) КАК ВалютнаяСуммаОстатокДт |ПОМЕСТИТЬ ОстаткиДляРаспределения |ИЗ | РегистрБухгалтерии.Хозрасчетный.Остатки(, Счет В (&СписокСчетов), , Организация В (&СписокОрганизаций)) КАК ХозрасчетныйОстатки, | Константа.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ПланЗакрытияТоварногоКредитаПокупателем.Документ, | ПланЗакрытияТоварногоКредитаПокупателем.Дата |ПОМЕСТИТЬ ДатыОплатПоРеализациям |ИЗ | ОстаткиДляРаспределения КАК ОстаткиДляРаспределения | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ПланЗакрытияТоварногоКредитаПокупателем КАК ПланЗакрытияТоварногоКредитаПокупателем | ПО ОстаткиДляРаспределения.Аналитика = ПланЗакрытияТоварногоКредитаПокупателем.Документ.Сделка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ХозрасчетныйОбороты.Счет, | ХозрасчетныйОбороты.Регистратор, | ХозрасчетныйОбороты.Субконто1 КАК Контрагент, | ХозрасчетныйОбороты.Субконто2 КАК Аналитика, | ЕСТЬNULL(ХозрасчетныйОбороты.Валюта, ВалютаРегламентированногоУчета.Значение) КАК Валюта, | ХозрасчетныйОбороты.СуммаОборот, | ЕСТЬNULL(ХозрасчетныйОбороты.ВалютнаяСуммаОборот, 0) КАК ВалютнаяСуммаОборот |ПОМЕСТИТЬ СуммыЗадолженостиПоРеализациям |ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(, , Регистратор, Счет В (&СписокСчетов), , Организация В (&СписокОрганизаций), , ) КАК ХозрасчетныйОбороты, | Константа.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета |ГДЕ | ХозрасчетныйОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг | И (ХозрасчетныйОбороты.СуммаОборот > 0 | ИЛИ ХозрасчетныйОбороты.ВалютнаяСуммаОборот > 0) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | СуммыЗадолженостиПоРеализациям.Счет, | СуммыЗадолженостиПоРеализациям.Регистратор, | СуммыЗадолженостиПоРеализациям.Контрагент, | СуммыЗадолженостиПоРеализациям.Аналитика, | СуммыЗадолженостиПоРеализациям.Валюта, | СуммыЗадолженостиПоРеализациям.СуммаОборот, | СуммыЗадолженостиПоРеализациям.ВалютнаяСуммаОборот, | ЕСТЬNULL(ДатыОплатПоРеализациям.Дата, &ДатаНачала) КАК Дата |ПОМЕСТИТЬ СуммыИДатыПоРеализациям |ИЗ | СуммыЗадолженостиПоРеализациям КАК СуммыЗадолженостиПоРеализациям | ЛЕВОЕ СОЕДИНЕНИЕ ДатыОплатПоРеализациям КАК ДатыОплатПоРеализациям | ПО СуммыЗадолженостиПоРеализациям.Регистратор = ДатыОплатПоРеализациям.Документ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ВложенныйЗапрос.Счет, | ВложенныйЗапрос.Регистратор, | ВложенныйЗапрос.Контрагент, | ВложенныйЗапрос.Аналитика, | ВложенныйЗапрос.Валюта, | ВложенныйЗапрос.ДатаДолга КАК ДатаДолга, | ВЫБОР | КОГДА ВложенныйЗапрос.Валюта = ВалютаРегламентированногоУчета.Значение | ТОГДА ВЫБОР | КОГДА ВложенныйЗапрос.СуммаДолга > 0 | ТОГДА ВложенныйЗапрос.СуммаДолга | ИНАЧЕ 0 | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА ВложенныйЗапрос.ВалютнаяСуммаДолга > 0 | ТОГДА ВложенныйЗапрос.ВалютнаяСуммаДолга | ИНАЧЕ 0 | КОНЕЦ | КОНЕЦ КАК СуммаДолга |ИЗ | (ВЫБРАТЬ | ВложенныйЗапрос.Счет КАК Счет, | ВложенныйЗапрос.Регистратор КАК Регистратор, | ВложенныйЗапрос.Контрагент КАК Контрагент, | ВложенныйЗапрос.Аналитика КАК Аналитика, | ВложенныйЗапрос.Валюта КАК Валюта, | ВложенныйЗапрос.Дата КАК ДатаДолга, | ВЫБОР | КОГДА ВложенныйЗапрос.СуммаОстатокДт >= ВложенныйЗапрос.СуммаОборотИтого - ВложенныйЗапрос.СуммаОборотНИ + ВложенныйЗапрос.СуммаОборот | ТОГДА ВложенныйЗапрос.СуммаОборот | ИНАЧЕ ВложенныйЗапрос.СуммаОстатокДт - ВложенныйЗапрос.СуммаОборотИтого + ВложенныйЗапрос.СуммаОборотНИ | КОНЕЦ КАК СуммаДолга, | ВЫБОР | КОГДА ВложенныйЗапрос.ВалютнаяСуммаОстатокДт >= ВложенныйЗапрос.ВалютнаяСуммаОборотИтого - ВложенныйЗапрос.ВалютнаяСуммаОборотНИ + ВложенныйЗапрос.ВалютнаяСуммаОборот | ТОГДА ВложенныйЗапрос.ВалютнаяСуммаОборот | ИНАЧЕ ВложенныйЗапрос.ВалютнаяСуммаОстатокДт - ВложенныйЗапрос.ВалютнаяСуммаОборотИтого + ВложенныйЗапрос.ВалютнаяСуммаОборотНИ | КОНЕЦ КАК ВалютнаяСуммаДолга | ИЗ | (ВЫБРАТЬ | НарастающийИтогОтгрузок.Счет КАК Счет, | НарастающийИтогОтгрузок.Регистратор КАК Регистратор, | НарастающийИтогОтгрузок.Контрагент КАК Контрагент, | НарастающийИтогОтгрузок.Аналитика КАК Аналитика, | НарастающийИтогОтгрузок.Валюта КАК Валюта, | НарастающийИтогОтгрузок.СуммаОборот КАК СуммаОборот, | НарастающийИтогОтгрузок.ВалютнаяСуммаОборот КАК ВалютнаяСуммаОборот, | НарастающийИтогОтгрузок.Дата КАК Дата, | НарастающийИтогОтгрузок.СуммаОборотНИ КАК СуммаОборотНИ, | НарастающийИтогОтгрузок.ВалютнаяСуммаОборотНИ КАК ВалютнаяСуммаОборотНИ, | ОстаткиДляРаспределения.СуммаОстатокДт КАК СуммаОстатокДт, | ОстаткиДляРаспределения.ВалютнаяСуммаОстатокДт КАК ВалютнаяСуммаОстатокДт, | ПолнаяСуммаОтгрузок.СуммаОборот КАК СуммаОборотИтого, | ПолнаяСуммаОтгрузок.ВалютнаяСуммаОборот КАК ВалютнаяСуммаОборотИтого | ИЗ | (ВЫБРАТЬ | СуммыИДатыПоРеализациям.Счет КАК Счет, | СуммыИДатыПоРеализациям.Регистратор КАК Регистратор, | СуммыИДатыПоРеализациям.Контрагент КАК Контрагент, | СуммыИДатыПоРеализациям.Аналитика КАК Аналитика, | СуммыИДатыПоРеализациям.Валюта КАК Валюта, | СуммыИДатыПоРеализациям.СуммаОборот КАК СуммаОборот, | СуммыИДатыПоРеализациям.ВалютнаяСуммаОборот КАК ВалютнаяСуммаОборот, | СуммыИДатыПоРеализациям.Дата КАК Дата, | СУММА(СуммыИДатыПоРеализациям1.СуммаОборот) КАК СуммаОборотНИ, | СУММА(СуммыИДатыПоРеализациям1.ВалютнаяСуммаОборот) КАК ВалютнаяСуммаОборотНИ | ИЗ | СуммыИДатыПоРеализациям КАК СуммыИДатыПоРеализациям | ВНУТРЕННЕЕ СОЕДИНЕНИЕ СуммыИДатыПоРеализациям КАК СуммыИДатыПоРеализациям1 | ПО СуммыИДатыПоРеализациям.Счет = СуммыИДатыПоРеализациям1.Счет | И СуммыИДатыПоРеализациям.Аналитика = СуммыИДатыПоРеализациям1.Аналитика | И (ВЫБОР | КОГДА СуммыИДатыПоРеализациям.Дата < СуммыИДатыПоРеализациям1.Дата | ТОГДА ЛОЖЬ | КОГДА СуммыИДатыПоРеализациям.Дата = СуммыИДатыПоРеализациям1.Дата | И СуммыИДатыПоРеализациям.Регистратор.МоментВремени > СуммыИДатыПоРеализациям1.Регистратор.МоментВремени | ТОГДА ЛОЖЬ | ИНАЧЕ ИСТИНА | КОНЕЦ) | | СГРУППИРОВАТЬ ПО | СуммыИДатыПоРеализациям.Аналитика, | СуммыИДатыПоРеализациям.Регистратор, | СуммыИДатыПоРеализациям.Контрагент, | СуммыИДатыПоРеализациям.Счет, | СуммыИДатыПоРеализациям.Дата, | СуммыИДатыПоРеализациям.СуммаОборот, | СуммыИДатыПоРеализациям.ВалютнаяСуммаОборот, | СуммыИДатыПоРеализациям.Валюта) КАК НарастающийИтогОтгрузок | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиДляРаспределения КАК ОстаткиДляРаспределения | ПО НарастающийИтогОтгрузок.Счет = ОстаткиДляРаспределения.Счет | И НарастающийИтогОтгрузок.Контрагент = ОстаткиДляРаспределения.Контрагент | И НарастающийИтогОтгрузок.Аналитика = ОстаткиДляРаспределения.Аналитика | И НарастающийИтогОтгрузок.Валюта = ОстаткиДляРаспределения.Валюта | ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ | СуммыИДатыПоРеализациям.Счет КАК Счет, | СуммыИДатыПоРеализациям.Контрагент КАК Контрагент, | СуммыИДатыПоРеализациям.Аналитика КАК Аналитика, | СуммыИДатыПоРеализациям.Валюта КАК Валюта, | СУММА(СуммыИДатыПоРеализациям.СуммаОборот) КАК СуммаОборот, | СУММА(СуммыИДатыПоРеализациям.ВалютнаяСуммаОборот) КАК ВалютнаяСуммаОборот | ИЗ | СуммыИДатыПоРеализациям КАК СуммыИДатыПоРеализациям | | СГРУППИРОВАТЬ ПО | СуммыИДатыПоРеализациям.Аналитика, | СуммыИДатыПоРеализациям.Контрагент, | СуммыИДатыПоРеализациям.Счет, | СуммыИДатыПоРеализациям.Валюта) КАК ПолнаяСуммаОтгрузок | ПО НарастающийИтогОтгрузок.Счет = ПолнаяСуммаОтгрузок.Счет | И НарастающийИтогОтгрузок.Контрагент = ПолнаяСуммаОтгрузок.Контрагент | И НарастающийИтогОтгрузок.Аналитика = ПолнаяСуммаОтгрузок.Аналитика | И НарастающийИтогОтгрузок.Валюта = ПолнаяСуммаОтгрузок.Валюта) КАК ВложенныйЗапрос) КАК ВложенныйЗапрос, | Константа.ВалютаРегламентированногоУчета КАК ВалютаРегламентированногоУчета |ГДЕ | ВЫБОР | КОГДА ВложенныйЗапрос.Валюта = ВалютаРегламентированногоУчета.Значение | И ВложенныйЗапрос.СуммаДолга > 0 | ТОГДА ИСТИНА | КОГДА ВложенныйЗапрос.Валюта <> ВалютаРегламентированногоУчета.Значение | И ВложенныйЗапрос.ВалютнаяСуммаДолга > 0 | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ"; Результат = Запрос.Выполнить().Выгрузить(); Возврат Результат; КонецФункции |
|||
8
John83
22.01.16
✎
16:11
|
(7) спасибо, покурю :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |