Mavn
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Код: //****************************************************************************** // Пробелы() //необходимо предварительно задекларировать BazDl и TekDl // Параметры: // BazDl-число, TekDl-строка // Описание: // Добавляет пробелы в текстовый файл выгрузки // Процедура создана для процедуры Выгрузка // Процедура Пробелы(BazDl,TekDl) Для В=1 по BazDl-(СтрДлина(TekDl)) Цикл ЗнВыгрузки=ЗнВыгрузки+" "; КонецЦикла; КонецПроцедуры //Пробелы() //****************************************************************************** // Выгрузка() //т.е. Выгрузка трёх текстовых файлов // Параметры: нет // // Описание: // Выполняется при нажатии кнопки "Выгрузка" // Процедура Выгрузка() Если Проведен() = 0 тогда Предупреждение("Документ должен быть проведен!"); СтатусВозврата(0); Возврат; КонецЕсли; // // Возвращаем справочник через СоздатьОбъект(Справочник.Сотрудники) на объект СпрФ // Присваиваем реквизит справочника ПолучФ = СпрФ.ПолучФ // Последовательно используем 2 раза для 15 и 17 ФОСБ если №ФОСБ тогда Фаил + Сообщение иначе Сообщение // При формировании файлов накладываем условие выбора Элементов // Далее идут коментарии с выриантами попыток // //1 // //Выгрузка в файл текстовый 3, cо списком на зачисление зарплаты, итоговой суммой и назв. предприятия // ТекстФ=СоздатьОбъект("Текст"); ТекстФ.КодоваяСтраница(1); ФайлВыгрузки3="c:\Out1C\78083415\78084315.txt"; // для 17 ФОСБ это "c:\Out1C\78083417\78084317.txt" но из-за соображений слишком длинного текста кода здесь 17 ФОСБ не повторяется ТекстФ.Очистить(); ЗнВыгрузки="Организация: "; назв=Константа.КраткоеНаименованиеПредприятия; //Название организации ЗнВыгрузки=ЗнВыгрузки+назв+" "; дог=Константа.ДоговорСОСБ; //Номер договора с организацией ЗнВыгрузки=ЗнВыгрузки+" Договор №"+дог; ТекстФ.ДобавитьСтроку(ЗнВыгрузки); // // выборка по 15 - ФОСБ по варианту "пока - цикл перебора строк в Справочник.Сотрудники" + "НайтиПоРеквизиту()" или "ВыбратьЭлементыПоРеквизиту()" // это надо подбирать // СпрФ = СоздатьОбъект("Справочник.Сотрудники"); ПолучФ = СпрФ.ПолучФ; СпрФ.ВыбратьЭлементы(); пока СпрФ.ПолучитьЭлемент() = 1 цикл Сотр = СпрФ.ТекущийЭлемент(); // Если Найти(СокрЛП(ПолучФ),"15") > 0 тогда //или //Найти на ПолучФ = "15" не производится файлы выгр без отбора // Если СокрЛП(ПолучФ) = "15" тогда //или //СокрЛП(ПолучФ) = "15" не сравнивается файлы выгр без отбора // Если НайтиПоРеквизиту("ПолучФ","15",0) > 0 тогда //Функция не обнаружена (НайтиПоРеквизиту) // Если СпрФ.ВыбратьЭлементыПоРеквизиту("ПолучФ","15",,) > 0 тогда //не работает ТекстФ.ДобавитьСтроку(""); ВыбратьСтроки(); НомерПП=0; Пока ПолучитьСтроку()=1 Цикл ЗнВыгрузки=""; НомерПП = НомерПП+1; //Порядковый номер Пробелы(3,Строка(НомерПП)); ЗнВыгрузки=ЗнВыгрузки+НомерПП+" "; ФИО = глРазделить(СокрЛП(Сотрудник.Наименование)," "); //разбить на ФИО и прибавку Фамилия = СтрПолучитьСтроку(ФИО,1); Имя = СтрПолучитьСтроку(ФИО,2); Отчество= СтрПолучитьСтроку(ФИО,3); Прибавка= СтрПолучитьСтроку(ФИО,4); ФИО2=""; ФИО2=ФИО2+Фамилия+" "; //Фамилия ФИО2=ФИО2+Имя+" "; //Имя Если СокрЛП(Прибавка)<>"" тогда ФИО2=ФИО2+Отчество+" "+Прибавка+" "; //Отчество Иначе ФИО2=ФИО2+Отчество+" "; КонецЕсли; ЗнВыгрузки=ЗнВыгрузки+ФИО2; Пробелы(40,ФИО2); ЗнВыгрузки=ЗнВыгрузки+Сотрудник.НомерЗарплатногоСчета+" "; СуммаОП=Сумма+Компенсация; //Сумма операции пополнения Если Найти(Строка(СуммаОП),".")=0 Тогда //Проверка на наличие копеек ЗнВыгрузки=ЗнВыгрузки+Строка(СуммаОП)+".00"; //если сумма целая добовляем .00, как 00 копеек. Иначе Если Сред(Строка(СуммаОП),СтрДлина(СуммаОП)-1,1)="." Тогда ЗнВыгрузки=ЗнВыгрузки+СуммаОП+"0"; //если сумма содержит копейки не двузначные, добавляем 1 ноль Иначе ЗнВыгрузки=ЗнВыгрузки+СуммаОП; //если сумма содержит копейки двузначные, то копейки не добавляем КонецЕсли; КонецЕсли; ТекстФ.ДобавитьСтроку(ЗнВыгрузки); КонецЦикла; // Иначе // а что иначе? иначе не будет КонецЕсли; КонецЦикла; ЗнВыгрузки="Итого: "; summ=Итог("Сумма")+Итог("Компенсация"); //Итоговая сумма зачислений по всему списку Если Найти(Строка(summ),".")=0 Тогда //Проверка на наличие копеек ЗнВыгрузки=ЗнВыгрузки+Строка(summ)+".00"; //если сумма целая добовляем .00, как 00 копеек. Иначе Если Сред(Строка(summ),СтрДлина(summ)-1,1)="." Тогда ЗнВыгрузки=ЗнВыгрузки+summ+"0"; //если сумма содержит копейки не двузначные, добавляем 1 ноль Иначе ЗнВыгрузки=ЗнВыгрузки+summ; //если сумма содержит копейки двузначные, то копейки не добавляем КонецЕсли; КонецЕсли; ТекстФ.ДобавитьСтроку(""); ТекстФ.ДобавитьСтроку(ЗнВыгрузки); ТекстФ.Записать(ФайлВыгрузки3); // //2 // // //Выгрузка в файл 2 со списком на зачисление зарплаты // ФайлВыгрузки2="c:\Out1C\78083415\78084315.s19"; ТекстФ.Очистить(); ВыбратьСтроки(); // // вариант 4 // выборка по 15 - ФОСБ по варианту "пока - цикл перебора строк в Справочник.Сотрудники" + "НайтиПоРеквизиту()" или "ВыбратьЭлементыПоРеквизиту()" // это надо подбирать // СпрФ = СоздатьОбъект("Справочник.Сотрудники"); ПолучФ = СпрФ.ПолучФ; СпрФ.ВыбратьЭлементы(); пока СпрФ.ПолучитьЭлемент() = 1 цикл Сотр = СпрФ.ТекущийЭлемент(); // Если Найти(СокрЛП(ПолучФ),"15") > 0 тогда // Если СокрЛП(ПолучФ) = "15" тогда // Если НайтиПоРеквизиту("ПолучФ","15",0) > 0 тогда //Функция не обнаружена (НайтиПоРеквизиту) // Если СпрФ.ВыбратьЭлементыПоРеквизиту("ПолучФ","15",,) > 0 тогда //не работает НомерПП=0; Пока ПолучитьСтроку()=1 Цикл ЗнВыгрузки=""; НомерПП = НомерПП+1; //Порядковый номер ЗнВыгрузки=ЗнВыгрузки+НомерПП; Пробелы(10,Строка(НомерПП)); ЗнВыгрузки=ЗнВыгрузки+Константа.НомерОСБ; //Номер ОСБ Пробелы(4,Константа.НомерОСБ); ЗнВыгрузки=ЗнВыгрузки+Константа.НомерФОСБ1; //Номер ФОСБ Пробелы(5,Константа.НомерФОСБ); Пробелы(19,""); //Служебное ФИО = глРазделить(СокрЛП(Сотрудник.Наименование)," "); //разбить на ФИО и прибавку Фамилия = СтрПолучитьСтроку(ФИО,1); Имя = СтрПолучитьСтроку(ФИО,2); Отчество= СтрПолучитьСтроку(ФИО,3); Прибавка= СтрПолучитьСтроку(ФИО,4); ЗнВыгрузки=ЗнВыгрузки+Фамилия; //Фамилия Пробелы(30,Фамилия); ЗнВыгрузки=ЗнВыгрузки+Имя; //Имя Пробелы(30,Имя); Если СокрЛП(Прибавка)<>"" тогда ЗнВыгрузки=ЗнВыгрузки+Отчество+" "+Прибавка; //Отчество Пробелы(30,(Отчество+" "+Прибавка)); Иначе ЗнВыгрузки=ЗнВыгрузки+Отчество; Пробелы(30,Отчество); КонецЕсли; Пробелы(25,Сотрудник.НомерЗарплатногоСчета); //Номер счета ЗнВыгрузки=ЗнВыгрузки+Сотрудник.НомерЗарплатногоСчета; Пробелы(8,""); //Код вида вклада СуммаОП=Сумма+Компенсация; //Сумма операции пополнения Если Найти(Строка(СуммаОП),".")=0 Тогда //Проверка на наличие копеек Пробелы(12,Строка(СуммаОП)); //Пробелов на 3 соответственно меньше ЗнВыгрузки=ЗнВыгрузки+Строка(СуммаОП)+".00"; //если сумма целая добовляем .00, как 00 копеек. Иначе Если Сред(Строка(СуммаОП),СтрДлина(СуммаОП)-1,1)="." Тогда Пробелы(14,Строка(СуммаОП)); //Пробелов на 1 соответственно меньше ЗнВыгрузки=ЗнВыгрузки+СуммаОП+"0"; //если сумма содержит копейки не двузначные, добавляем 1 ноль Иначе Пробелы(15,Строка(СуммаОП)); //Пробелов на 0 соответственно меньше ЗнВыгрузки=ЗнВыгрузки+СуммаОП; //если сумма содержит копейки двузначные, то копейки не добавляем КонецЕсли; КонецЕсли; Пробелы(3,""); //Код валюты Пробелы(29,""); //Служебное ТекстФ.ДобавитьСтроку(ЗнВыгрузки); КонецЦикла; // Иначе // а что иначе? иначе не будет КонецЕсли; КонецЦикла; ТекстФ.Записать(ФайлВыгрузки2); // //3 // // //Выгрузка в файл 1 контрольных сумм // ФайлВыгрузки1="c:\Out1C\78083415\78084315.k19"; ТекстФ.Очистить(); ЗнВыгрузки=""; назв=Константа.КраткоеНаименованиеПредприятия; //Название организации ЗнВыгрузки=ЗнВыгрузки+назв; Пробелы(30,назв); дог=Константа.ДоговорСОСБ; //Номер договора с организацией ЗнВыгрузки=ЗнВыгрузки+дог; Пробелы(7,Строка(НомерПП)); //Общее количество записей в списке на зачисление ЗнВыгрузки=ЗнВыгрузки+Строка(НомерПП); summ=Итог("Сумма")+Итог("Компенсация"); //Итоговая сумма зачислений по всему списку Если Найти(Строка(summ),".")=0 Тогда //Проверка на наличие копеек Пробелы(12,Строка(summ)); //Пробелов на 3 соответственно меньше ЗнВыгрузки=ЗнВыгрузки+Строка(summ)+".00"; //если сумма целая добовляем .00, как 00 копеек. Иначе Если Сред(Строка(summ),СтрДлина(summ)-1,1)="." Тогда Пробелы(14,Строка(summ)); //Пробелов на 1 соответственно меньше ЗнВыгрузки=ЗнВыгрузки+summ+"0"; //если сумма содержит копейки не двузначные, добавляем 1 ноль Иначе Пробелы(15,Строка(summ)); //Пробелов на 0 соответственно меньше ЗнВыгрузки=ЗнВыгрузки+summ; //если сумма содержит копейки двузначные, то копейки не добавляем КонецЕсли; КонецЕсли; ТекстФ.ДобавитьСтроку(ЗнВыгрузки); ТекстФ.Записать(ФайлВыгрузки1); // //4 // Предупреждение("Выгрузка 41 ФОСБ завершена успешно! Смотрите в папке c:\Out1C\78083415 .") ; // //Выгрузка в файлы на зачисление зарплаты для ФОСБ 15 завершена // КонецПроцедуры // Выгрузка | В общем вроде все... Только вот одна проблема я не программер а больше админ однако нужно сделать это ерунду поскольку больше некому... Буду рад если поможете | Всего записей: 97 | Зарегистр. 01-09-2003 | Отправлено: 16:16 14-04-2005 | Исправлено: Mavn, 16:18 14-04-2005 |
|