Импорт каталога из дбф

Импорт каталога из дбф

Сообщение Aleksey » 12 июл 2010, 00:37

В мастере импорта можно указать загрузку из файла отличного от XLS (ексель), например из дбф. Но при этом нигде не описан формат и требования к этому файлу. Во встроенной справки только требования к содержанию Excel-файла. А учитывая что у DBF - имя поля максимум 11 байт, то вряд ли получиться назвать столбец "Наименование товара" или "Стоимость товара"

Поэтому вопрос, где можно ознакомиться с требованиям к содержанию Dbf-файла?
Aleksey
 
Сообщения: 75
Зарегистрирован: 04 июн 2010, 13:15

Re: Импорт каталога из дбф

Сообщение SInteZ » 12 июл 2010, 11:50

Добрый день.
Каких либо особых требований к формату dbf нет. Импорт универсальный.
Основное требовани: наличие связанных полей "код товара", "наименование", "цена".
Названия столбцов никакой функциональной нагрузки не несут.
Поэтому можно называть поля как Вам будет удобней.

Чтобы загрузить много вложенных разделов необходимо создавать в файле dbf
над списком товаров запись с именем группы.
Остальные поля в этой записи должны быть пустые.
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42

Re: Импорт каталога из дбф

Сообщение Aleksey » 13 июл 2010, 21:23

Получилась вот такая универсальная процедура для 7-ки. Может кому пригодиться
На вход подается ТЗ с нашими данными и путь куда сохранить ДБФ файл. На выходе мы получаем готовый файл, которые можно загрузить в eorder например через командную строку вида eOrder4.exe /Login="Base" /User="User" /pass="pass" /importprice="ImportDBF" /logfile="eorder.log"


P.S. как на этом форуме нормально отформатировать текст?


Процедура СохранитьТЗвБДФ(ТЗ, Файл, Кодировка = 0)
ДБФ = СоздатьОбъект("xbase");
ДБФ.КодоваяСтраница(Кодировка);

Для й=1 по ТЗ.КоличествоКолонок() Цикл
Тип="";Длина=0;Точность=0;
Имя=ТЗ.ПолучитьПараметрыКолонки(й,Тип,Длина,Точность);
Если Тип="Строка" Тогда
Тип = "S";
Если Длина = 0 Тогда
Длина = 100;
КонецЕсли;
Точность = 0;
ИначеЕсли Тип="Число" Тогда
Тип = "N";
Если Длина = 0 Тогда
Длина = 15;
Точность = 3;
КонецЕсли;
ИначеЕсли Тип="Дата" Тогда
Тип = "D";
Длина = 0;
Точность = 0;
Иначе
Тип = "S";
Длина = 100;
Точность = 0;
КонецЕсли;

ДБФ.ДобавитьПоле(Имя, Тип, Длина, Точность);
КонецЦикла;
ДБФ.СоздатьФайл(Файл);

КК=ТЗ.КоличествоКолонок();
Для Стр=1 по ТЗ.КоличествоСтрок() Цикл
Состояние("Сохраняем в дбф "+100*окр(стр/ТЗ.КоличествоСтрок(),2)+"%");
ДБФ.Добавить();
Для Кол=1 по КК Цикл
ДБФ.УстановитьЗначениеПоля(Кол,ТЗ.ПолучитьЗначение(стр,Кол));
КонецЦикла;
ДБФ.Записать();
КонецЦикла;
ДБФ.ЗакрытьФайл();

КонецПроцедуры
Aleksey
 
Сообщения: 75
Зарегистрирован: 04 июн 2010, 13:15

Re: Импорт каталога из дбф

Сообщение SInteZ » 13 июл 2010, 23:35

Aleksey писал(а):Получилась вот такая универсальная процедура для 7-ки. Может кому пригодиться
На вход подается ТЗ с нашими данными и путь куда сохранить ДБФ файл. На выходе мы получаем готовый файл, которые можно загрузить в eorder например через командную строку вида eOrder4.exe /Login="Base" /User="User" /pass="pass" /importprice="ImportDBF" /logfile="eorder.log"


P.S. как на этом форуме нормально отформатировать текст?


Алексей, спасибо за ваш полезный пример!
Думаю, кому-нибудь он пригодится.
Прошу прикрепите его к посту в виде вложения (текстового файла или файла обработки 1с).
Длинный текст в теме не есть хорошо.
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42

Re: Импорт каталога из дбф

Сообщение Aleksey » 16 июл 2010, 01:56

Все такие не получается автоматически создать структуру каталога из дбф. Ошибку пишет "Не задан раздел для импортируемого списка товаров!"

Прикрепил файла который пытаюсь загрузить
Вложения
data.7z
Пример файл который пытаюсь загрузить
(249 байт) Скачиваний: 422
Aleksey
 
Сообщения: 75
Зарегистрирован: 04 июн 2010, 13:15

Re: Импорт каталога из дбф

Сообщение SInteZ » 16 июл 2010, 16:32

Похоже проблема в том, что в поле цены указано значение. ноль тоже считается.
и программа думает, что это товар.
Когда программа распознает раздел, она подсветит его зеленым фоном.

Попробуйте атрибут цены в строковое поле переделать
или сделать чтобы NULL значения принимались, а не 0.
«Электронный заказ» - программа для создания каталога товаров и услуг, интернет-магазина
SInteZ
Администратор
 
Сообщения: 109
Зарегистрирован: 29 мар 2010, 09:42

Re: Импорт каталога из дбф

Сообщение LostMicos » 31 июл 2011, 12:34

Доброго времени суток.

Про DBF, пробовал разные способы выгрузки из 7.7 вплоть до поиска внешних компонент для работы с DBF, ничего не вышло, из 1С 7.7 для выгрузки этот формат не подходит, т.к. вопрос не решается штатными средствами.
Для выгрузки использую исключительно csv, по времени обработки не уступает DBF, и "нет проблемы" с записью NULL значения в числовую колонку.
Хочу заметить что строковые значения нет необходимости заключать в "", т.к. кавычки не обрабатываются корректно и частично выводятся вместе со значением строковых переменных.
Подходит формат например:

00000089;TYU-YYY0009;Имя товара;1;12,56; и так далее. Главное не забывать программно удалять символ-разделитель из строк перед выгрузкой ;)

Максим.
LostMicos
 
Сообщения: 7
Зарегистрирован: 21 июл 2011, 19:25

Re: Импорт каталога из дбф

Сообщение Aleksey » 17 янв 2012, 01:21

А чем встроенная xbase не подходит? Тем более код рабочий

А над csv, спасибо за идею, как оплатим попробую через csv замутить
Aleksey
 
Сообщения: 75
Зарегистрирован: 04 июн 2010, 13:15


Вернуться в Общие вопросы и пожелания

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron