helpf.pro
Регистрация

v8: вывод таблицы в txt с фиксированной шириной колонок

Sanyh
27.09.2012 11:47Прочитано: 1604
Для банка нужно сделать экспорт начислений в txt по стандарту
Фамилия(20 символов колонка) Имя (20 символов колонка) Отчество(20 символов) Личный счет(20 символов) Сумма (12 символов)
добавить чтобы пустые символы должны быть заполнены пробелами, к примеру фамилия "Иванов" и потом 14 пробелов =20

Вывод сделал а вот как ширину выравнивать не достаточно знаний(новичок):


Код 1C v 8.х
 процедура КнопкаВыполнитьНажатие()

//НомерНашегоДоговора = "265";
Денек = СокрЛП(""+День(текущаяДата()));
Если СтрДлина(Денек) = 1 Тогда
Денек = "0"+Денек;
КонецЕсли;
Месячишко = Месяц(текущаяДата());
Если СтрДлина(Месячишко) = 1 Тогда
Месячишко = "0"+Месячишко;
КонецЕсли;
//имя = "ы";
Текст = Новый ТекстовыйДокумент();

ПолноеИмяФайла = СокрЛП(Каталог) + "\"+Месячишко+Денек+НомерДоговора+".M01";
// текст.ДобавитьСтроку(""+"Зарплата,"+Организация.НаименованиеСокращенное);

текст.Записать(ПолноеИмяФайла);
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("НомерСчета",,"НомерСчета",18);
ТЗ.Колонки.Добавить("Фамилия",,"Фамилия",20);
ТЗ.Колонки.Добавить("Чел",,"Сотрудник",20);
ТЗ.Колонки.Добавить("Денежка",,"Денежка",10);

СтрокаВозможныхРазделителей = "/-*+():"",.\;[]";

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

Стр.Чел = сокрлп(строка.Физлицо);
Стр.Денежка = строка.сумма;
ОбщаяСумма = ОБщаяСумма + строка.сумма;
КонецЦикла;
КонецЦикла;

Для а = 1 по СтрДлина(СтрокаВозможныхРазделителей) Цикл
Стр.Чел = СтрЗаменить(Стр.Чел,Сред(СтрокаВозможныхРазделителей,а,1)," ");
КонецЦикла;

Стр.Чел = СтрЗаменить(Стр.Чел," "," ");
Стр.Чел = СтрЗаменить(Стр.Чел," "," ");
Стр.Чел = СтрЗаменить(Стр.Чел," "," ");
//преобразуем строку в много строчную заменяя символы пробела разделителем строк
КаждоеСловоВОтдельнойСтроке = СтрЗаменить(Стр.Чел," ",Символы.ПС);
Фамилия = СтрПолучитьСтроку(КаждоеСловоВОтдельнойСтроке,1);
Имя = СтрПолучитьСтроку(КаждоеСловоВОтдельнойСтроке,2);
Отчество = СтрПолучитьСтроку(КаждоеСловоВОтдельнойСтроке,3);




Для Каждого ТекущаяСтрока Из ТЗ Цикл
Текст.ДобавитьСтроку(""+Фамилия+" "+Имя+" "+Отчество+" "+Текущаястрока.НомерСчета+" "+Формат(текущаястрока.денежка,"ЧГ=6;ЧРД='.'; ЧДЦ=2")+"");
КонецЦикла;
текст.Записать(ПолноеИмяФайла,"CP866");
КонецПроцедуры

Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
27.09.2012 13:31Ответ № 1
(0) Sanyh, смотри функцию v8.x: Функция дополняет строку до указаной длины определенным символом - Padl()
Sanyh
27.09.2012 13:34Ответ № 2
спасибо, но в строке 5 колонок вот каждую колонку нужно дополнить
E_Migachev
27.09.2012 14:15Ответ № 3
(2) Sanyh, ну так каждое значение колонки и прогоняй через функцию
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.