Имя: Пароль:
1C
1C 7.7
v7: "Стоп Отгрузка" по истеченю 21 дня в БУ
0 crisalis
 
23.10.13
20:43
Доброе время суток, помогите пожалуйста с концепцией реализации "Стоп Отгрузки" для контрагента который просрочил оплату товара свыше 21-го дня. Заранее благодарен.
1 serg-lom89
 
23.10.13
20:51
сделаай документ ЗАпретОтгрузки с выбором контрагента и договором по которому вы работаете.
при отгрузке например при проведение выбирайтесь  по этим докам(с учетом контрагента)
2 crisalis
 
23.10.13
22:12
(1) Не понял для чего создавать доп документ? Мне надо получить сумму просроченной оплаты по истечении 21 дня при выборе клиента в доках реализации.
3 Aleksey
 
23.10.13
22:17
(2) Не делай так
4 crisalis
 
23.10.13
22:19
(3) а как?
5 Aleksey
 
23.10.13
22:19
как человек прошедшую эту херню, советую ограничится обработкой которую ЛПР запускает раз в день и уже из обработка проставляет флаг в карточке клиента, запрет отгрузки. При необходимости другой ЛПР заходит в карточку и снимает блокировки (типа деньги перечислены вот скан платежки, или это супер-пупер вип клиент с которым у нас бартер).

Ну а дальше уже ориентируйся по галочки
6 Aleksey
 
23.10.13
22:20
Через некоторое время никто уже не будет запускать обработку ибо им в падлу будет снимать, а просто руками будут ставить на особо злостных
7 Aleksey
 
23.10.13
22:22
У нас тоже руководство кричало, что надо аж пипец, мы сами будем снимать галочки если нужно, но их хватило буквально на пару недель, потом они замучались разблокировать и сейчас у нас просто есть ЛПР который отвечает за это дело и он сам в ручную либо ставит галочки либо снимает, потому что всегда есть случае когда по политическим соображениям отгрузка должна пройти
8 crisalis
 
23.10.13
22:24
(7) Алексей а что такое ЛПР?
9 Aleksey
 
23.10.13
22:38
(8) лицо принимающее решение
10 KUBIK
 
23.10.13
22:40
ЛДПР-ЛПР=Жириновский :)))))))
11 crisalis
 
23.10.13
22:49
(10) =))))
12 crisalis
 
23.10.13
23:08
В принципе у меня есть алгоритм вывода долгов по периодам, но честно говоря я так и не разобрался как он работает. Если интересно вот кусок кода:

Процедура ПолучитьИЗаполнитьДанные(СчетаУчета)
    
    Период1Расх       = 0;
    Период2Расх       = 0;
    Период3Расх       = 0;
    Период4Расх       = 0;
    Период5Расх       = 0;
    Период6Расх       = 0;
    ПериодРасх        = 0;
    ПериодОплаты      = 0;
    ТекДолг         = 0;
    ПериодДолг1     = 0;
    ПериодДолг2     = 0;
    ПериодДолг3     = 0;
    ПериодДолг4     = 0;
    ПериодДолг5     = 0;
    ПериодДолг6     = 0;
    ГрТекДолг         = 0;
    ГрПериод1         = 0;
    ГрПериод2         = 0;
    ГрПериод3         = 0;
    ГрПериод4         = 0;
    ГрПериод5         = 0;
    ГрПериод6         = 0;
    ИтТекДолг         = 0;
    ИтПериод1         = 0;
    ИтПериод2         = 0;
    ИтПериод3         = 0;
    ИтПериод4         = 0;
    ИтПериод5         = 0;
    ИтПериод6         = 0;
            
    БИ=СоздатьОбъект("БухгалтерскиеИтоги");
    Если Фирма.Выбран()=1 Тогда
        БИ.ИспользоватьРазделительУчета(Фирма);
    КонецЕсли;    
    БИ.ИспользоватьСубконто(ВидыСубконто.Контрагенты,ВыбКлиент);
    Заг="";
    Если ВыбКлиент.Выбран()=0 Тогда
        Заг = Заг + "По всем клиентам;";
    ИначеЕсли ВыбКлиент.ЭтоГруппа()=1 Тогда
        Заг = Заг + "По клиентам группы " + СокрЛП(ВыбКлиент.Наименование) + ";";
    Иначе
        Заг=Заг + "По клиенту " + СокрЛП(ВыбКлиент.Наименование) + ";";
    КонецЕсли;
    Пер = "";
    Пер=Пер+" По ДатаС;";
    ВсеДни = Пр5+1;
    Дата1=ДатаС-ВсеДни;
    Дата2=ДатаС;
    
    БИ.ВыполнитьЗапрос(Дата1,Дата2,СчетаУчета,,,3,"День");
        
    Период1К = ДатаС;
    Период1Н = Период1К-Пр1+1;
    
    Период2К = Период1Н-1;
    Период2Н = Период1К-Пр2+1;
    
    Период3К = Период2Н-1;
    Период3Н = Период1К-Пр3+1;
    
    Период4К = Период3Н-1;
    Период4Н = Период1К-Пр4+1;
    
    Период5К = Период4Н-1;
    Период5Н = Период1К-Пр5+1;
    
    Период6К = Период5Н-1;
    Период6Н = Дата1;
    
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Взаиморасчеты");
    
    Если флПризнакСумм = 1 Тогда
        печПризнакСуммы = "В"
    ИначеЕсли флПризнакСумм = 2 Тогда
        печПризнакСуммы = "Б"
    Иначе
        печПризнакСуммы = "Н"
    КонецЕсли;
        
    Таб.ВывестиСекцию("Заголовок");
    ЧислоСтрок = 0;
    
    БИ.ВыбратьСубконто();
    
    Пока БИ.ПолучитьСубконто()>0 Цикл
        Если ВыбАгент.Выбран()=1 Тогда
            Если БИ.Субконто().Менеджер<>ВыбАгент Тогда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        Если БИ.Субконто().ЭтоГруппа() = 1 Тогда
            Если (ГрТекДолг+ГрПериод1+ГрПериод2+ГрПериод3+ГрПериод4+ГрПериод5+ГрПериод6) > 0 Тогда
                Таб.ВывестиСекцию("ГруппаИтог");
                ГрТекДолг = 0;
                ГрПериод1 = 0;
                ГрПериод2 = 0;
                ГрПериод3 = 0;
                ГрПериод4 = 0;
                ГрПериод5 = 0;
                ГрПериод6 = 0;
            КонецЕсли;
            Таб.ВывестиСекцию("Группа");
            Продолжить;
        КонецЕсли;
        НачОст         = БИ.СНД()-БИ.СНК();
        Период6Расх = НачОст;//Период6Расх+
        БИ.ВыбратьПериоды();
        Пока БИ.ПолучитьПериод()>0 Цикл
                    
                //ПрДатаДок = БИ.Операция.Документ.ДатаДок;//Запрос.День;
                ПрДатаДок     = БИ.НачДата;//Запрос.День;
                ПрПрихГРН     = ?(БИ.КО()>0,БИ.КО(),0)-?(БИ.ДО()<0,БИ.ДО(),0); //Запрос.ПрихГРН;
                ПрРасхГРН     = ?(БИ.ДО()>0,БИ.ДО(),0)-?(БИ.КО()<0,БИ.КО(),0); //Запрос.РасхГРН;
                //Если (ПрДатаДок <= Период5К) И (ПрДатаДок >= Период5Н) тогда
            //Период5Расх = Период5Расх+ПрРасхГРН;
            //Период5Расх = НачОст;//Период5Расх+
            //КонецЕсли;
            Если (ПрПрихГРН <> 0) И (ПрРасхГРН = 0) Тогда
                ПериодОплаты=ПериодОплаты+ПрПрихГРН;                
            ИначеЕсли (ПрПрихГРН = 0) И (ПрРасхГРН <> 0) Тогда
                Если (ПрДатаДок <= Период1К) И (ПрДатаДок >= Период1Н) тогда
                    Период1Расх = Период1Расх+ПрРасхГРН;
                ИначеЕсли (ПрДатаДок <= Период2К) И (ПрДатаДок >= Период2Н) тогда
                    Период2Расх = Период2Расх+ПрРасхГРН;
                ИначеЕсли (ПрДатаДок <= Период3К) И (ПрДатаДок >= Период3Н) тогда
                    Период3Расх = Период3Расх+ПрРасхГРН;
                ИначеЕсли (ПрДатаДок <= Период4К) И (ПрДатаДок >= Период4Н) тогда
                    Период4Расх = Период4Расх+ПрРасхГРН;
                ИначеЕсли (ПрДатаДок <= Период5К) И (ПрДатаДок >= Период5Н) тогда
                    Период5Расх = Период5Расх+ПрРасхГРН;    
                    //ИначеЕсли (ПрДатаДок <= Период5К) И (ПрДатаДок >= Период5Н) тогда
                    ////    //Период5Расх = Период5Расх+ПрРасхГРН;
                    //    Период5Расх = Период5Расх+НачОст;
                КонецЕсли;
            ИначеЕсли (ПрПрихГРН <> 0) И (ПрРасхГРН <> 0) Тогда
                ПериодОплаты=ПериодОплаты+ПрПрихГРН;                
                Если (ПрДатаДок <= Период1К) И (ПрДатаДок >= Период1Н) тогда
                    Период1Расх = Период1Расх+ПрРасхГРН;
                ИначеЕсли (ПрДатаДок <= Период2К) И (ПрДатаДок >= Период2Н) тогда
                    Период2Расх = Период2Расх+ПрРасхГРН;
                ИначеЕсли (ПрДатаДок <= Период3К) И (ПрДатаДок >= Период3Н) тогда
                    Период3Расх = Период3Расх+ПрРасхГРН;
                ИначеЕсли (ПрДатаДок <= Период4К) И (ПрДатаДок >= Период4Н) тогда
                    Период4Расх = Период4Расх+ПрРасхГРН;
                ИначеЕсли (ПрДатаДок <= Период5К) И (ПрДатаДок >= Период5Н) тогда
                    Период5Расх = Период5Расх+ПрРасхГРН;    
                КонецЕсли;
            КонецЕсли;
            
            
                    
        КонецЦикла;                
    
        // расчет задолженности по периодам минус оплаты    
        ПериодРасх   = Период1Расх + Период2Расх + Период3Расх + Период4Расх + Период5Расх + Период6Расх;
        //ПериодДолг5 = Период5Расх;
        Если ПериодОплаты > 0 Тогда
            ПериодОплаты=ПериодОплаты-Период6Расх;
            Если ПериодОплаты > 0 Тогда
                //ПериодДолг6 = 0;
                ПериодОплаты=ПериодОплаты-Период5Расх;
                Если  ПериодОплаты > 0 Тогда
                    ПериодДолг5 = 0;
                    ПериодОплаты=ПериодОплаты-Период4Расх;
                    Если  ПериодОплаты > 0 Тогда
                        ПериодДолг4 = 0;
                        ПериодОплаты=ПериодОплаты-Период3Расх;
                        Если  ПериодОплаты > 0 Тогда
                            ПериодДолг3 = 0;
                            ПериодОплаты=ПериодОплаты-Период2Расх;
                            Если  ПериодОплаты > 0 Тогда
                                ПериодДолг2 = 0;
                                ПериодОплаты=ПериодОплаты-Период1Расх;
                                Если  ПериодОплаты > 0 Тогда
                                    ПериодДолг1 = 0;
                                Иначе
                                    ПериодДолг1 = -1*ПериодОплаты;
                                КонецЕсли;
                            Иначе
                                ПериодДолг2 = -1*ПериодОплаты;
                                ПериодДолг1 = Период1Расх;
                            КонецЕсли;
                        Иначе
                            ПериодДолг3 = -1*ПериодОплаты;
                            ПериодДолг2 = Период2Расх;
                            ПериодДолг1 = Период1Расх;
                        КонецЕсли;
                    Иначе
                        ПериодДолг4 = -1*ПериодОплаты;
                        ПериодДолг3 = Период3Расх;
                        ПериодДолг2 = Период2Расх;
                        ПериодДолг1 = Период1Расх;
                    КонецЕсли;
                Иначе    
                    ПериодДолг5 = -1*ПериодОплаты;
                    ПериодДолг4 = Период4Расх;
                    ПериодДолг3 = Период3Расх;
                    ПериодДолг2 = Период2Расх;
                    ПериодДолг1 = Период1Расх;
                КонецЕсли;
            Иначе    
                ПериодДолг6 = -1*ПериодОплаты;
                ПериодДолг5 = Период5Расх;
                ПериодДолг4 = Период4Расх;
                ПериодДолг3 = Период3Расх;
                ПериодДолг2 = Период2Расх;
                ПериодДолг1 = Период1Расх;
            КонецЕсли;    
        Иначе
            ПериодДолг6 = Период6Расх;
            ПериодДолг5 = Период5Расх;
            ПериодДолг4 = Период4Расх;
            ПериодДолг3 = Период3Расх;
            ПериодДолг2 = Период2Расх;
            ПериодДолг1 = Период1Расх;
        КонецЕсли;    
        
        ТекДолг     = ПериодДолг1 + ПериодДолг2 + ПериодДолг3 + ПериодДолг4 + ПериодДолг5 + ПериодДолг6 - ?(ПериодОплаты>0,ПериодОплаты,0);
        
        Если ТекДолг < 0 Тогда
            ПериодДолг6 = 0;
            ПериодДолг5 = 0;
            ПериодДолг4 = 0;
            ПериодДолг3 = 0;
            ПериодДолг2 = 0;
            ПериодДолг1 = 0;
        КонецЕсли;
        
        Если ПризнПоказ = 1 Тогда //показывать без долга
            Если (ПериодДолг3 >= Крт3) или (ПериодДолг6 >= Крт5) Тогда
                Если ПериодДолг6 >= Крт5 Тогда
                    Таб.ВывестиСекцию("Клиент3");
                Иначе
                    Таб.ВывестиСекцию("Клиент2");
                КонецЕсли;
            Иначе
                Таб.ВывестиСекцию("Клиент");
            КонецЕсли;
        
        Иначе
            Если (ТекДолг+ПериодДолг6+ПериодДолг5+ПериодДолг4+ПериодДолг3+ПериодДолг2+ПериодДолг1)>0 Тогда
                Если (ПериодДолг3 >= Крт3) или (ПериодДолг6 >= Крт5) Тогда
                    Если ПериодДолг6 >= Крт5 Тогда
                        Таб.ВывестиСекцию("Клиент3");
                    Иначе
                        Таб.ВывестиСекцию("Клиент2");
                    КонецЕсли;
                Иначе
                    Таб.ВывестиСекцию("Клиент");
                КонецЕсли;
            КонецЕсли;
        
        
        КонецЕсли;
        Если ТекДолг<0 Тогда
            ТекДолг =0;
        КонецЕсли;
        
        //Сообщить("Тек долг"+Запрос.ЗначениеУпорядочивания(1,1)+ТекДолг);    
        
        ИтТекДолг = ИтТекДолг + ТекДолг;
        ИтПериод1 = ИтПериод1 + ПериодДолг1;
        ИтПериод2 = ИтПериод2 + ПериодДолг2;
        ИтПериод3 = ИтПериод3 + ПериодДолг3;
        ИтПериод4 = ИтПериод4 + ПериодДолг4;
        ИтПериод5 = ИтПериод5 + ПериодДолг5;
        ИтПериод6 = ИтПериод6 + ПериодДолг6;
        
        ГрТекДолг = ГрТекДолг + ТекДолг;
        ГрПериод1 = ГрПериод1 + ПериодДолг1;
        ГрПериод2 = ГрПериод2 + ПериодДолг2;
        ГрПериод3 = ГрПериод3 + ПериодДолг3;
        ГрПериод4 = ГрПериод4 + ПериодДолг4;
        ГрПериод5 = ГрПериод5 + ПериодДолг5;
        ГрПериод6 = ГрПериод6 + ПериодДолг6;
        
        ПериодДолг1 = 0;
        ПериодДолг2 = 0;
        ПериодДолг3 = 0;
        ПериодДолг4 = 0;
        ПериодДолг5 = 0;
        ПериодДолг6 = 0;
        ТекДолг     = 0;
        
        Период1Расх   = 0;
        Период2Расх   = 0;
        Период3Расх   = 0;
        Период4Расх   = 0;
        Период5Расх   = 0;
        Период6Расх   = 0;
        ПериодРасх    = 0;
        ПериодОплаты  = 0;
        
    КонецЦикла;
    Таб.ВывестиСекцию("ГруппаИтог");
    Таб.ВывестиСекцию("ИтогоГРН");
    
    // конец "обработка дебиторской задолженности    
    
    Таб.Опции(0,0,5,0);
    Таб.ТолькоПросмотр(1);
    Таб.Показать("Структура дебиторской задолженности","");

КонецПроцедуры    

13 KUBIK
 
23.10.13
23:17
(12) Брррр...
Озвучь, на каких условиях заключён договор?
14 crisalis
 
23.10.13
23:22
(13) В основном клиенты должны рассчитываться за 21 день но супермаркеты имеют до 40 дней отсрочки еще и кредит.
15 KUBIK
 
23.10.13
23:31
(14) Ну и сбацай запрос:
с формированием ТЗ из неоплаченных документов на дату фиксации долга(62.01 счет) в разрезе: Клиент- Договор- Документ -ДатаДокумента -СуммаДолгаПоДокументу
А потом анализируй: Есть КредитныйЛимит или нет, есть Просрочка или нет

Чтото подобное делал в бухии 7.7 давно,
= Переходи на 8.2
16 crisalis
 
24.10.13
02:10
(15) а можно по подробнее пожалуйста?
17 Злопчинский
 
24.10.13
02:36
1Сники. которые не знают ЛПР и ВЗУ - достойны только тарелки супа и наручником к батарее
18 crisalis
 
24.10.13
02:44
(17) Не все же так продвинуты как вы в сокращениях ;-)
19 Mikeware
 
24.10.13
05:45
(6) поставь в планировщик, и не будет необходимости запускать обработку руками....
20 KRV
 
24.10.13
05:51
Если начальник из чебуреков, то никакая автоматика не справится. Ибо "Ашот свой чилавэк ему чичас дай товар - он патом мнэ дэньги даваль вчера" )))
21 Mikeware
 
24.10.13
05:54
(20) не обязательно "чебуреки".....
Хотя от руководства необходимо желание устанавливать и соблюдать единые правила и процедуры...
22 Master1C
 
24.10.13
06:00
(21) А "чебурек" - в данном контексте - не нация.
23 Master1C
 
24.10.13
06:00
+(22) Вернее, нация, но не в общепринятом смысле :)
24 Master1C
 
24.10.13
06:02
(20) А в чем проблема? В Справочнике контрагентов на "Ашота" галку - "свой чилавэк" - и все)
25 Master1C
 
24.10.13
06:03
+(24) Даже и галки никакой не надо, Основное свойство установить такое - и пожалуйста )
26 Maximysis
 
24.10.13
07:08
(17) ВЗУ - Внешние запоминающие устройства))
и Водозаборный узел...
27 Aleksey
 
24.10.13
10:32
(19) Не вариант, потому что очень много "нюансов"
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.