Добрый день, проблема в следующем, фирма начала торговать товаром с 2мя разными НДС, как сделать так что бы если есть в документе товары с 2мя разными ставками ндс то налоговые накладные разбивались на А) весь товар с Ндс Б) весь товар без ндс тоисть создавалось 2 налоговые накладные . Если есть знающие люди помогите. Готов оплатить помощь. Доступ к базе и тд есть. База файловая 7.7 ТиС переписанная в хлам. Познаний в 7рке не хватает.
sava1 @ Сегодня, 14:56
, он всегда выдавал 1251, и первая(рабочая выгрузка) точно в таком же формате. + проблема в том, что я не 1с программист, а java/python, но наши бухи никак не хотят переходить на самописную CRM на java, приходится насиловать этот труп.
Процедура ЗаполнитьБВ() далее Процедура ОткрытьБД() далее Процедура ВыбратьПлатежки() далее Процедура СоздПуть() далее[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); КонецПроцедуры
Совет не экономить, на на внедрении уже был? Если не согласны с стоимостью ее можно обсудить или спросить у конкурента, сейчас внедрятелей хватает П.С уже были озвучены цены в 25-40 долларов час ?
Як ви знаєте було затверджено новий вид Податкової накладної, скажіть можливо бачили десь XML файл наклданої, потрібен для організації обміну між 1с 7.7 так Медком
igmig65 @ 26.07.18, 23:37
, Спасибо, но у меня все равно, выводит остаток по всем а не по товару/поставщику, тоисть что бы ты не выбрал, отчет формулируется по всех поставщиках
Ситуация в следующем, 7рку щупал очень мало нужно помочь знакомому отчет формирует конечный остаток по поставщику (Клиент.Поставщик) Формирует правильно НО даже если выбрано этот самый поставщик оно всеравно формирует по всем, точно так же и с товарами.
Makcim1981 @ 23.09.17, 17:31
, Немного доработал обработку для Мерисовского ТИСА , если кому нужна пишите в личные ( думаю и на любом другом ТИСЕ будет работать с минимальными изминениями от вас )
logist @ 05.06.18, 14:05
, У мене питання з приводу акцизної групи товарів, якшо заокруглення в сторону зменшення то ціна буде нижчою від мрц ( на сигаретах до прикладу - штраф 1000 грн на пачці) або алкоголь в разі зменшення ціни, ціна буде менша від індикативної ( штраф в розмірі від 10000грн або відсоток від партії товару ) Ніхто не чув як в такому випадку проводити заокруглення ?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!