Процедура ЗаполнитьБВ() далее Процедура ОткрытьБД() далее Процедура ВыбратьПлатежки() далее Процедура СоздПуть() далее[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; КонецФункции
Док = СоздатьОбъект("Документ.ПлатежноеПоручение"); Док.ВыбратьДокументы(Дата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); КонецПроцедуры
Процедура ПриОткрытии() Режим=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; КонецФункции
Док = СоздатьОбъект("Документ.ПлатежноеПоручение"); Док.ВыбратьДокументы(Дата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); КонецПроцедуры
Процедура ЗаполнитьБВ() далее Процедура ОткрытьБД() далее Процедура ВыбратьПлатежки() далее Процедура СоздПуть() далее
Процедура ПриОткрытии() Режим=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; КонецФункции
Док = СоздатьОбъект("Документ.ПлатежноеПоручение"); Док.ВыбратьДокументы(Дата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); КонецПроцедуры
bezzil @ Сегодня, 15:48
, похоже что в этих местах проблемы: // Если (Число(Сред(стр,2,14)) <> Число(ВыбСчет.Номер)) // СчетОсн = Число(Сред(стр,2,14)); // (Число(Сред(стр,12,14)) <> Число(ВыбСчет.Номер)) и (Число(Сред(стр,89,14)) <> Число(ВыбСчет.Номер)) //
берется 14 символов, вместо ..(29 может быть)... хз сколько, нужно смотреть на сам файл выписки, сколько заложили в банке. Но лучше выгружать в дбф, согласен с предыдущим автором
Группа: Пользователи
Сообщений: 15
Спасибо сказали: 0 раз
Рейтинг: 0
sava1 @ Сегодня, 14:56
, он всегда выдавал 1251, и первая(рабочая выгрузка) точно в таком же формате. + проблема в том, что я не 1с программист, а java/python, но наши бухи никак не хотят переходить на самописную CRM на java, приходится насиловать этот труп.
Группа: Местный
Сообщений: 298
Спасибо сказали: 98 раз
Рейтинг: 0
Цитата(bezzil @ 06.09.19, 13:59)
приходится насиловать этот труп.
Він ще живий і може старітися разом з Вами...
Не полінувався, знайшов тут [необходимо зарегистрироваться для просмотра ссылки]
Там немає нічого особливого. Відбулося зміщення полів. Їх потрібно "вирівняти" на своє місце. В описі все є. Як не справитесь - гукніть, накинемо двійку стрічок для виправлення.
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!