Автор Тема: Выгрузка зарплаты для сбербанка  (Прочитано 15270 раз)

0 Пользователей и 1 Гость просматривают эту тему.

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Re: Выгрузка зарплаты для сбербанка
« Ответ #7 : 05 Октябрь 2009 Понедельник 11:19:33 »
Цитировать
У меня вопрос что значит "Поля разделяются символом табуляции (ASCII 09)."?
Да, это символ табуляции, у него код "09", чтобы вставить этот символ табуляции в строку используйте комманду 1С: Симв(9)

masha_pc

  • Newbie
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Выгрузка зарплаты для сбербанка
« Ответ #6 : 05 Октябрь 2009 Понедельник 09:13:43 »
Спасибо большое за помощь.
У меня вопрос что значит "Поля разделяются символом табуляции (ASCII 09)."?
Когда я добавляю строку в файл между отдельными полями я добавляю СимволТабуляции.
Правильно это?

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Выгрузка данных для зарплатного проекта в Промсвязьбанк
« Ответ #5 : 02 Октябрь 2009 Пятница 11:58:41 »
Мы выгружаем данные для зарплатного проекта в Промсвязьбанк
Имя файла формируется приблизительно такое: 1234501.922 (по инструкции)
Ниже полный код выгрузки для 1С 7.7 Зарплата и кадры
Все работает без ошибок уже более года.
В форме документа "ВыплатаЗаработнойПлаты" создать кнопку и указать процедуру "ВыгрузкаВПСБ()"
Один документ "ВыплатаЗаработнойПлаты" - это один файл выгрузки.
Если будут вопросы, оставляйте их тут, я отвечу.

//Формируем расширение файла (по инструкции банка)
//Первые 2 символа это номер дня месяца
//Третий символ - это последняя цифра номера месяца
Функция ПолучитьРасширениеПСБ()
С_ДатаЧисло=СокрЛП(Строка(ДатаЧисло(ТекущаяДата())));
Если СтрДлина(С_ДатаЧисло)=1 Тогда
    С_ДатаЧисло="0"+С_ДатаЧисло;
КонецЕсли;
Возврат Прав(СокрЛП(Строка(ДатаМесяц(ТекущаяДата()))),1)+С_ДатаЧисло;
КонецФункции //ПолучитьРасширениеПСБ

//Формируем имя для файла выгрузки файла (по инструкции банка)
Функция ПолучитьФайлВыгрузкиПСБ()
Рез=СокрЛП(Константа.КодПредприятияПСБ);//Код предприятия ПСБ "12345";
С_ОлдКаталог = ФС.ТекКаталог();
Ч_НомерФайлаЗаДень=1;
    С_ПутьКВыгрузкам=СокрЛП(Константа.КаталогВыгрузкиЗП);//"S:\Бухгалтерия\ВыгрузкиПСБ\";
ФС.УстТекКаталог(С_ПутьКВыгрузкам);
С_Файл = ФС.НайтиПервыйФайл("*."+ПолучитьРасширениеПСБ());
Пока ПустаяСтрока(С_Файл) = 0 Цикл             
Если (С_Файл = "..") или (С_Файл = ".") Тогда
Продолжить;
КонецЕсли;
Ч_НомерФайлаЗаДень=Ч_НомерФайлаЗаДень+1;
С_Файл = ФС.НайтиСледующийФайл();
КонецЦикла;
    ФС.УстТекКаталог(С_ОлдКаталог);
   
Если Ч_НомерФайлаЗаДень<10 Тогда
С_НомерФайлаЗаДень="0"+СокрЛП(Строка(Ч_НомерФайлаЗаДень));
Иначе
С_НомерФайлаЗаДень=СокрЛП(Строка(Ч_НомерФайлаЗаДень));
КонецЕсли;

Рез=Рез+С_НомерФайлаЗаДень+"."+ПолучитьРасширениеПСБ();

Возврат С_ПутьКВыгрузкам+Рез;
КонецФункции //ПолучитьФайлВыгрузкиПСБ

//Функция формирует строку для выгрузки по указанному сотруднику
//пар_Сотр - элемент справочника сорудники
//пар_Сумма - Сумма ЗП
Функция СотрВСтрокуПСБ(пар_Сотр,пар_Сумма)
Рез=СокрЛП(пар_Сотр.НомерЗарплатногоСчета)+"^";
Рез=Рез+"810^";//Рубли
Рез=Рез+СокрЛП(Формат(пар_Сумма,"Ч018.2"))+"^";//Сумма

С_ФИО=СтрЗаменить(СокрЛП(пар_Сотр.Наименование)," ",РазделительСтрок);

Рез=Рез+СтрПолучитьСтроку(С_ФИО,1)+"^";//Фамилия
Рез=Рез+СтрПолучитьСтроку(С_ФИО,2)+"^";//Имя
Рез=Рез+СтрПолучитьСтроку(С_ФИО,3)+"^";//Отчество

    С_ПаспортСерия="";
С_ПаспортНомер="";

ДокументУдЛичностьСписком = глРазложитьДокУдостоверяющийЛичность(пар_Сотр.ДокументУдЛичность);
РазмерСпискаДокументУдЛичность = ДокументУдЛичностьСписком.РазмерСписка();
Если РазмерСпискаДокументУдЛичность > 1 тогда
    С_ПаспортСерия=СтрЗаменить(СокрЛП(Врег(ДокументУдЛичностьСписком.ПолучитьЗначение(2)))," ","");
КонецЕсли;
Если РазмерСпискаДокументУдЛичность > 2 тогда
С_ПаспортНомер=СокрЛП(Врег(ДокументУдЛичностьСписком.ПолучитьЗначение(3)));
КонецЕсли;

Ч_Резидент=1;//Это резидент
Если пар_Сотр.Страна.Выбран()=1 Тогда
    Если СокрЛП(пар_Сотр.Страна.Код)<>"643" Тогда
Ч_Резидент=0;//Это не резидент
    КонецЕсли;
КонецЕсли;
Если Ч_Резидент=0 Тогда
Рез=Рез+С_ПаспортСерия+"^";
Рез=Рез+С_ПаспортНомер+"^";
Иначе   
Рез=Рез+"^";
Рез=Рез+С_ПаспортСерия+С_ПаспортНомер+"^";
КонецЕсли;
Рез=Рез+"^";
Возврат Рез;
КонецФункции //СотрВСтрокуПСБ

//Главная процедура которая осуществляет выгрузку данных
//В форме документа "ВыплатаЗаработнойПлаты" создать кнопку и указать эту процедуру "ВыгрузкаВПСБ()"
Процедура ВыгрузкаВПСБ()
ТЗ=СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Подразделение");
ТЗ.НоваяКолонка("ФИО");
ТЗ.НоваяКолонка("ЛС");
ТЗ.НоваяКолонка("Сумма");
ТЗ.НоваяКолонка("Резидент");

    Об_Текст = СоздатьОбъект("Текст");

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

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

КонецПроцедуры //ВыгрузкаВПСБ
« Последнее редактирование: 02 Октябрь 2009 Пятница 12:01:55 от admin »

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Re: Выгрузка зарплаты для сбербанка
« Ответ #4 : 02 Октябрь 2009 Пятница 10:25:58 »
Цитировать
Я думаю что нужно сделать в форме подпор по нескольким платежным ведомостям.
По сколько у нас несколько бухгалтеров по заработной плате, каждый ведет отдельные цеха и ведомости делают отдельно.
Я делал эту выгрузку для конфигурации 1С Зарплата+кадры 7.7, там эту выгрузку привязал к документу "Выплата заработной платы", может вам тоже к этому документу привязать, там ведь есть и список сотрудников и размеры выплат?

masha_pc

  • Newbie
  • *
  • Сообщений: 3
    • Просмотр профиля
Re: Выгрузка зарплаты для сбербанка
« Ответ #3 : 02 Октябрь 2009 Пятница 07:19:19 »
Внутреннее содержание электронного реестра:
Электронный реестр предоставляется в виде текстового файла в кодировке DOS. Одна строка-одно пополнение. Поля разделяются символом табуляции (ASCII 09).
1. Номер карты - максимальная длина 32 сим.
2. Сумма - максимальная длина 15 сим.- Копейки отделяются символом "."
3. ФАМИЛИЯ И.О. - максимальная длина 60 сим. - ИВАНОВ И.И. (всё большими буквами, везде по одному пробелу)
4. Описание проводки- максимальная длина 32 сим.-может отсутствовать.
Я думаю что нужно сделать в форме подпор по нескольким платежным ведомостям.
По сколько у нас несколько бухгалтеров по заработной плате, каждый ведет отдельные цеха и ведомости делают отдельно.
 

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Re: Выгрузка зарплаты для сбербанка
« Ответ #2 : 01 Октябрь 2009 Четверг 21:03:49 »
Я делал похожую выгрузку, но для другого банка, тут ничего сложного нет.
В первую очередь нужно посмотреть формат этого файла txt, вам банк должен был выслать инструкцию по созданию этого файла txt.
Вы сможете тут выложить или инструкцию или пример этого файла txt?
Я посмотрю и подскажу как сделать.

masha_pc

  • Newbie
  • *
  • Сообщений: 3
    • Просмотр профиля
Выгрузка зарплаты для сбербанка
« Ответ #1 : 01 Октябрь 2009 Четверг 13:30:59 »
Добрый день.
Комплексная конфигурация 7,7
Необходимо сделать выгрузку списка сотрудников для выпуска пластиковых карточек и затем ежемесячно делать реестр на перечисление зарплаты на карточки, для сбербанка в txt формате.
Может у кого есть что нибудь похожие.
Или подскажите как правильно написать.