[УТ11] Дебиторка fifo по долгам контрагентов (СКД, управляемый интерфейс)

В УТ11 все хорошо с расчетом дебиторской задолженности… но не всегда: в частности, иногда пользователи задним числом перепроводят документы, причем это может происходить не в текущей базе, а, скажем, в смежной бухгалтерии (из которой потом автоматом переносятся документы) — в этом случае предназначенная для отслеживания этого последовательность может не фиксировать изменения… Ну и сам расчет (фоновое задание, если его запускать в течение дня) постоянно конфликтует с интерактивно проводимыми документами, а дебиторка нужна "здесь и сейчас", без всяких "актуализаций". Представленный отчет отчасти решает эту проблему. Он построен по принципу описанному тут http://infostart.ru/public/99848/ (т.е. строит дебиторку на "лету", разрез договоров в нем заменен на разрез АналитикиУчетаПоПартнерам, даты оплаты берутся не из договоров, а из ЗаказовКлиентов, а если нет ЗаказаКлиента и заполнена ДатаПлатежа в Реализации — берется эта ДатаПлатежа, ну, а если и она не заполнена, то используется дата документа)

Отчет можно внедрить как внешний.

Но можно добавить удобства пользователям:

Внедрить отчет в конфигурацию, добавить команду в карточку Партнеров, Контрагентов, Реализаций, Заявок, ПКО, ПП.

Текст Модуля команды:

 &НаСервере
Функция ВернутьПартнераПоДокументу(Документ)
    Возврат Документ.Партнер;
КонецФункции

&НаСервере
Функция ВернутьКонтрагентаПоДокументу(Документ)
    Возврат Документ.Контрагент;
КонецФункции

&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
        
    ПараметрыФормы = Новый Структура(«Отбор, ФиксированныеНастройки, КлючНазначенияИспользования, КлючВарианта, СформироватьПриОткрытии»);
    ПараметрыФормы.СформироватьПриОткрытии = Истина;
    
    Если ТипЗнч(ПараметрКоманды) = Тип(«ДокументСсылка.РеализацияТоваровУслуг») Тогда
        ПараметрыФормы.Отбор = Новый Структура(«Партнер», ВернутьПартнераПоДокументу(ПараметрКоманды));
        ПараметрыФормы.КлючНазначенияИспользования = «Партнер»;
        ПараметрыФормы.КлючВарианта = «Основной»;
        
    ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип(«ДокументСсылка.ЗаказКлиента») Тогда
        ПараметрыФормы.Отбор = Новый Структура(«Партнер», ВернутьПартнераПоДокументу(ПараметрКоманды));
        ПараметрыФормы.КлючНазначенияИспользования = «Партнер»;
        ПараметрыФормы.КлючВарианта = «Основной»;
        
    ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип(«ДокументСсылка.ПриходныйКассовыйОрдер») Тогда
        ПараметрыФормы.Отбор = Новый Структура(«Контрагент», ВернутьКонтрагентаПоДокументу(ПараметрКоманды));
        ПараметрыФормы.КлючНазначенияИспользования = «Контрагент»;
        ПараметрыФормы.КлючВарианта = «Основной»;
    
    ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип(«ДокументСсылка.ПоступлениеБезналичныхДенежныхСредств») Тогда
        ПараметрыФормы.Отбор = Новый Структура(«Контрагент», ВернутьКонтрагентаПоДокументу(ПараметрКоманды));
        ПараметрыФормы.КлючНазначенияИспользования = «Контрагент»;
        ПараметрыФормы.КлючВарианта = «Основной»;
        
    ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип(«СправочникСсылка.Контрагенты») Тогда
        ПараметрыФормы.Отбор = Новый Структура(«Контрагент», ПараметрКоманды);
        ПараметрыФормы.КлючНазначенияИспользования = «Контрагент»;
        ПараметрыФормы.КлючВарианта = «Основной»;

    ИначеЕсли ТипЗнч(ПараметрКоманды) = Тип(«СправочникСсылка.Партнеры») Тогда
        
        Если ПартнерыИКонтрагенты.ЕстьПодчиненныеПартнеры(ПараметрКоманды) Тогда
            ФиксированныеНастройки = Новый НастройкиКомпоновкиДанных();
            ЭлементОтбора = ФиксированныеНастройки.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
            ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«Партнер»);
            ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;
            ЭлементОтбора.ПравоеЗначение = ПараметрКоманды;
            ПараметрыФормы.ФиксированныеНастройки = ФиксированныеНастройки;
            ПараметрыФормы.КлючНазначенияИспользования = «Партнер»;
            
        Иначе
            ПараметрыФормы.Отбор = Новый Структура(«Партнер», ПараметрКоманды);
            ПараметрыФормы.КлючНазначенияИспользования = «Партнер»;
            
        КонецЕсли;
        ПараметрыФормы.КлючВарианта = «Основной»;
    КонецЕсли;

    ОткрытьФорму(«Отчет.ДолгиКлиентов.Форма», ПараметрыФормы, ПараметрыВыполненияКоманды.Источник, ПараметрыВыполненияКоманды.Уникальность, ПараметрыВыполненияКоманды.Окно);
КонецПроцедуры

Настроить соотвтетствующий тип команды, права и … все.

PS: Для пользователей с ограниченными правами, возможно, следует добавить роль с правом просмотра справочника КлючиАналитикиУчетаПоПартнерам

PS2: Существует еще одна, продвинутая версия данного отчета, с возможностью нестандартной расшифровки, т.е. непосредственно из формы отчета можно получить взаиморасчеты с клиентами //infostart.ru/public/165599/

 

 

12 Comments

  1. kavun.yura

    Проживания этого последовательность может не фиксировать изменения… Ну и сам расчет (фоновое задание, если его запускать в течение дня) постоянно конфликтует с интерактивно проводимыми документами, а дебиторка нужна «здесь и сейчас», без всяких «актуализаций». Представленный отчет отчасти решает эту проблему. Он построен по принципу описанному тут http://infostart.ru/public/99848/ (т.е. строит дебиторку на «лету», разрез договоров в нем заменен на разрез АналитикиУчетаПоПартнерам, даты оплаты берутся не из договоров, а из ЗаявокПокупателя, если заявки нет, то используется дата документа)

    Reply
  2. bercut0077

    Супер, все работает как надо! Вот бы такой же внешний отчет по долгам перед поставщиками! Если не трудно ! Огромная благодарность!

    Reply
  3. plevakin
    даты оплаты берутся не из договоров, а из ЗаявокПокупателя, если заявки нет, то используется дата документа

    В свое время для УТ11 пришлось делать такой же отчет, и он, после перехода на систему, несколько заказов — одна реализация, потребовал доработок. Исходя из описания, не понятно, какая дата будет использоваться если заказов несколько и все они сделаны в разные дни.

    И да, к системе 1 заказ — 1 реализация, использовать дату заказа не всегда бывает удобно. Заказ был сделан месяц назад, а отгрузили только сегодня, отсрочка у клиента 10 дней. Получается только отгрузили, а уже 20 дней просрочено.

    Reply
  4. mxm2

    (3) plevakin, дата оплаты берется из заказа из поля «дата оплаты», при необходимости это поле можно скорректировать при проведении документа реализации. при использовании системы несколько заявок — несколько реализаций, все-же эффективнее встроенный механизм, который правда не очень любит правки задним числом.

    Reply
  5. mxm2

    (3) plevakin, случай несколько заказов — одна реализация, тоже может быть отстроен подобным отчетом, просто нужно будет «дробить» сумму реализации, пропорционально сумме заказов. тут появляется другая трудность: как поступать когда сумма заказов не равна сумме реализации.

    Reply
  6. simba08

    Хороший отчет. Для полноты душевного счастья — было бы неплохо увидеть его за период и, соответственно, оплаты и продажи в этом периоде… но это уже немного другой отчет))))

    Reply
  7. greenLiss

    А для УТ10.3 такой же есть ? )

    Reply
  8. 028

    здесь учитывается ввод начальных остатков: Расчеты с покупателями и заказчиками (счета 1210, 3510)?

    Reply
  9. mxm2

    (8) Отчет для УТ11, в которой нет счетов.

    Reply
  10. 028

    (9) а как тогда учитывается ввод начальных остатков?

    Reply
  11. mxm2

    (10) В УТ11 отчет учитывает в том числе и ввод начальных остатков. Детализацию по долгам разворачивает только по документам реализации, но так и было задумано.

    Reply
  12. 028

    (11) у меня УТ 2.0

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *