7.7 dbf-файл выгрузки зарплаты в Сбербанк

Тема в разделе "Типовые решения "1С:Предприятие 7.7"", создана пользователем Vlad, 22 апр 2010.

  1. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Помогите, други, что-то не выходит каменный цветок.
    Делаю выгрузку через dbf-файл. Все нормально, кроме одного. Файл формируется с расширением .dbf, а банку надо .294. Поменять, кроме как руками, не получается.
    Вот код. Гляньте свежим взглядом - чего не так.

    Код:
    Процедура Вбанк()
    ПутьВыгрузки = "\\Buh2\банк\";
    ИмяФайла = "SP";
    ИмяФайла = ИмяФайла + "0445";
    ИмяФайла = ИмяФайла + Прав(НомерДок,2);
    Если СтрДлина(ИмяФайла)> 8 Тогда
    ИмяФайла = Прав(ИмяФайла,8);
    КонецЕсли;
    Файл = создатьОбъект("XBASE");
    Файл.КодоваяСтраница(1);
    Файл.ДобавитьПоле("OTD","S",4,0);
    Файл.ДобавитьПоле("FIL","S",4,0);
    Файл.ДобавитьПоле("SCHET","S",20,0);
    Файл.ДобавитьПоле("KV","S",2,0);
    Файл.ДобавитьПоле("SUMMA","N",10,2);
    Файл.ДобавитьПоле("FAM","S",30,0);
    Файл.ДобавитьПоле("NAME","S",20,0);
    Файл.ДобавитьПоле("OTCH","S",20,0);
    Файл.ДобавитьПоле("DOC","N",2,0);
    Файл.ДобавитьПоле("DOCSER","S",10,0);
    Файл.ДобавитьПоле("DOCNUM","S",10,0);
    Файл.ДобавитьПоле("DOCVYD","S",50,0);
    Файл.ДобавитьПоле("DOCDATE","D",8,);
    Файл.ДобавитьПоле("BDATE","D",8,);
    Файл.ДобавитьПоле("TNOMER","S",7,0);
    Файл.ДобавитьПоле("KODI","S",2,0);
    Файл.ДобавитьПоле("KODZ","S",9,2);
    Файл.ДобавитьПоле(,"N",1,0);
    Файл.СоздатьФайл(СокрЛП(ПутьВыгрузки) + ИмяФайла + ".294");
    
    ВыбратьСтроки();
    Пока ПолучитьСтроку() = 1 Цикл
    Фамилия=""; Имя=""; Отчество="";
    глФамилияИмяОтчество(Сотрудник,Фамилия,Имя,Отчество);
    Файл.Добавить();
    Файл.OTD = "5294";
    Файл.FIL = "5294";
    Файл.SCHET = Сотрудник.НомерЗарплатногоСчета;
    Если ПустоеЗначение(Сотрудник.НомерЗарплатногоСчета) = 1 Тогда
    Сообщить("У сотрудника " + глФамилияИмяОтчество(Сотрудник,Фамилия,Имя,Отчество) + " не заполнен лицевой счет!", "!");
    КонецЕсли;	  
    Файл.KV = "53";
    Файл.SUMMA = Сумма;
    Файл.FAM = Врег(Лев(Фамилия,30));
    Файл.NAME = Врег(Лев(Имя,20));
    Файл.OTCH = Врег(Лев(Отчество,20));
    Файл.KODI = "09";
    Файл.Записать();
    КонецЦикла;	
    Файл.ЗакрытьФайл();
    Сообщить("Файл выгрузки сформирован.");
    КонецПроцедуры
    
  2. Andrus_
    Offline

    Andrus_

    Регистрация:
    21 июл 2009
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Vlad
    Простое курение манов привело к таким вот идеям :)

    ПереименоватьФайл(<?>,,);
    Синтаксис:
    ПереименоватьФайл(<ИмяФайлаИсточника>,<ИмяФайлаПриемника>,<ФлагПерезаписи>)
    Назначение:
    Переименовать/переместить файл.
    Параметры:
    <ИмяФайлаИсточника> - строка с именем файла источника;
    <ИмяФайлаПриемника> - строка с новым именем файла;
    <ФлагПерезаписи> -:
    0 - запрещает перемещение файла между дисками и существующий файл приемника не перезаписывается;
    1 - разрешает перемещение файла между дисками (только для файлов) и существующий файл приемника перезаписывается.
  3. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Хо'кей, завтра попробую!
  4. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Попробовал.
    Код:
    ...
    Файл.ЗакрытьФайл();
    ФС.ПереименоватьФайл(СокрЛП(ПутьВыгрузки) + ИмяФайла,СтрЗаменить((СокрЛП(ПутьВыгрузки) + ИмяФайла),".dbf",".294"),1);
    
    
    Еще у клиета надо проверить, но уже вижу, что вряд ли подойдет.
    Файл SP044513 тип DBF переименовывается в SP044513.294 тип 294.
    Т.е. удлиняет имя и меняет расширение, а мне надо только поменять расширение.
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Из вышеприведенного кода дожно быть
    Было
    Какой_то_Путь\SP044513.DBF
    Стало
    Какой_то_Путь\SP044513.294

    Что не так?
  6. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Не так
    Какой_то_Путь\SP044513.294.294

    Но, уточняю, надо еще проверить будет у клиента на реальной выгрузке. Это я пока у себя ковыряюсь.
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    значит у тебя 2 dbf в имени.
    Проверь где "косяк" или сделай так
    Код:
    СтрЗаменить((СокрЛП(ПутьВыгрузки) + ИмяФайла),".dbf","")+".294"
    
    
    А может быть и так:
    Код:
    //Вот здесь у тебя
    Файл.СоздатьФайл(СокрЛП(ПутьВыгрузки) + ИмяФайла + ".294"); //SP044513.Dbf.294
    //ты получаешь
    СтрЗаменить((СокрЛП(ПутьВыгрузки) + ИмяФайла),".dbf",".294"); //SP044513.294.294
    //НАДО
    СтрЗаменить((СокрЛП(ПутьВыгрузки) + ИмяФайла),".dbf",""); ////SP044513.294
    //ИЛИ не добавлять 294 при создании
    
    
  8. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Сейчас у меня так
    Код:
    ПутьВыгрузки = "C:\";
    ИмяФайла = "SP0445";
    ИмяФайла = ИмяФайла + Прав(НомерДок,2);
    ....
    Файл = создатьОбъект("XBASE");
    ...
    Файл.СоздатьФайл(СокрЛП(ПутьВыгрузки) + ИмяФайла);
    ...
    ФС.ПереименоватьФайл(СокрЛП(ПутьВыгрузки) + ИмяФайла,СтрЗаменить((СокрЛП(ПутьВыгрузки) + ИмяФайла),".dbf",".294"),1);
    
    Не переименовывает
    Формируется файл SP044513.DBF
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Файл закрыт перед переименованием?
  10. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Йес, сэр!
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Гыыыыыы!
    Давай так.
    Код:
    ТекИмя=СокрЛП(ПутьВыгрузки) + ИмяФайла;
    НовоеИмя=СтрЗаменить(ТекИмя,".dbf",".294");
    Сообщить("Пытаюсь переименовать "+ТекИмя+" в "+НовоеИмя);
    ФС.ПереименоватьФайл(ТекИмя,НовоИмя,1);
    Сообщить("Ну а теперь открой Explorer и смотри что получилось");
    
    
  12. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Попробую. Как всегда - завтра. :)
  13. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Берем отладчик в руки и за 2 минуты находим "нестыковку" :unsure:

    Код:
    	ПутьВыгрузки = "C:\";
    
    Файл = СоздатьОбъект("XBASE");
    Файл.ДобавитьПоле("NAME", 1, 19, 3); 
    Файл.СоздатьФайл(СокрЛП(ПутьВыгрузки) + СокрЛП(ИмяФайла));
    Файл.ЗакрытьФайл();
    
    ФС.ПереименоватьФайл(СокрЛП(ПутьВыгрузки) + СокрЛП(ИмяФайла) + ".dbf",
    (СокрЛП(ПутьВыгрузки) + СокрЛП(ИмяФайла) + ".294"),1);
    
    
    Ну и как рабочий пример, держи: Посмотреть вложение 4129

    Вложения:

    • 1.ert
      Размер файла:
      42 КБ
      Просмотров:
      163
  14. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Спасибо за заботу, но результат тот же, что и у меня.
    Прилагаему тобой обработку запустил и на выходе файл с именем SP0445.294 и расширением 294.
    Щас буду пробовать последнее вчерашнее предложение Угодника.
  15. TopicStarter Overlay
    Vlad
    Offline

    Vlad Модераторы Команда форума Модератор

    Регистрация:
    16 авг 2006
    Сообщения:
    3.517
    Симпатии:
    19
    Баллы:
    29
    Попробовал.
    Получился файл с расширением DBF. :unsure:
  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Такое впечатление что залочен в момент переименования...
  17. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Ну, а какой тебе надо? Чем это не устраивает? Получается файл с расширением "294".

    Кстати в обработке можно попробовать любое имя написать.

    У меня работает так:
    Посмотреть вложение 4137

    Походу, тебе надо решать не вопрос "как это сделать в 1с77", а "как это сделать на моем рабочем месте"

    Вложения:

Поделиться этой страницей