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

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

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

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

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

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

...

... 

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

Файлы

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

См. также

Комментарии

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

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

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

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


Перезалил файл.
# Ответить
10. mxm2 28.11.2011 11:54
anig99 пишет:

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


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

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

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

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

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

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

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