Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Войти | Зарегистрироваться )




>  Ввод 2х налоговых накладных если есть товары с разными ндс
bezzil
Отправлено: 02.10.20, 13:54


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Vofka @ Сегодня, 14:23 * ,
Она с 2003 года не обновлялась, а просто дописывались хотелки, я готов заплатить оговоренную сумму, могу выложить код.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #166962 · Ответов: 4 · Просмотров: 982
 

>  Ввод 2х налоговых накладных если есть товары с разными ндс
bezzil
Отправлено: 02.10.20, 11:24


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Добрый день, проблема в следующем, фирма начала торговать товаром с 2мя разными НДС, как сделать так что бы если есть в документе товары с 2мя разными ставками ндс то налоговые накладные разбивались на А) весь товар с Ндс Б) весь товар без ндс тоисть создавалось 2 налоговые накладные . Если есть знающие люди помогите. Готов оплатить помощь. Доступ к базе и тд есть.
База файловая 7.7 ТиС переписанная в хлам. Познаний в 7рке не хватает.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #166959 · Ответов: 4 · Просмотров: 982
 

>  Импорт из Аваль Банка
bezzil
Отправлено: 06.09.19, 14:24


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


sava1 @ Сегодня, 15:01 * ,
Это ничего не даст, так как старая выгрузка имела точно такой же формат.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #155398 · Ответов: 16 · Просмотров: 2631
 

>  Импорт из Аваль Банка
bezzil
Отправлено: 06.09.19, 13:59


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


sava1 @ Сегодня, 14:56 * ,
он всегда выдавал 1251, и первая(рабочая выгрузка) точно в таком же формате.
+ проблема в том, что я не 1с программист, а java/python, но наши бухи никак не хотят переходить на самописную CRM на java, приходится насиловать этот труп.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #155396 · Ответов: 16 · Просмотров: 2631
 

>  Импорт из Аваль Банка
bezzil
Отправлено: 06.09.19, 13:00


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Sharzem @ Сегодня, 13:46 * ,
Вот структура экспорта из банка
1я было
Тыц

2я стало
Тыц

OemToAnsi переводит в ANSI формат текста банка, насколько я понял
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #155394 · Ответов: 16 · Просмотров: 2631
 

>  Импорт из Аваль Банка
bezzil
Отправлено: 06.09.19, 12:30


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Sharzem @ Сегодня, 13:19 * ,
Я это уже исправил еще после первого поста, но оно всервно не загружает выписку, я вообще хз уже почему
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #155392 · Ответов: 16 · Просмотров: 2631
 

>  Импорт из Аваль Банка
bezzil
Отправлено: 06.09.19, 11:00


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


awp @ Сегодня, 8:30 * ,
структура файла идентичная, за исключением смены счета на 29 символов.
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #155388 · Ответов: 16 · Просмотров: 2631
 

>  Импорт из Аваль Банка
bezzil
Отправлено: 05.09.19, 14:48


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Собственно проблема после перехода на Ibon (29 значные счета) выписка банка перестала грузится в 1с 7.70,027
вот код как это было

Тыц
//*******************************************
Перем ДБФ,Плат,Врем, тВрем, тДБФ, тПлат, Вал, тАрхПлат,зн;
Перем ПутьБД;

Процедура ЗаполнитьБВ() далее
Процедура ОткрытьБД() далее
Процедура ВыбратьПлатежки() далее
Процедура СоздПуть() далее[hide="Тыц"]//*******************************************
Перем ДБФ,Плат,Врем, тВрем, тДБФ, тПлат, Вал, тАрхПлат,зн;
Перем ПутьБД;

Процедура ЗаполнитьБВ() далее
Процедура ОткрытьБД() далее
Процедура ВыбратьПлатежки() далее
Процедура СоздПуть() далее

Процедура ПриОткрытии()
    Режим=2;
    Дата1=РабочаяДата();
    Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=0 Тогда
        СоздПуть();
    КонецЕсли;
    ВыбратьПлатежки();
    //ОткрытьБД("ArhivPLT.dbf");
КонецПроцедуры

Функция Остаток(Контрагент,Сумма)
    тЗаказы = СоздатьОбъект("ТаблицаЗначений");
    ИтЗапр = СоздатьОбъект("БухгалтерскиеИтоги");
    ИтЗапр.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);
    ИтЗапр.ИспользоватьСубконто(ВидыСубконто.Заказы,,1);
    ИтЗапр.ВыполнитьЗапрос(НачМесяца(Дата1),Дата1,"361",,,,,1);
    Ост = 0;
        ИтЗапр.ВыбратьСубконто(1);
        Если ИтЗапр.ПолучитьСубконто(1,,Контрагент) = 1 Тогда
            ИтЗапр.ВыбратьСубконто(2);
            Пока ИтЗапр.ПолучитьСубконто(2,,) = 1 Цикл
                Ост = (ИтЗапр.СКД() - ИтЗапр.СКК());
                Если (Цел(Ост) = Цел(Число(Сумма))) И (Цел(ИтЗапр.Субконто(2).Итог("СуммаСНДС"))=Цел(Ост)) Тогда
                    Возврат ИтЗапр.Субконто(2);
                КонецЕсли;    
            КонецЦикла;
        КонецЕсли;
    Возврат 0;
    //Возврат СокрЛ(Формат(Ост,"Ч14.2.'"));
КонецФункции

Процедура Помощь()      
Перем Подсказка;
    Если  Режим=1 Тогда          
        Подсказка="Программа может работать в двух режимах:
        |-формировать банковскую выписку за дату, выбранную на форме
        |-переносить оформленные платежные поручения за дату, выбранную на форме, в клиент-банк"+РазделительСтрок+"
        |Удалите из таблицы платежи (строки), которые НЕ желаете включать в будущую банковскую выписку, с помощью кнопки 'Х'
        |Если нужно, используйте кнопку '!' чтобы обновить данные в таблице
        |Кнопка 'ХХ' удаляет все строки из таблицы"+РазделительСтрок+"
        |Затем нажмите кнопку 'Формировать выписку', и в открывшемся документе Вам останется только выбрать заказы";
    Иначе
        Подсказка="Программа может работать в двух режимах:
        |-формировать банковскую выписку за дату, выбранную на форме
        |-переносить оформленные платежные поручения за дату, выбранную на форме, в клиент-банк"+РазделительСтрок+"
        |Удалите из таблицы выписки (строки), которые НЕ желаете переносить в клиент-банк, с помощью кнопки 'Х'
        |Если нужно, используйте кнопку '!' чтобы обновить данные в таблице
        |Успешно выгруженые платежки не отображаются больше в таблице, и выгрузить их повторно в клиент-банк нельзя.
        |Кнопка 'ХХ' удаляет все строки из таблицы"+РазделительСтрок+"
        |Затем нажмите кнопку 'Выгрузить платежки ', запустите клиент-банк и проверьте, правильно ли заполнены Ваши платежки";
    КонецЕсли;
    Предупреждение(Подсказка);
КонецПроцедуры

Процедура ОткрФайл(табл,файл)
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок;
ТекстДок=СоздатьОбъект("Текст");
тВрем.Очистить();
тТест.Очистить();              
    Если файл="" Тогда
        ИмяФайла="";
        ИмяПути ="";
        ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,,,);
        ПутьБД=ИмяПути+ИмяФайла;
    ИначеЕсли ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
        ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
        ПутьБД = СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\"+файл);
        //ПутьБД=файл;
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;

    //Сообщить(ПутьБД);
    Врем.ОткрытьФайл(ПутьБД);
    Если (Врем.Открыта()=0) Тогда
        Предупреждение("Не могу открыть файл "+ПутьБД+"!");
        возврат;
    КонецЕсли;
    //Сообщить("БД:"+Врем.КоличествоПолей());
    Для п=1 по Врем.КоличествоПолей() Цикл
        Врем.ОписаниеПоля(п,ОписПоля,т,д,т1);
        тВрем.НоваяКолонка(ОписПоля,,,,ОписПоля,,,);
    КонецЦикла;
    //Сообщить("Табл:"+тВрем.КоличествоКолонок());
    п=0;
    Врем.Первая();
    Для з=1 по Врем.КоличествоЗаписей() Цикл
        Врем.Перейти(з);
            тВрем.НоваяСтрока(з);
            Для п=1 по Врем.КоличествоПолей() Цикл
                тВрем.УстановитьЗначение(з,п,Врем.ПолучитьЗначениеПоля(п));
            КонецЦикла;
    КонецЦикла;              
    Врем.ЗакрытьФайл();
    тВрем.Выгрузить(Табл);
КонецПроцедуры

Функция ПроверитьДокумент(НомерДок)
Перем тПлат, тАрхПлат;
ОткрФайл(тПлат,"plat.dbf");
ОткрФайл(тАрхПлат,"Detail_Y.dbf");
//тАрхПлат.Выгрузить();
Если тПлат.НайтиЗначение(НомерДок,,"NOMDOK")=1 Тогда
    //тАрхПлат.Выгрузить(тТест);
    Возврат 1;
КонецЕсли;
Если тАрхПлат.НайтиЗначение(НомерДок,,"NOMPLATDOK")=1 Тогда
    Возврат 1;
КонецЕсли;
    Возврат 0;
КонецФункции    


Процедура ВыбратьПлатежки()
    Перем Стр;
    тТест.УдалитьСтроки();
    тТест.НоваяКолонка("NOMDOK",,,, "Номер",,,);
    тТест.НоваяКолонка("DATDOK",,,, "Дата",,,);
    тТест.НоваяКолонка("NAMEPRED",,,, "Плательщик",,,);
    тТест.НоваяКолонка("MFOPRED",,,, "МФО плательщика",,,);
    тТест.НоваяКолонка("NAMEKONTR",,,, "Получатель",,,);
    тТест.НоваяКолонка("MFOKONTR",,,, "МФО получателя",,,);
    тТест.НоваяКолонка("CHETPRED",,,, "Счет плательщика",,,);
    тТест.НоваяКолонка("CHETKONTR",,,, "Счет получателя",,,);
    тТест.НоваяКолонка("OKPOPRED",,,, "ОКПО плательщика",,,);
    тТест.НоваяКолонка("NAZNACH",,,, "Содержание",,,);
    тТест.НоваяКолонка("OKPOKONTR",,,, "ОКПО получателя",,,);
    тТест.НоваяКолонка("SUMMDOK",,,, "Сумма",,,);
    тТест.НоваяКолонка("DATOKUSL",,,, "Дата валютирования",,,);
    стр=0;  

    Док = СоздатьОбъект("Документ.ПлатежноеПоручение");
    Док.ВыбратьДокументы(Дата1,Дата1);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (ПроверитьДокумент(Док.НомерДок)=0) И (Док.ПометкаУдаления()=0) Тогда
            стр=стр+1;                                      
            тТест.НоваяСтрока(стр);
            тТест.УстановитьЗначение(стр,"NOMDOK",Док.НомерДок);
            тТест.УстановитьЗначение(стр,"DATDOK",Формат(Док.ДатаДок,"ДГГГГММДД"));
            тТест.УстановитьЗначение(стр,"NAMEPRED",Константа.ОснФирма.Полное_Назв);
            тТест.УстановитьЗначение(стр,"MFOPRED",Число(ВыбСчет.Банк.Код));
            //Если Док.Заказ.Выбран()=1 Тогда
            //    Попытка
                    тТест.УстановитьЗначение(стр,"NAMEKONTR",Док.Контрагент.ПолнНаименование);
                    тТест.УстановитьЗначение(стр,"MFOKONTR",СокрЛП(Док.РСчетКонтрагента.Банк.Код));
                    тТест.УстановитьЗначение(стр,"CHETKONTR",СокрЛП(Док.РСчетКонтрагента.НомерСчета));
                    тТест.УстановитьЗначение(стр,"OKPOKONTR",СокрЛП(Док.Контрагент.ЕДРПОУ));
            //    Исключение
            //    КонецПопытки;    
            //КонецЕсли;
            тТест.УстановитьЗначение(стр,"CHETPRED",Число(ВыбСчет.НомерСчета));
            тТест.УстановитьЗначение(стр,"OKPOPRED",СокрЛП(Константа.ОснФирма.КодОКПО));
            тТест.УстановитьЗначение(стр,"NAZNACH",Док.НазначениеПлатежа.ПолнНаименование);
            тТест.УстановитьЗначение(стр,"SUMMDOK",Формат(Док.СуммаСНДС,"Ч12.2"));
            тТест.УстановитьЗначение(стр,"DATOKUSL","ПРЕДОПЛАТА");
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры    

Процедура СоздПуть()
    ТекстДок=СоздатьОбъект("Текст");
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьКаталог(ИмяПути,"Выберите каталог с базой данных КБ Аваль",)=0 Тогда
        //ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,)=0
            Возврат;
        КонецЕсли;
        //ПутьБД=ИмяПути+ИмяФайла;
        //Сообщить(КаталогПрограммы()+"klbank.ini",);
        Попытка
            ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");     
        Исключение
        КонецПопытки;
        ТекстДок.ВставитьСтроку(1,ИмяПути);
        //Сообщить("Путь "+ИмяПути);
        ТекстДок.Записать(КаталогПрограммы()+"klbank.ini");
КонецПроцедуры    


Процедура СформироватьДБФ()
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок, тПлат;
тПлат = СоздатьОбъект("ТаблицаЗначений");
ТекстДок=СоздатьОбъект("Текст");
    Если ВыбСчет.Выбран()=0 Тогда
        Предупреждение("Расчетный счет не выбран!");
        Возврат;
    КонецЕсли;
    Если тТест.КоличествоСтрок()=0 Тогда
        Предупреждение("Нет платежек!");
        Возврат;
    КонецЕсли;

    Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
        ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
        ПутьБД = СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\plat.dbf");
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,"plat.dbf",,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;
    Если ПустаяСтрока(ПутьБД)=0 Тогда
        Плат.ОткрытьФайл(ПутьБД);
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,"plat.dbf",,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;
    //Сообщить("ПутьБД"+ПутьБД);
    Если (Плат.Открыта()=0) Тогда
        Предупреждение("Не могу открыть файл "+ПутьБД+"!");
        возврат;
    КонецЕсли;
    //********************Сверка с текущим архивом
    //Сообщить(ИмяПути+"\Detail_Y.dbf");
    //АрхПлат.ОткрытьФайл(СокрЛП(ТекстДок.ПолучитьСтроку(1))+"\Detail_Y.dbf");
    //Если (АрхПлат.Открыта()=0) Тогда
    //    Предупреждение("Не могу открыть файл "+ИмяПути+"\Detail_Y.dbf"+"!");
    //    возврат;
    //КонецЕсли;
    //Для п=1 по АрхПлат.КоличествоПолей() Цикл
    //    АрхПлат.ОписаниеПоля(п,ОписПоля,т,д,т1);
    //    тВрем.НоваяКолонка(ОписПоля,,,,ОписПоля,,,);
    //КонецЦикла;                                    
    //АрхПлат.Первая();
    //Для з=1 по АрхПлат.КоличествоЗаписей() Цикл
    //    АрхПлат.Перейти(з);
    //        тВрем.НоваяСтрока(з);
    //        Для п=1 по АрхПлат.КоличествоПолей() Цикл
    //            тВрем.УстановитьЗначение(з,п,АрхПлат.ПолучитьЗначениеПоля(п));
    //        КонецЦикла;
    //КонецЦикла;              
    //АрхПлат.ЗакрытьФайл();
    //Для н=1 по тТест.КоличествоСтрок() Цикл
    //    Если тВрем.НайтиЗначение(тТест.ПолучитьЗначение(н,"NOMDOK"),,"NOMPLATDOK")=0 Тогда
    //        тТест.ТекущаяСтрока(н);
    //        тПлат.ДобавитьСтроку(тТест.ТекущаяСтрока());    
    //    КонецЕсли;
    //КонецЦикла;
    //тПлат.Выгрузить(тТест);
    //возврат;
    //********************Сверка с текущим архивом
    Плат.Последняя();
    Для п=1 по тТест.КоличествоСтрок() Цикл
        Плат.Добавить();
        Плат.NOMDOK=тТест.ПолучитьЗначение(п,"NOMDOK");
        Плат.DATDOK=тТест.ПолучитьЗначение(п,"DATDOK");        
        Плат.NAMEPRED=тТест.ПолучитьЗначение(п,"NAMEPRED");    
        Плат.MFOPRED=тТест.ПолучитьЗначение(п,"MFOPRED");        
        Плат.NAMEKONTR=тТест.ПолучитьЗначение(п,"NAMEKONTR");    
        Плат.MFOKONTR=тТест.ПолучитьЗначение(п,"MFOKONTR");      
        Плат.CHETPRED=тТест.ПолучитьЗначение(п,"CHETPRED");      
        Плат.CHETKONTR=тТест.ПолучитьЗначение(п,"CHETKONTR");    
        Плат.OKPOPRED=тТест.ПолучитьЗначение(п,"OKPOPRED");
        Плат.NAZNACH=тТест.ПолучитьЗначение(п,"NAZNACH");
        Плат.OKPOKONTR=тТест.ПолучитьЗначение(п,"OKPOKONTR");
        Плат.SUMMDOK=тТест.ПолучитьЗначение(п,"SUMMDOK");
        Плат.DATOKUSL=тТест.ПолучитьЗначение(п,"DATOKUSL");
    Плат.Записать();
    КонецЦикла;
    Плат.ЗакрытьФайл();
    тТест.Очистить();
    тПлат.Выгрузить(тТест);
    Предупреждение("Документы успешно выгружены!");
КонецПроцедуры
//***********************************************
Процедура Обраб()  
            Если ВвестиЗначение(зн,"Вибір значення ","Счет.Основной") = 1 Тогда
                  тТест.УстановитьЗначение(тТест.ТекущаяСтрока(),"КоррСчет",зн);
            КонецЕсли;
КонецПроцедуры  
//***********************************************,
Процедура СменаРежима()
    //Сообщить(Режим);
    тТест.Очистить();  
    тДБФ.Очистить();
    Если  Режим=1 Тогда          
        Форма.кнФормироватьВыписки.Видимость(1);
        Форма.кнВыгрузитьПлатежки.Видимость(0);
        ОткрытьБД();
    Иначе
        Форма.кнФормироватьВыписки.Видимость(0);
        Форма.кнВыгрузитьПлатежки.Видимость(1);
        ВыбратьПлатежки();
    КонецЕсли;
КонецПроцедуры
                                      
Процедура Выполнить()
    ЗаполнитьБВ();
КонецПроцедуры

Процедура УдалениеСтроки()
    Если тТест.КоличествоСтрок()>0 Тогда
        тТест.УдалитьСтроку();
    КонецЕсли;
КонецПроцедуры //УдалениеПД
                                
Процедура ОткрытьБД()
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок;
ТекстДок=СоздатьОбъект("Текст");
тТест.Очистить();
    ИмяФайла="";
    ИмяПути ="";
ФайлТекст = СоздатьОбъект("Текст");
файл = "v"+Прав(Формат(Дата1,"ДГГГГММДД"),6)+".zzz";
Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
    ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
//    ПутьБД= СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\"+файл);  
    Путь= СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\");
    ФС.ВыбратьФайл(0,ИмяФайла, Путь, ,файл,,);
    ПутьБД=Путь+ИмяФайла;
Иначе
    ИмяФайла="";
    ИмяПути ="";
    ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,);
    ПутьБД=ИмяПути+ИмяФайла;
КонецЕсли;
    ФайлТекст.КодоваяСтраница(0);
    ФайлТекст.Открыть(ПутьБД);
    Если ФайлТекст.КоличествоСтрок() = 0 Тогда
        Предупреждение("Выписки банка не найдены");
    Возврат;
    КонецЕсли;
    
    тДБФ.НоваяКолонка("NOMDOK",,,, "NOMDOK",,,);
    тДБФ.НоваяКолонка("DATKVOPL",,,, "DATKVOPL",,,);
    тДБФ.НоваяКолонка("CHETPRED","Число",14,, "CHETPRED",,,);
    тДБФ.НоваяКолонка("OKPOKONTR","Строка",10,, "OKPOKONTR",,,);
    тДБФ.НоваяКолонка("NAMEKONTR",,,, "NAMEKONTR",,,);
    тДБФ.НоваяКолонка("SUMMDOK","Число",15,2, "SUMMDOK",,,);
    тДБФ.НоваяКолонка("DEB_KRED","Число",1,, "DEB_KRED",,,);
    тДБФ.НоваяКолонка("NAZNACH",,,, "NAZNACH",,,);
    тДБФ.НоваяКолонка("КоррСчет","Счет.Основной");  
    ррр = 0;
    Для ном=1 по ФайлТекст.КоличествоСтрок() Цикл
        стр = OemToAnsi(ФайлТекст.ПолучитьСтроку(ном));  
    Если Лев(стр,1) = "0" Тогда
        Если (Число(Сред(стр,2,14)) <> Число(ВыбСчет.Номер)) или (Сред(стр,16,8) <> Формат(Дата1,"ДГГГГММДД")) Тогда
//            Сообщить("Ошибка! Проверьте сохранение выписки");
//            Возврат;
    ррр = 0;
        Продолжить;
    КонецЕсли;
    ррр = 1;
        СчетОсн = Число(Сред(стр,2,14));
        ДатаВ = Сред(стр,16,8);
    ИначеЕсли (ррр = 1 ) и (Лев(стр,1) = "1") Тогда    
        Если (Число(Сред(стр,12,14)) <> Число(ВыбСчет.Номер)) и (Число(Сред(стр,89,14)) <> Число(ВыбСчет.Номер)) Тогда  
//            Сообщить("Ошибка! Проверьте сохранение выписки");
//            Возврат;
        Продолжить;
        КонецЕсли;  
        тДБФ.НоваяСтрока(тДБФ.КоличествоСтрок()+1);
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NOMDOK",Сред(стр,159,10));  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DATKVOPL",ДатаВ);  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"CHETPRED",СчетОсн);
        Если Сред(стр,2,1) = "+" Тогда
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"OKPOKONTR",СокрЛ(Сред(стр,26,14)));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NAMEKONTR",Сред(стр,40,40));  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DEB_KRED",1);
        Иначе
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"OKPOKONTR",СокрЛ(Сред(стр,103,14)));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NAMEKONTR",Сред(стр,117,40));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DEB_KRED",0);
        КонецЕсли;
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"SUMMDOK",Число(Сред(стр,169,19))/100);  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NAZNACH",Сред(стр,212,255));  
//        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",Сред(стр,159,10));
        
//        Для з=1 по ДБФ.КоличествоЗаписей() Цикл
//        ДБФ.Перейти(з);    
//       Если ДБФ.ПолучитьЗначениеПоля("CHETPRED") <> Число(ВыбСчет.Номер) Тогда
//        Продолжить;
//        КонецЕсли;
//        Если СокрЛП(ДБФ.ПолучитьЗначениеПоля("DATKVOPL"))=(Формат(Дата1,"ДГГГГММДД")) Тогда
            Назначение=Сред(стр,212,255);  
            Если (Найти(Назначение,"овердрафт")<> 0) Тогда  
                 Продолжить;
            КонецЕсли;
//            тДБФ.НоваяСтрока(тДБФ.КоличествоСтрок()+1);
//            Для п=1 по ДБФ.КоличествоПолей() Цикл
//                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),п,ДБФ.ПолучитьЗначениеПоля(п));
//            КонецЦикла;  
//            Назначение=ДБФ.ПолучитьЗначениеПоля("NAZNACH");
            ДенКасса= Сред(стр,40,40);
        Если (Сред(стр,2,1) = "-") Тогда
              Если (Найти(Назначение,"товар")<> 0) или (Найти(Назначение,"ХАРЧ")<> 0) или (Найти(Назначение,"харч")<> 0)
                  или (Найти(Назначение,"ПРОД")<> 0) или (Найти(Назначение,"прод")<> 0) или (Найти(Назначение,"вироб")<> 0)
                  или (Найти(Назначение,"ТОВАР")<> 0) или (Найти(Назначение,"алког")<> 0) или (Найти(Назначение,"ВИРОБ")<> 0)
                  или (Найти(Назначение,"АЛКОГ")<> 0) или (Найти(Назначение,"тютюн")<> 0) Тогда
                  тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("63.1"));
              КонецЕсли;  
              Если (Найти(Назначение,"ТЮТЮН")<> 0) или (Найти(Назначение,"горіл")<> 0)
                   или (Найти(Назначение,"ГОРІЛ")<> 0) или (Найти(Назначение,"таба")<> 0)
                   или (Найти(Назначение,"ТАБА")<> 0) или (Найти(Назначение,"СИГАР")<> 0)
              или (Найти(Назначение,"ЦИГАР")<> 0) или (Найти(Назначение,"цигар")<> 0)
                   или (Найти(Назначение,"вино")<> 0) или (Найти(Назначение,"пиво")<> 0)
                   или (Найти(Назначение,"сигар")<> 0)Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("63.1"));
              КонецЕсли;
            Если (Найти(Назначение,"Перерахунок кошт")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("31.1"));
            КонецЕсли;
            Если (Найти(Назначение,"Плата за инк")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("95.2"));
            КонецЕсли;
        Иначе
            Если (Найти(Назначение,"товар")<> 0) или (Найти(Назначение,"ХАРЧ")<> 0) или (Найти(Назначение,"харч")<> 0)
              или (Найти(Назначение,"ПРОД")<> 0) или (Найти(Назначение,"прод")<> 0) или (Найти(Назначение,"вироб")<> 0)
              или (Найти(Назначение,"ТОВАР")<> 0) или (Найти(Назначение,"АЛКОГ")<> 0) или (Найти(Назначение,"ВИРОБ")<> 0)
              или (Найти(Назначение,"ТЮТЮН")<> 0) или (Найти(Назначение,"ГОРІЛ")<> 0) или (Найти(Назначение,"ПИВО")<> 0) Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("36.1"));
            КонецЕсли;
            Если (Найти(Назначение,"алког")<> 0) или (Найти(Назначение,"тютюн")<> 0)
              или (Найти(Назначение,"горіл")<> 0) или (Найти(Назначение,"таба")<> 0)
              или (Найти(Назначение,"ТАБА")<> 0) или (Найти(Назначение,"СИГАР")<> 0)  
              или (Найти(Назначение,"ЦИГАР")<> 0) или (Найти(Назначение,"цигар")<> 0)
              или (Найти(Назначение,"сигар")<> 0) или (Найти(Назначение,"вино")<> 0) или (Найти(Назначение,"пиво")<> 0) Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("36.1"));
            КонецЕсли;
            Если ((Найти(Назначение,"вируч")<> 0) или (Найти(Назначение,"ВИРУЧ")<> 0)  или (Найти(Назначение,"Вируч")<> 0)) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("33.3"));
            КонецЕсли;
            Если (Найти(Назначение,"Перерахунок кошт")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("31.1"));
            КонецЕсли;
            Если (Найти(Назначение,"повор")<> 0) или (Найти(Назначение,"ПОВОР")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("30.1"));
            КонецЕсли;
            Если (((Найти(Назначение,"вируч")<> 0) или (Найти(Назначение,"ВИРУЧ")<> 0)  или (Найти(Назначение,"Вируч")<> 0)) и (Найти(ДенКасса,"Центр.")<> 0)) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("30.1"));
            КонецЕсли;
        КонецЕсли;
        КонецЕсли;
    КонецЦикла;              
    
//    ДБФ.ЗакрытьФайл();
    тДБФ.Выгрузить(тТест);
    тТест.Сортировать("DEB_KRED,SUMMDOK");
    Для п=1 по тТест.КоличествоКолонок() Цикл
        тТест.ПолучитьПараметрыКолонки(п,,,,ОписПоля,,,);  
        Если (ОписПоля="КоррСчет") Тогда  
            тТест.УстановитьПараметрыКолонки(п,"Счет.Основной",,,"КоррСчет",6,,);
        ИначеЕсли (ОписПоля="NAMEKONTR") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"Контрагент",16,,);
        ИначеЕсли (ОписПоля="OKPOKONTR") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"ОКПО",8,,);
        ИначеЕсли (ОписПоля="SUMMDOK") Тогда
            тТест.УстановитьПараметрыКолонки(п,"Число",,2,"Сумма",8,"Ч012.2",2);
        ИначеЕсли (ОписПоля="NAZNACH") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"Содержание",30,,);
        Иначе
            тТест.ВидимостьКолонки(Строка(п),0);
        КонецЕсли;
    КонецЦикла;
    
//    КонецЦикла;
КонецПроцедуры    

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

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

ДБФ = СоздатьОбъект("XBase");
Плат = СоздатьОбъект("XBase");
Врем = СоздатьОбъект("XBase");
АрхПлат = СоздатьОбъект("XBase");
тДБФ = СоздатьОбъект("ТаблицаЗначений");  
тВрем = СоздатьОбъект("ТаблицаЗначений");
тПлат = СоздатьОбъект("ТаблицаЗначений");
тАрхПлат = СоздатьОбъект("ТаблицаЗначений"); [/hide]

Процедура ПриОткрытии()
    Режим=2;
    Дата1=РабочаяДата();
    Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=0 Тогда
        СоздПуть();
    КонецЕсли;
    ВыбратьПлатежки();
    //ОткрытьБД("ArhivPLT.dbf");
КонецПроцедуры

Функция Остаток(Контрагент,Сумма)
    тЗаказы = СоздатьОбъект("ТаблицаЗначений");
    ИтЗапр = СоздатьОбъект("БухгалтерскиеИтоги");
    ИтЗапр.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);
    ИтЗапр.ИспользоватьСубконто(ВидыСубконто.Заказы,,1);
    ИтЗапр.ВыполнитьЗапрос(НачМесяца(Дата1),Дата1,"361",,,,,1);
    Ост = 0;
        ИтЗапр.ВыбратьСубконто(1);
        Если ИтЗапр.ПолучитьСубконто(1,,Контрагент) = 1 Тогда
            ИтЗапр.ВыбратьСубконто(2);
            Пока ИтЗапр.ПолучитьСубконто(2,,) = 1 Цикл
                Ост = (ИтЗапр.СКД() - ИтЗапр.СКК());
                Если (Цел(Ост) = Цел(Число(Сумма))) И (Цел(ИтЗапр.Субконто(2).Итог("СуммаСНДС"))=Цел(Ост)) Тогда
                    Возврат ИтЗапр.Субконто(2);
                КонецЕсли;    
            КонецЦикла;
        КонецЕсли;
    Возврат 0;
    //Возврат СокрЛ(Формат(Ост,"Ч14.2.'"));
КонецФункции

Процедура Помощь()      
Перем Подсказка;
    Если  Режим=1 Тогда          
        Подсказка="Программа может работать в двух режимах:
        |-формировать банковскую выписку за дату, выбранную на форме
        |-переносить оформленные платежные поручения за дату, выбранную на форме, в клиент-банк"+РазделительСтрок+"
        |Удалите из таблицы платежи (строки), которые НЕ желаете включать в будущую банковскую выписку, с помощью кнопки 'Х'
        |Если нужно, используйте кнопку '!' чтобы обновить данные в таблице
        |Кнопка 'ХХ' удаляет все строки из таблицы"+РазделительСтрок+"
        |Затем нажмите кнопку 'Формировать выписку', и в открывшемся документе Вам останется только выбрать заказы";
    Иначе
        Подсказка="Программа может работать в двух режимах:
        |-формировать банковскую выписку за дату, выбранную на форме
        |-переносить оформленные платежные поручения за дату, выбранную на форме, в клиент-банк"+РазделительСтрок+"
        |Удалите из таблицы выписки (строки), которые НЕ желаете переносить в клиент-банк, с помощью кнопки 'Х'
        |Если нужно, используйте кнопку '!' чтобы обновить данные в таблице
        |Успешно выгруженые платежки не отображаются больше в таблице, и выгрузить их повторно в клиент-банк нельзя.
        |Кнопка 'ХХ' удаляет все строки из таблицы"+РазделительСтрок+"
        |Затем нажмите кнопку 'Выгрузить платежки ', запустите клиент-банк и проверьте, правильно ли заполнены Ваши платежки";
    КонецЕсли;
    Предупреждение(Подсказка);
КонецПроцедуры

Процедура ОткрФайл(табл,файл)
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок;
ТекстДок=СоздатьОбъект("Текст");
тВрем.Очистить();
тТест.Очистить();              
    Если файл="" Тогда
        ИмяФайла="";
        ИмяПути ="";
        ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,,,);
        ПутьБД=ИмяПути+ИмяФайла;
    ИначеЕсли ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
        ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
        ПутьБД = СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\"+файл);
        //ПутьБД=файл;
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;

    //Сообщить(ПутьБД);
    Врем.ОткрытьФайл(ПутьБД);
    Если (Врем.Открыта()=0) Тогда
        Предупреждение("Не могу открыть файл "+ПутьБД+"!");
        возврат;
    КонецЕсли;
    //Сообщить("БД:"+Врем.КоличествоПолей());
    Для п=1 по Врем.КоличествоПолей() Цикл
        Врем.ОписаниеПоля(п,ОписПоля,т,д,т1);
        тВрем.НоваяКолонка(ОписПоля,,,,ОписПоля,,,);
    КонецЦикла;
    //Сообщить("Табл:"+тВрем.КоличествоКолонок());
    п=0;
    Врем.Первая();
    Для з=1 по Врем.КоличествоЗаписей() Цикл
        Врем.Перейти(з);
            тВрем.НоваяСтрока(з);
            Для п=1 по Врем.КоличествоПолей() Цикл
                тВрем.УстановитьЗначение(з,п,Врем.ПолучитьЗначениеПоля(п));
            КонецЦикла;
    КонецЦикла;              
    Врем.ЗакрытьФайл();
    тВрем.Выгрузить(Табл);
КонецПроцедуры

Функция ПроверитьДокумент(НомерДок)
Перем тПлат, тАрхПлат;
ОткрФайл(тПлат,"plat.dbf");
ОткрФайл(тАрхПлат,"Detail_Y.dbf");
//тАрхПлат.Выгрузить();
Если тПлат.НайтиЗначение(НомерДок,,"NOMDOK")=1 Тогда
    //тАрхПлат.Выгрузить(тТест);
    Возврат 1;
КонецЕсли;
Если тАрхПлат.НайтиЗначение(НомерДок,,"NOMPLATDOK")=1 Тогда
    Возврат 1;
КонецЕсли;
    Возврат 0;
КонецФункции    


Процедура ВыбратьПлатежки()
    Перем Стр;
    тТест.УдалитьСтроки();
    тТест.НоваяКолонка("NOMDOK",,,, "Номер",,,);
    тТест.НоваяКолонка("DATDOK",,,, "Дата",,,);
    тТест.НоваяКолонка("NAMEPRED",,,, "Плательщик",,,);
    тТест.НоваяКолонка("MFOPRED",,,, "МФО плательщика",,,);
    тТест.НоваяКолонка("NAMEKONTR",,,, "Получатель",,,);
    тТест.НоваяКолонка("MFOKONTR",,,, "МФО получателя",,,);
    тТест.НоваяКолонка("CHETPRED",,,, "Счет плательщика",,,);
    тТест.НоваяКолонка("CHETKONTR",,,, "Счет получателя",,,);
    тТест.НоваяКолонка("OKPOPRED",,,, "ОКПО плательщика",,,);
    тТест.НоваяКолонка("NAZNACH",,,, "Содержание",,,);
    тТест.НоваяКолонка("OKPOKONTR",,,, "ОКПО получателя",,,);
    тТест.НоваяКолонка("SUMMDOK",,,, "Сумма",,,);
    тТест.НоваяКолонка("DATOKUSL",,,, "Дата валютирования",,,);
    стр=0;  

    Док = СоздатьОбъект("Документ.ПлатежноеПоручение");
    Док.ВыбратьДокументы(Дата1,Дата1);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (ПроверитьДокумент(Док.НомерДок)=0) И (Док.ПометкаУдаления()=0) Тогда
            стр=стр+1;                                      
            тТест.НоваяСтрока(стр);
            тТест.УстановитьЗначение(стр,"NOMDOK",Док.НомерДок);
            тТест.УстановитьЗначение(стр,"DATDOK",Формат(Док.ДатаДок,"ДГГГГММДД"));
            тТест.УстановитьЗначение(стр,"NAMEPRED",Константа.ОснФирма.Полное_Назв);
            тТест.УстановитьЗначение(стр,"MFOPRED",Число(ВыбСчет.Банк.Код));
            //Если Док.Заказ.Выбран()=1 Тогда
            //    Попытка
                    тТест.УстановитьЗначение(стр,"NAMEKONTR",Док.Контрагент.ПолнНаименование);
                    тТест.УстановитьЗначение(стр,"MFOKONTR",СокрЛП(Док.РСчетКонтрагента.Банк.Код));
                    тТест.УстановитьЗначение(стр,"CHETKONTR",СокрЛП(Док.РСчетКонтрагента.НомерСчета));
                    тТест.УстановитьЗначение(стр,"OKPOKONTR",СокрЛП(Док.Контрагент.ЕДРПОУ));
            //    Исключение
            //    КонецПопытки;    
            //КонецЕсли;
            тТест.УстановитьЗначение(стр,"CHETPRED",Число(ВыбСчет.НомерСчета));
            тТест.УстановитьЗначение(стр,"OKPOPRED",СокрЛП(Константа.ОснФирма.КодОКПО));
            тТест.УстановитьЗначение(стр,"NAZNACH",Док.НазначениеПлатежа.ПолнНаименование);
            тТест.УстановитьЗначение(стр,"SUMMDOK",Формат(Док.СуммаСНДС,"Ч12.2"));
            тТест.УстановитьЗначение(стр,"DATOKUSL","ПРЕДОПЛАТА");
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры    

Процедура СоздПуть()
    ТекстДок=СоздатьОбъект("Текст");
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьКаталог(ИмяПути,"Выберите каталог с базой данных КБ Аваль",)=0 Тогда
        //ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,)=0
            Возврат;
        КонецЕсли;
        //ПутьБД=ИмяПути+ИмяФайла;
        //Сообщить(КаталогПрограммы()+"klbank.ini",);
        Попытка
            ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");     
        Исключение
        КонецПопытки;
        ТекстДок.ВставитьСтроку(1,ИмяПути);
        //Сообщить("Путь "+ИмяПути);
        ТекстДок.Записать(КаталогПрограммы()+"klbank.ini");
КонецПроцедуры    


Процедура СформироватьДБФ()
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок, тПлат;
тПлат = СоздатьОбъект("ТаблицаЗначений");
ТекстДок=СоздатьОбъект("Текст");
    Если ВыбСчет.Выбран()=0 Тогда
        Предупреждение("Расчетный счет не выбран!");
        Возврат;
    КонецЕсли;
    Если тТест.КоличествоСтрок()=0 Тогда
        Предупреждение("Нет платежек!");
        Возврат;
    КонецЕсли;

    Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
        ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
        ПутьБД = СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\plat.dbf");
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,"plat.dbf",,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;
    Если ПустаяСтрока(ПутьБД)=0 Тогда
        Плат.ОткрытьФайл(ПутьБД);
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,"plat.dbf",,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;
    //Сообщить("ПутьБД"+ПутьБД);
    Если (Плат.Открыта()=0) Тогда
        Предупреждение("Не могу открыть файл "+ПутьБД+"!");
        возврат;
    КонецЕсли;
    //********************Сверка с текущим архивом
    //Сообщить(ИмяПути+"\Detail_Y.dbf");
    //АрхПлат.ОткрытьФайл(СокрЛП(ТекстДок.ПолучитьСтроку(1))+"\Detail_Y.dbf");
    //Если (АрхПлат.Открыта()=0) Тогда
    //    Предупреждение("Не могу открыть файл "+ИмяПути+"\Detail_Y.dbf"+"!");
    //    возврат;
    //КонецЕсли;
    //Для п=1 по АрхПлат.КоличествоПолей() Цикл
    //    АрхПлат.ОписаниеПоля(п,ОписПоля,т,д,т1);
    //    тВрем.НоваяКолонка(ОписПоля,,,,ОписПоля,,,);
    //КонецЦикла;                                    
    //АрхПлат.Первая();
    //Для з=1 по АрхПлат.КоличествоЗаписей() Цикл
    //    АрхПлат.Перейти(з);
    //        тВрем.НоваяСтрока(з);
    //        Для п=1 по АрхПлат.КоличествоПолей() Цикл
    //            тВрем.УстановитьЗначение(з,п,АрхПлат.ПолучитьЗначениеПоля(п));
    //        КонецЦикла;
    //КонецЦикла;              
    //АрхПлат.ЗакрытьФайл();
    //Для н=1 по тТест.КоличествоСтрок() Цикл
    //    Если тВрем.НайтиЗначение(тТест.ПолучитьЗначение(н,"NOMDOK"),,"NOMPLATDOK")=0 Тогда
    //        тТест.ТекущаяСтрока(н);
    //        тПлат.ДобавитьСтроку(тТест.ТекущаяСтрока());    
    //    КонецЕсли;
    //КонецЦикла;
    //тПлат.Выгрузить(тТест);
    //возврат;
    //********************Сверка с текущим архивом
    Плат.Последняя();
    Для п=1 по тТест.КоличествоСтрок() Цикл
        Плат.Добавить();
        Плат.NOMDOK=тТест.ПолучитьЗначение(п,"NOMDOK");
        Плат.DATDOK=тТест.ПолучитьЗначение(п,"DATDOK");        
        Плат.NAMEPRED=тТест.ПолучитьЗначение(п,"NAMEPRED");    
        Плат.MFOPRED=тТест.ПолучитьЗначение(п,"MFOPRED");        
        Плат.NAMEKONTR=тТест.ПолучитьЗначение(п,"NAMEKONTR");    
        Плат.MFOKONTR=тТест.ПолучитьЗначение(п,"MFOKONTR");      
        Плат.CHETPRED=тТест.ПолучитьЗначение(п,"CHETPRED");      
        Плат.CHETKONTR=тТест.ПолучитьЗначение(п,"CHETKONTR");    
        Плат.OKPOPRED=тТест.ПолучитьЗначение(п,"OKPOPRED");
        Плат.NAZNACH=тТест.ПолучитьЗначение(п,"NAZNACH");
        Плат.OKPOKONTR=тТест.ПолучитьЗначение(п,"OKPOKONTR");
        Плат.SUMMDOK=тТест.ПолучитьЗначение(п,"SUMMDOK");
        Плат.DATOKUSL=тТест.ПолучитьЗначение(п,"DATOKUSL");
    Плат.Записать();
    КонецЦикла;
    Плат.ЗакрытьФайл();
    тТест.Очистить();
    тПлат.Выгрузить(тТест);
    Предупреждение("Документы успешно выгружены!");
КонецПроцедуры
//***********************************************
Процедура Обраб()  
            Если ВвестиЗначение(зн,"Вибір значення ","Счет.Основной") = 1 Тогда
                  тТест.УстановитьЗначение(тТест.ТекущаяСтрока(),"КоррСчет",зн);
            КонецЕсли;
КонецПроцедуры  
//***********************************************,
Процедура СменаРежима()
    //Сообщить(Режим);
    тТест.Очистить();  
    тДБФ.Очистить();
    Если  Режим=1 Тогда          
        Форма.кнФормироватьВыписки.Видимость(1);
        Форма.кнВыгрузитьПлатежки.Видимость(0);
        ОткрытьБД();
    Иначе
        Форма.кнФормироватьВыписки.Видимость(0);
        Форма.кнВыгрузитьПлатежки.Видимость(1);
        ВыбратьПлатежки();
    КонецЕсли;
КонецПроцедуры
                                      
Процедура Выполнить()
    ЗаполнитьБВ();
КонецПроцедуры

Процедура УдалениеСтроки()
    Если тТест.КоличествоСтрок()>0 Тогда
        тТест.УдалитьСтроку();
    КонецЕсли;
КонецПроцедуры //УдалениеПД
                                
Процедура ОткрытьБД()
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок;
ТекстДок=СоздатьОбъект("Текст");
тТест.Очистить();
    ИмяФайла="";
    ИмяПути ="";
ФайлТекст = СоздатьОбъект("Текст");
файл = "v"+Прав(Формат(Дата1,"ДГГГГММДД"),6)+".zzz";
Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
    ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
//    ПутьБД= СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\"+файл);  
    Путь= СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\");
    ФС.ВыбратьФайл(0,ИмяФайла, Путь, ,файл,,);
    ПутьБД=Путь+ИмяФайла;
Иначе
    ИмяФайла="";
    ИмяПути ="";
    ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,);
    ПутьБД=ИмяПути+ИмяФайла;
КонецЕсли;
    ФайлТекст.КодоваяСтраница(0);
    ФайлТекст.Открыть(ПутьБД);
    Если ФайлТекст.КоличествоСтрок() = 0 Тогда
        Предупреждение("Выписки банка не найдены");
    Возврат;
    КонецЕсли;
    
    тДБФ.НоваяКолонка("NOMDOK",,,, "NOMDOK",,,);
    тДБФ.НоваяКолонка("DATKVOPL",,,, "DATKVOPL",,,);
    тДБФ.НоваяКолонка("CHETPRED","Число",14,, "CHETPRED",,,);
    тДБФ.НоваяКолонка("OKPOKONTR","Строка",10,, "OKPOKONTR",,,);
    тДБФ.НоваяКолонка("NAMEKONTR",,,, "NAMEKONTR",,,);
    тДБФ.НоваяКолонка("SUMMDOK","Число",15,2, "SUMMDOK",,,);
    тДБФ.НоваяКолонка("DEB_KRED","Число",1,, "DEB_KRED",,,);
    тДБФ.НоваяКолонка("NAZNACH",,,, "NAZNACH",,,);
    тДБФ.НоваяКолонка("КоррСчет","Счет.Основной");  
    ррр = 0;
    Для ном=1 по ФайлТекст.КоличествоСтрок() Цикл
        стр = OemToAnsi(ФайлТекст.ПолучитьСтроку(ном));  
    Если Лев(стр,1) = "0" Тогда
        Если (Число(Сред(стр,2,14)) <> Число(ВыбСчет.Номер)) или (Сред(стр,16,8) <> Формат(Дата1,"ДГГГГММДД")) Тогда
//            Сообщить("Ошибка! Проверьте сохранение выписки");
//            Возврат;
    ррр = 0;
        Продолжить;
    КонецЕсли;
    ррр = 1;
        СчетОсн = Число(Сред(стр,2,14));
        ДатаВ = Сред(стр,16,8);
    ИначеЕсли (ррр = 1 ) и (Лев(стр,1) = "1") Тогда    
        Если (Число(Сред(стр,12,14)) <> Число(ВыбСчет.Номер)) и (Число(Сред(стр,89,14)) <> Число(ВыбСчет.Номер)) Тогда  
//            Сообщить("Ошибка! Проверьте сохранение выписки");
//            Возврат;
        Продолжить;
        КонецЕсли;  
        тДБФ.НоваяСтрока(тДБФ.КоличествоСтрок()+1);
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NOMDOK",Сред(стр,159,10));  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DATKVOPL",ДатаВ);  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"CHETPRED",СчетОсн);
        Если Сред(стр,2,1) = "+" Тогда
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"OKPOKONTR",СокрЛ(Сред(стр,26,14)));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NAMEKONTR",Сред(стр,40,40));  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DEB_KRED",1);
        Иначе
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"OKPOKONTR",СокрЛ(Сред(стр,103,14)));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NAMEKONTR",Сред(стр,117,40));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DEB_KRED",0);
        КонецЕсли;
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"SUMMDOK",Число(Сред(стр,169,19))/100);  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NAZNACH",Сред(стр,212,255));  
//        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",Сред(стр,159,10));
        
//        Для з=1 по ДБФ.КоличествоЗаписей() Цикл
//        ДБФ.Перейти(з);    
//       Если ДБФ.ПолучитьЗначениеПоля("CHETPRED") <> Число(ВыбСчет.Номер) Тогда
//        Продолжить;
//        КонецЕсли;
//        Если СокрЛП(ДБФ.ПолучитьЗначениеПоля("DATKVOPL"))=(Формат(Дата1,"ДГГГГММДД")) Тогда
            Назначение=Сред(стр,212,255);  
            Если (Найти(Назначение,"овердрафт")<> 0) Тогда  
                 Продолжить;
            КонецЕсли;
//            тДБФ.НоваяСтрока(тДБФ.КоличествоСтрок()+1);
//            Для п=1 по ДБФ.КоличествоПолей() Цикл
//                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),п,ДБФ.ПолучитьЗначениеПоля(п));
//            КонецЦикла;  
//            Назначение=ДБФ.ПолучитьЗначениеПоля("NAZNACH");
            ДенКасса= Сред(стр,40,40);
        Если (Сред(стр,2,1) = "-") Тогда
              Если (Найти(Назначение,"товар")<> 0) или (Найти(Назначение,"ХАРЧ")<> 0) или (Найти(Назначение,"харч")<> 0)
                  или (Найти(Назначение,"ПРОД")<> 0) или (Найти(Назначение,"прод")<> 0) или (Найти(Назначение,"вироб")<> 0)
                  или (Найти(Назначение,"ТОВАР")<> 0) или (Найти(Назначение,"алког")<> 0) или (Найти(Назначение,"ВИРОБ")<> 0)
                  или (Найти(Назначение,"АЛКОГ")<> 0) или (Найти(Назначение,"тютюн")<> 0) Тогда
                  тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("63.1"));
              КонецЕсли;  
              Если (Найти(Назначение,"ТЮТЮН")<> 0) или (Найти(Назначение,"горіл")<> 0)
                   или (Найти(Назначение,"ГОРІЛ")<> 0) или (Найти(Назначение,"таба")<> 0)
                   или (Найти(Назначение,"ТАБА")<> 0) или (Найти(Назначение,"СИГАР")<> 0)
              или (Найти(Назначение,"ЦИГАР")<> 0) или (Найти(Назначение,"цигар")<> 0)
                   или (Найти(Назначение,"вино")<> 0) или (Найти(Назначение,"пиво")<> 0)
                   или (Найти(Назначение,"сигар")<> 0)Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("63.1"));
              КонецЕсли;
            Если (Найти(Назначение,"Перерахунок кошт")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("31.1"));
            КонецЕсли;
            Если (Найти(Назначение,"Плата за инк")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("95.2"));
            КонецЕсли;
        Иначе
            Если (Найти(Назначение,"товар")<> 0) или (Найти(Назначение,"ХАРЧ")<> 0) или (Найти(Назначение,"харч")<> 0)
              или (Найти(Назначение,"ПРОД")<> 0) или (Найти(Назначение,"прод")<> 0) или (Найти(Назначение,"вироб")<> 0)
              или (Найти(Назначение,"ТОВАР")<> 0) или (Найти(Назначение,"АЛКОГ")<> 0) или (Найти(Назначение,"ВИРОБ")<> 0)
              или (Найти(Назначение,"ТЮТЮН")<> 0) или (Найти(Назначение,"ГОРІЛ")<> 0) или (Найти(Назначение,"ПИВО")<> 0) Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("36.1"));
            КонецЕсли;
            Если (Найти(Назначение,"алког")<> 0) или (Найти(Назначение,"тютюн")<> 0)
              или (Найти(Назначение,"горіл")<> 0) или (Найти(Назначение,"таба")<> 0)
              или (Найти(Назначение,"ТАБА")<> 0) или (Найти(Назначение,"СИГАР")<> 0)  
              или (Найти(Назначение,"ЦИГАР")<> 0) или (Найти(Назначение,"цигар")<> 0)
              или (Найти(Назначение,"сигар")<> 0) или (Найти(Назначение,"вино")<> 0) или (Найти(Назначение,"пиво")<> 0) Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("36.1"));
            КонецЕсли;
            Если ((Найти(Назначение,"вируч")<> 0) или (Найти(Назначение,"ВИРУЧ")<> 0)  или (Найти(Назначение,"Вируч")<> 0)) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("33.3"));
            КонецЕсли;
            Если (Найти(Назначение,"Перерахунок кошт")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("31.1"));
            КонецЕсли;
            Если (Найти(Назначение,"повор")<> 0) или (Найти(Назначение,"ПОВОР")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("30.1"));
            КонецЕсли;
            Если (((Найти(Назначение,"вируч")<> 0) или (Найти(Назначение,"ВИРУЧ")<> 0)  или (Найти(Назначение,"Вируч")<> 0)) и (Найти(ДенКасса,"Центр.")<> 0)) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("30.1"));
            КонецЕсли;
        КонецЕсли;
        КонецЕсли;
    КонецЦикла;              
    
//    ДБФ.ЗакрытьФайл();
    тДБФ.Выгрузить(тТест);
    тТест.Сортировать("DEB_KRED,SUMMDOK");
    Для п=1 по тТест.КоличествоКолонок() Цикл
        тТест.ПолучитьПараметрыКолонки(п,,,,ОписПоля,,,);  
        Если (ОписПоля="КоррСчет") Тогда  
            тТест.УстановитьПараметрыКолонки(п,"Счет.Основной",,,"КоррСчет",6,,);
        ИначеЕсли (ОписПоля="NAMEKONTR") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"Контрагент",16,,);
        ИначеЕсли (ОписПоля="OKPOKONTR") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"ОКПО",8,,);
        ИначеЕсли (ОписПоля="SUMMDOK") Тогда
            тТест.УстановитьПараметрыКолонки(п,"Число",,2,"Сумма",8,"Ч012.2",2);
        ИначеЕсли (ОписПоля="NAZNACH") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"Содержание",30,,);
        Иначе
            тТест.ВидимостьКолонки(Строка(п),0);
        КонецЕсли;
    КонецЦикла;
    
//    КонецЦикла;
КонецПроцедуры    

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

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

ДБФ = СоздатьОбъект("XBase");
Плат = СоздатьОбъект("XBase");
Врем = СоздатьОбъект("XBase");
АрхПлат = СоздатьОбъект("XBase");
тДБФ = СоздатьОбъект("ТаблицаЗначений");  
тВрем = СоздатьОбъект("ТаблицаЗначений");
тПлат = СоздатьОбъект("ТаблицаЗначений");
тАрхПлат = СоздатьОбъект("ТаблицаЗначений");


как стало
Тыц
//*******************************************
Перем ДБФ,Плат,Врем, тВрем, тДБФ, тПлат, Вал, тАрхПлат,зн;
Перем ПутьБД;

Процедура ЗаполнитьБВ() далее
Процедура ОткрытьБД() далее
Процедура ВыбратьПлатежки() далее
Процедура СоздПуть() далее

Процедура ПриОткрытии()
    Режим=2;
    Дата1=РабочаяДата();
    Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=0 Тогда
        СоздПуть();
    КонецЕсли;
    ВыбратьПлатежки();
    //ОткрытьБД("ArhivPLT.dbf");
КонецПроцедуры

Функция Остаток(Контрагент,Сумма)
    тЗаказы = СоздатьОбъект("ТаблицаЗначений");
    ИтЗапр = СоздатьОбъект("БухгалтерскиеИтоги");
    ИтЗапр.ИспользоватьСубконто(ВидыСубконто.Контрагенты,Контрагент,2);
    ИтЗапр.ИспользоватьСубконто(ВидыСубконто.Заказы,,1);
    ИтЗапр.ВыполнитьЗапрос(НачМесяца(Дата1),Дата1,"361",,,,,1);
    Ост = 0;
        ИтЗапр.ВыбратьСубконто(1);
        Если ИтЗапр.ПолучитьСубконто(1,,Контрагент) = 1 Тогда
            ИтЗапр.ВыбратьСубконто(2);
            Пока ИтЗапр.ПолучитьСубконто(2,,) = 1 Цикл
                Ост = (ИтЗапр.СКД() - ИтЗапр.СКК());
                Если (Цел(Ост) = Цел(Число(Сумма))) И (Цел(ИтЗапр.Субконто(2).Итог("СуммаСНДС"))=Цел(Ост)) Тогда
                    Возврат ИтЗапр.Субконто(2);
                КонецЕсли;    
            КонецЦикла;
        КонецЕсли;
    Возврат 0;
    //Возврат СокрЛ(Формат(Ост,"Ч14.2.'"));
КонецФункции

Процедура Помощь()      
Перем Подсказка;
    Если  Режим=1 Тогда          
        Подсказка="Программа может работать в двух режимах:
        |-формировать банковскую выписку за дату, выбранную на форме
        |-переносить оформленные платежные поручения за дату, выбранную на форме, в клиент-банк"+РазделительСтрок+"
        |Удалите из таблицы платежи (строки), которые НЕ желаете включать в будущую банковскую выписку, с помощью кнопки 'Х'
        |Если нужно, используйте кнопку '!' чтобы обновить данные в таблице
        |Кнопка 'ХХ' удаляет все строки из таблицы"+РазделительСтрок+"
        |Затем нажмите кнопку 'Формировать выписку', и в открывшемся документе Вам останется только выбрать заказы";
    Иначе
        Подсказка="Программа может работать в двух режимах:
        |-формировать банковскую выписку за дату, выбранную на форме
        |-переносить оформленные платежные поручения за дату, выбранную на форме, в клиент-банк"+РазделительСтрок+"
        |Удалите из таблицы выписки (строки), которые НЕ желаете переносить в клиент-банк, с помощью кнопки 'Х'
        |Если нужно, используйте кнопку '!' чтобы обновить данные в таблице
        |Успешно выгруженые платежки не отображаются больше в таблице, и выгрузить их повторно в клиент-банк нельзя.
        |Кнопка 'ХХ' удаляет все строки из таблицы"+РазделительСтрок+"
        |Затем нажмите кнопку 'Выгрузить платежки ', запустите клиент-банк и проверьте, правильно ли заполнены Ваши платежки";
    КонецЕсли;
    Предупреждение(Подсказка);
КонецПроцедуры

Процедура ОткрФайл(табл,файл)
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок;
ТекстДок=СоздатьОбъект("Текст");
тВрем.Очистить();
тТест.Очистить();              
    Если файл="" Тогда
        ИмяФайла="";
        ИмяПути ="";
        ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,,,);
        ПутьБД=ИмяПути+ИмяФайла;
    ИначеЕсли ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
        ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
        ПутьБД = СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\"+файл);
        //ПутьБД=файл;
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;

    //Сообщить(ПутьБД);
    Врем.ОткрытьФайл(ПутьБД);
    Если (Врем.Открыта()=0) Тогда
        Предупреждение("Не могу открыть файл "+ПутьБД+"!");
        возврат;
    КонецЕсли;
    //Сообщить("БД:"+Врем.КоличествоПолей());
    Для п=1 по Врем.КоличествоПолей() Цикл
        Врем.ОписаниеПоля(п,ОписПоля,т,д,т1);
        тВрем.НоваяКолонка(ОписПоля,,,,ОписПоля,,,);
    КонецЦикла;
    //Сообщить("Табл:"+тВрем.КоличествоКолонок());
    п=0;
    Врем.Первая();
    Для з=1 по Врем.КоличествоЗаписей() Цикл
        Врем.Перейти(з);
            тВрем.НоваяСтрока(з);
            Для п=1 по Врем.КоличествоПолей() Цикл
                тВрем.УстановитьЗначение(з,п,Врем.ПолучитьЗначениеПоля(п));
            КонецЦикла;
    КонецЦикла;              
    Врем.ЗакрытьФайл();
    тВрем.Выгрузить(Табл);
КонецПроцедуры

Функция ПроверитьДокумент(НомерДок)
Перем тПлат, тАрхПлат;
ОткрФайл(тПлат,"plat.dbf");
ОткрФайл(тАрхПлат,"Detail_Y.dbf");
//тАрхПлат.Выгрузить();
Если тПлат.НайтиЗначение(НомерДок,,"NUM_DOC")=1 Тогда
    //тАрхПлат.Выгрузить(тТест);
    Возврат 1;
КонецЕсли;
Если тАрхПлат.НайтиЗначение(НомерДок,,"NOMPLATDOK")=1 Тогда
    Возврат 1;
КонецЕсли;
    Возврат 0;
КонецФункции    


Процедура ВыбратьПлатежки()
    Перем Стр;
    тТест.УдалитьСтроки();
    тТест.НоваяКолонка("NUM_DOC",,,, "Номер",,,);
    тТест.НоваяКолонка("DATE_DOC",,,, "Дата",,,);
    тТест.НоваяКолонка("CLN_NAME",,,, "Плательщик",,,);
    тТест.НоваяКолонка("CLN_BANK_MFO",,,, "МФО плательщика",,,);
    тТест.НоваяКолонка("RCPT_NAME",,,, "Получатель",,,);
    тТест.НоваяКолонка("RCPT_OKPO",,,, "МФО получателя",,,);
    тТест.НоваяКолонка("CLN_ACCOUNT",,,, "Счет плательщика",,,);
    тТест.НоваяКолонка("RCPT_ACCOUNT",,,, "Счет получателя",,,);
    тТест.НоваяКолонка("CLN_OKPO",,,, "ОКПО плательщика",,,);
    тТест.НоваяКолонка("PAYMENT_DETAILS",,,, "Содержание",,,);
    тТест.НоваяКолонка("RCPT_OKPO",,,, "ОКПО получателя",,,);
    тТест.НоваяКолонка("AMOUNT",,,, "Сумма",,,);
    тТест.НоваяКолонка("DATOKUSL",,,, "Дата валютирования",,,);
    стр=0;  

    Док = СоздатьОбъект("Документ.ПлатежноеПоручение");
    Док.ВыбратьДокументы(Дата1,Дата1);
    Пока Док.ПолучитьДокумент()=1 Цикл
        Если (ПроверитьДокумент(Док.НомерДок)=0) И (Док.ПометкаУдаления()=0) Тогда
            стр=стр+1;                                      
            тТест.НоваяСтрока(стр);
            тТест.УстановитьЗначение(стр,"NUM_DOC",Док.НомерДок);
            тТест.УстановитьЗначение(стр,"DATE_DOC",Формат(Док.ДатаДок,"ДГГГГММДД"));
            тТест.УстановитьЗначение(стр,"CLN_NAME",Константа.ОснФирма.Полное_Назв);
            тТест.УстановитьЗначение(стр,"CLN_BANK_MFO",Число(ВыбСчет.Банк.Код));
            //Если Док.Заказ.Выбран()=1 Тогда
            //    Попытка
                    тТест.УстановитьЗначение(стр,"RCPT_NAME",Док.Контрагент.ПолнНаименование);
                    тТест.УстановитьЗначение(стр,"RCPT_OKPO",СокрЛП(Док.РСчетКонтрагента.Банк.Код));
                    тТест.УстановитьЗначение(стр,"RCPT_ACCOUNT",СокрЛП(Док.РСчетКонтрагента.НомерСчета));
                    тТест.УстановитьЗначение(стр,"RCPT_OKPO",СокрЛП(Док.Контрагент.ЕДРПОУ));
            //    Исключение
            //    КонецПопытки;    
            //КонецЕсли;
            тТест.УстановитьЗначение(стр,"CLN_ACCOUNT",Число(ВыбСчет.НомерСчета));
            тТест.УстановитьЗначение(стр,"CLN_OKPO",СокрЛП(Константа.ОснФирма.КодОКПО));
            тТест.УстановитьЗначение(стр,"PAYMENT_DETAILS",Док.НазначениеПлатежа.ПолнНаименование);
            тТест.УстановитьЗначение(стр,"AMOUNT",Формат(Док.СуммаСНДС,"Ч12.2"));
            тТест.УстановитьЗначение(стр,"DATOKUSL","ПРЕДОПЛАТА");
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры    

Процедура СоздПуть()
    ТекстДок=СоздатьОбъект("Текст");
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьКаталог(ИмяПути,"Выберите каталог с базой данных КБ Аваль",)=0 Тогда
        //ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,)=0
            Возврат;
        КонецЕсли;
        //ПутьБД=ИмяПути+ИмяФайла;
        //Сообщить(КаталогПрограммы()+"klbank.ini",);
        Попытка
            ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");     
        Исключение
        КонецПопытки;
        ТекстДок.ВставитьСтроку(1,ИмяПути);
        //Сообщить("Путь "+ИмяПути);
        ТекстДок.Записать(КаталогПрограммы()+"klbank.ini");
КонецПроцедуры    


Процедура СформироватьДБФ()
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок, тПлат;
тПлат = СоздатьОбъект("ТаблицаЗначений");
ТекстДок=СоздатьОбъект("Текст");
    Если ВыбСчет.Выбран()=0 Тогда
        Предупреждение("Расчетный счет не выбран!");
        Возврат;
    КонецЕсли;
    Если тТест.КоличествоСтрок()=0 Тогда
        Предупреждение("Нет платежек!");
        Возврат;
    КонецЕсли;

    Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
        ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
        ПутьБД = СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\plat.dbf");
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,"plat.dbf",,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;
    Если ПустаяСтрока(ПутьБД)=0 Тогда
        Плат.ОткрытьФайл(ПутьБД);
    Иначе
        ИмяФайла="";
        ИмяПути ="";
        Если ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,"plat.dbf",,)=0 Тогда
            Возврат;
        КонецЕсли;
        ПутьБД=ИмяПути+ИмяФайла;
    КонецЕсли;
    //Сообщить("ПутьБД"+ПутьБД);
    Если (Плат.Открыта()=0) Тогда
        Предупреждение("Не могу открыть файл "+ПутьБД+"!");
        возврат;
    КонецЕсли;
    //********************Сверка с текущим архивом
    //Сообщить(ИмяПути+"\Detail_Y.dbf");
    //АрхПлат.ОткрытьФайл(СокрЛП(ТекстДок.ПолучитьСтроку(1))+"\Detail_Y.dbf");
    //Если (АрхПлат.Открыта()=0) Тогда
    //    Предупреждение("Не могу открыть файл "+ИмяПути+"\Detail_Y.dbf"+"!");
    //    возврат;
    //КонецЕсли;
    //Для п=1 по АрхПлат.КоличествоПолей() Цикл
    //    АрхПлат.ОписаниеПоля(п,ОписПоля,т,д,т1);
    //    тВрем.НоваяКолонка(ОписПоля,,,,ОписПоля,,,);
    //КонецЦикла;                                    
    //АрхПлат.Первая();
    //Для з=1 по АрхПлат.КоличествоЗаписей() Цикл
    //    АрхПлат.Перейти(з);
    //        тВрем.НоваяСтрока(з);
    //        Для п=1 по АрхПлат.КоличествоПолей() Цикл
    //            тВрем.УстановитьЗначение(з,п,АрхПлат.ПолучитьЗначениеПоля(п));
    //        КонецЦикла;
    //КонецЦикла;              
    //АрхПлат.ЗакрытьФайл();
    //Для н=1 по тТест.КоличествоСтрок() Цикл
    //    Если тВрем.НайтиЗначение(тТест.ПолучитьЗначение(н,"NUM_DOC"),,"NOMPLATDOK")=0 Тогда
    //        тТест.ТекущаяСтрока(н);
    //        тПлат.ДобавитьСтроку(тТест.ТекущаяСтрока());    
    //    КонецЕсли;
    //КонецЦикла;
    //тПлат.Выгрузить(тТест);
    //возврат;
    //********************Сверка с текущим архивом
    Плат.Последняя();
    Для п=1 по тТест.КоличествоСтрок() Цикл
        Плат.Добавить();
        Плат.NUM_DOC=тТест.ПолучитьЗначение(п,"NUM_DOC");
        Плат.DATE_DOC=тТест.ПолучитьЗначение(п,"DATE_DOC");        
        Плат.CLN_NAME=тТест.ПолучитьЗначение(п,"CLN_NAME");    
        Плат.CLN_BANK_MFO=тТест.ПолучитьЗначение(п,"CLN_BANK_MFO");        
        Плат.RCPT_NAME=тТест.ПолучитьЗначение(п,"RCPT_NAME");    
        Плат.RCPT_OKPO=тТест.ПолучитьЗначение(п,"RCPT_OKPO");      
        Плат.CLN_ACCOUNT=тТест.ПолучитьЗначение(п,"CLN_ACCOUNT");      
        Плат.RCPT_ACCOUNT=тТест.ПолучитьЗначение(п,"RCPT_ACCOUNT");    
        Плат.CLN_OKPO=тТест.ПолучитьЗначение(п,"CLN_OKPO");
        Плат.PAYMENT_DETAILS=тТест.ПолучитьЗначение(п,"PAYMENT_DETAILS");
        Плат.RCPT_OKPO=тТест.ПолучитьЗначение(п,"RCPT_OKPO");
        Плат.AMOUNT=тТест.ПолучитьЗначение(п,"AMOUNT");
        Плат.DATOKUSL=тТест.ПолучитьЗначение(п,"DATOKUSL");
    Плат.Записать();
    КонецЦикла;
    Плат.ЗакрытьФайл();
    тТест.Очистить();
    тПлат.Выгрузить(тТест);
    Предупреждение("Документы успешно выгружены!");
КонецПроцедуры
//***********************************************
Процедура Обраб()  
            Если ВвестиЗначение(зн,"Вибір значення ","Счет.Основной") = 1 Тогда
                  тТест.УстановитьЗначение(тТест.ТекущаяСтрока(),"КоррСчет",зн);
            КонецЕсли;
КонецПроцедуры  
//***********************************************,
Процедура СменаРежима()
    //Сообщить(Режим);
    тТест.Очистить();  
    тДБФ.Очистить();
    Если  Режим=1 Тогда          
        Форма.кнФормироватьВыписки.Видимость(1);
        Форма.кнВыгрузитьПлатежки.Видимость(0);
        ОткрытьБД();
    Иначе
        Форма.кнФормироватьВыписки.Видимость(0);
        Форма.кнВыгрузитьПлатежки.Видимость(1);
        ВыбратьПлатежки();
    КонецЕсли;
КонецПроцедуры
                                      
Процедура Выполнить()
    ЗаполнитьБВ();
КонецПроцедуры

Процедура УдалениеСтроки()
    Если тТест.КоличествоСтрок()>0 Тогда
        тТест.УдалитьСтроку();
    КонецЕсли;
КонецПроцедуры //УдалениеПД
                                
Процедура ОткрытьБД()
Перем ОписПоля,Заголовок,т,д,т1, ТекстДок;
ТекстДок=СоздатьОбъект("Текст");
тТест.Очистить();
    ИмяФайла="";
    ИмяПути ="";
ФайлТекст = СоздатьОбъект("Текст");
файл = "v"+Прав(Формат(Дата1,"ДГГГГММДД"),6)+".zzz";
Если ФС.СуществуетФайл(КаталогПрограммы()+"klbank.ini")=1 Тогда
    ТекстДок.Открыть(КаталогПрограммы()+"klbank.ini");
//    ПутьБД= СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\"+файл);  
    Путь= СокрЛП(ТекстДок.ПолучитьСтроку(1)+"\");
    ФС.ВыбратьФайл(0,ИмяФайла, Путь, ,файл,,);
    ПутьБД=Путь+ИмяФайла;
Иначе
    ИмяФайла="";
    ИмяПути ="";
    ФС.ВыбратьФайл(0,ИмяФайла, ИмяПути, ,файл,,);
    ПутьБД=ИмяПути+ИмяФайла;
КонецЕсли;
    ФайлТекст.КодоваяСтраница(0);
    ФайлТекст.Открыть(ПутьБД);
    Если ФайлТекст.КоличествоСтрок() = 0 Тогда
        Предупреждение("Выписки банка не найдены");
    Возврат;
    КонецЕсли;
    
    тДБФ.НоваяКолонка("NUM_DOC",,,, "NUM_DOC",,,);
    тДБФ.НоваяКолонка("DATKVOPL",,,, "DATKVOPL",,,);
    тДБФ.НоваяКолонка("CLN_ACCOUNT","Число",14,, "CLN_ACCOUNT",,,);
    тДБФ.НоваяКолонка("RCPT_OKPO","Строка",10,, "RCPT_OKPO",,,);
    тДБФ.НоваяКолонка("RCPT_NAME",,,, "RCPT_NAME",,,);
    тДБФ.НоваяКолонка("AMOUNT","Число",15,2, "AMOUNT",,,);
    тДБФ.НоваяКолонка("DEB_KRED","Число",1,, "DEB_KRED",,,);
    тДБФ.НоваяКолонка("PAYMENT_DETAILS",,,, "PAYMENT_DETAILS",,,);
    тДБФ.НоваяКолонка("КоррСчет","Счет.Основной");  
    ррр = 0;
    Для ном=1 по ФайлТекст.КоличествоСтрок() Цикл
        стр = OemToAnsi(ФайлТекст.ПолучитьСтроку(ном));  
    Если Лев(стр,1) = "0" Тогда
        Если (Число(Сред(стр,2,14)) <> Число(ВыбСчет.Номер)) или (Сред(стр,16,8) <> Формат(Дата1,"ДГГГГММДД")) Тогда
//            Сообщить("Ошибка! Проверьте сохранение выписки");
//            Возврат;
    ррр = 0;
        Продолжить;
    КонецЕсли;
    ррр = 1;
        СчетОсн = Число(Сред(стр,2,14));
        ДатаВ = Сред(стр,16,8);
    ИначеЕсли (ррр = 1 ) и (Лев(стр,1) = "1") Тогда    
        Если (Число(Сред(стр,12,14)) <> Число(ВыбСчет.Номер)) и (Число(Сред(стр,89,14)) <> Число(ВыбСчет.Номер)) Тогда  
//            Сообщить("Ошибка! Проверьте сохранение выписки");
//            Возврат;
        Продолжить;
        КонецЕсли;  
        тДБФ.НоваяСтрока(тДБФ.КоличествоСтрок()+1);
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"NUM_DOC",Сред(стр,159,10));  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DATKVOPL",ДатаВ);  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"CLN_ACCOUNT",СчетОсн);
        Если Сред(стр,2,1) = "+" Тогда
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"RCPT_OKPO",СокрЛ(Сред(стр,26,14)));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"RCPT_NAME",Сред(стр,40,40));  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DEB_KRED",1);
        Иначе
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"RCPT_OKPO",СокрЛ(Сред(стр,103,14)));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"RCPT_NAME",Сред(стр,117,40));
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"DEB_KRED",0);
        КонецЕсли;
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"AMOUNT",Число(Сред(стр,169,19))/100);  
        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"PAYMENT_DETAILS",Сред(стр,212,255));  
//        тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",Сред(стр,159,10));
        
//        Для з=1 по ДБФ.КоличествоЗаписей() Цикл
//        ДБФ.Перейти(з);    
//       Если ДБФ.ПолучитьЗначениеПоля("CLN_ACCOUNT") <> Число(ВыбСчет.Номер) Тогда
//        Продолжить;
//        КонецЕсли;
//        Если СокрЛП(ДБФ.ПолучитьЗначениеПоля("DATKVOPL"))=(Формат(Дата1,"ДГГГГММДД")) Тогда
            Назначение=Сред(стр,212,255);  
            Если (Найти(Назначение,"овердрафт")<> 0) Тогда  
                 Продолжить;
            КонецЕсли;
//            тДБФ.НоваяСтрока(тДБФ.КоличествоСтрок()+1);
//            Для п=1 по ДБФ.КоличествоПолей() Цикл
//                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),п,ДБФ.ПолучитьЗначениеПоля(п));
//            КонецЦикла;  
//            Назначение=ДБФ.ПолучитьЗначениеПоля("PAYMENT_DETAILS");
            ДенКасса= Сред(стр,40,40);
        Если (Сред(стр,2,1) = "-") Тогда
              Если (Найти(Назначение,"товар")<> 0) или (Найти(Назначение,"ХАРЧ")<> 0) или (Найти(Назначение,"харч")<> 0)
                  или (Найти(Назначение,"ПРОД")<> 0) или (Найти(Назначение,"прод")<> 0) или (Найти(Назначение,"вироб")<> 0)
                  или (Найти(Назначение,"ТОВАР")<> 0) или (Найти(Назначение,"алког")<> 0) или (Найти(Назначение,"ВИРОБ")<> 0)
                  или (Найти(Назначение,"АЛКОГ")<> 0) или (Найти(Назначение,"тютюн")<> 0) Тогда
                  тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("63.1"));
              КонецЕсли;  
              Если (Найти(Назначение,"ТЮТЮН")<> 0) или (Найти(Назначение,"горіл")<> 0)
                   или (Найти(Назначение,"ГОРІЛ")<> 0) или (Найти(Назначение,"таба")<> 0)
                   или (Найти(Назначение,"ТАБА")<> 0) или (Найти(Назначение,"СИГАР")<> 0)
              или (Найти(Назначение,"ЦИГАР")<> 0) или (Найти(Назначение,"цигар")<> 0)
                   или (Найти(Назначение,"вино")<> 0) или (Найти(Назначение,"пиво")<> 0)
                   или (Найти(Назначение,"сигар")<> 0)Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("63.1"));
              КонецЕсли;
            Если (Найти(Назначение,"Перерахунок кошт")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("31.1"));
            КонецЕсли;
            Если (Найти(Назначение,"Плата за инк")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("95.2"));
            КонецЕсли;
        Иначе
            Если (Найти(Назначение,"товар")<> 0) или (Найти(Назначение,"ХАРЧ")<> 0) или (Найти(Назначение,"харч")<> 0)
              или (Найти(Назначение,"ПРОД")<> 0) или (Найти(Назначение,"прод")<> 0) или (Найти(Назначение,"вироб")<> 0)
              или (Найти(Назначение,"ТОВАР")<> 0) или (Найти(Назначение,"АЛКОГ")<> 0) или (Найти(Назначение,"ВИРОБ")<> 0)
              или (Найти(Назначение,"ТЮТЮН")<> 0) или (Найти(Назначение,"ГОРІЛ")<> 0) или (Найти(Назначение,"ПИВО")<> 0) Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("36.1"));
            КонецЕсли;
            Если (Найти(Назначение,"алког")<> 0) или (Найти(Назначение,"тютюн")<> 0)
              или (Найти(Назначение,"горіл")<> 0) или (Найти(Назначение,"таба")<> 0)
              или (Найти(Назначение,"ТАБА")<> 0) или (Найти(Назначение,"СИГАР")<> 0)  
              или (Найти(Назначение,"ЦИГАР")<> 0) или (Найти(Назначение,"цигар")<> 0)
              или (Найти(Назначение,"сигар")<> 0) или (Найти(Назначение,"вино")<> 0) или (Найти(Назначение,"пиво")<> 0) Тогда
              тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("36.1"));
            КонецЕсли;
            Если ((Найти(Назначение,"вируч")<> 0) или (Найти(Назначение,"ВИРУЧ")<> 0)  или (Найти(Назначение,"Вируч")<> 0)) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("33.3"));
            КонецЕсли;
            Если (Найти(Назначение,"Перерахунок кошт")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("31.1"));
            КонецЕсли;
            Если (Найти(Назначение,"повор")<> 0) или (Найти(Назначение,"ПОВОР")<> 0) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("30.1"));
            КонецЕсли;
            Если (((Найти(Назначение,"вируч")<> 0) или (Найти(Назначение,"ВИРУЧ")<> 0)  или (Найти(Назначение,"Вируч")<> 0)) и (Найти(ДенКасса,"Центр.")<> 0)) Тогда
                тДБФ.УстановитьЗначение(тДБФ.КоличествоСтрок(),"КоррСчет",СчетПоКоду("30.1"));
            КонецЕсли;
        КонецЕсли;
        КонецЕсли;
    КонецЦикла;              
    
//    ДБФ.ЗакрытьФайл();
    тДБФ.Выгрузить(тТест);
    тТест.Сортировать("DEB_KRED,AMOUNT");
    Для п=1 по тТест.КоличествоКолонок() Цикл
        тТест.ПолучитьПараметрыКолонки(п,,,,ОписПоля,,,);  
        Если (ОписПоля="КоррСчет") Тогда  
            тТест.УстановитьПараметрыКолонки(п,"Счет.Основной",,,"КоррСчет",6,,);
        ИначеЕсли (ОписПоля="RCPT_NAME") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"Контрагент",16,,);
        ИначеЕсли (ОписПоля="RCPT_OKPO") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"ОКПО",8,,);
        ИначеЕсли (ОписПоля="AMOUNT") Тогда
            тТест.УстановитьПараметрыКолонки(п,"Число",,2,"Сумма",8,"Ч012.2",2);
        ИначеЕсли (ОписПоля="PAYMENT_DETAILS") Тогда
            тТест.УстановитьПараметрыКолонки(п,,,,"Содержание",30,,);
        Иначе
            тТест.ВидимостьКолонки(Строка(п),0);
        КонецЕсли;
    КонецЦикла;
    
//    КонецЦикла;
КонецПроцедуры    

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

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

ДБФ = СоздатьОбъект("XBase");
Плат = СоздатьОбъект("XBase");
Врем = СоздатьОбъект("XBase");
АрхПлат = СоздатьОбъект("XBase");
тДБФ = СоздатьОбъект("ТаблицаЗначений");  
тВрем = СоздатьОбъект("ТаблицаЗначений");
тПлат = СоздатьОбъект("ТаблицаЗначений");
тАрхПлат = СоздатьОбъект("ТаблицаЗначений");



Но оно собака не подтягивает выписку
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #155358 · Ответов: 16 · Просмотров: 2631
 

>  внедрение 1С ERP 2.4.6
bezzil
Отправлено: 04.12.18, 11:44


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Совет не экономить, на на внедрении уже был? Если не согласны с стоимостью ее можно обсудить или спросить у конкурента, сейчас внедрятелей хватает
П.С уже были озвучены цены в 25-40 долларов час ?
  Форум: Офф-топик · Просмотр сообщения: #147774 · Ответов: 7 · Просмотров: 3372
 

>  Варианты настройки 1С 7.7 win2008 + удаленный SQL 2000
bezzil
Отправлено: 15.11.18, 16:07


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Не проще ли расшарить принтсервер на каком нибудь линуксе ?
  Форум: Администрирование и настройка 1С · Просмотр сообщения: #147187 · Ответов: 13 · Просмотров: 1954
 

>  Потрібна нова податкова накладна в XML для медка
bezzil
Отправлено: 15.11.18, 13:00


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Як ви знаєте було затверджено новий вид Податкової накладної, скажіть можливо бачили десь XML файл наклданої, потрібен для організації обміну між 1с 7.7 так Медком

Приклад обробки
//*******************************************
// Процедура генерации запроса НалоговыеНакладные.
Процедура НалоговыеНакладные()
    Перем Запрос, ТекстЗапроса,Кодировка;
    Кодировка=1;
    нпп = 0;  
    ДатаРаб = Формат(РабочаяДата(),"ДДДММГГГГ");
         дбф1=СоздатьОбъект("Текст");
         дбф1.ДобавитьСтроку("<?xml version=""1.0"" encoding=""windows-1251""?>");
         дбф1.ДобавитьСтроку("<ZVIT>");
         дбф1.ДобавитьСтроку(" <TRANSPORT>");
         дбф1.ДобавитьСтроку("  <CREATEDATE>"+ДатаРаб+"</CREATEDATE>");
         дбф1.ДобавитьСтроку("  <VERSION>4.0</VERSION>");
         дбф1.ДобавитьСтроку(" </TRANSPORT>");
         дбф1.ДобавитьСтроку(" <ORG>");
            нпп = 0;
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(НалоговыеНакладные)
    |Период с ДатаНачала по ДатаКонца;
    |ОбрабатыватьДокументы Проведенные;
    |Обрабатывать НеПомеченныеНаУдаление;
    |Докум = Документ.НалоговаяНакладная.ТекущийДокумент;
    |Клиент = Документ.НалоговаяНакладная.Клиент;
    |Сумма = Документ.НалоговаяНакладная.Сумма;  
    |СуммаБезНДС = Документ.НалоговаяНакладная.СуммаБезНДС;  
    |НДС = Документ.НалоговаяНакладная.НДС;  
    |Функция СуммаД=Сумма(Сумма);
    |Функция СуммаБезНДСД=Сумма(СуммаБезНДС);
    |Функция НДСД=Сумма(НДС);
    |Группировка Докум;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;  
//    Клиент = Запрос.Клиент;
            НомПП=0;
            Пока Запрос.Группировка("Докум") = 1 Цикл  
            Док=Запрос.Докум;  
            Клиент =Запрос.Клиент;
            Клиент.ИспользоватьДату(Док.ДатаДок);
                //Если (ПустоеЗначение(Клиент.ИНН) = 1) или (ПустоеЗначение(Запрос.Клиент.КодОКПО) = 1) или (ПустоеЗначение(Клиент.НомерСвидетельства) = 1) Тогда
                //    Продолжить;
                //КонецЕсли;
                ссаа =0;
            Если Запрос.НДСД >= 1 Тогда
                       ссаа = 1;
                       Иначе
                СписТов = СоздатьОбъект("ТаблицаЗначений");
                Док.ВыгрузитьТабличнуюЧасть(СписТов,"Товар");
                СписТов.ВыбратьСтроки();
              Пока СписТов.ПолучитьСтроку() = 1 Цикл
                   Если (СписТов.Товар.ТипАкцизногоТовара = Перечисление.ТипыАкцизныхТоваров.Алкоголь) или (СписТов.Товар.ТипАкцизногоТовара = Перечисление.ТипыАкцизныхТоваров.Табак) или (СписТов.Товар.ТипАкцизногоТовара = Перечисление.ТипыАкцизныхТоваров.Пиво) Тогда  
                       ссаа = 1;
                     Прервать;    
                   КонецЕсли;
              КонецЦикла;
              КонецЕсли;  
              Если ссаа = 0 Тогда
                  Продолжить;
              КонецЕсли;    
            ДатаД = Формат(Док.ДатаДок,"ДДДММГГГГ");
            ДатаН = Формат(Клиент.ДатаНачала,"ДДДММГГГГ");
            Телефон = Лев(Док.Фирма.Телефоны,(Найти(Док.Фирма.Телефоны,",")-1));
             Если (Найти(Запрос.Клиент.Телефон,",")) = 0 Тогда    
                   ТелефонК = Запрос.Клиент.Телефон;
             Иначе
                   ТелефонК = Лев(Запрос.Клиент.Телефон,(Найти(Запрос.Клиент.Телефон,",")-1));
            КонецЕсли;
            Если ПустоеЗначение(Клиент.НомерДоговора) = 0 Тогда
                      Договор = Клиент.НомерДоговора;
                      ДтДог = ДатаН;
                  Иначе
                      Договор = "     -";
                      ДтДог = Формат(Док.ДатаДок,"ДДДММГГГГ");
                 КонецЕсли;     
            Фирма = Док.Фирма;
        Фирма.ИспользоватьДату(Док.ДатаДок);
         дбф1.ДобавитьСтроку("  <FIELDS>");
         дбф1.ДобавитьСтроку("   <EDRPOU>"+Сокрлп(Фирма.КодОКПО)+"</EDRPOU>");
         дбф1.ДобавитьСтроку("  </FIELDS>");
        дбф1.ДобавитьСтроку(" <CARD>");
        дбф1.ДобавитьСтроку("  <FIELDS>");
        дбф1.ДобавитьСтроку("   <PERTYPE>0</PERTYPE>");
        дбф1.ДобавитьСтроку("   <PERDATE>"+ДатаД+"</PERDATE>");
         Если (Док.ДатаДок >=  '01.01.2015') Тогда
               дбф1.ДобавитьСтроку("   <CHARCODE>J1201009</CHARCODE>");
           Иначе
               дбф1.ДобавитьСтроку("   <CHARCODE>J1201006</CHARCODE>");
               
           КонецЕсли;                
                         
           
        дбф1.ДобавитьСтроку("   <DOCID>"+(Строка(Число(Прав(Док.НомерДок,6))))+"</DOCID>");
        дбф1.ДобавитьСтроку("  </FIELDS>");
        дбф1.ДобавитьСтроку("   <DOCUMENT>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""EDR_POK""><VALUE>"+Сокрлп(Запрос.Клиент.КодОКПО)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""FIRM_ADR""><VALUE>"+Сокрлп(Фирма.Юр_Адрес)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""FIRM_EDRPOU""><VALUE>"+Сокрлп(Фирма.КодОКПО)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""FIRM_INN""><VALUE>"+Сокрлп(Фирма.ИНН)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""FIRM_NAME""><VALUE>"+Сокрлп(Фирма.Полное_Назв)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
//        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""FIRM_SRPNDS""><VALUE>"+Сокрлп(Фирма.НомерСвидетельства)+"</VALUE>");
//        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""PHON""><VALUE>"+Сокрлп(Телефон)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N1""><VALUE>X</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N12""><VALUE>X</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N19""><VALUE>0</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N10""><VALUE>"+Сокрлп(Фирма.Гл_бух)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""INN""><VALUE>2883412021</VALUE>");        
        дбф1.ДобавитьСтроку("   </ROW>");  
        
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N11""><VALUE>"+ДатаД+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N2_1""><VALUE>"+(Строка(Число(Прав(Док.НомерДок,6))))+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N2_11""><VALUE>"+(Строка(Число(Прав(Док.НомерДок,6))))+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N3""><VALUE>"+Сокрлп(Запрос.Клиент.ПолнНаименование)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N4""><VALUE>"+Сокрлп(Клиент.ИНН)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        
        Если (ПустоеЗначение(Клиент.ИНН)=0) Тогда
            //данные покупателя заполняем если ИНН не пустой, значит платнык
            дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N5""><VALUE>"+Сокрлп(Запрос.Клиент.Адрес)+"</VALUE>");
            дбф1.ДобавитьСтроку("   </ROW>");
            дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N6""><VALUE>"+Сокрлп(ТелефонК)+"</VALUE>");
            дбф1.ДобавитьСтроку("   </ROW>");
            дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N12""><VALUE>1</VALUE>");
            дбф1.ДобавитьСтроку("   </ROW>");
        Иначе  
            Клиент.ИНН = "100000000000";
            Клиент.ПолнНаименование = "Неплатник";
            дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N13""><VALUE>1</VALUE>");
            дбф1.ДобавитьСтроку("   </ROW>");
            дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N14""><VALUE>02</VALUE>");
            дбф1.ДобавитьСтроку("   </ROW>");
            дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N4""><VALUE>"+Сокрлп(Клиент.ИНН)+"</VALUE>");
            дбф1.ДобавитьСтроку("   </ROW>");
            дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N3""><VALUE>"+Сокрлп(Клиент.ПолнНаименование)+"</VALUE>");
            дбф1.ДобавитьСтроку("   </ROW>");
            дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N12""><VALUE>1</VALUE>");
            дбф1.ДобавитьСтроку("   </ROW>");
            Сообщить("ПУСТО  " + "ИНН" + Клиент.ИНН + "Наименование" + Клиент.ПолнНаименование);
        КонецЕсли;
//        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N7""><VALUE>"+Сокрлп(Клиент.НомерСвидетельства)+"</VALUE>");
//        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N8""><VALUE>"+Сокрлп(Док.УсловиеПродажи)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N81""><VALUE>"+Сокрлп(Договор)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N82""><VALUE>"+ДтДог+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""N9""><VALUE>"+Сокрлп(Док.ФормаРасчета)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        нпп = 0;
                    Док.ВыбратьСтроки();
        Пока Док.ПолучитьСтроку()=1 Цикл  
                ДатаО = Формат(Док.ДатаОтгрузки,"ДДДММГГГГ");
                Если Число(Док.ДатаОтгрузки)=0 Тогда
                    ДатаО=Формат(Док.ДатаДок,"ДДДММГГГГ");
                КонецЕсли;
                Бренд = Док.Товар.Бренд.УТКЗЕД;
        Для нн = 1 По СтрДлина(Бренд) Цикл
          БрендН = СтрЗаменить(Бренд," ","");
        КонецЦикла;  
        дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A8""><VALUE>20</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A12""><VALUE>"+ДатаО+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A13""><VALUE>"+Сокрлп(Док.Товар.Наименование)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A131""><VALUE>"+Сокрлп(БрендН)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A10""><VALUE>"+Сокрлп(Окр(Док.СуммаБезНДС, 2))+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
                 //Саша
         Ед=Док.Товар.БазоваяЕдиница;
         Если ((Ед=Перечисление.ЕдиницыИзмерения.Блок) или (Ед=Перечисление.ЕдиницыИзмерения.Блок6) или (Ед=Перечисление.ЕдиницыИзмерения.Блок8)или (Ед=Перечисление.ЕдиницыИзмерения.Блок15) или (Ед=Перечисление.ЕдиницыИзмерения.Блок25)или (Ед=Перечисление.ЕдиницыИзмерения.БЛ5) или (Ед=Перечисление.ЕдиницыИзмерения.Б12))  Тогда
             ЕдНал = Перечисление.ЕдиницыИзмерения.Пачка;
         Иначе
             ЕдНал = Док.Товар.БазоваяЕдиница;
         КонецЕсли;
         Если Ед=Перечисление.ЕдиницыИзмерения.Бутылка Тогда
             КодЕдИзм = 2061;
         ИначеЕсли Ед=Перечисление.ЕдиницыИзмерения.Штука Тогда
             КодЕдИзм = 2009;
         ИначеЕсли Ед=Перечисление.ЕдиницыИзмерения.Банка Тогда
             КодЕдИзм = 2051;
         ИначеЕсли Ед=Перечисление.ЕдиницыИзмерения.Пачка Тогда
             КодЕдИзм = 2112;
         ИначеЕсли Ед=Перечисление.ЕдиницыИзмерения.Упаковка Тогда
             КодЕдИзм = 2010;
         ИначеЕсли Ед=Перечисление.ЕдиницыИзмерения.Ящик Тогда
             КодЕдИзм = 2075;
        ИначеЕсли Ед=Перечисление.ЕдиницыИзмерения.блоки Тогда
            КодЕдИзм = 2907;
        ИначеЕсли ((Ед=Перечисление.ЕдиницыИзмерения.Блок) или (Ед=Перечисление.ЕдиницыИзмерения.Блок6) или (Ед=Перечисление.ЕдиницыИзмерения.Блок8)или (Ед=Перечисление.ЕдиницыИзмерения.Блок15) или (Ед=Перечисление.ЕдиницыИзмерения.Блок25)или (Ед=Перечисление.ЕдиницыИзмерения.БЛ5) или (Ед=Перечисление.ЕдиницыИзмерения.Б12))  Тогда
            КодЕдИзм = 2112;
        Иначе
             Сообщить("Нет единиц измерения для Налоговой");
            Продолжить;
        КонецЕсли;
         //Сашаконец
        
         //дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A14""><VALUE>"+Сокрлп(Док.Товар.БазоваяЕдиница)+"</VALUE>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A14""><VALUE>"+Сокрлп(ЕдНал)+"</VALUE>");
             //Сообщить(ЕдНал);
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A141""><VALUE>"+(КодЕдИзм)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A15""><VALUE>"+(Док.Количество*Док.Коэффициент)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
    
            //Если (Док.Товар.ТипАкцизногоТовара = Перечисление.ТипыАкцизныхТоваров.Алкоголь) или (Док.Товар.ТипАкцизногоТовара = Перечисление.ТипыАкцизныхТоваров.Табак) Тогда
            //        Индикатив = Док.Товар.Индикатив;
            //        Индикатив.ИспользоватьДату(Док.ДатаДок);
            //        Если ( Индикатив.ЦенаРозница <> 0) Тогда
            //            Сообщить("В строке отускная цена товара меньше индикатива. Вы не можете распечатать чек !!!");
            //            //НеПроводить(Контекст,"Вы не можете распечатать чек !!!");
            //            //Возврат;
            //        КонецЕсли;  
            //    Акциз1=Окр(Док.Цена/105*100*5/100,2,1);
            //    ЦенаБезАкцизБезНДС=Док.Цена-Акциз1;
            //    СумаБезНДСБезАкциз = (Док.Количество*Док.Коэффициент) * ЦенаБезАкцизБезНДС;
            //    
            //    дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A16""><VALUE>"+(Док.Цена)+"</VALUE>");
            //    //дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A16""><VALUE>"+(ЦенаБезАкцизБезНДС)+"</VALUE>");
            //    дбф1.ДобавитьСтроку("   </ROW>");
            //    //дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A17""><VALUE>"+(Док.СуммаБезНДС)+"</VALUE>");
            //    дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A17""><VALUE>"+(СумаБезНДСБезАкциз)+"</VALUE>");
            //    дбф1.ДобавитьСтроку("   </ROW>");
            //Иначе
                дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A16""><VALUE>"+(Док.Цена)+"</VALUE>");
                дбф1.ДобавитьСтроку("   </ROW>");
                дбф1.ДобавитьСтроку("   <ROW TAB=""1"" LINE="""+НПП+""" NAME=""TAB1_A17""><VALUE>"+(Док.СуммаБезНДС)+"</VALUE>");
                дбф1.ДобавитьСтроку("   </ROW>");
            //КонецЕсли;
           нпп = нпп +1;
        КонецЦикла;
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A5_7""><VALUE>"+(Запрос.СуммаБезНДСД)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        //дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A5_8""><VALUE>0</VALUE>");
        //дбф1.ДобавитьСтроку("   </ROW>");
        //дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A5_9""><VALUE>0</VALUE>");
        //дбф1.ДобавитьСтроку("   </ROW>");
        //дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A5_10""><VALUE>0</VALUE>");
        //дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A5_11""><VALUE>"+(Запрос.СуммаБезНДСД)+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A6_7""><VALUE>"+(Окр(Запрос.НДСД, 2))+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A6_11""><VALUE>"+(Окр(Запрос.НДСД, 2))+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A7_7""><VALUE>"+(Окр(Запрос.СуммаД, 2))+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A7_8""><VALUE>0</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A7_9""><VALUE>0</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A7_10""><VALUE>0</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   <ROW TAB=""0"" LINE=""0"" NAME=""A7_11""><VALUE>"+(Окр(Запрос.СуммаД, 2))+"</VALUE>");
        дбф1.ДобавитьСтроку("   </ROW>");
        дбф1.ДобавитьСтроку("   </DOCUMENT>");
        дбф1.ДобавитьСтроку(" </CARD>");
    КонецЦикла;              
        //дбф1.ДобавитьСтроку("   <INN>2883412021</INN>");
        
        дбф1.ДобавитьСтроку(" </ORG>");
        дбф1.ДобавитьСтроку("</ZVIT>");
         дбф1.Записать(КаталогИБ()+"\best\pdvn.xml");  
      Сообщить("Выгрузка завершена ");
КонецПроцедуры  

     Берд = 0;
     Получ = 1;
     Видав = 1;
     Кратко = 0;
     Бест = 0;
     OPZ = 0;
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #147161 · Ответов: 2 · Просмотров: 1695
 

>  Как сделать отбор в отчете?
bezzil
Отправлено: 31.07.18, 15:31


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


igmig65 @ 26.07.18, 23:37 * ,
Спасибо, но у меня все равно, выводит остаток по всем а не по товару/поставщику, тоисть что бы ты не выбрал, отчет формулируется по всех поставщиках
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #143914 · Ответов: 3 · Просмотров: 2072
 

>  Как сделать отбор в отчете?
bezzil
Отправлено: 26.07.18, 15:25


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Ситуация в следующем, 7рку щупал очень мало нужно помочь знакомому отчет формирует конечный остаток по поставщику (Клиент.Поставщик) Формирует правильно НО даже если выбрано этот самый поставщик оно всеравно формирует по всем, точно так же и с товарами.

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



 ! 

Правила: 4, 5
 
  Форум: Программирование в 1С Предприятие 7.7 · Просмотр сообщения: #143779 · Ответов: 3 · Просмотров: 2072
 

>  Универсальная свертка базы данных
bezzil
Отправлено: 11.06.18, 11:14


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


Makcim1981 @ 23.09.17, 17:31 * ,
Немного доработал обработку для Мерисовского ТИСА , если кому нужна пишите в личные ( думаю и на любом другом ТИСЕ будет работать с минимальными изминениями от вас )
  Форум: Отчеты / Обработки · Просмотр сообщения: #142416 · Ответов: 57 · Просмотров: 71106
 

>  Какая сумма будет в чеке?
bezzil
Отправлено: 11.06.18, 7:51


Общительный
**

Группа: Пользователи
Сообщений: 15
Регистрация: 12.10.17
Пользователь №: 58187


logist @ 05.06.18, 14:05 * ,
У мене питання з приводу акцизної групи товарів, якшо заокруглення в сторону зменшення то ціна буде нижчою від мрц ( на сигаретах до прикладу - штраф 1000 грн на пачці) або алкоголь в разі зменшення ціни, ціна буде менша від індикативної ( штраф в розмірі від 10000грн або відсоток від партії товару ) Ніхто не чув як в такому випадку проводити заокруглення ?
  Форум: Работа с торговым оборудованием · Просмотр сообщения: #142406 · Ответов: 3 · Просмотров: 1827
 


Новые сообщения  Открытая тема (есть новые ответы)
Опрос  Опрос (есть новые голоса)
Нет новых сообщений  Открытая тема (нет новых ответов)
Нет новых голосов  Опрос (нет новых голосов)
Популярная тема  Горячая тема (есть новые ответы)
Закрыта  Закрытая тема
Нет новых  Горячая тема (нет новых ответов) Перемещена  Тема перемещена
 

RSS Текстовая версия Сейчас: 29.03.24, 8:12
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!