15.04.2009, 17:05 | #1 |
Участник
|
Делаю выгрузку из/в Nav (4 SP3) из/в 1С и др. корпоративного софта. Большая часть ПО на SQL, по этому устраивать синхронизацию данных проще директно в SQL ( собственный сервис анализирующий изменения в базах данных и синхронизирующий базы по мере необходимости )
Собственно вопрос : 1. Исходя из какого параметра ( или где он счетчик хранит ) берется ключевое значение в поле No_ в таблице клиентов ( да и контактов )? На сколько я заметил, Nav не анализирует наличие/отсутствие ключа, он просто берет откуда то это число и плюсует 1. Т.е. добавив прямо в таблицу клиента при попытке добавить его в Nav он рявкнет, что запись уже существует. 2. При добавлении клиента я вношу данные в таблицу <company>$Customers ( и <company>$Contact соответственно для контактов). Какие еще связи нужно учесть, где и что добавить для корректного импорта данных по клиенту и по контактам? 3. Есть ли связь между клиентами и контактами? Если да, то как верно вносить тех и других? Спасибо. |
|
15.04.2009, 17:53 | #2 |
Участник
|
При создании нового клиента используется заданная серия номеров, т.е система запоминает последний использованный номер.
Получается что вы через SQL создали новую запись, но при этом не отработала соответствующая бизнес - логика в самой системе (не изменился последний использованный номер). Потом вы в системесоздаете новую запись, система смотрит последний использованный номер, увеличивает его и пытается вставить запись, а такая уже есть). Нужно смотреть что происходит в триггере OnInsert, какие таблицы еще затрагиваются, какие проверки происходят... |
|
15.04.2009, 18:19 | #3 |
Участник
|
Все же проще загружать через navision, избавитесь от многих головных болей, особенно стоит учесть этот совет, если возникают вопросы, какие связи между таблицами существуют (можно посмотреть связи открыв таблицы в нав).
|
|
16.04.2009, 10:47 | #4 |
Участник
|
Да, подгружать в нем самом безусловно надежнее, но суть в том, что данные в сторонних приложениях обновляются практически каждую минуту, по этому я пока не вижу другого пути
Может подскажите наиболее правильный путь по вот такой задаче : Существует серия приложений : * Navision 4 SP3 * 1C 7.7 да еще и не SQL версии ( с переходом на 8.1 со следующего года ) * Внутренняя система управления задачами ( дикий ужас под названием "Мотив"... доступ к данным которого еле-еле по SQL ( FireBird ) + XML запросы по HTTP ) * Альта ( система декларирования ГТД, работает по SQL ) * Ну и сторонние сервисы, которые тоже могут вносить изменения ( SharePoint, Web-сайт, PDA решения и т.п. безобразие ) Вот. Все это нужно объеденить так, чтобы при появлении новых данных или изменений в существующих в любом из приложений ( основные это 1с и Nav ) изменения в их базах синхронизировались. Я слегка в шоке от задачи, но с руководством спорить сложно. Как, по вашему мнению, это все лучше организовать? В целом я с Nav работаю совсем недавно, но разобратся, думаю, не проблема. Есть хорошие навыки в C/C++, Delphi, SQL, 1C и много чем еще... по этому написать "разумный" сервис - не проблема, проблема понять как это все логически скрутить воедино с учетом, что синхронизация может проходить в любом направлении ( как от Nav к 1c так и обратно, при этом зацепляя Мотив и подгружая данные из системы декларирования ) вот такая жуть Всем откликнувшимся большое такое спасибо |
|
16.04.2009, 11:07 | #5 |
Участник
|
Поверьте, с NAV это не проще. Отработку всех триггеров вы все равно не сможете эмулировать.
Некий средний способ может быть следующий: 1. Создаете буферную таблицу в NAV 2. Заполянете ее через SQL вашим анализатором 3. Запускаете пакетное задание в NAV (проще всего при помощи Application Server'а), которое вставляет данные в нужную таблицу, при этом запуская все ее необходмые триггеры P.S. В принципе можно обойтись без таблицы, если загружать данные, например, из файла тем же NAS. |
|
16.04.2009, 11:23 | #6 |
Участник
|
Т.е. получаем следующее :
1С -> подает актуальные данные в центральный сервис Nav -> подает актуальные данные в центральный сервис Сервис все это обмазговывает, прихватывая данные от остальных систем и формирует пакеты исполнения для 1C и Nav и отправляет им их 1С -> обмозговывает полученные данные и вносит изменения в свою базу Nav -> обмозговывает данные и вносит изменения в свою Так? |
|
16.04.2009, 12:39 | #7 |
Участник
|
Именно.
|
|
16.04.2009, 16:28 | #8 |
Administrator
|
искренне желаю автору удачи!
жуткий зверь получится! |
|
16.04.2009, 16:31 | #9 |
Administrator
|
|
|
16.04.2009, 17:24 | #10 |
Участник
|
Спасибо за ответы)
|
|