Выгрузка В Клиент Банк Из Збу8 На Пластиковую Карту

Тема в разделе "1C и всё что с ней связано", создана пользователем Nikolon, 6 ноя 2011.

  1. Nikolon

    Nikolon Гость

    Репутация:
    0
    В общем я недавно начал изучать 1с, почти ничего не знаю=) Требуется организовать в ЗБУ8 выгрузку в dbf файл, чтобы тот грузился в клиент банк для начисления зп сотрудников на пластиковую карту.
    Не долго думая решил с коммуниздить данный метод из ЗиК 77, там данная возможность уже реализована.
    В последней демке ЗБУ нарисовал на второй странице формы документа нужные поля. Я раньше программировал на с++ и немного не понимаю принципа opendlg в 1с, и еще проблема в том что синтекс 7.7 и 8.2 немного отличается. Синтаксис помощник не особо помог-) Напишите плз как реализуется создание файла .dbf
    Вот код и 7ки:

    Код ( (Unknown Language)):
    Процедура Выгрузить()

    Если ПустаяСтрока(ФайлВыгрузки)=1 Тогда
    Предупреждение("Не указан файл.");
    Возврат;
    ИначеЕсли ФС.СуществуетФайл(ФайлВыгрузки) = 1 Тогда
    Если Вопрос("Файл "+ФайлВыгрузки+" существует!"+РазделительСтрок+"Переписать?","Да+Нет") = "Нет" Тогда
    Возврат;
    КонецЕсли;
    КонецЕсли;


    DBF = СоздатьОбъект("XBASE");
    // Кодировка DOS
    DBF.КодоваяСтраница(1);

    DBF.ДобавитьПоле("TAB_N","S",10,0);
    DBF.ДобавитьПоле("NAME","S",70,0);
    DBF.ДобавитьПоле("SUM_PAY","N",12,2);


    DBF.СоздатьФайл(ФайлВыгрузки);

    ВыбратьСтроки();

    Пока ПолучитьСтроку()>0 Цикл  

    DBF.Добавить();

    DBF.TAB_N=Сотрудник.Код;
    DBF.NAME=СокрЛП(Сотрудник);
    DBF.SUM_PAY=Сумма;
    DBF.Записать();

    КонецЦикла;

    Если DBF.Открыта()=1 Тогда
    DBF.ЗакрытьФайл();
    КонецЕсли;

    Предупреждение("Выгрузка завершена ...");

    КонецПроцедуры

    Получается в файл выгружается ФИО работника, код и сумма зп.
    Допустим в 8ке нет метода СоздатьОбъект, ругается еще много на что, но думаю я разберусь...

    Заранее спс за помощь, не сильно кидайте в меня камнями за мой дибилизм, сам понимаю что тут дело 5 минут для опытного программера, коим я не являюсь=)
     
  2. User1C

    User1C Гость

    Репутация:
    0
    Вот пример работы с dbf на 8.2:

    Код ( (Unknown Language)):
    ИмяФайла = "d:\zp.dbf";
    ИмяФайлаБазы = Новый Файл(ИмяФайла);
    База = Новый XBase;

    Если НЕ ИмяФайлаБазы.Существует() Тогда
    База.Кодировка = КодировкаXBase.OEM;

    База.Поля.Добавить("TAB_N","S",10,0);
    База.Поля.Добавить("NAME","S",70,0);
    База.Поля.Добавить("SUM_PAY","N",12,2);
    База.СоздатьФайл(ИмяФайла);
    База.Записать();

    КонецЕсли;
    Твой код: заполняешь дальше свою dbf

    Код ( (Unknown Language)):
    База.ЗакрытьФайл();
    Предупреждение("Выгрузка завершена ...");
     
  3. Гость

    Репутация:
    0
    Код ( (Unknown Language)):
    Процедура Выгрузить()

    Если ПустаяСтрока(ФайлВыгрузки)=1 Тогда
    Предупреждение("Не указан файл.");
    Возврат;
    ИначеЕсли ФС.СуществуетФайл(ФайлВыгрузки) = 1 Тогда
    Если Вопрос("Файл "+ФайлВыгрузки+" существует!"+РазделительСтрок+"Переписать?","Да+Нет") = "Нет" Тогда
    Возврат;
    КонецЕсли;
    КонецЕсли;


    DBF = СоздатьОбъект("XBASE");
    // Кодировка DOS
    DBF.КодоваяСтраница(1);

    DBF.ДобавитьПоле("TAB_N","S",10,0);
    DBF.ДобавитьПоле("NAME","S",70,0);
    DBF.ДобавитьПоле("SUM_PAY","N",12,2);


    DBF.СоздатьФайл(ФайлВыгрузки);

    ВыбратьСтроки();

    Пока ПолучитьСтроку()>0 Цикл  

    DBF.Добавить();

    DBF.TAB_N=Сотрудник.Код;
    DBF.NAME=СокрЛП(Сотрудник);
    DBF.SUM_PAY=Сумма;
    DBF.Записать();

    КонецЦикла;

    Если DBF.Открыта()=1 Тогда
    DBF.ЗакрытьФайл();
    КонецЕсли;

    Предупреждение("Выгрузка завершена ...");

    КонецПроцедуры
    А можешь весь мод скинуть?
     
  4. Nikolon

    Nikolon Гость

    Репутация:
    0
    Пока в процессе, как доделаю скину...
    Просто в 7ке и в 8ке разные реквизиты табличной части и я пока не разобрался как взять код и наименование сотрудника, вернее откуда его брать. В табличной есть только физлицо (Справочники.Физлица группа сотрудники). Вот как взять в справочнике наименование и его код пока не понял... Если сегодня не пойму завтра у начальника спрошу...
    Кстати вот ссылка на хороший справочник по синтаксису: http://t-prog.narod.ru/page1.html#326
     
  5. Гость

    Репутация:
    0
    B) А ну ясно...просто показалось что на 7 у тебя есть готовый.
     
  6. Nikolon

    Nikolon Гость

    Репутация:
    0
    мда... я попытался скинуть модуль формы документа, но он не влез)))
    объяню более понятно: в 1с77 Зик типовой, уже имеется данная возможность а вот в БГУ8 такого нет, хочу просто перенести. Код сюда не лезит, если выкладывать модуль формы документа.\
     
  7. Darlock

    Darlock Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    560
    Симпатии:
    1
    Эксперт, возьми пример с Nikolon. Русским по белому сказано, что в типовой ЗиК 77 модуль есть. Вплоть до того, что процедура из того модуля указана. B)
     
  8. Nikolon

    Nikolon Гость

    Репутация:
    0
    Есть ПолеВвода1, нарисовано на форме, добавил кнопочку Обзор, нажимаем отрабатывает данная процедура:

    Код ( (Unknown Language)):
        ДиалогВыбора = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
    ДиалогВыбора.Фильтр = "Data Base File(*.dbf)|*.dbf";
    ДиалогВыбора.Заголовок = "Выберите каталог для создания файла";
    Если НЕ ДиалогВыбора.Выбрать() Тогда
    Возврат;
    КонецЕсли;
    ПутьКФайлу = ДиалогВыбора.Каталог;
    Сама выгрузка отрабатывает, но надо чтобы в ПолеВвода отображался каталог, куда я сохраняю. Тоесть нужно передать переменную ПутьКФайлу в ПолеВвода1, как это можно сделать? И еще один маленький вопросик, как сделать чтобы при сохранении не нужно было указывать имя файла, а оно на автомате было задано... По аналогии у меня в коде создается dbf файл вот так:

    Код ( (Unknown Language)):
    БД.СоздатьФайл(ПутьКФайлу+("start.dbf");
     
  9. Nikolon

    Nikolon Гость

    Репутация:
    0
    Ой сори я даун....) Там надо было не поле выбора использовать а поле ввода))) и

    Код ( (Unknown Language)):
    ПутьКФайлу = ДиалогВыбора.ВыбранныеФайлы;
    и в процедуре перед открытием задавать имя файла по умолчанию=)
     
  10. Darlock

    Darlock Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    560
    Симпатии:
    1
    8.2:
    Код ( (Unknown Language)):
    Элементы.ЭлементыФормы.ПолеВвода1.Значение = ПутьКфайлу + ("start.dbf")
    8.1
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Выбор файла</div></div><div class="sp-body"><div class="sp-content">
    Код ( (Unknown Language)):
    ДиалогФыбораФайла                                    =Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);

    ДиалогФыбораФайла.Фильтр                     =   "Файл для загрузки (*.dbf)|*.dbf";
    ДиалогФыбораФайла.Расширение                 =   "dbf";
    ДиалогФыбораФайла.Заголовок                       =   "Выберите файл";
    ДиалогФыбораФайла.ПредварительныйПросмотр       =   Ложь;
    ДиалогФыбораФайла.ИндексФильтра                   =   0;
    ДиалогФыбораФайла.ПолноеИмяФайла             =   Элемент.Значение;
    ДиалогФыбораФайла.ПроверятьСуществованиеФайла   =   Истина;
    Если ДиалогФыбораФайла.Выбрать() Тогда
    Элемент.Значение = ДиалогФыбораФайла.ПолноеИмяФайла;
    КонецЕсли;
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Выбор каталога</div></div><div class="sp-body"><div class="sp-content">
    Код ( (Unknown Language)):
    ДиалогФыбораФайла                                    =Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога);

    Если ДиалогФыбораФайла.Выбрать() Тогда
    Элемент.Значение = ДиалогФыбораФайла.ПолноеИмяФайла;
    КонецЕсли;
     
  11. Darlock

    Darlock Well-Known Member
    1C Team

    Репутация:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    560
    Симпатии:
    1
    Разницы никакой, все отличие в доступных изначально кнопках работы с полем.
     
  12. Nikolon

    Nikolon Гость

    Репутация:
    0
    У полявыбора нельзя менять тип данных, он стоит произвольный, а я все бился как его сделать строковым=) Блин аж стыдно))) Такая легкая задачка а я... Спасибо всем за помощь, буду дальше биться об стену=))) Ибо овны не сдаются=)
     
  13. Nikolon

    Nikolon Гость

    Репутация:
    0
    Все сделал, все работает, с dbf файлом проблем не было, а вот с диалогами помучился, зато в будущем будет прок=). Спасибо за помощь. Если кому то надо пишите в личку, скину модуль.
     
Загрузка...

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