
Два DCT или как?
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Полимат
- Сообщения: 1830
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 28 раз
- Поблагодарили: 10 раз
Два DCT или как?
Есть программа A1 (app+dct) в которой обрабатываются и хранятся данные. Данные из программы A1 надо залить в интернет магазин B1. Пишем модуль для данного интернет магазина С1. Так как интернет магазины (С1....С10) и структура данных в них разные, то приходится писать разные модули в зависимости от БД интернет магазина. Хочется не засорять DCT A1, как разъединить данные которые используются в С1 с интернет магазином при том, что некоторые данные С1 использует из DCT А1? Возможно Вы сталкивались с данной проблемой, буду рад увидеть Ваши варианты. 

“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Два DCT или как?
Логично предположить, что нужен некий универсальный файл обмена данными (формат TPS, TXT, XML - не важно),
который описан в словарях A1 и C1-C10. Программные модули A1 и С1-С10 выполняют обмен данными через этот файл
(загружают/выгружают данные в/из свою структуру БД). В этом случае вообще параллельно, какая структура данных (DCT)
используется в модулях A1 и C1-C10.
Опционально:
1. А если для файла обмена данными используется некий универсальный формат (TXT, CSV, XML, SQLite и т.д.), то в общем-то
все равно и на каких языках программирования написаны программы A1 и C1-C10, какой формат БД используют и под какими операционными системами они работают (Windows, Android, iOS и т.д.)
2. Если для файла обмена данными используется ЭЦП, хеш и / или шифрование - это гарантирует достоверность обмена данными.
Наверно так. Но это придумано очень давно (и конечно же не мною).
Например, Вы работу этой схемы наблюдаете, когда выгружаете платежки в клиент-банк, передаете сведения в ФНС или ПФР ...
который описан в словарях A1 и C1-C10. Программные модули A1 и С1-С10 выполняют обмен данными через этот файл
(загружают/выгружают данные в/из свою структуру БД). В этом случае вообще параллельно, какая структура данных (DCT)
используется в модулях A1 и C1-C10.
Опционально:
1. А если для файла обмена данными используется некий универсальный формат (TXT, CSV, XML, SQLite и т.д.), то в общем-то
все равно и на каких языках программирования написаны программы A1 и C1-C10, какой формат БД используют и под какими операционными системами они работают (Windows, Android, iOS и т.д.)
2. Если для файла обмена данными используется ЭЦП, хеш и / или шифрование - это гарантирует достоверность обмена данными.
Наверно так. Но это придумано очень давно (и конечно же не мною).

Например, Вы работу этой схемы наблюдаете, когда выгружаете платежки в клиент-банк, передаете сведения в ФНС или ПФР ...
Make Clarion Great Again ! 
-
- Полимат
- Сообщения: 1830
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 28 раз
- Поблагодарили: 10 раз
Два DCT или как?
Наверное Вы правы, насчет промежуточного файла, я банально думал, что лучше напрямую. Привычка знаете...Игорь Столяров писал(а):Логично предположить, что нужен некий универсальный файл обмена данными (формат TPS, TXT, XML - не важно),
который описан в словарях A1 и C1-C10. Программные модули A1 и С1-С10 выполняют обмен данными через этот файл
(загружают/выгружают данные в/из свою структуру БД). В этом случае вообще параллельно, какая структура данных (DCT)
используется в модулях A1 и C1-C10. ...

“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
-
- ✯ Ветеран ✯
- Сообщения: 1040
- Зарегистрирован: 08 Июль 2005, 6:48
- Откуда: Россия
- Поблагодарили: 1 раз
Два DCT или как?
когда-то на форуме уже было что-то такое...
вот нашел навскидку http://forum.clarionlife.net/phpbb/view ... 0%B8%D0%BD
http://forum.clarionlife.net/phpbb/view ... D&start=15
вот нашел навскидку http://forum.clarionlife.net/phpbb/view ... 0%B8%D0%BD
http://forum.clarionlife.net/phpbb/view ... D&start=15
- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Два DCT или как?
У нас обратная ситуация (импорт из х.з. чего в нашу базу), так просто вручную все файлы объявлены в той dll что используется для интеграции и всё. С импортируемыми файлами ведь не надо работать через ABC-классы в общем случае. А еще есть DynaLib, с ней вообще ничего заранее объявлять не нужно
P.S. Я бы не рекомендовал делать приложения С1 - С10. Лучше сделать одно, а внутри кейсы
P.S. Я бы не рекомендовал делать приложения С1 - С10. Лучше сделать одно, а внутри кейсы
Последний раз редактировалось RaFaeL 14 Февраль 2016, 12:44, всего редактировалось 1 раз.
- Игорь Столяров
- Ветеран движения
- Сообщения: 8090
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 29 раз
- Поблагодарили: 98 раз
Два DCT или как?
В контексте обмена данными - есть давняя и нереализованная мечта .... (мозгов не хватает).
Если бы можно было в программе A сформировать In-Memory таблицу и записать ее как область памяти в бинарный файл,
а в программе B загрузить этот бинарный файл в память и присвоить ему указатель на In-Memory таблицу - это было бы супер.
Никто не умеет, случайно, делать такой пассаж ?
Или хотя бы такой же ход с QUEUE ... 
Если бы можно было в программе A сформировать In-Memory таблицу и записать ее как область памяти в бинарный файл,
а в программе B загрузить этот бинарный файл в память и присвоить ему указатель на In-Memory таблицу - это было бы супер.
Никто не умеет, случайно, делать такой пассаж ?


Make Clarion Great Again ! 
- Дед Пахом
- Старичок
- Сообщения: 3306
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 51 раз
- Контактная информация:
- Губин Игорь
- Шубуршун
- Сообщения: 2599
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 27 раз
Два DCT или как?
Угу. JSON в помощь

К сожалению, сохранение In-memory файла в виде буфера не реализовано велосипедистами. То ли из-за лени, то ли из-за того, что сразу была принята неправильная идеология.
Это я только кажусь дураком! На самом деле я полный идиот!
-
- Полимат
- Сообщения: 1830
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 28 раз
- Поблагодарили: 10 раз
Два DCT или как?
Я бы рад, но как это вообще без описания в DCTRaFaeL писал(а):P.S. Я бы не рекомендовал делать приложения С1 - С10. Лучше сделать одно, а внутри кейсы

Тоже мозгов не хватаетИгорь Столяров писал(а):Если бы можно было в программе A сформировать In-Memory таблицу и записать ее как область памяти в бинарный файл,а в программе B загрузить этот бинарный файл в память и присвоить ему указатель на In-Memory таблицу - это было бы супер.Никто не умеет, случайно, делать такой пассаж ?Или хотя бы такой же ход с QUEUE ...

“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5321
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Два DCT или как?
Ммм... Стесняюсь спросить, а нафига выходные структуры для интернет-магазинов описывать в dct?
C6/C12, ШВС, tps/btrieve.
-
- ✯ Ветеран ✯
- Сообщения: 5190
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 11 раз
- Поблагодарили: 26 раз
Два DCT или как?
Можно описание таблиц не делать в dct, а сделать в теле программы. Допустим, название таблицы одно, а структура разная в зависимости от условий.gopstop2007 писал(а):Я бы рад, но как это вообще без описания в DCT
We are hard at work… for you. 

- RaFaeL
- ✯ Ветеран ✯
- Сообщения: 1412
- Зарегистрирован: 24 Март 2009, 17:59
- Откуда: НН
- Благодарил (а): 12 раз
- Поблагодарили: 2 раза
- Контактная информация:
Два DCT или как?
Ну так, в глобал ембедс пишешь структуру FILE
Если руками сразу описать сложно, то сначала делаешь описание в dct, генерируешь приложение, лезешь в основной clw что он тебе нагенерил, копируешь оттуда описание файла
Вот тут вставки, каждая условно для одного из "интернет-магазинов", в dct этих файлов нет, используются только в этой dll
Последний раз редактировалось RaFaeL 15 Февраль 2016, 18:25, всего редактировалось 1 раз.
-
- Полимат
- Сообщения: 1830
- Зарегистрирован: 25 Март 2009, 21:55
- Благодарил (а): 28 раз
- Поблагодарили: 10 раз
Два DCT или как?
Стесняюсь ответитьfinsoftrz писал(а):Ммм... Стесняюсь спросить, а нафига выходные структуры для интернет-магазинов описывать в dct?



названия таблиц могут тоже отличатьсяkreator писал(а):Можно описание таблиц не делать в dct, а сделать в теле программы. Допустим, название таблицы одно, а структура разная в зависимости от условий.
“Есть всего 2 типа языков: те, на которые все жалуются и те, которыми никто не пользуется.” — Бьерн Страуструп
- Губин Игорь
- Шубуршун
- Сообщения: 2599
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Благодарил (а): 3 раза
- Поблагодарили: 27 раз
Два DCT или как?
Если я правильно понял проблему, то вынеси весь интерфейс к БД магазина в отдельный DLL с неким универсальным "АПИ".
Тогда адаптация будет заключаться в написании очередной прокладки, без изменения самой основной задачи.
Тогда адаптация будет заключаться в написании очередной прокладки, без изменения самой основной задачи.
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 5321
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 12 раз
- Поблагодарили: 65 раз
Два DCT или как?
А зачем какие-то структуры использовать? Обмен с интернет-магазином обычно делается через csv или xml файлы. На крайний случай, если нужно буферизировать, можно использовать обычные локальные или app-шные очереди. Для своих интернетовских модулей я предпочитаю сразу создавать sqlite файлы в том виде, как они используются в вебе. Но это если все в своих руках - во много раз быстрее и проще...
C6/C12, ШВС, tps/btrieve.