Имя: Пароль:
1C
1С v8
Обмен данными посредством dbf
,
0 Wefast
 
29.10.18
08:48
Есть некая база(не обязательно 1С)

Есть новая самописная база на 1С

Нужно сделать периодическую загрузку из dbf файла.

Например загружать документ. В ней есть номенклатура.

Если этой номенклатуры нет в базе, то создавать ее

Т.е. нужно вместе с документом выгружать и справочную информацию в нем целиком.

Как это вообще сделать удобнее и правильнее?

Dbf же по сути таблица.

Делать Миллион колонок?
Документ | Номенклатура| ТипНоменклатуры | КодНоменклатуры | ВидТипаНоменклатуры | Контрагент | ИНН Контрагента | ТипКонтрагета и .т.д

Т.е. в одну строку все все данные. Или может как то еще?

Или лучше получить выгрузку в отдельный файл по каждому справочнику.
Считывать их все и при обходе файла с документами обращаться к файлам выгрузки справочника?
1 lodger
 
29.10.18
08:52
(0) чем вам json или xml не мил?
2 Cool_Profi
 
29.10.18
09:03
(1) Зачем использовать это убожество?
(0)
Сделай несколько файлов. Ибо контрагент один, а документов много.. Так же и с номенклатурой.
3 Остап Сулейманович
 
29.10.18
09:13
(0) Я бы отказался от ДБФ. Оно обалденно подходит для плоских таблиц. Но для сложных структур народ уже давно придумал ХМЛ.
4 Cool_Profi
 
29.10.18
09:14
(3) ХМЛ не нужен. Для таких задач - это убожество
5 Garikk
 
29.10.18
09:15
по нынешним временам, это dbf убожество
хотя на больших объемах данных он незаменим
6 Остап Сулейманович
 
29.10.18
09:23
(4) (5) Не нужно меряться 22 см.
Каждый из ДБФ vs ХМЛ имеет свою сферу применения.
Например ДБФ отлично индексируется в отличии от ХМЛ. Но ДБФ абсолютно не подходит для хранения сложных структур в одном месте. Там для этого - для каждой сущности своя таблица, реляционные зависимости, ссылочная целостность, триггеры...
Короче для передачи сложных структур данных лучше ХМЛ (и потомок его JSON) пока ничего не придумали.
7 Cool_Profi
 
29.10.18
09:24
(6) А зачем сложные структуры хранить в одном месте? 3НФ уже отменили?
8 Остап Сулейманович
 
29.10.18
09:26
(7) Например для передачи целостного пакета в случае обмена.
ЗЫ. Что есть ЗНФ?
9 Остап Сулейманович
 
29.10.18
09:27
+ (8) 3-я нормальная форма?
10 Cool_Profi
 
29.10.18
09:36
(8) Обмен должен быть транзакционным. Или всё, или ничего.
(9) да
11 Wefast
 
29.10.18
15:29
Как с помощью xml сделать то же самое в ручную не представляю.
И какая при этому должна быть структура файла.

Пока я склоняюсь к конвертации и написанию правил, если у клиента будет 1С база источник. С ней я более менее знаком.

Потому как в требованиях что дошли до меня указано именно использование DBF
12 kubik_live
 
29.10.18
16:05
(0) 6 лет назад разработал обмен между нетиповыми и типовыми базами, используя DBF.
Основное преимущество: скорость обмена, просмотр и анализ файлов обмена.
13 Garykom
 
гуру
29.10.18
16:13
(0) Тебя кто заставляет в один dbf все пихать?

Сделай несколько файлов разной структуры, по сути передаешь часть базы (как оно в 1С 77 когда то хранилось).

Т.е. реквизиты шапки/справочника одни, табличные части другие dbf файлики.
14 kubik_live
 
29.10.18
16:14
(13) +1
15 ZDenis
 
29.10.18
16:16
(13) тогда не понятно что передается и где это искать.Хорошо если всегда одно и тоже, тогда - да, а если структура всегда разная?
16 Garykom
 
гуру
29.10.18
16:18
Но я бы извратился похуже (но только для прикола чтобы соблюсти "обмен через DBF"):

Засовывал бы стандартный XML (да еще и сжатый в ZIP) в строки в DBF (учитывая ограничения на длину строковых полей в 254 с разбивкой по полям;)
17 kubik_live
 
29.10.18
16:19
(15) Создать файл типа ддэшника (хочешь тоже дбф), описывющего перечень выгружаемых данных
18 Garykom
 
гуру
29.10.18
16:20
(16)+ Кстати там еще фишка в dbf что в строках можно хранить и непечатные символы (любые коды аскии) но вот работать с ними большинством штатных методов не выйдет и придется свой драйвер dbf ваять или foxpro досовский брать ))
19 kubik_live
 
29.10.18
16:21
+(17) перечень = состав файлов
20 VladZ
 
29.10.18
16:21
(0) Почему именно dbf?
21 opus70
 
29.10.18
16:21
лучше разбирайся с xml или json
сам когда то был ярым стороником dbf но сложные структуры однозначно проще через xml или json
22 VladZ
 
29.10.18
16:22
+20 Если в одном "пакете данных" нужно передавать разнородные данные - я бы использовал XML.
23 Гад
 
29.10.18
16:27
я в тхт обмен делал
24 Wefast
 
29.10.18
16:33
(20) такое требование заказчика
(17) Можно пример?
В одном файле я выгружаю документ
Номер документа | КодКонтрагента | КодНоменклатуры | Сумма
В другом файле я храню Контрагентов, а в третьем номенклатуру.

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

Правильно? Что за "файл типа ддэшника "?

(22) Как? Какова структура?
Вложенность "бесконечная"?
Т.е. если "Свернуть" по документу теги, то внутри будет вся нужная информация?
25 Wefast
 
29.10.18
16:34
(24) А можно справочники сначала все загрузить. А потом документы. И в документе уже будет доступна вся информация из базы.
26 Wefast
 
29.10.18
16:35
Т.к. база будет самописная, ее структура и количество метаданных не очень большое. Какая ни-будь номенклатура будет состоять из 2-3 реквизитов.
27 kubik_live
 
29.10.18
16:52
(24)
Перенос данных из 1С 7.7 Камин-Общепит:
дбф - файл (состав данных: товары, рецептура, остатки товаров)

ISTOTAL    MODE    SUBMODE    DATA1    DATA2    DOCID    DOCTYPE    REFTYPE    TIMEUP    VERSION
0    1    0    01.10.2018    01.10.2018        Остатки4101            2.0.2.
0    1    0    01.10.2018    01.10.2018        Рецептура            2.0.2.
0    1    0    01.10.2018    01.10.2018            Товары        2.0.2.
1    0    0    01.10.2018    01.10.2018                11.10.18 11:00:53    2.0.2.