Имя: Пароль:
1C
1C 7.7
v7: сортировка в отчете
0 Ardov
 
11.11.14
12:11
Подскажите пожалуйста каким образом можно сделать что бы в отчете сортировало всю таблицу по 1 колонке?
1 Looser-1c
 
11.11.14
12:12
тз.Сортировать("перваяКолонка");

ЗЫ, какой вопрос, такой и ответ
2 Мигало
 
11.11.14
12:12
.Сортировать("+<ИмяКолонки>");
3 Ardov
 
11.11.14
12:12
получаеться что нужно что бы сортировало по сумме2



//*******************************************
Процедура ПриОткрытии()
    ВидОтчета = 1;
    надату=ТекущаяДата();
    
КонецПроцедуры
//*******************************************
Функция ДатаОпл(ЧислоДней, ДаНач,КалендДни)
Если КалендДни=1 Тогда
ДаНач=ДаНач+ЧислоДней;
Иначе
    кк = 1;
    Пока кк <= ЧислоДней - 1 Цикл
        // проверка празников
        Если ((ДатаЧисло(ДаНач) = 1)  и (ДатаМесяц(ДаНач) = 1)) или // 1 января
        ((ДатаЧисло(ДаНач) = 7)  и (ДатаМесяц(ДаНач) = 1)) или // 7 января (рождество)
        ((ДатаЧисло(ДаНач) = 8)  и (ДатаМесяц(ДаНач) = 3)) или // 8 марта
        ((ДатаЧисло(ДаНач) = 19)  и (ДатаМесяц(ДаНач) = 4)) или // Пасха
        ((ДатаЧисло(ДаНач) = 1)  и (ДатаМесяц(ДаНач) = 5)) или // 1 мая
        ((ДатаЧисло(ДаНач) = 2)  и (ДатаМесяц(ДаНач) = 5)) или // 2 мая
        ((ДатаЧисло(ДаНач) = 9)  и (ДатаМесяц(ДаНач) = 5)) или // 9 мая
        ((ДатаЧисло(ДаНач) = 27)  и (ДатаМесяц(ДаНач) = 5)) или // Тройца
        ((ДатаЧисло(ДаНач) = 28) и (ДатаМесяц(ДаНач) = 6)) или // День конституции
        ((ДатаЧисло(ДаНач) = 24) и (ДатаМесяц(ДаНач) = 8)) Тогда// День независимости
        Иначе
            Если НомерДняНедели(ДаНач) <= 5 Тогда
                кк = кк + 1;
            КонецЕсли;
        КонецЕсли;
        ДаНач = ДаНач + 1;
    КонецЦикла;            
КонецЕсли;
Возврат ДаНач;          
КонецФункции //ДатаОпл()
//*******************************************
Функция СтДата(ЧислоДней, ДаНач,КалендДни)
Если КалендДни=1 Тогда
ДаНач=ДаНач-ЧислоДней;
Иначе
    кк = 0;
    Пока кк <= ЧислоДней Цикл
        // проверка празников
        Если ((ДатаЧисло(ДаНач) = 1)  и (ДатаМесяц(ДаНач) = 1)) или // 1 января
        ((ДатаЧисло(ДаНач) = 7)  и (ДатаМесяц(ДаНач) = 1)) или // 7 января (рождество)
        ((ДатаЧисло(ДаНач) = 8)  и (ДатаМесяц(ДаНач) = 3)) или // 8 марта
        ((ДатаЧисло(ДаНач) = 19)  и (ДатаМесяц(ДаНач) = 4)) или // Пасха
        ((ДатаЧисло(ДаНач) = 1)  и (ДатаМесяц(ДаНач) = 5)) или // 1 мая
        ((ДатаЧисло(ДаНач) = 2)  и (ДатаМесяц(ДаНач) = 5)) или // 2 мая
        ((ДатаЧисло(ДаНач) = 9)  и (ДатаМесяц(ДаНач) = 5)) или // 9 мая
        ((ДатаЧисло(ДаНач) = 27)  и (ДатаМесяц(ДаНач) = 5)) или // Тройца
        ((ДатаЧисло(ДаНач) = 28) и (ДатаМесяц(ДаНач) = 6)) или // День конституции
        ((ДатаЧисло(ДаНач) = 24) и (ДатаМесяц(ДаНач) = 8)) Тогда// День независимости
        Иначе
            Если НомерДняНедели(ДаНач) <= 5 Тогда
                кк = кк + 1;
            КонецЕсли;
        КонецЕсли;
        ДаНач = ДаНач - 1;
    КонецЦикла;            
КонецЕсли;
Возврат ДаНач;          
КонецФункции //СтДата
//*******************************************
Процедура Сформировать()
    Если ПустоеЗначение(НаДату) = 1 Тогда
        Сообщить("Введите дату!", "!");
        Возврат;
    КонецЕсли;
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");
    Ит.ИспользоватьСубконто(ВидыСубконто.Контрагенты, ?(ВыбКонтрагент.Выбран() = 1, ВыбКонтрагент, ""), 1, 0);
    Ит.ИспользоватьПланСчетов(ПланыСчетов.Основной);
    Ит.ИспользоватьРазделительУчета(Константа.БазФирма);
    Ит.ВключатьСубсчета(0, 0);
    Ит.Опции(0, 0);
    Попытка
        Ит.ВыполнитьЗапрос("01.01.05", НаДату, "361", "", , 3, 2);
    Исключение
        Сообщить("Запрос по бух. итогам не выполнен! Укажите по меньше дату!", "!");
        Возврат;
    КонецПопытки;
    Таб = СоздатьОбъект("Таблица");
    Таб.ИсходнаяТаблица("Таблица");
    ДопЗаголовок = "";
    Если ВыбКонтрагент.Выбран() = 1 Тогда
        ДопЗаголовок = "По контрагенту "+ВыбКонтрагент.ПолнНаименование;
    ИначеЕсли ВидОтчета = 1 Тогда
        ДопЗаголовок = "По всем контрагентам";
    ИначеЕсли ВидОтчета = 2 Тогда
        ДопЗаголовок = "По корпорации";
    ИначеЕсли ВидОтчета = 3 Тогда
        ДопЗаголовок = "Без учета корпорации";
    КонецЕсли;
    Таб.ВывестиСекцию("Шапка");
    ИтогОбщийДолг = 0;
    ИтогПросрочка = 0;
    Ит.ВыбратьСубконто(1,,,,,,);
    Пока Ит.ПолучитьСубконто(1,,) = 1 Цикл
        Если ВидОтчета = 2 Тогда
            Если  Лев(Ит.Субконто(1).Родитель.Наименование,10) <> "Корпорация" Тогда //Ит.Субконто(1).Родитель.Код <> "1000" Тогда
                Продолжить;
            КонецЕсли;
        ИначеЕсли ВидОтчета = 3 Тогда
            Если Лев(Ит.Субконто(1).Родитель.Наименование,10) = "Корпорация" Тогда //Ит.Субконто(1).Родитель.Код = "1000" Тогда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
        Если ит.СКД()<=0 тогда
            продолжить;
        Конецесли;
        Заплатил = Ит.КО("С");
        Если ПустоеЗначение(Ит.Субконто(1).БазДоговор) = 0 Тогда
            Если ПустоеЗначение(Ит.Субконто(1).БазДоговор.ГлубинаКредита) = 0 Тогда
                //СрокОтсрочки = Ит.Субконто(1).БазДоговор.ГлубинаКредита;
                    Если Ит.Субконто(1).Код="00402" Тогда
                            ммДог = СоздатьОбъект("Документ.Договор");
                        Если ммДог.НайтиПоНомеру("1048/14-М",'01.01.14',"Договор")=1 Тогда
                        СрокОтсрочки=ммДог.ТекущийДокумент().ГлубинаКредита;
                        КДни=ммДог.ТекущийДокумент().ГлубинаВКалендарныхДнях;
                        Конецесли;
                    Иначе
                        СрокОтсрочки = Ит.Субконто(1).БазДоговор.ГлубинаКредита;
                        КДни=Ит.Субконто(1).БазДоговор.ГлубинаВКалендарныхДнях;
                    Конецесли;
            Иначе
                СрокОтсрочки = 0;
            КонецЕсли;
        Иначе
            СрокОтсрочки = 0;
        КонецЕсли;
        Просрочка = 0;
        ОбщийДолг = 0;
        Ит.ВыбратьПериоды(,,,);
        Пока Ит.ПолучитьПериод(,) = 1 Цикл
            Документ = Ит.Операция;
            Если Ит.ДО("С") > 0 Тогда
                Если Заплатил > 0 Тогда
                    ТекЗаплатил = Мин(Заплатил, Ит.ДО("С"));
                    Если ТекЗаплатил < Ит.ДО("С") Тогда
                        Если ДатаОпл(СрокОтсрочки, Документ.ДатаОперации,КДни) < НаДату Тогда
                        //Если Документ.ДатаОперации + СрокОтсрочки < НаДату Тогда
                            Просрочка = Просрочка + (Ит.ДО("С") - ТекЗаплатил);
                        КонецЕсли;
                    КонецЕсли;
                    ОбщийДолг = ОбщийДолг + (Ит.ДО("С") - ТекЗаплатил);
                    Заплатил = Заплатил - ТекЗаплатил;
                Иначе
                    Если ДатаОпл(СрокОтсрочки, Документ.ДатаОперации,КДни) < НаДату Тогда
                    //Если Документ.ДатаОперации + СрокОтсрочки < НаДату Тогда
                        Просрочка = Просрочка + Ит.ДО("С");
                    КонецЕсли;
                    ОбщийДолг = ОбщийДолг + Ит.ДО("С");
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        Если ((ОбщийДолг = 0) И (Просрочка = 0)) Тогда
            Продолжить;
        КонецЕсли;
        ИтогОбщийДолг = ИтогОбщийДолг + ОбщийДолг;
        ИтогПросрочка = ИтогПросрочка + Просрочка;
        Таб.ВывестиСекцию("Строка");
    КонецЦикла;
    Таб.ВывестиСекцию("Итоги");
    Таб.ТолькоПросмотр(1);
    Таб.ПовторятьПриПечатиСтроки(1, 5);
    Таб.Опции(0, 0, 5);
    Таб.Показать();    
КонецПроцедуры
//========================================
Процедура Сформировать2()
    ДопЗаголовок = "";
    Если ВыбКонтрагент.Выбран() = 1 Тогда
        ДопЗаголовок = "По контрагенту "+ВыбКонтрагент.ПолнНаименование;
    ИначеЕсли ВидОтчета = 1 Тогда
        ДопЗаголовок = "По всем контрагентам";
    ИначеЕсли ВидОтчета = 2 Тогда
        ДопЗаголовок = "По корпорации";
    ИначеЕсли ВидОтчета = 3 Тогда
        ДопЗаголовок = "Без учета корпорации";
    КонецЕсли;
    би=СоздатьОбъект("БухгалтерскиеИтоги");
    би.ИспользоватьРазделительУчета(константа.БазФирма);
    вс1=видыСубконто.контрагенты;
    Если ВыбКонтрагент.Выбран()=1 тогда
        если ВыбКонтрагент.ЭтоГруппа()=1 тогда
            би.ИспользоватьСубконто(вс1,ВыбКонтрагент,1);    
        иначе
            би.ИспользоватьСубконто(вс1,ВыбКонтрагент,2);
        конецесли;
    иначе
        би.ИспользоватьСубконто(вс1,,1);
    Конецесли;
    би.ВыполнитьЗапрос(НаДату,наДату,"36");
    би.ВыбратьСубконто(1);
    тб=СоздатьОбъект("ТаблицаЗначений");
    тб.НоваяКолонка("Контр");
    тб.НоваяКолонка("Срок","число");
    тб.НоваяКолонка("Календ","число");
    тб.НоваяКолонка("Сумма","число");
    тб.НоваяКолонка("Сумма1","число");
    тб.НоваяКолонка("Сумма2","число");
    тб.НоваяКолонка("Сумма3","число");
    
    Пока би.ПолучитьСубконто(1)=1 цикл
        лснд=би.СНД();
        Если фМинДолг<>0 тогда
            Если лСнд<фМинДолг тогда
                продолжить;
            Конецесли;
        Конецесли;
        Если лСнд>0 тогда
            Если пустоеЗначение(би.Субконто())=1 тогда
                продолжить;
            Конецесли;
        Если ВидОтчета = 2 Тогда
            Если Лев(би.Субконто().Родитель.Наименование,10) <> "Корпорация" Тогда //би.Субконто().Родитель.Код <> "1000" Тогда
                Продолжить;
            КонецЕсли;
        ИначеЕсли ВидОтчета = 3 Тогда
            Если Лев(би.Субконто().Родитель.Наименование,10) = "Корпорация" Тогда //би.Субконто().Родитель.Код = "1000" Тогда
                Продолжить;
            КонецЕсли;
        КонецЕсли;
            тб.НоваяСтрока();
            тб.Контр=би.Субконто();
            тб.Сумма=би.СКД();
        Конецесли;
    КонецЦикла;
    тб.ВыбратьСтроки();
    пока тб.ПолучитьСтроку()=1 цикл
        
        квоД=тб.Контр.глубина.Получить(наДату);
        Если  тб.контр.БазДоговор.Выбран()=1 тогда
            Если тб.контр.БазДоговор.Вид()="Договор" тогда
                Если тб.контр.БазДоговор.ГлубинаКредита<>0 тогда
                    //квоД=тб.контр.БазДоговор.ГлубинаКредита;
                    Если тб.Контр.Код="00402" Тогда
                        ммДог = СоздатьОбъект("Документ.Договор");
                        Если ммДог.НайтиПоНомеру("1048/14-М",'01.01.14',"Договор")=1 Тогда
                        квоД=ммДог.ТекущийДокумент().ГлубинаКредита;
                        КДни=ммДог.ТекущийДокумент().ГлубинаВКалендарныхДнях;
                        Конецесли;
                    Иначе
                        квоД=тб.контр.БазДоговор.ГлубинаКредита;
                        КДни=тб.контр.БазДоговор.ГлубинаВКалендарныхДнях;
                    Конецесли;
                Конецесли;
            Конецесли;
        Конецесли;
        Если квоД=0 тогда
            Если фНео=0 тогда
                Сообщить("У контрагента "+ тб.контр+" неограниченый кредит.",".");
                продолжить;    
            иначе
                квоД=21;
                КДни=1;
            Конецесли;
            
        Конецесли;
        тб.срок=квоД;
        тб.Календ=КДни;
        //СтаДата=дата(СтДата(квоД,наДату,КДни));
        мДат=наДату;
        СтаДата=СтДата(квоД,мДат,КДни);
        би=СоздатьОбъект("БухгалтерскиеИтоги");
        би.ИспользоватьРазделительУчета(константа.БазФирма);
        би.ИспользоватьСубконто(вс1,тб.контр,2);
        //би.ВыполнитьЗапрос(наДату-квоД,наДату,"361");
        би.ВыполнитьЗапрос(СтаДата,наДату,"361");
        би.ВыбратьСубконто();
        Если би.ПолучитьСубконто()=1 тогда
            лКО=би.КО();
            лДО=би.ДО();
            лСН=би.СНД();
            Если тб.Сумма>лДо тогда
                тб.Сумма2=тб.Сумма-лДо;
                би.ИспользоватьРазделительУчета(константа.БазФирма);
                би.ИспользоватьСубконто(вс1,тб.контр,2);
                //би.ВыполнитьЗапрос(наДату-квоД-21,наДату-квоД,"361");
                би.ВыполнитьЗапрос(СтаДата-21,СтаДата,"361");
                би.ВыбратьСубконто();
                Если би.ПолучитьСубконто()=1 тогда
                    лДО2=би.ДО();
                    Если тб.Сумма2>лДО2 тогда
                        тб.Сумма3=тб.Сумма2-лДО2;
                    Конецесли;
                конецесли;
            Конецесли;
        Конецесли;
    конеццикла;
    таб=СоздатьОбъект("Таблица");
    таб.ИсходнаяТаблица("Таблица");
    таб.ВывестиСекцию("Шапка");
    таб.Опции(0,0,таб.ВысотаТаблицы(),0);
    тб.Сортировать("контр");
    тб.ВыбратьСтроки();
    Пока тб.ПолучитьСтроку()=1 цикл
        тб.Сумма1=тб.сумма-тб.сумма2;
        Если тб.сумма1<0 тогда
            тб.Сумма2=тб.сумма2+тб.сумма1;
            тб.сумма1=0;
        Конецесли;
        тб.Сумма2=тб.сумма2-тб.сумма3;
        Если тб.сумма2<0 тогда
            тб.Сумма3=тб.сумма3+тб.сумма2;
            тб.сумма2=0;
        Конецесли;
        таб.ВывестиСекцию("Строка");
    КонецЦикла;
    таб.ВывестиСекцию("Итоги");
    таб.ТолькоПросмотр(1);
    таб.Параметрыстраницы(1,100,0,0,0,0,0,0,0,1);
    таб.Показать("Реестр просроченой задолженности",,1);
КонецПроцедуры
4 Ardov
 
11.11.14
12:13
а где нужно прописывать саму сортировку, в каком месте? Подскажите пожалуйста
5 Looser-1c
 
11.11.14
12:13
Не буду я читать всё это грязное бельё...
6 Ardov
 
11.11.14
12:17
подскажите плиз, куда нужно это прописывать, делаю, не получается(
7 Chameleon1980
 
11.11.14
13:00
после последней добавленной строки, вероятно
8 Злопчинский
 
11.11.14
13:09
Ну его нафиг все это разбирать
В первую очередь потому что Пасха не имеет фиксированной даты в противовес тому что накривляно сучковатыми ручками в этом коде
9 hefffer
 
11.11.14
13:19
Обалдеть, а я стесняюсь выкладывать свою писанину...
Троица  - тоже день не фиксирован.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс