Имя: Пароль:
1C
 
Выгрузка в формат DBF типы данных
0 falselight
 
31.07.18
11:50
Создаю объект XBASE для выгрузки справочника номенклатура.
Подскажите пожалуйста. В типах полей может быть только строка или число?
Так как в выгрузке есть и тип справочник и число и дата и строка.


    БД = Новый XBase;
    БД.Поля.Добавить("Name",      "S",30);
    БД.Поля.Добавить("Maker",     "S",30);
    БД.Поля.Добавить("Country",   "S",30);
    БД.Поля.Добавить("Fas",       "N",6,0)
    БД.Поля.Добавить("Price",     "N",6,0)
    БД.Поля.Добавить("Price_min", "N",6,0)  
    БД.Поля.Добавить("Price_max", "N",6,0)
    БД.Поля.Добавить("Kol_vo",    "N",6,0)
    БД.Поля.Добавить("Date_god",  "N",6,0)
    БД.Поля.Добавить("Pr_ree",    "N",6,0)
    БД.Поля.Добавить("Kod",       "N",6,0)
    БД.Поля.Добавить("Seria",     "N",6,0)
    БД.Поля.Добавить("Zakaz_min", "N",6,0)
    БД.Поля.Добавить("Zakaz_krat","S",30);
    БД.Поля.Добавить("Ean13",     "S",30);
    БД.Поля.Добавить("Cnote",     "S",30);
1 1Сергей
 
31.07.18
11:51
Дата может быть. открой СП
2 Вафель
 
31.07.18
11:53
справочник нужно выгружать по ключевым полям - это если только для поиска, для создания - все поля в отдельные колонки
3 falselight
 
31.07.18
12:27
(2) Ну я так и делаю в (0). В отдельные колонки.
Но в колонках задается тип.
"S" строка.
"N" число.

Так ведь?
4 Lexey_
 
31.07.18
12:37
(3) СП читал уже?
5 falselight
 
31.07.18
12:38
Читал, понял. Делаю.
6 Garykom
 
гуру
31.07.18
12:50
Не забудь уточнить кодировку DBF - чтобы потом не было мучительно больно и что делать с ограничениями на длину строковых полей ))
7 1Сергей
 
31.07.18
12:54
(6) +
Ещё есть ограничение на имя файла
8 stix2010
 
31.07.18
13:55
Выгружай в xml будет легче
9 falselight
 
31.07.18
18:43
(8) Задача выгрузить именно в .dbf.

(7) А какое подскажите? Пока у меня пишет ошибку, длина имени файла превысила 8 символов.
10 Cool_Profi
 
31.07.18
19:11
(9) ты не поверишь - 8 символов....
11 Garykom
 
гуру
31.07.18
19:21
(10) + 3 символа расширения
12 falselight
 
01.08.18
06:30
(10)(11) Мда, прикольно. Это я и подозревал.
Странно от чего такой геморизм????
13 Скиурус
 
01.08.18
06:42
Такой геморизм от того, что формату DBF больше лет чем тебе.
14 falselight
 
01.08.18
06:48
(13) Понял. Ну задача делать именно в нем.
По этому зачем то это нужно видимо.

Подскажите по такому вопросу. В Номенклатуре, есть реквизит
описание. Строка 1024 символа.
Преобразую к 200.

БД.Cnote      = СРЕД( Выборка.Описание,1, 200) ;

Все равно в выгруженном поле, что то искареженное.
Как это можно выгружать? Какие тут ограничения?
15 Cool_Profi
 
01.08.18
06:55
(14) Во первых лучше делать ЛЕВ, а во-вторых кодировку файла проверь при создании
16 falselight
 
01.08.18
07:18
(15) А я её не задавал. Да помню говорили что нужно.
Сейчас посмотрю.
17 falselight
 
01.08.18
07:24
Сделал так БД.Cnote      = ЛЕВ( Выборка.Описание, 200) ;

Но там все равно строка получилась очень обрезанная.
Все не уместится да?

Кодировку поставил БД.Кодировка = КодировкаXBase.OEM;
18 Cool_Profi
 
01.08.18
07:34
(17)  БД.Поля.Добавить("Cnote",     "S",30);
А ты туда хочешь 200 запихнуть. Это как в один гранёный стакан налить 2 по 200...
19 falselight
 
01.08.18
07:47
Ну так написать многое могут же там.
Что возможно максимально?
20 Мимохожий Однако
 
01.08.18
07:52
(19) В СП что написано?
21 Salimbek
 
01.08.18
07:53
(19) Тебе тонко намекают в (18), что ты задал это поле длиной в 30 символов, и от того, что ты пытаешься туда строку длиной в 200 засунуть, все равно больше 30 туда не влезет. Чтобы влезло 200 - надо сначала сделать так: БД.Поля.Добавить("Cnote",     "S",200);
22 falselight
 
01.08.18
07:54
(21) (18) А понял!
Попробую.
Спасибо!