Имя: Пароль:
1C
1С v8
Помогите пож. [БП 1.6, ЗУП 2.5] Выгрузка реестра начислений з/п в Сбербанк
0 holoddi
 
17.09.11
09:21
Всем привет. Кто может, помогите пожалуйста с обработкой. [БП 1.6, ЗУП 2.5] Выгрузка реестра начислений з/п в Сбербанк (Выложите, у кого есть, или выкачайте с инфостата, кто может, и выложите) Самому с инфостата выкачать не дает, рейтинг мал, а писать в выходные лень.
Заранее спасибо
1 holoddi
 
17.09.11
09:29
ЗЫ. Надо выгружать из ЗУП 2.5.  На инфостате она называется SberbankVygruzkaReestra3.epf
2 savimar
 
17.09.11
12:36
В сье в формате dbf или xml? Xml - штатная обработка, в dbf - нужно писать.
3 holoddi
 
17.09.11
13:13
2 в дбф. Она есть написанная. На инфостате. Я просто выкачать не могу оттуда из-за низкого рейтинга
4 holoddi
 
17.09.11
13:13
5 Kookish
 
17.09.11
13:21
Я буквально на этой неделе писал что-то подобное для 7.7. В формате DBF4. Делов-то: создать ТЗ, потом на ее основе сделать файл. Вот примерно мой текст:

   Сообщить("Тогда выгружаем...");
   Стр = ПутьВыгрузки;
   Пока Найти(Стр,"\")<>0 Цикл
       Стр = Сред(Стр,Найти(Стр,"\")+1);
   КонецЦикла;

   __К = Лев(ПутьВыгрузки,НайтиПосл(ПутьВыгрузки,"\"));
   __Ф = Прав(ПутьВыгрузки, СтрДлина(ПутьВыгрузки) - СтрДлина(__К));
   
   Если ФС.ВыбратьФайл(1,__Ф,__К,"Выбрать файл для вывода","Файлы DBF (*.dbf)|*.dbf") = 1 Тогда
       ПутьВыгрузки = __К + __Ф;
   Иначе
       Возврат;
   КонецЕсли;
   
   // Собственно создание файла и запись
   Если ФС.СуществуетФайл(ПутьВыгрузки) = 1 Тогда
       ФС.УдалитьФайл(ПутьВыгрузки);
   КонецЕсли;
                                       
   DBConn = CreateObject("ADODB.Connection");
   DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
                  "Data Source=" + __К + ";" +
                  "Extended Properties=""DBASE IV;"";");          

   ИмяБазы = Лев(__Ф, СтрДлина(__Ф) - 4);
   //Создаем новый DBF и задаем его колонки
   DBConn.Execute("Create Table " + ИмяБазы + " (A char(30), B char(30), C char(30), D char(30), E char(30), F char(30), G char(30))");
   
   DBConn.Execute("Insert into " + ИмяБазы + " Values('" + ОтделениеБанка + "', '', '', '', '', '', '')");
   DBConn.Execute("Insert into " + ИмяБазы + " Values('К платежному поручению №', '" + НомерПП + "', 'от', '" + ДатаПП + "', '', '', '')");
   DBConn.Execute("Insert into " + ИмяБазы + " Values('Зачисление', '" + КодЗачисления + "', '', '', '', '', '')");
   DBConn.Execute("Insert into " + ИмяБазы + " Values('Наименование, ОГРН, № банк сч.', '" + СтрокаНаим + "', '" + НомерСчета + "', '', '', '', '')");
   DBConn.Execute("Insert into " + ИмяБазы + " Values('По договору', '" + НомерДоговора + "', 'от', '" + ДатаДоговора + "', '', '', '')");
   DBConn.Execute("Insert into " + ИмяБазы + " Values('№ п/п', 'Номер счета', 'Фамилия', 'Имя', 'Отчество', 'Сумма', 'Примечание')");
 
   ТабВБанк.ВыбратьСтроки();
   НомСтр = 1;
   ИтогоСумма = 0;
   Пока ТабВБанк.ПолучитьСтроку() = 1 Цикл
       ТекСотр = ТабВБанк.Сотрудник;
       глФамилияИмяОтчество(ТекСотр.Наименование, СотрФамилия, СотрИмя, СотрОтчество);

       Если СпрСотр.НайтиЭлемент(ТекСотр) = 1 Тогда
           НомСчета = СпрСотр.НомерЗарплатногоСчета;
       Иначе
           НомСчета = ТекСотр.НомерЗарплатногоСчета;
       КонецЕсли;

       DBConn.Execute("Insert into " + ИмяБазы + " Values('" + Строка(НомСтр) + "', '" + НомСчета + "', '" + СотрФамилия + "', '" + СотрИмя + "', '" + СотрОтчество + "', '" + Формат(ТабВБанк.Сумма, "Ч.2") + "', '')");
       ИтогоСумма = ИтогоСумма + ТабВБанк.Сумма;
       НомСтр = НомСтр + 1;
   КонецЦикла;

   DBConn.Execute("Insert into " + ИмяБазы + " Values('', 'ИТОГО:', '', '', '', '" + Формат(ИтогоСумма, "Ч.2") + "', '')");
   DBConn.Close(); //Закрываем соединение
6 holoddi
 
17.09.11
13:24
2 Kookish. Спасибо. Я сам писал на 77 подобное. Просто лень писать под 8, если есть уже написанное, что, в худшем случае, надо будет только чуть поправить.
7 savimar
 
17.09.11
14:08
Могу выложить код для dbf
8 savimar
 
17.09.11
14:16
Но у меня - документ и часть реквизитов - на форме, где выбирается расчетная ведомость в банк из ЗУП.
Меняете номер отделения ОСБ в формате F1234 и наименование организации, её ЛС и огрн,  и наименование отделения ОСБ

Номер ФИ - номер реестра (с формы)


ДБФ = Новый XBase;
   ДБФ.Кодировка = КодировкаXBase.OEM;
   
   ДБФ.поля.Добавить("A", "S", 30);
   ДБФ.поля.Добавить("B", "S", 30);
   ДБФ.поля.Добавить("C", "S", 30);
   ДБФ.поля.Добавить("D", "S", 30);
   ДБФ.поля.Добавить("E", "S", 30);
   ДБФ.поля.Добавить("F", "S", 30);
   ДБФ.поля.Добавить("G", "S", 30);
   
   ИмяПути = "";
   ИмяФайла = "";
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
   Диалог.Каталог = ИмяПути;
   ИмяФайла = "F1234" + Строка(НомерФИ);
   Диалог.ПолноеИмяФайла = ИмяФайла;
   Диалог.Заголовок = "Укажите файл для сохранения";
   Диалог.Фильтр = "(*.dbf)|*.dbf";
   Диалог.Расширение = "dbf";
   Если Диалог.Выбрать() Тогда
       ИмяПути = Диалог.Каталог;
       ИмяФайла = Диалог.ПолноеИмяФайла;
       Сообщить(ИмяФайла);
   Иначе
       Предупреждение("Не удалось создать файл!");
       Возврат;
   КонецЕсли;
   ДБФ.СоздатьФайл(ИмяПути + "F1234" + Прав(Формат(Число(НомерФИ), "ЧЦ=4; ЧВН=; ЧГ="), 3));
   ДБФ.АвтоСохранение = Истина;
   
   //1
   ДБФ.Добавить();
   ДБФ.A = "Отделение ОСБ 1234";
   //2
   ДБФ.Добавить();
   ДБФ.A = "К платежному поручению №";
   //ДБФ.B = Поручение;
   ДБФ.C = "от";
   //ДБФ.D = Формат(Дата, "ДФ=dd.MM.yyyy");
   //3
   ДБФ.Добавить();
   ДБФ.A = "Зачисление";
   ДБФ.B = "01";
   ДБФ.C = "01";
   //4
   ДБФ.Добавить();
   ДБФ.A = "Наименование, ОГРН, № банк. счета";
   ДБФ.B = "Наименование организации"" л/с 1234567   огрн";
   ДБФ.C = Банк.ОсновнойБанковскийСчет.НомерСчета;
   //5
   ДБФ.Добавить();
   ДБФ.A = "По договору";
   ДБФ.B = ДоговорНомер;
   ДБФ.C = "от";
   ДБФ.D = Формат(ДоговорДата, "ДФ=dd.MM.yyyy");
   //6
   ДБФ.Добавить();
   ДБФ.A = "№ п/п";
   ДБФ.B = "Номер счета";
   ДБФ.C = "Фамилия";
   ДБФ.D = "Имя";
   ДБФ.E = "Отчество";
   ДБФ.F = "Сумма";
   ДБФ.G = "Примечание";
   
   ЗапросВед = Новый Запрос;
   ЗапросВед.УстановитьПараметр("Ссылка", Ссылка);
   ЗапросВед.Текст = "ВЫБРАТЬ
                     |    РеестрВБанкСписокВедомостей.Ведомость,
                     |    РеестрВБанкСписокВедомостей.Сумма
                     |ИЗ
                     |    Документ.РеестрВБанк.СписокВедомостей КАК РеестрВБанкСписокВедомостей
                     |ГДЕ
                     |    РеестрВБанкСписокВедомостей.Ссылка = &ССылка";
   ВыборкаВед = ЗапросВед.Выполнить().Выбрать();
   ВыборкаВед.Следующий();
   Ведомость = ВыборкаВед.Ведомость;
   
   ЗапросДБФ = Новый Запрос;
   ЗапросДБФ.УстановитьПараметр("Ссылка", Ведомость);
   ЗапросДБФ.Текст = "ВЫБРАТЬ
                     |    ВедомостьВБанкЗарплата.Физлицо,
                     |    ВедомостьВБанкЗарплата.Сумма,
                     |    ВедомостьВБанкЗарплата.НомерЛицевогоСчета
                     |ИЗ
                     |    Документ.ВедомостьВБанк.Зарплата КАК ВедомостьВБанкЗарплата
                     |ГДЕ
                     |    ВедомостьВБанкЗарплата.Ссылка = &Ссылка";
   ВыборкаДБФ = ЗапросДБФ.Выполнить().Выбрать();
   
   //7 по хз-1
   Н = 1;
   Пока ВыборкаДБФ.Следующий() Цикл
       ДБФ.Добавить();
       ДБФ.A = Н;
       ДБФ.B = ВыборкаДБФ.НомерЛицевогоСчета;
       Массив = ОбщегоНазначения.ПолучитьМассивФИО(ВыборкаДБФ.Физлицо.Наименование);
       ДБФ.C = Массив[0];
       ДБФ.D = Массив[1];
       ДБФ.E = Массив[2];
       ДБФ.F = Формат(Число(ВыборкаДБФ.Сумма), "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=; ЧГ=0");        
       Н = Н + 1;
   КонецЦикла;
   
   //хз
   ДБФ.Добавить();
   ДБФ.B = "ИТОГО:";
   ДБФ.F = Формат(Число(ВыборкаВед.Сумма), "ЧЦ=15; ЧДЦ=2; ЧРД=.; ЧРГ=; ЧГ=0");

   ДБФ.ЗакрытьФайл();
9 holoddi
 
17.09.11
14:23
2 savimar Спасибо Вам огромное
10 holoddi
 
18.09.11
11:18
Кому надо, могу выложить готовую обработку
11 Welap
 
19.09.11
08:15
Выложите, если не жалко. А на ифостаре и правда жадюги сидят.
12 dmpl
 
19.09.11
08:52
(5) А зачем было использовать сторонние средства, если есть штатные? Специалиста за такое не дадут...
13 Мимохожий Однако
 
19.09.11
09:13
Заведи второй аккаунт и скачай.