gifts2017

Дебиторка fifo по долгам контрагентов (УТ 10.3).

Опубликовал mxm2 mxm2 (mxm2) в раздел Программирование - Практика программирования

Задача ставилась следующим образом: нужно показывать долги контрагентов с разбивкой на общий и просроченный, с подсчетом относительного процента, при условии что взаиморасчеты ведутся в целом по договору. т. е. при любых раскладах «попадаем» на построение отчета по fifo. Здесь описано решение данной задачи с использовнием СКД и ранее описанной методики построения отчета.

 

Обращаю внимание, что Отчет не будет показывать просроченные долги в стандартной конфигурации УТ 10.3 (см. PS в конце текста)

Отчет будем строить на СКД с использовантем методики Простейший вариант создания отчета или как быстро создать красивый отчет на СКД (v8 Обычное приложение), т. е. начнем с основной схемы компоновки данных, в которую добавим новый набор данных, определенных запросом:

ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
СУММА(ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток) КАК СуммаУпрОстаток,
ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Организация КАК Организация,
ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Владелец КАК Контрагент,
ВЫБОР
КОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности
ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + &СдвигДат
ИНАЧЕ "-"
КОНЕЦ КАК ДопустимоеЧислоДнейДолга,
ВЫБОР
КОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.КонтролироватьСуммуЗадолженности
ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности
ИНАЧЕ "-"
КОНЕЦ КАК ДопустимаяСуммаДолга
ПОМЕСТИТЬ ДоговорСуммаДолга
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ГраницаКонца, {(ДоговорКонтрагента.Организация В ИЕРАРХИИ (&Организация)) КАК ОтборПоОрганизации, (ДоговорКонтрагента.Владелец В ИЕРАРХИИ (&Контрагент)) КАК ОтборПоКонтрагенту}) КАК ВзаиморасчетыСКонтрагентамиОстатки
ГДЕ
ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток > 0

СГРУППИРОВАТЬ ПО
ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,
ВЫБОР
КОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности
ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + &СдвигДат
ИНАЧЕ "-"
КОНЕЦ,
ВЫБОР
КОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.КонтролироватьСуммуЗадолженности
ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности
ИНАЧЕ "-"
КОНЕЦ,
ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Организация,
ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Владелец
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период) КАК Период,
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента
ПОМЕСТИТЬ ДоговорДатаПоследнегоПереходаЧерезНоль
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(
,
&ГраницаКонца,
Регистратор,
,
ДоговорКонтрагента В
(ВЫБРАТЬ
ДоговорСуммаДолга.ДоговорКонтрагента
ИЗ
ДоговорСуммаДолга)) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты
ГДЕ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток <=0 И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток > 0

СГРУППИРОВАТЬ ПО
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента,
ВзаиморасчетыСКонтрагентамиОбороты.Регистратор,
ВзаиморасчетыСКонтрагентамиОбороты.Период КАК ДатаДокумента,
ВЫБОР
КОГДА ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности
ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + &СдвигДат)
ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
КОНЕЦ КАК ДатаОплаты,
ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрПриход - ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход КАК Приход
ПОМЕСТИТЬ ДоговорРеализации
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(
,
&ГраницаКонца,
Регистратор,
ДоговорКонтрагента В
(ВЫБРАТЬ
ДоговорСуммаДолга.ДоговорКонтрагента
ИЗ
ДоговорСуммаДолга)) КАК ВзаиморасчетыСКонтрагентамиОбороты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДоговорДатаПоследнегоПереходаЧерезНоль КАК ДоговорДатаПоследнегоПереходаЧерезНоль
ПО ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента = ДоговорДатаПоследнегоПереходаЧерезНоль.ДоговорКонтрагента
И ВзаиморасчетыСКонтрагентамиОбороты.Период >= ДоговорДатаПоследнегоПереходаЧерезНоль.Период
ГДЕ
ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрПриход - ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход > 0
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДоговорРеализации.ДоговорКонтрагента,
ДоговорРеализации.ДатаДокумента,
ДоговорРеализации.ДатаОплаты,
ДоговорРеализации.Регистратор,
ДоговорРеализации.Приход,
ВЫБОР
КОГДА ДоговорРеализации.ДатаОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА NULL
ИНАЧЕ РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорРеализации.ДатаОплаты, ДЕНЬ, 1), &Дата, ДЕНЬ)
КОНЕЦ КАК ДнейПросрочки,
СУММА(ДоговорРеализацияКО.Приход) - ДоговорРеализации.Приход КАК НО,
СУММА(ДоговорРеализацияКО.Приход) КАК КО,
ДоговорСуммаДолга.СуммаУпрОстаток
ПОМЕСТИТЬ ДоговорРеализацииОбратныйНарастИтог
ИЗ
ДоговорСуммаДолга КАК ДоговорСуммаДолга
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДоговорРеализации КАК ДоговорРеализации
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДоговорРеализации КАК ДоговорРеализацияКО
ПО ДоговорРеализации.ДоговорКонтрагента = ДоговорРеализацияКО.ДоговорКонтрагента
И (ВЫБОР
КОГДА ДоговорРеализации.ДатаОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА ВЫБОР
КОГДА ДоговорРеализации.ДатаДокумента = ДоговорРеализацияКО.ДатаДокумента
ТОГДА ДоговорРеализации.Регистратор ИНАЧЕ ДоговорРеализации.ДатаДокумента КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА ДоговорРеализации.ДатаОплаты = ДоговорРеализацияКО.ДатаОплаты
ТОГДА ДоговорРеализации.Регистратор ИНАЧЕ ДоговорРеализации.ДатаОплаты КОНЕЦ
КОНЕЦ)
ПО ДоговорСуммаДолга.ДоговорКонтрагента = ДоговорРеализации.ДоговорКонтрагента

СГРУППИРОВАТЬ ПО
ДоговорРеализации.ДоговорКонтрагента,
ДоговорРеализации.ДатаДокумента,
ДоговорРеализации.ДатаОплаты,
ДоговорРеализации.Регистратор,
ДоговорРеализации.Приход,
ДоговорСуммаДолга.СуммаУпрОстаток
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДоговорРеализацииОбратныйНарастИтог.ДоговорКонтрагента,
ДоговорРеализацииОбратныйНарастИтог.ДатаДокумента КАК ДатаДокумента,
ДоговорРеализацииОбратныйНарастИтог.ДатаОплаты КАК ДатаОплаты,
ДоговорРеализацииОбратныйНарастИтог.Регистратор,
ДоговорРеализацииОбратныйНарастИтог.Приход КАК СуммаДокумента,
ВЫБОР
КОГДА ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток - ДоговорРеализацииОбратныйНарастИтог.КО >= 0
ТОГДА ДоговорРеализацииОбратныйНарастИтог.Приход
ИНАЧЕ ДоговорРеализацииОбратныйНарастИтог.Приход - ДоговорРеализацииОбратныйНарастИтог.КО + ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток
КОНЕЦ КАК СуммаДолга,
ВЫБОР
КОГДА ДоговорРеализацииОбратныйНарастИтог.ДнейПросрочки > 0
ТОГДА ДоговорРеализацииОбратныйНарастИтог.ДнейПросрочки
ИНАЧЕ 0
КОНЕЦ КАК ДнейПросрочки,
ВЫБОР
КОГДА ДоговорРеализацииОбратныйНарастИтог.ДнейПросрочки > 0
ТОГДА ВЫБОР
КОГДА ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток - ДоговорРеализацииОбратныйНарастИтог.КО >= 0
ТОГДА ДоговорРеализацииОбратныйНарастИтог.Приход
ИНАЧЕ ДоговорРеализацииОбратныйНарастИтог.Приход - ДоговорРеализацииОбратныйНарастИтог.КО + ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток
КОНЕЦ
КОНЕЦ КАК СуммаПросроченногоДолга,
ДоговорРеализацииОбратныйНарастИтог.НО,
ДоговорРеализацииОбратныйНарастИтог.КО,
ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток,
ДоговорРеализацииОбратныйНарастИтог.Регистратор.ОтражатьВБухгалтерскомУчете КАК БУ,
ДоговорСуммаДолга.Организация,
ДоговорСуммаДолга.Контрагент,
ДоговорСуммаДолга.ДопустимоеЧислоДнейДолга,
ДоговорСуммаДолга.ДопустимаяСуммаДолга,
СФпоРеализациям.СФ КАК СФ
ИЗ
ДоговорРеализацииОбратныйНарастИтог КАК ДоговорРеализацииОбратныйНарастИтог
ЛЕВОЕ СОЕДИНЕНИЕ ДоговорСуммаДолга КАК ДоговорСуммаДолга
ПО ДоговорРеализацииОбратныйНарастИтог.ДоговорКонтрагента = ДоговорСуммаДолга.ДоговорКонтрагента
{ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
СчетФактураВыданный.Ссылка КАК СФ,
СчетФактураВыданный.ДокументОснование КАК Реализация
ИЗ
Документ.СчетФактураВыданный КАК СчетФактураВыданный
ГДЕ
СчетФактураВыданный.Проведен = ИСТИНА
И СчетФактураВыданный.ПометкаУдаления = ЛОЖЬ
И СчетФактураВыданный.ДокументОснование В
(ВЫБРАТЬ
ДоговорРеализацииОбратныйНарастИтог.Регистратор
ИЗ
ДоговорРеализацииОбратныйНарастИтог)) КАК СФпоРеализациям
ПО ДоговорРеализацииОбратныйНарастИтог.Регистратор = СФпоРеализациям.Реализация}
ГДЕ
ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток - ДоговорРеализацииОбратныйНарастИтог.НО > 0

УПОРЯДОЧИТЬ ПО
ДатаОплаты,
ДатаДокумента
{ХАРАКТЕРИСТИКИ
ТИП(Справочник.Контрагенты)
ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ
ВидыКонтактнойИнформации.Ссылка,
ВидыКонтактнойИнформации.Наименование,
ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации
ИЗ
Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации
ГДЕ
ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.Контрагенты)
И ВидыКонтактнойИнформации.ПометкаУдаления = ЛОЖЬ)
ПОЛЕКЛЮЧА Ссылка
ПОЛЕИМЕНИ Наименование
ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ
КонтактнаяИнформация.Объект,
КонтактнаяИнформация.Вид,
КонтактнаяИнформация.Представление
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация)
ПОЛЕОБЪЕКТА Объект
ПОЛЕВИДА Вид
ПОЛЕЗНАЧЕНИЯ Представление }
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ДоговорРеализацииОбратныйНарастИтог
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ДоговорРеализации
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ДоговорДатаПоследнегоПереходаЧерезНоль
;

////////////////////////////////////////////////////////////////////////////////
УНИЧТОЖИТЬ ДоговорСуммаДолга

Запрос состоит из нескольких подзапросов:

1. ДоговорСуммаДолга:

ВЫБРАТЬ

ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,

СУММА(ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток) КАК СуммаУпрОстаток,

ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Организация КАК Организация,

ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Владелец КАК Контрагент,

ВЫБОР

КОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности

ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + &СдвигДат

ИНАЧЕ "-"

КОНЕЦ КАК ДопустимоеЧислоДнейДолга,

ВЫБОР

КОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.КонтролироватьСуммуЗадолженности

ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности

ИНАЧЕ "-"

КОНЕЦ КАК ДопустимаяСуммаДолга

ПОМЕСТИТЬ ДоговорСуммаДолга

ИЗ

РегистрНакопления.ВзаиморасчетыСКонтрагентами.Остатки(&ГраницаКонца, {(ДоговорКонтрагента.Организация В ИЕРАРХИИ (&Организация)) КАК ОтборПоОрганизации, (ДоговорКонтрагента.Владелец В ИЕРАРХИИ (&Контрагент)) КАК ОтборПоКонтрагенту}) КАК ВзаиморасчетыСКонтрагентамиОстатки

ГДЕ

ВзаиморасчетыСКонтрагентамиОстатки.СуммаУпрОстаток > 0

СГРУППИРОВАТЬ ПО

ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента,

ВЫБОР

КОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности

ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + &СдвигДат

ИНАЧЕ "-"

КОНЕЦ,

ВЫБОР

КОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.КонтролироватьСуммуЗадолженности

ТОГДА ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.ДопустимаяСуммаЗадолженности

ИНАЧЕ "-"

КОНЕЦ,

ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Организация,

ВзаиморасчетыСКонтрагентамиОстатки.ДоговорКонтрагента.Владелец

;

- выборка из регистра взаиморасчетов только тех договоров по которым на указанную дату имеется долг контрагента, с попутным получением допустимых сумм задолженности и допустимого количества дней задолженности. Обращаю внимание на то, что в выражении поля ДопустимоеЧислоДнейЗадолженности возможно использование параметра СдвигДат — который обеспечивает сдвиг расчета просроченой задолженности.

Результат этой части запроса (в консоли отчетов) будет примерно таким (здесь для простоты включен отбор по договору):

ДоговорКонтрагента

Организация

Контрагент

ДопустимоеЧислоДнейДолга

ДопустимаяСуммаДолга

СуммаУпрОстаток

5420 от 01.06.2011

ООО Сервис

Горбунков С.Н.

20

4 500,00

8 775,00

 

2. ДоговорДатаПоследнегоПереходаЧерезНоль:

ВЫБРАТЬ

МАКСИМУМ(ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.Период) КАК Период,

ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента

ПОМЕСТИТЬ ДоговорДатаПоследнегоПереходаЧерезНоль

ИЗ

РегистрНакопления.ВзаиморасчетыСКонтрагентами.ОстаткиИОбороты(

,

&ГраницаКонца,

Регистратор,

,

ДоговорКонтрагента В

(ВЫБРАТЬ

ДоговорСуммаДолга.ДоговорКонтрагента

ИЗ

ДоговорСуммаДолга)) КАК ВзаиморасчетыСКонтрагентамиОстаткиИОбороты

ГДЕ

ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток <=0

И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток > 0

 

СГРУППИРОВАТЬ ПО

ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента

;

- получает дату последнего перехода через 0, для каждого договора, попавшего в результат первого запроса

Результат двух рассмотренных частей запроса:

ДоговорКонтрагента

Период

5420 от 01.06.2011

03.10.2011 13:27:14

  

3. ДоговорРеализации:

ВЫБРАТЬ

ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента,

ВзаиморасчетыСКонтрагентамиОбороты.Регистратор,

ВзаиморасчетыСКонтрагентамиОбороты.Период КАК ДатаДокумента,

ВЫБОР

КОГДА ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.КонтролироватьЧислоДнейЗадолженности

ТОГДА ДОБАВИТЬКДАТЕ(ВзаиморасчетыСКонтрагентамиОбороты.Период, ДЕНЬ, ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента.ДопустимоеЧислоДнейЗадолженности + &СдвигДат)

ИНАЧЕ ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

КОНЕЦ КАК ДатаОплаты,

ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрПриход - ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход КАК Приход

ПОМЕСТИТЬ ДоговорРеализации

ИЗ

РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(

,

&ГраницаКонца,

Регистратор,

ДоговорКонтрагента В

(ВЫБРАТЬ

ДоговорСуммаДолга.ДоговорКонтрагента

ИЗ

ДоговорСуммаДолга)) КАК ВзаиморасчетыСКонтрагентамиОбороты

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДоговорДатаПоследнегоПереходаЧерезНоль КАК ДоговорДатаПоследнегоПереходаЧерезНоль

ПО ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента = ДоговорДатаПоследнегоПереходаЧерезНоль.ДоговорКонтрагента

И ВзаиморасчетыСКонтрагентамиОбороты.Период >= ДоговорДатаПоследнегоПереходаЧерезНоль.Период

ГДЕ

ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрПриход - ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход > 0

;

- формирует выборку регистраторов регистра взаиморасчетов по договорам из первого запроса начиная с даты последнего перехода через 0 (из второго запроса), при условии, что регистратор увеличивает долг контрагента.

Результат:

ДатаОплаты

ДоговорКонтрагента

Приход

Регистратор

14.11.2011 16:36:29

5420 от 01.06.2011

2 824,56

Реализация товаров и услуг 00000000862 от 25.10.2011 16:36:29

23.10.2011 14:01:43

5420 от 01.06.2011

1 027,08

Реализация товаров и услуг 00000000003 от 03.10.2011 14:01:43

14.11.2011 11:06:31

5420 от 01.06.2011

339,12

Реализация товаров и услуг 00000000840 от 25.10.2011 11:06:31

09.11.2011 11:13:38

5420 от 01.06.2011

802,8

Реализация товаров и услуг 00000000666 от 20.10.2011 11:13:38

23.10.2011 13:27:14

5420 от 01.06.2011

1 147,68

Реализация товаров и услуг 00000000002 от 03.10.2011 13:27:14

17.11.2011 11:20:28

5420 от 01.06.2011

640,08

Реализация товаров и услуг 00000000982 от 28.10.2011 11:20:28

23.10.2011 14:41:04

5420 от 01.06.2011

1 106,28

Реализация товаров и услуг 00000000004 от 03.10.2011 14:41:04

01.11.2011 15:12:47

5420 от 01.06.2011

725,4

Реализация товаров и услуг 00000000371 от 12.10.2011 15:12:47

27.10.2011 15:09:03

5420 от 01.06.2011

162

Реализация товаров и услуг 00000000232 от 07.10.2011 15:09:03

 

4. ДоговорРеализацииОбратныйНарастИтог:

ВЫБРАТЬ

ДоговорРеализации.ДоговорКонтрагента,

ДоговорРеализации.ДатаДокумента,

ДоговорРеализации.ДатаОплаты,

ДоговорРеализации.Регистратор,

ДоговорРеализации.Приход,

ВЫБОР

КОГДА ДоговорРеализации.ДатаОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

ТОГДА NULL

ИНАЧЕ РАЗНОСТЬДАТ(ДОБАВИТЬКДАТЕ(ДоговорРеализации.ДатаОплаты, ДЕНЬ, 1), &Дата, ДЕНЬ)

КОНЕЦ КАК ДнейПросрочки,

СУММА(ДоговорРеализацияКО.Приход) - ДоговорРеализации.Приход КАК НО,

СУММА(ДоговорРеализацияКО.Приход) КАК КО,

ДоговорСуммаДолга.СуммаУпрОстаток

ПОМЕСТИТЬ ДоговорРеализацииОбратныйНарастИтог

ИЗ

ДоговорСуммаДолга КАК ДоговорСуммаДолга

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДоговорРеализации КАК ДоговорРеализации

ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДоговорРеализации КАК ДоговорРеализацияКО

ПО ДоговорРеализации.ДоговорКонтрагента = ДоговорРеализацияКО.ДоговорКонтрагента

И (ВЫБОР

КОГДА ДоговорРеализации.ДатаОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)

ТОГДА ВЫБОР

КОГДА ДоговорРеализации.ДатаДокумента = ДоговорРеализацияКО.ДатаДокумента

ТОГДА ДоговорРеализации.Регистратор

ИНАЧЕ ДоговорРеализации.ДатаДокумента

КОНЕЦ

ИНАЧЕ ВЫБОР

КОГДА ДоговорРеализации.ДатаОплаты = ДоговорРеализацияКО.ДатаОплаты

ТОГДА ДоговорРеализации.Регистратор

ИНАЧЕ ДоговорРеализации.ДатаОплаты

КОНЕЦ

КОНЕЦ)

ПО ДоговорСуммаДолга.ДоговорКонтрагента = ДоговорРеализации.ДоговорКонтрагента

 

СГРУППИРОВАТЬ ПО

ДоговорРеализации.ДоговорКонтрагента,

ДоговорРеализации.ДатаДокумента,

ДоговорРеализации.ДатаОплаты,

ДоговорРеализации.Регистратор,

ДоговорРеализации.Приход,

ДоговорСуммаДолга.СуммаУпрОстаток

;

- формирует таблицу обратного нарастающего итога долга контрагента (фактически имитирует рассчет итогов регистра) по результатам третьего запроса.

Результат:

ДатаДокумента

ДатаОплаты

ДнейПросрочки

ДоговорКонтрагента

Регистратор

СуммаУпрОстаток

НО

Приход

КО

20.10.2011 11:13:38

09.11.2011 11:13:38

-9

5420 от 01.06.2011

Реализация товаров и услуг 00000000666 от 20.10.2011 11:13:38

6 270,00

3 803,76

802,8

4 606,56

12.10.2011 15:12:47

01.11.2011 15:12:47

-1

5420 от 01.06.2011

Реализация товаров и услуг 00000000371 от 12.10.2011 15:12:47

6 270,00

4 606,56

725,4

5 331,96

03.10.2011 14:01:43

23.10.2011 14:01:43

8

5420 от 01.06.2011

Реализация товаров и услуг 00000000003 от 03.10.2011 14:01:43

6 270,00

6 600,24

1 027,08

7 627,32

25.10.2011 11:06:31

14.11.2011 11:06:31

-14

5420 от 01.06.2011

Реализация товаров и услуг 00000000840 от 25.10.2011 11:06:31

6 270,00

3 464,64

339,12

3 803,76

07.10.2011 15:09:03

27.10.2011 15:09:03

4

5420 от 01.06.2011

Реализация товаров и услуг 00000000232 от 07.10.2011 15:09:03

6 270,00

5 331,96

162

5 493,96

28.10.2011 11:20:28

17.11.2011 11:20:28

-17

5420 от 01.06.2011

Реализация товаров и услуг 00000000982 от 28.10.2011 11:20:28

6 270,00

 

640,08

640,08

03.10.2011 13:27:14

23.10.2011 13:27:14

8

5420 от 01.06.2011

Реализация товаров и услуг 00000000002 от 03.10.2011 13:27:14

6 270,00

7 627,32

1 147,68

8 775

25.10.2011 16:36:29

14.11.2011 16:36:29

-14

5420 от 01.06.2011

Реализация товаров и услуг 00000000862 от 25.10.2011 16:36:29

6 270,00

640,08

2 824,56

3 464,64

03.10.2011 14:41:04

23.10.2011 14:41:04

8

5420 от 01.06.2011

Реализация товаров и услуг 00000000004 от 03.10.2011 14:41:04

6 270,00

5 493,96

1 106,28

6 600,24

 

5. И наконец, итоговая выборка:

ВЫБРАТЬ

ДоговорРеализацииОбратныйНарастИтог.ДоговорКонтрагента,

ДоговорРеализацииОбратныйНарастИтог.ДатаДокумента КАК ДатаДокумента,

ДоговорРеализацииОбратныйНарастИтог.ДатаОплаты КАК ДатаОплаты,

ДоговорРеализацииОбратныйНарастИтог.Регистратор,

ДоговорРеализацииОбратныйНарастИтог.Приход КАК СуммаДокумента,

ВЫБОР

КОГДА ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток - ДоговорРеализацииОбратныйНарастИтог.КО >= 0

ТОГДА ДоговорРеализацииОбратныйНарастИтог.Приход

ИНАЧЕ ДоговорРеализацииОбратныйНарастИтог.Приход - ДоговорРеализацииОбратныйНарастИтог.КО + ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток

КОНЕЦ КАК СуммаДолга,

ВЫБОР

КОГДА ДоговорРеализацииОбратныйНарастИтог.ДнейПросрочки > 0

ТОГДА ДоговорРеализацииОбратныйНарастИтог.ДнейПросрочки

ИНАЧЕ 0

КОНЕЦ КАК ДнейПросрочки,

ВЫБОР

КОГДА ДоговорРеализацииОбратныйНарастИтог.ДнейПросрочки > 0

ТОГДА ВЫБОР

КОГДА ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток - ДоговорРеализацииОбратныйНарастИтог.КО >= 0

ТОГДА ДоговорРеализацииОбратныйНарастИтог.Приход

ИНАЧЕ ДоговорРеализацииОбратныйНарастИтог.Приход - ДоговорРеализацииОбратныйНарастИтог.КО + ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток

КОНЕЦ

КОНЕЦ КАК СуммаПросроченногоДолга,

ДоговорРеализацииОбратныйНарастИтог.НО,

ДоговорРеализацииОбратныйНарастИтог.КО,

ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток,

ДоговорРеализацииОбратныйНарастИтог.Регистратор.ОтражатьВБухгалтерскомУчете КАК БУ,

ДоговорСуммаДолга.Организация,

ДоговорСуммаДолга.Контрагент,

ДоговорСуммаДолга.ДопустимоеЧислоДнейДолга,

ДоговорСуммаДолга.ДопустимаяСуммаДолга,

СФпоРеализациям.СФ КАК СФ

ИЗ

ДоговорРеализацииОбратныйНарастИтог КАК ДоговорРеализацииОбратныйНарастИтог

ЛЕВОЕ СОЕДИНЕНИЕ ДоговорСуммаДолга КАК ДоговорСуммаДолга

ПО ДоговорРеализацииОбратныйНарастИтог.ДоговорКонтрагента = ДоговорСуммаДолга.ДоговорКонтрагента

{ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ

СчетФактураВыданный.Ссылка КАК СФ,

СчетФактураВыданный.ДокументОснование КАК Реализация

ИЗ

Документ.СчетФактураВыданный КАК СчетФактураВыданный

ГДЕ

СчетФактураВыданный.Проведен = ИСТИНА

И СчетФактураВыданный.ПометкаУдаления = ЛОЖЬ

И СчетФактураВыданный.ДокументОснование В

(ВЫБРАТЬ

ДоговорРеализацииОбратныйНарастИтог.Регистратор

ИЗ

ДоговорРеализацииОбратныйНарастИтог)) КАК СФпоРеализациям

ПО ДоговорРеализацииОбратныйНарастИтог.Регистратор = СФпоРеализациям.Реализация}

ГДЕ

ДоговорРеализацииОбратныйНарастИтог.СуммаУпрОстаток - ДоговорРеализацииОбратныйНарастИтог.НО > 0

 

УПОРЯДОЧИТЬ ПО

ДатаОплаты,

ДатаДокумента

{ХАРАКТЕРИСТИКИ

ТИП(Справочник.Контрагенты)

ВИДЫХАРАКТЕРИСТИК (ВЫБРАТЬ

ВидыКонтактнойИнформации.Ссылка,

ВидыКонтактнойИнформации.Наименование,

ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации

ИЗ

Справочник.ВидыКонтактнойИнформации КАК ВидыКонтактнойИнформации

ГДЕ

ВидыКонтактнойИнформации.ВидОбъектаКонтактнойИнформации = ЗНАЧЕНИЕ(Перечисление.ВидыОбъектовКонтактнойИнформации.Контрагенты)

И ВидыКонтактнойИнформации.ПометкаУдаления = ЛОЖЬ)

ПОЛЕКЛЮЧА Ссылка

ПОЛЕИМЕНИ Наименование

ЗНАЧЕНИЯХАРАКТЕРИСТИК (ВЫБРАТЬ

КонтактнаяИнформация.Объект,

КонтактнаяИнформация.Вид,

КонтактнаяИнформация.Представление

ИЗ

РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация)

ПОЛЕОБЪЕКТА Объект

ПОЛЕВИДА Вид

ПОЛЕЗНАЧЕНИЯ Представление }

;

- формирует дебиторку, и получает необходимые поля для вывода информации на экран почти в окончательном виде, остальное за нас сделает СКД.

Результат

ДатаДокумента

ДатаОплаты

ДнейПросрочки

ДоговорКонтрагента

Регистратор

СуммаУпрОстаток

НО

КО

03.10.2011 14:41:04

23.10.2011 14:41:04

8

5420 от 01.06.2011

Реализация товаров и услуг 00000000004 от 03.10.2011 14:41:04

6 270,00

5 493,96

6 600,24

28.10.2011 11:20:28

17.11.2011 11:20:28

 

5420 от 01.06.2011

Реализация товаров и услуг 00000000982 от 28.10.2011 11:20:28

6 270,00

 

640,08

25.10.2011 16:36:29

14.11.2011 16:36:29

 

5420 от 01.06.2011

Реализация товаров и услуг 00000000862 от 25.10.2011 16:36:29

6 270,00

640,08

3 464,64

20.10.2011 11:13:38

09.11.2011 11:13:38

 

5420 от 01.06.2011

Реализация товаров и услуг 00000000666 от 20.10.2011 11:13:38

6 270,00

3 803,76

4 606,56

25.10.2011 11:06:31

14.11.2011 11:06:31

 

5420 от 01.06.2011

Реализация товаров и услуг 00000000840 от 25.10.2011 11:06:31

6 270,00

3 464,64

3 803,76

12.10.2011 15:12:47

01.11.2011 15:12:47

 

5420 от 01.06.2011

Реализация товаров и услуг 00000000371 от 12.10.2011 15:12:47

6 270,00

4 606,56

5 331,96

07.10.2011 15:09:03

27.10.2011 15:09:03

4

5420 от 01.06.2011

Реализация товаров и услуг 00000000232 от 07.10.2011 15:09:03

6 270,00

5 331,96

5 493,96

 

Добавим мелкие штрихи в СКД:

В полях схемы компоновки данных у Поля «ДоговорКонтрагента», нужно установить в столбце «Роль» флажек «Обязательное», у Поля «Регистратор» в столбце «Выражение представления» заполнить:

ВЫБОР
КОГДА ВЫРАЗИТЬ(Регистратор, "Документ.РеализацияТоваровУслуг") ЕСТЬ НЕ NULL
ТОГДА "Реал № " + СТРОКА(Регистратор.Номер) + " от " +
ФОРМАТ(Регистратор.Дата, "ДФ=dd.MM.yyyy") ИНАЧЕ
Регистратор
КОНЕЦ

Для сокращения длины строки в столбце «Регистратор»

 

Во вкладке «Вычисляемые поля» добавляем новые поля:

«ПроцентПросроченногоДолга» заполняем выражением «100*СуммаПросроченногоДолга/СуммаДолга»

и

«ПроцентПросроченнойСуммы» заполняем выражением «100*СуммаПросроченногоДолга/СуммаДокумента»

 

Во вкладке «Ресурсы» добавляем следующие ресурсы:

ПроцентПросроченногоДолга (выражение «100*Сумма(СуммаПросроченногоДолга)/Сумма(СуммаДолга)»),

ПроцентПросроченнойСуммы(выражение «100*Сумма(СуммаПросроченногоДолга)/Сумма(СуммаДокумента)»),

СуммаДокумента, СуммаДолга, СуммаПросроченногоДолга (Выражение для всех Сумма(с соотв. полем))

 

Прикручиваем форму, слегка изменяем её вид, задаем параметры в модуле формы как ранее описано в http://infostart.ru/public/99753/

Получаем итоговый отчет. Работает шустро. Имеется тенденция к замедлению формирования отчета при увеличении периода хранения информации в базе (т.к. возрастает время обработки третьего подзапроса).

P.S.: по умолчанию реквизиты договоров "КонтролироватьЧислоДнейЗадолженности" и "КонтролироватьСуммуЗадолженности", а также сами значения соответствующих реквизитов не доступны для заполнения, если реквизит ВедениеВзаиморасчетов = Перечисления.ВедениеВзаиморасчетовПоДоговорам.ПоДоговоруВЦелом, т.е. для использования данной обработки потребуется правка конфигурации, обеспечивающая возможность ввода соответствующих реквизитов, например в модуле формы элемента справочника договоры контрагентов можно "подправить" процедуру  УстановитьВидимость, так:

Процедура УстановитьВидимость()

// Управление видимостью элементов формы

Если ВестиПоДокументамРасчетовСКонтрагентом Тогда
ВидимостьКонтроляДней = Истина;
Иначе
ВидимостьКонтроляДней = Ложь;
КонецЕсли;

ВидимостьКонтроляДней = Истина; //< --- ДОБАВЛЕННАЯ СТРОКА

...

... 

Либо можно создать внешнюю форму для корректровки элемента справочника ДоговорыКонтрагентов.

Скачать файлы

Наименование Файл Версия Размер
Файл готовой обработки 302
.erf 21,54Kb
29.03.13
302
.erf 21,54Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Ожерельев (Поручик) 27.11.11 20:39
Давненько на эту тему ничего не писали. Боюсь, в понедельник набежит бомонд, и закидают автора веществами. Я даже знаю кто.
2. mxm2 mxm2 (mxm2) 27.11.11 22:13
Отчетец не без "тонких" ))) мест, но зато универсальный и работает. проверено. а так конечно правильнее применять подход с договорами по расчетным документам. Но не могу я народ заставить ))) в свое время "расслабила" их семерка. и еще в принципе отчет легко модифицировать, убрав детализацию по договорам (используя функцию Максимум или Минимум по Допустимым дням задолженности и Допустимой сумме задолженности)... Ну и вобщем готов к здоровой критике, ибо "чем больше я познаЮ, тем больше я не знАю" (с) Сократ
3. Александр Медведев (anig99) 28.11.11 09:21
Собственно кидаться какулями не буду.
Просто есть несколько моментов:
- ссылка на описание методики нерабочая (возможно ещё неотмодерировали)
- оптимизация запроса за счет ограничения выборки по времени по дате последнего перехода в минус - это лучше, чем тупое ограничение выборки по общей дате, но всё же далека от цели... В реальности постоянные контрагенты НИКОГДА не оплачивают долг полностью, а только просроченный. Таким образом, оптимизация работать не будет.
- жаль, что привязка только к договорам.
- ознакомьтесь с материалами по теме. Есть мои статьи и отчеты (правда запросы там путаные), есть и другие (лень сейчас искать)
4. mxm2 mxm2 (mxm2) 28.11.11 10:16
(3) anig99,
- ссылка на описание методики нерабочая (возможно ещё неотмодерировали)

в публикации методика не описана - мне её "на пальцах" объяснил наш экономист...
В реальности постоянные контрагенты НИКОГДА не оплачивают долг полностью, а только просроченный. Таким образом, оптимизация работать не будет.
конечно правилнее отделный регистр, но слишком затратно)..

По поводу статей - на этом сайте?
5. Petr (sevipa) 28.11.11 10:18
Отчет актуальный. Делали подобный но не с таким глубоким анализом. Изменения в конфу не вводили, а разрешили корректировку реквизитов Договора из формы отчета.
Данный отчет особенно актуален потому что заставить сбытовиков работать по документам расчетов практически нереально по двум причинам, разносят деньги не они и даже не бухгалтерия а финслужба и там то все и виснет... ну а сбыт любит работать прошлым периодом (только не говорите про закрытие периода, всегда есть что-то или кто-то архиважный и архипипецвнеправилзапретов)
6. Иван Дижа (IDija) 28.11.11 10:55
При попытке открыть, ругается на компоновку данных:
{(20, 20)}: Таблица не найдена "РегистрСведений.АгентыПоДоговорам.СрезПоследних"
ЛЕВОЕ СОЕДИНЕНИЕ <<?>>РегистрСведений.АгентыПоДоговорам.СрезПоследних(&ГраницаКонца, ) КАК АгентыПоДоговорамСрезПоследних
Точно для ред. 10.3? Может с какого то определенного релиза?
7. Сергей Ожерельев (Поручик) 28.11.11 11:02
(6) Нет в УТ 10.3 никакого релиза такого регистра.
8. mxm2 mxm2 (mxm2) 28.11.11 11:07
(6) IDija,
мой промах... у меня в конфе это применяется, а сюда я выложил с вырезом этого регистра... но видимо "недовырезал" сейчас исправлю. Кстати в статье текст запроса - верный, можно просто перенести, ну и внастройках отчета убрать упоминание "агента"
9. mxm2 mxm2 (mxm2) 28.11.11 11:38
IDija пишет:

При попытке открыть, ругается на компоновку данных:
{(20, 20)}: Таблица не найдена "РегистрСведений.АгентыПоДоговорам.СрезПоследних"
ЛЕВОЕ СОЕДИНЕНИЕ <<?>>РегистрСведений.АгентыПоДоговорам.СрезПоследних(&ГраницаКонца, ) КАК АгентыПоДоговорамСрезПоследних
Точно для ред. 10.3? Может с какого то определенного релиза?


Перезалил файл.
10. mxm2 mxm2 (mxm2) 28.11.11 11:54
anig99 пишет:

Собственно кидаться какулями не буду.
Просто есть несколько моментов:
- ссылка на описание методики нерабочая (возможно ещё неотмодерировали)
- оптимизация запроса за счет ограничения выборки по времени по дате последнего перехода в минус - это лучше, чем тупое ограничение выборки по общей дате, но всё же далека от цели... В реальности постоянные контрагенты НИКОГДА не оплачивают долг полностью, а только просроченный. Таким образом, оптимизация работать не будет.
- жаль, что привязка только к договорам.
- ознакомьтесь с материалами по теме. Есть мои статьи и отчеты (правда запросы там путаные), есть и другие (лень сейчас искать)


Посмотрел Ваши публикации по поводу оптимизации, "буду курить",
У меня клиенты достаточно часто оплачивают долг до нуля, иногда даже авансируют... + договора действуют максимум 1 год.
Привязка к договорам - как в мне требовалось. потенциально можно реализовать любую, что есть в регистре.
11. Иван Дижа (IDija) 28.11.11 12:06
>> Кстати в статье текст запроса - верный, можно просто перенести, ну и внастройках отчета убрать упоминание "агента".
Вставлял текст запроса, после двух ошибок исправлять далее не захотелось... разочаровывает статья...
12. Иван Дижа (IDija) 28.11.11 12:09
(7) тогда не понятен ваш плюс...
13. mxm2 mxm2 (mxm2) 28.11.11 12:54
(11) IDija, файл уже правильный, его достаточно скачать.
"после двух ошибок исправлять далее не захотелось" - кроме отборов там нет упоминаний об агенте.)

кстати предыдущий файл, тоже правильный только при наличии доп регистра... возможно поздне опишу для чего он нужен...
14. urbanist Железняков (urbanist) 30.11.11 14:32
Пару лет назад ваял на эту тему:
http://infostart.ru/public/22091/

Сейчас вспомнил и добавил с с просрочкой по интервалам:
http://infostart.ru/public/100137/
15. mxm2 mxm2 (mxm2) 30.11.11 16:30
(14) urbanist, всетаки инфо о доп днях и сумме правильнее брать из договора. а вот решение показывать - по интервалам - красиво. я в свое время исходил из того что отчет должен нормально печататься на а4 и раздаваться менеджерам-селянам (т.е. быть прозрачным и понятным)
16. urbanist Железняков (urbanist) 30.11.11 16:42
(15) Если информацию о доп.днях и суммы брать из договора,то этот отчет не нужен,т.к.эти поля доступны в случае ведения взаиморасчетов "по расчетным документам" и можно обойтсь штатным отчетом.
В случае ведения учета без установки флага "по расчетным документам" без изменения конфигурации(хотелось бы обойтись) число дней не проставить.А отчет сделан как раз для таких ситуаций и реже,где учет по документам установлен,но запущен.
17. mxm2 mxm2 (mxm2) 30.11.11 17:02
(16) urbanist, про правку - это да..., но по опыту торговлю чаще всего приходится "затачивать"... вот бухию - обычно оставляю в первозданном виде.
18. Галина Орехова (orehova123) 02.05.12 11:22
ммм, спасибо! интересно и достаточно подробно, добавлю в закладки
19. mxm2 mxm2 (mxm2) 18.05.12 13:26
Для УТ11 аналогичный отчет: http://infostart.ru/public/128507/ (основная группировка по АналитикеУчетаПоПартнерам)
20. Stas Churkin (Stas-ch) 07.11.12 22:16
Спасибо за отчет.
Клиент попросил нечто подобное, только в разрезе клиентов (без учета договора, ибо менеджеры, разносящие банк, часто и договор неправильно указывают). Ну и еще прикрутил к нему интервалы задолженности. Получилось то, что надо!
Правда не понял, что есть поля
НО и КО - если не сложно, опишите.
21. mxm2 mxm2 (mxm2) 07.11.12 22:58
(20) Stas-ch, НО = Начальный остаток, КО = Конечный остаток, по логике отчета вроде это видно. Если модифицировали - смело выкладывайте, возможно кому-то нужен именно Ваш отчет.
22. kotuke 08.11.12 02:35
Данный отчет актуален потому что заставить сбытовиков работать по документам расчетов практически нереально по двум причинам, разносят деньги не они и даже не бухгалтерия а финслужба и там то все и виснет...
23. mxm2 mxm2 (mxm2) 08.11.12 06:44
(16) urbanist, в принципе и без правки можно обойтись... нужно только сделать некую внешнюю обработку в которой будут доступны для записи нужные реквизиты договора... но с правкой - проще.
24. Сергей Маслов (LexSeIch) 09.08.13 04:34
Мир этому дому!
Статья интересная, возможно скоро воспользуюсь обработкой, но пока взял на заметку. Хочу разобраться с запросами.
25. serge_focus (serge_focus) 14.08.13 22:47
Обсуждение похоже затихло...
Однозначно плюс за расписанную процедуру.
Но хочу заметить строить отчет погашая по фифо - очень нерационально. Берем ТЕКУЩИЙ ДОЛГ (+ или - ) и разворотом от сейчас назад по документам-регистратором задолженности. Набераем требуемую сумму - будет в 10 раз быстрее... Тем более если есть задача сохранить "девственность" кода 1С и не использовать для накопления регистры, то зачастую на средней фирме уже через год внешний пересчет всех долгов по ФИФО занимает прилично времени, и блокирует работу...
А пересчет разворотом от сейчас успешно используется со времен 7.7 (здесь примеров полно).
И второе. Количество дней просрочки часто используют для СТОПа отгрузок.
А в случае с задачей оперативного изменения этого параметра, (для - например- предоставления акционных условий в рамках одного договора, на определенный период) использовать параметры отсрочки из "договора" очень неудобно.
Да и при сохранении "девственности" кода 1С лучше использовать свойства объекта(справочник "Контрагенты").
26. mxm2 mxm2 (mxm2) 14.01.14 13:49
(25) serge_focus,
Согласен с Вами. А есть соображения как можно сделать эффективнее с использованием регистров?
Общая идея: записи в регистрах (самопальных) фомируются фоновым заданием (скажем ночью), со сдвигом соответствующей последовательности. А в процессе работы производится "склейка" результатов по регистру и остатка по fifo, непосредственно из документов.
27. Сергей (ildarovich) 04.03.14 16:17
Предлагаю другое, гораздо более быстрое решение той же задачи: http://infostart.ru/public/262300/. Не требующее, к тому же, изменений в конфигурации.
28. Павел Романов (Pawlick) 03.04.14 00:00
Все это здорово, но вот незадача:
этот отчет и http://infostart.ru/public/262300/ от ildarovichа разные результаты показывают...

или это только у меня одного?

И кстати результаты отчета от ildarovichа более похожи на правду...
29. mxm2 mxm2 (mxm2) 03.04.14 07:55
(28) Pawlick, у Вас нет документов введенных одной датой и одним времением по одному контрагенту? Всмотритесь в алгоритм: оптимизированный отчет имеет некоторые особенности.
31. Татьяна *** (20tanush) 17.12.14 18:00
Ошибок в запрос как минимум 2:
1. И (ВЫБОР
КОГДА ДоговорРеализации.ДатаОплаты = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
ТОГДА ВЫБОР
КОГДА ДоговорРеализации.ДатаДокумента = ДоговорРеализацияКО.ДатаДокумента
ТОГДА ДоговорРеализации.Регистратор ИНАЧЕ ДоговорРеализации.ДатаДокумента КОНЕЦ
ИНАЧЕ ВЫБОР
КОГДА ДоговорРеализации.ДатаОплаты = ДоговорРеализацияКО.ДатаОплаты
ТОГДА ДоговорРеализации.Регистратор ИНАЧЕ ДоговорРеализации.ДатаОплаты КОНЕЦ
КОНЕЦ)

2. ГДЕ
ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток > 0
32. mxm2 mxm2 (mxm2) 18.12.14 07:15
(31) 20tanush, Как-то не очевидно, что в приведенных фрагментах есть ошибки. Логику запроса - вижу, а вот ошибок - нет. Ткните, как говорится, носом.
33. Татьяна *** (20tanush) 18.12.14 10:01
Да, на вид все вроде очевидно. Но конструктор запроса спотыкается на этих местах.
В 1. конструкция И (Выбор...) Неверные параметры "И"
И (<<?>> Выбор...) 

Во втором: получаю вот такую ошибку: "Операция не разрешена в предложении ГДЕ
<<?>>ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток > 0"
34. Татьяна *** (20tanush) 18.12.14 10:21
Уважаемый автор! Я прошу прощения, что все время вроде как нахожу ошибки. Но вот в третьем запросе, кроме реализаций попадают еще и платежки исходящие. Думаю, тут надо еще условие поставить, потому что платежки вроде не нужны. Поправьте меня, если я ошибаюсь.
35. mxm2 mxm2 (mxm2) 18.12.14 15:32
(33) 20tanush, во втором случае следует читать ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрНачальныйОстаток <=0 И ВзаиморасчетыСКонтрагентамиОстаткиИОбороты.СуммаУпрКонечныйОстаток > 0,
Видимо "<=" - "съел" редактор, в самом тексте обработки все в порядке. В основном тексте - это уже исправлено. Спасибо.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа