Имя: Пароль:
1C
1C 7.7
v7: Ннеизвестная ошибка
,
0 Glypa9 Defka
 
04.12.19
10:46
Приветствую помогите пожалуйста.
Ошибка
[ Б.СоздатьФайл(Путь);
{C:\KP\EXTFORMS\ВЫГРУЗКАУСЗН.ERT(506)}:Длина имени файла превысила 8 символов!
Б.ОткрытьФайл(Путь);
{C:\KP\EXTFORMS\ВЫГРУЗКАУСЗН.ERT(511)}:Длина имени файла превысила 8 символов!
Не удалось открыть файл DBF]
Сам код отчёта
Перем ЖрнКв;
Перем Док;          
Перем СтарКолМесяцев;
Перем ТПодразд;  
Перем ТКлиент;
//--------------------------------------------------------------------------  

Процедура Заполнить()    
    
СпрКлиентов=СоздатьОбъект("Справочник.Клиенты");

СпрКлиентов.ВыбратьЭлементы();
Пока СпрКлиентов.ПолучитьЭлемент()=1 Цикл    
    ТекКл=СпрКлиентов.ТекущийЭлемент();
    Если (ТекКл.ПометкаУдаления()=0) и (ТекКл.ЭтоГруппа()=0) Тогда
        Если ТекКл.Льготник=1 Тогда
            ЛицСчета.ДобавитьЗначение(ТекКл);
        КонецЕсли;
        
    КонецЕсли;
КонецЦикла;
    
    
КонецПроцедуры    // Заполнить
//--------------------------------------------------------------------------






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


Процедура УдалитьИзСписка(ЛС)  
    Если ЛС>0 Тогда    
        ЛицСчета.УдалитьЗначение(ЛС);
    КонецЕсли;
    
//    ?(ЛицСчета.ТекущаяСтрока()>0,ЛицСчета.УдалитьЗначение(ЛицСчета.ТекущаяСтрока()),"")
КонецПроцедуры    //
//*******************************************
Функция НаимНачисл(Начисл, чПорядок)
    Если СокрЛП(Начисл.Наименование)="Квартплата" Тогда
        сНачисл="Содержание жилья";чПорядок=1;
    ИначеЕсли СокрЛП(Начисл.Наименование)="Наем" Тогда
        сНачисл="Оплата за найм";чПорядок=2;
    ИначеЕсли СокрЛП(Начисл.Наименование)="КапРемонт" Тогда
        сНачисл="Отчисления на кап.ремонт";чПорядок=3;
    ИначеЕсли СокрЛП(Начисл.Наименование)="Мусор" Тогда
        Если Найти(Начисл.Начисление.Наименование,"Без мусор")>0 Тогда
            сНачисл="Вывоз мусора";
        Иначе
            сНачисл="Мусоропровод";
        КонецЕсли;
        чПорядок=4;
    Иначе
        Если СокрЛП(Начисл.Наименование)="Канализация" Тогда
            чПорядок=5;
        ИначеЕсли СокрЛП(Начисл.Наименование)="Холодная вода" Тогда
            чПорядок=6;
        ИначеЕсли СокрЛП(Начисл.Наименование)="Подогрев" Тогда
            чПорядок=7;
        ИначеЕсли СокрЛП(Начисл.Наименование)="Лифт" Тогда
            чПорядок=8;
        Иначе
            чПорядок=9;
        КонецЕсли;
        сНачисл=Начисл.Наименование;
    КонецЕсли;  
    Возврат сНачисл;
КонецФункции
////*******************************************

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







///**********************
//процедура записывает данные об использовании отчёта в файл dBase формата DBF
Процедура ВыгрузитьКлиентовВДБФ() Экспорт  
    //    ЛицСчета.выбратьЗначение(,,,);
    
    СписокВыбрКлиентов = СоздатьОбъект("СписокЗначений");  
    
    СпрКлиентов = СоздатьОбъект("Справочник.Клиенты");    
//    СпрКлиентов.ИспользоватьДату(Дата1);    
    
    СпрУлицы=СоздатьОбъект("Справочник.Улицы");
    
    Если (ЛицСчета.РазмерСписка() = 1) Тогда
        СписокВыбрКлиентов.ДобавитьЗначение(ЛицСчета.ПолучитьЗначение(1));    
    Иначе //а здесь был передан список элементов - будем использовать непосредственно его
        Для Сч = 1 По ЛицСчета.РазмерСписка() Цикл  
            //    Сообщить( ТипЗначенияСтр(ЛицСчета.ПолучитьЗначение(Сч)))  ;    
            //    СпрКлиентов.ВыбратьЭлементыПоРеквизиту("Наименование",ЛицСчета.ПолучитьЗначение(Сч),0,0);
            //    Пока СпрКлиентов.ПолучитьЭлемент()=1 Цикл
            СписокВыбрКлиентов.ДобавитьЗначение(ЛицСчета.ПолучитьЗначение(Сч));
            //    КонецЦикла;
        КонецЦикла;
    КонецЕсли;
    
    
    
    //путь к файлу; имя файла не должно превышать 8 знаков
    Путь=КаталогИБ()+".dbf";
    //создание нового файла
    
    Если ФС.СуществуетФайл(Путь)=1 Тогда
        ФС.УдалитьФайл(Путь);
    КонецЕсли;      
    
    Б=СоздатьОбъект("XBase");
    Б.КодоваяСтраница(1);
    
    //добавление полей
    Б.ДобавитьПоле("KODORG","N",10,0);
    Б.ДобавитьПоле("NAZVORG","S",100,0);
    Б.ДобавитьПоле("GOD","N",4,0);
    Б.ДобавитьПоле("MES","N",2,0);    
    Б.ДобавитьПоле("NUMLS","S",20,0);
    Б.ДобавитьПоле("SOB","N",8,2);
    Б.ДобавитьПоле("TIPZF","S",50,0);
    Б.ДобавитьПоле("KOLCHLS","N",2,0);
    Б.ДобавитьПоле("TNAIM","N",8,2);
    Б.ДобавитьПоле("TSODERG","N",8,2);
    Б.ДобавитьПоле("TKAPREM","N",8,2);
    Б.ДобавитьПоле("TMS","N",8,2);
    Б.ДобавитьПоле("TOtop","N",8,2);    
    Б.ДобавитьПоле("THV","N",8,2);
    Б.ДобавитьПоле("TGV","N",8,2);
    Б.ДобавитьПоле("TSTOKI","N",8,2);
    Б.ДобавитьПоле("TGAZ","N",8,2);
    Б.ДобавитьПоле("TELEN","N",8,2);
    Б.ДобавитьПоле("SUMNAIM","N",8,2);
    Б.ДобавитьПоле("SUMSOGERG","N",8,2);
    Б.ДобавитьПоле("SUMKAPREM","N",8,2);
    Б.ДобавитьПоле("SUMMS","N",8,2);
    Б.ДобавитьПоле("SUMOTOP","N",8,2);
    Б.ДобавитьПоле("SUMHV","N",8,2);
    Б.ДобавитьПоле("SUMGV","N",8,2);
    Б.ДобавитьПоле("SUMSTOKI","N",8,2);
    Б.ДобавитьПоле("SUMGAZ","N",8,2);
    Б.ДобавитьПоле("SUMELEN","N",8,2);
    Б.ДобавитьПоле("SCHHV","N",1,0);
    Б.ДобавитьПоле("SCHGV","N",1,0);
    Б.ДобавитьПоле("SCHSTOKI","N",1,0);
    Б.ДобавитьПоле("SCHGAZ","N",1,0);
    Б.ДобавитьПоле("NORMHV","N",8,2);
    Б.ДобавитьПоле("NORMGV","N",8,2);
    Б.ДобавитьПоле("NORMSTOKI","N",8,2);
    Б.ДобавитьПоле("NORMGAZ","N",8,2);
    Б.ДобавитьПоле("NORMELEN","N",8,2);
    Б.ДобавитьПоле("KODPLITA","N",1,0);
    Б.ДобавитьПоле("KOLFML","N",2,0);
    Б.ДобавитьПоле("FAM","S",20,0);
    Б.ДобавитьПоле("IM","S",20,0);
    Б.ДобавитьПоле("OT","S",20,0);
    
    Б.ДобавитьПоле("DTR","D",,);
    Б.ДобавитьПоле("NAS_P","S",40,);
    Б.ДобавитьПоле("STREET","S",40,);
    Б.ДобавитьПоле("DOM","S",6,);
    Б.ДобавитьПоле("KOR","S",6,);
    Б.ДобавитьПоле("KV","S",6,);
    
    Б.ДобавитьПоле("ADRES","S",100,);
    Б.ДобавитьПоле("DOLG","N",8,2);
    Б.ДобавитьПоле("KNOTKU","N",2,0);
    Б.ДобавитьПоле("GOG","N",1,0);
    Б.ДобавитьПоле("GVD","N",1,0);
    Б.ДобавитьПоле("GGV","N",1,0);
    
    
    //создание файла    
    Б.КодоваяСтраница(1);
    Б.СоздатьФайл(Путь);
    Б.ЗакрытьФайл();
    
    
    //открытие файла
    Б.ОткрытьФайл(Путь);
    Если Б.Открыта()=0 Тогда
        Сообщить("Не удалось открыть файл DBF","!");
        Возврат;
    КонецЕсли;
    //добавление записи
    
    Если ФПечать=1 Тогда
        
        Таб = СоздатьОбъект("Таблица");
        Таб.ПараметрыСтраницы(1,,,,,,,,);
        
        Таб.ИсходнаяТаблица("Таблица1");
        Таб.ВывестиСекцию("Шапка");
    КонецЕсли;
    
    СпрДомов = СоздатьОбъект("Справочник.Дома");    
    СпрУлицы= СоздатьОбъект("Справочник.Улицы");
    
    ///ЦИКЛ ПО ВЫБРАННЫМ СЧЕТАМ    
    
    Для Сч=1  По СписокВыбрКлиентов.РазмерСписка() Цикл
            //    СпрКлиентов.ИспользоватьДату(Дата1);    
        КолПроп=0;
        Дом="";
        Отоп=0;
        ГорВода=0;
        Стоки=0;
        СтокиТариф=0;
        ГорВодаТариф=0;
        ОтопТариф=0 ;
        СчГорВода=0;
        СчСтоки=0;
        
        ТКлиент=СписокВыбрКлиентов.ПолучитьЗначение(Сч);
        //    Сообщить(ТКлиент);
        Если СпрКлиентов.НайтиЭлемент(ТКлиент)=1 Тогда  
            Клиент=СпрКлиентов.ТекущийЭлемент();  
            
        //    СпрКлиентов.ИспользоватьВладельца(Клиент);    
            //   Сообщить(ТСК.Наименование);  
             ТипЖилья=Клиент.ТипСобств.Получить(Дата1);
            // ТипЖилья=ТЖ.Вид();
            КолПроп= Клиент.КолПроп.Получить(Дата1);
             ТипЖилья=Строка(ТипЖилья);
            
              КУ=Клиент.Улица;
              КД=Клиент.Дом;
              КК=Клиент.Кв;
            // СпрУлицы.ВыбратьЭлементы();
            // Пока СпрУлицы.ПолучитьЭлемент()=1 Цикл
            //     Если СпрУлицы=Клиент.Улица Тогда
            //         ТСУ=СпрУлицы.ТекущийЭлемент();
            //         Улица=ТСУ.Улица;
            //     Иначе
            //         Улица="Не нашли улицу";  
            //     КонецЕсли;
            //    Сообщить(СпрУлицы.Улица);  
            //    Сообщить(Клиент.Улица.);
            //    
            //КонецЦикла;  
            
            
            //Если СпрУлицы.НайтиЭлемент(Клиент.Улица)=1 Тогда  
            //    Сообщить("Нашли");  
            //Иначе
            //    Сообщить("пусто");
            //КонецЕсли;
              //Улица="Не нашли улицу";
              
            Если СпрДомов.НайтиЭлемент(КД)=1 Тогда  
                Дом=СпрДомов.ТекущийЭлемент().Номер;  
                  Улица=СпрДомов.ТекущийЭлемент().Улица.Наименование;      
                  
                Адрес=    СокрЛП(Улица)+" д."+СокрЛП(Дом)+ " кв. "+КК;
                             
        //    Сообщить(Дом);
            Иначе
                Сообщить("пусто дом");
            КонецЕсли;
                
              //    Адрес=Дом+?(ПустаяСтрока(КК)=0, " кв."+КК, КК);  

        //    Сообщить(Метаданные.ПолныйИдентификатор(КУ));
            //
            //Для К=1 По Перечисление.ТипКварт.КоличествоЗначений() Цикл  
            //    Сообщить(Перечисление.ТипКварт.ЗначениеПоНомеру(К));
            //    ТК=     Перечисление.ТипКварт.ЗначениеПоНомеру(К) ;
            //    Если ТК=ТипЖилья     Тогда
            //        Сообщить("Нашли");
            //    КонецЕсли;
            //    
            //КонецЦикла;
            ////     ТипЖилья=Перечисление.ТипКварт.ЗначениеПоИдентификатору(ТСК.ТипМунКв).ПредставлениеВида();  
            //// ТипЖильяСтр=ПрТипЖилья));
            //// Сообщить(ТипЖилья.Наименование);  
            //***********************************  
        //    Возврат;  
            
            Дата2=ЖрнКв.КонецПериодаПоДате(Дата1);
    //        Клиент.ИспользоватьДату(Дата1);
            //Если Клиент.Выбран()=0 Тогда
            //    Предупреждение("Надо указать лицевой счет!",0);
            //    Возврат;
            //КонецЕсли;
            
            чНачСальдо=Сальдо(Клиент,Дата1);
            //---------------------------- Пени -------------------------------------------------    
            спПени=СоздатьОбъект("СписокЗначений");
            ПениКонСальдо=ПениПоЛицСчету(Клиент,Дата1,спПени);
            ПениНачСальдо=спПени.Получить("НачСальдо");
            Попытка
                ПениДеб=?(ПениНачСальдо>=0, ПениНачСальдо, 0);ПениКред=?(ПениНачСальдо<0, ПениНачСальдо, 0);
            Исключение
                ПениДеб=0;ПениКред=0;ПениНачСальдо=0;    
            КонецПопытки;
            ПчПениДеб=" "+Формат(ПениДеб, "Ч015.2");ПчПениКред=" "+Формат(-ПениКред, "Ч015.2");
            ПчНачПени=?(ПениНачСальдо<0, ПчПениКред, ПчПениДеб);
            ПчПениДолг=?(ПениНачСальдо<=0,"К","Д");
            //---------------------------- Пени -------------------------------------------------    
            чОбщНачСальдо=чНачСальдо+ПениНачСальдо;
            НачДеб=?(чОбщНачСальдо>=0, чОбщНачСальдо, 0);НачКред=?(чОбщНачСальдо<0, чОбщНачСальдо, 0);
            ПчНачДеб=" "+Формат(НачДеб, "Ч015.2");ПчНачКред=" "+Формат(-НачКред, "Ч015.2");
            Если чНачСальдо=0 Тогда
                ПчНачСальдо=0;
                ПчДолг=" ";
            Иначе
                ПчНачСальдо=?(чОбщНачСальдо<0, ПчНачКред, ПчНачДеб);
                ПчДолг=?(чНачСальдо<=0,"Переплата","Долг");
            КонецЕсли;
            
            
            
            Т=СоздатьОбъект("ТаблицаЗначений");
            Т.НоваяКолонка("Наименование");Т.НоваяКолонка("Шифр");Т.НоваяКолонка("Сумма");
            Т.НоваяКолонка("ВидРасч");Т.НоваяКолонка("Сторно");
            Т.НоваяКолонка("Порядок");Т.НоваяКолонка("Документ");
            Т.НоваяКолонка("Группа");Т.НоваяКолонка("Тариф");
            Т.НоваяКолонка("ЕдинРасч");Т.НоваяКолонка("ЕдинРасч");
            
            Начисл=СоздатьОбъект("Справочник.Начисления");
            Начисл.ИспользоватьДату(Дата1);
            Начисл.ИспользоватьВладельца(Клиент.ТекущийЭлемент());
            Начисл.ВыбратьЭлементы();ФлагСубсидия=0;
            Пока Начисл.ПолучитьЭлемент()>0 Цикл  
                Если Начисл.ПометкаУдаления()=0 Тогда
                    Если ((Начисл.ФлагРасчета=глРАСЧЕТ) или (Начисл.ФлагРасчета=глРАСЧЕТСЧЕТЧИК))
                    и (Начисл.Начисление.Тариф.Получить(Дата1)<>0)
                    Тогда
                        ВидРасч=?(ПустоеЗначение(Начисл.Начисление.ВидРасч)=0, Начисл.Начисление.ВидРасч, Начисл.Начисление.Родитель.ВидРасч);  
                        ЕдинРасч=?(ПустоеЗначение(Начисл.Начисление.ЕдРасч)=0, Начисл.Начисление.ЕдРасч, Начисл.Начисление.Родитель.ЕдРасч);
                        //    сообщить(ЕдинРасч);
                        Если ПустоеЗначение(ВидРасч)>0 Тогда
                            Сообщить("Обнаружено неправильное начисление "+Начисл.Начисление.Наименование);
                            Продолжить;
                        КонецЕсли;
                        Т.НоваяСтрока();чПорядок=0;
                        Т.Наименование=НаимНачисл(Начисл, чПорядок);
                        Т.Порядок=чПорядок;
                        Т.ВидРасч=ВидРасч;
                        Т.Сторно=0;
                        Т.Шифр=Начисл.Код;
                        Т.Сумма=0;  
                        Т.ЕдинРасч=ЕдинРасч;
                        
                        ТарифПревыш=0;
                        Если (Начисл.ФлагРасчета=глРАСЧЕТСЧЕТЧИК) Тогда
                            Т.Тариф=Начисл.Начисление.Норма.Цена.Получить(Дата1);            
                        ИначеЕсли (Начисл.ФлагРасчета=глРАСЧЕТ) Тогда
                            Т.Тариф=Начисл.Начисление.Тариф.Получить(Дата1);            
                        КонецЕсли;
                        //1-начисления,0-нач.сальдо,-1-оплата,-2-субсидия,2-коррекции,3-пени
                        Т.Группа=1;
                    ИначеЕсли (Начисл.ФлагРасчета=глСУБСИДИЯ) и (ФлагСубсидия=0) и (Клиент.Доход>0) Тогда
                        ФлагСубсидия=1;
                        Т.НоваяСтрока();
                        Т.Наименование="Субсидия";Т.Порядок=100;
                        Т.ВидРасч=ВидРасчета.Субсидия;
                        Т.Сторно=0;Т.Шифр="";Т.Сумма=0;
                    КонецЕсли;
                КонецЕсли;
            КонецЦикла;
            
            ИтогоСуммаМес=0;ФлагСубсидия=0;
            ЖрнКв.ВыбратьПериодПоОбъекту(Клиент.ТекущийЭлемент(),Дата1);
            к=0; чОплата=0; чСторно=0; чДонач=0; чПерерасч=0; чДолг=0;НачСальдо=0;
            Пока ЖрнКв.ПолучитьЗапись()>0 Цикл
                чСумма=ЖрнКв.Результат;
                Если ЖрнКв.Перерасчет=0 Тогда
                    Если (ЖрнКв.Сторно=1) и (ЖрнКв.Результат<0) Тогда
                        чНомСтроки=0;
                        Если Т.НайтиЗначение(-1,чНомСтроки,"Сторно")=0 Тогда
                            Т.НоваяСтрока();
                            Т.Наименование="Сторно";
                            Т.Сторно=-1;Т.Документ=ЖрнКв.Документ;
                        Иначе
                            Т.ПолучитьСтрокуПоНомеру(чНомСтроки);
                        КонецЕсли;
                        //1-начисления,0-нач.сальдо,-1-оплата,2-коррекции,3-пени, 4-нач.сальдо пени
                        Т.Группа=2;
                        Т.Порядок=97;
                    ИначеЕсли (ЖрнКв.Сторно=1) и (ЖрнКв.Результат>0) Тогда
                        чНомСтроки=0;
                        Если Т.НайтиЗначение(1,чНомСтроки,"Сторно")=0 Тогда
                            Т.НоваяСтрока();
                            Т.Наименование="Доначислено";
                            Т.Сторно=1;Т.Документ=ЖрнКв.Документ;
                        Иначе
                            Т.ПолучитьСтрокуПоНомеру(чНомСтроки);
                        КонецЕсли;
                        //1-начисления,0-нач.сальдо,-1-оплата,2-коррекции,3-пени, 4-нач.сальдо пени
                        Т.Группа=2;
                        Т.Порядок=98;
                    ИначеЕсли ЖрнКв.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеНачисления)>0 Тогда
                        чНомСтроки=0;
                        Если Т.НайтиЗначение(ЖрнКв.ВидРасч,чНомСтроки,"ВидРасч")>0 Тогда
                            Т.ПолучитьСтрокуПоНомеру(чНомСтроки);
                            ИтогоСуммаМес=ИтогоСуммаМес+чСумма;                            
                        Иначе
                            Продолжить;
                        КонецЕсли;
                    ИначеЕсли (ЖрнКв.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеОплаты)>0) и
                    (ЖрнКв.ВидРасч<>ВидРасчета.Субсидия) Тогда
                        Т.НоваяСтрока();Т.ВидРасч=ЖрнКв.ВидРасч;
                        Т.Порядок=99;
                        Т.Наименование="№ "+ЖрнКв.Документ.НомерДок+" от "+ЖрнКв.Документ.ДатаДок;
                        Т.Документ=ЖрнКв.Документ;
                        Т.Сумма=чСумма;
                        //1-начисления,0-нач.сальдо,-1-оплата,2-коррекции,3-пени, 4-нач.сальдо пени
                        Т.Группа=-1;
                        Продолжить;
                    ИначеЕсли ЖрнКв.ВидРасч=ВидРасчета.НачальноеСальдо Тогда
                        Т.НоваяСтрока();
                        Т.Наименование="Нач.сальдо";Т.Порядок=100;
                        Т.ВидРасч=ВидРасчета.НачальноеСальдо;
                        Т.Сторно=0;Т.Шифр="";
                        //1-начисления,0-нач.сальдо,-1-оплата,2-коррекции,3-пени, 4-нач.сальдо пени
                        Т.Группа=0;
                    ИначеЕсли (ЖрнКв.ВидРасч=ВидРасчета.Субсидия) Тогда
                        чНомСтроки=0;
                        Если Т.НайтиЗначение(ЖрнКв.ВидРасч,чНомСтроки,"ВидРасч")>0 Тогда
                            Т.ПолучитьСтрокуПоНомеру(чНомСтроки);                          
                            //1-начисления,0-нач.сальдо,-1-оплата,-2-субсидия,2-коррекции,3-пени, 4-нач.сальдо пени
                            Т.Группа=-2;
                        КонецЕсли;
                    КонецЕсли;
                    Т.Сумма=?(ПустоеЗначение(Т.Сумма)>0,0,Т.Сумма);
                    Т.Сумма=Т.Сумма+чСумма;
                ИначеЕсли ЖрнКв.Перерасчет=1 Тогда
                    чНомСтроки=0;
                    Если Т.НайтиЗначение(2,чНомСтроки,"Сторно")=0 Тогда
                        Т.НоваяСтрока();
                        Т.Наименование="Перерасчет";
                        Т.Сторно=2;
                    Иначе
                        Т.ПолучитьСтрокуПоНомеру(чНомСтроки);
                    КонецЕсли;
                    Т.Порядок=96;
                    Т.Сумма=?(ПустоеЗначение(Т.Сумма)>0,0,Т.Сумма);
                    Т.Сумма=Т.Сумма+чСумма;
                    //1-начисления,0-нач.сальдо,-1-оплата,2-коррекции,3-пени, 4-нач.сальдо пени
                    Т.Группа=2;
                КонецЕсли;
                чСумма=0;
            КонецЦикла;
            
            Т.Сортировать("Порядок");  
            
        //    Т.ВыбратьСтроку(,,);
                
            Т.ВыбратьСтроки();    
            Пока Т.ПолучитьСтроку()>0 Цикл  
                
                Если ((СокрЛП(Т.Наименование)="Водоотведение") или  (СокрЛП(Т.Наименование)="Канализация"))  Тогда
                    СтокиТариф=Т.Тариф;
                    Стоки=Т.Сумма;
                ИначеЕсли ((СокрЛП(Т.Наименование)="Подогрев") или (СокрЛП(Т.Наименование)="Горячее водоснабжение")) Тогда  
                    ГорВода=Т.Сумма  ;
                    ГорВодаТариф= Т.Тариф;  
                    
                ИначеЕсли СокрЛП(Т.Наименование)="Отопление" Тогда
                    ОтопТариф=Т.Тариф;
                    Отоп=Т.Сумма;
                Иначе
                    
                КонецЕсли;
                Сообщить(СокрЛП(Т.Наименование));
                
            КонецЦикла;
            
            Т.ВыбратьСтроки();    
            Пока Т.ПолучитьСтроку()>0 Цикл
                ФлагОплаты=0;
                Попытка        
                    Если (Т.ВидРасч.ВходитВГруппу(ГруппаРасчетов.ВсеОплаты)>0) и
                    (Т.ВидРасч<>ВидРасчета.Субсидия) Тогда
                        ФлагОплаты=1;
                    КонецЕсли;
                Исключение
                КонецПопытки;
                Если (ФлагОплаты>0) Тогда
            //        Таб.ВывестиСекцию("Оплата");
                ИначеЕсли (Т.ВидРасч=ВидРасчета.Субсидия) Тогда
                    //    Таб.ВывестиСекцию("Субсидия");
                ИначеЕсли (Т.Сторно=0) и (Т.ВидРасч<>ВидРасчета.НачальноеСальдо) Тогда
            //        Таб.ВывестиСекцию("Начисление");
                ИначеЕсли Т.Сторно<>0 Тогда
                    //    Таб.ВывестиСекцию("Сторно");
                КонецЕсли;
            КонецЦикла;
            //
            //---------------------------- Пени -------------------------------------------------    
            Если ПениНачСальдо<>0 Тогда
                Т.НоваяСтрока();Т.Наименование="Пени";Т.ВидРасч=ВидРасчета.Пени;Т.Группа=4;
                Т.Сумма=ПениНачСальдо;
            КонецЕсли;
            ПениНачисл=спПени.Получить("Начислено");
            Если (ПениНачисл<>0) и (ПустоеЗначение(ПениНачисл)=0) Тогда
                Т.НоваяСтрока();Т.Наименование="Пени";Т.ВидРасч=ВидРасчета.Пени;Т.Группа=3;
                Т.Сумма=ПениНачисл;
            КонецЕсли;
            ПениСторно=спПени.Получить("Сторно");
            Если (ПениСторно<>0) и (ПустоеЗначение(ПениСторно)=0) Тогда
                Т.НоваяСтрока();Т.Наименование="Пени";Т.ВидРасч=ВидРасчета.Пени;Т.Группа=3;
                Т.Сумма=-ПениСторно;
            КонецЕсли;
            ПениДоначисл=спПени.Получить("Доначислено");
            Если (ПениДоначисл<>0) и (ПустоеЗначение(ПениДоначисл)=0) Тогда
                Т.НоваяСтрока();Т.Наименование="Пени";Т.ВидРасч=ВидРасчета.Пени;Т.Группа
1 GROOVY
 
04.12.19
10:51
Длина имени файла превысила 8 символов!
2 vladko
 
04.12.19
10:52
(0) ограничение dbf: 8 символов до расширения. Это ещё с DOS осталось.
3 Glypa9 Defka
 
04.12.19
10:52
А где имя можно исправить?
4 vladko
 
04.12.19
10:53
(3) просто переименуй файл
5 vladko
 
04.12.19
10:54
сократи кол-во символов имени файла
6 GROOVY
 
04.12.19
10:54
Я очень извиняюсь, но лучше позовите программиста.


//путь к файлу; имя файла не должно превышать 8 знаков
    Путь=КаталогИБ()+".dbf";
7 НЕА123
 
04.12.19
10:54
(3)
в обработке. даже комментарий есть.
8 Glypa9 Defka
 
04.12.19
10:55
(6) тут исправлено Путь=КаталогИБ()+"S" +"-"+ ДатаМесяц(ТекущаяДата())+"-"+  ДатаГод(ТекущаяДата())+".dbf";
9 НЕА123
 
04.12.19
10:57
(8)
зачЁт.
10 Glypa9 Defka
 
04.12.19
10:57
(4) Где именно изменить имя файла,в самом коде ? просто не очень хорошо с программой дружу
11 vladko
 
04.12.19
10:57
(8) запусти отладчик и посмотри какое имя файла формируется в итоге у тебя
12 Peltik
 
04.12.19
10:57
(8) итого 9 получается  
S-00-0000
13 Peltik
 
04.12.19
10:59
(12) до октября должно работать
14 vladko
 
04.12.19
10:59
(8)
сократи хотя бы так
Путь=КаталогИБ()+"S" +""+ ДатаМесяц(ТекущаяДата())+""+  ДатаГод(ТекущаяДата())+".dbf";
15 HawkEye
 
04.12.19
11:02
(0) а почему она не известная, если по русски написано:
"Длина имени файла превысила 8 символов!"
ты читать не умеешь?
16 Vladal
 
04.12.19
11:03
Создать файл с именем в формате 8.3, а потом, если уж надо получить S-00-0000.dbf, переименовать после закрітия файла .dbf
17 Glypa9 Defka
 
04.12.19
11:03
(14),помогло но теперь другая ошибка
ИначеЕсли (Начисл.ФлагРасчета=глСУБСИДИЯ) и (ФлагСубсидия=0) и (Клиент.Доход>0) Тогда
{C:\KP\EXTFORMS\ВЫГРУЗКАУСЗН.ERT(684)}: Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)
18 GROOVY
 
04.12.19
11:04
Операции сравнения на больше-меньше допустимы только над значениями совпадающих базовых типов (число, строка, дата)
19 Vladal
 
04.12.19
11:06
А теперь надо (например, в отладчике) посмотреть значения переменных и реквизитов, которые сравниваются: глСУБСИДИЯ, ФлагСубсидия, Клиент.Доход, начисл.Флаграсчета

Например, где-то переменная не инициализирована и равна Неопределено.
Или в переменной строка "0", а сравнивается с числом 0.

Или составной тип у реквизита, и по идее, там должна быть строка, но он еще не инициализирован и потом Неопределено.
20 hhhh
 
04.12.19
11:06
(13) там в годе еще пробел. получается 10 символов
21 Vladal
 
04.12.19
11:07
(13) Это если без ведущих нулей.
(20) Семерка же.
22 vladko
 
04.12.19
11:08
(17) скорее всего не посчитался
Клиент.Доход
Говорю же, бери отладчик и смотри где там не число. Если не знаешь, что такое отладчик, то позови программиста.
23 Kigo_Kigo
 
04.12.19
11:09
Путь=КаталогИБ()+"S" + СтраЗаменить(СокрЛП(Сред(ТекущаяДата(),4),".","-") +".dbf";
24 Peltik
 
04.12.19
11:09
(21) ДатаМесяц() число возвращает какие ведущие нули?
25 Vladal
 
04.12.19
11:11
(24) Обсуждаем решение поставленной задачи.\Если хочется пословоблудить - в (20) и вовсе про НПП в годе пишут. Чего туда не всунул пятачок?
Если хочется поправить - то поправь, а хамить будешь родственникам.
26 Peltik
 
04.12.19
11:11
(20) с чего вдруг там пробел?
27 Glypa9 Defka
 
04.12.19
11:16
(22) смотрю в отладчик.программист в отпуске,решаем вопрос этот сами
28 Peltik
 
04.12.19
11:17
(27) проверяй что возвращает глСУБСИДИЯ