AXForum  
Вернуться   AXForum > Microsoft Dynamics NAV > NAV: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.04.2009, 17:05   #1  
Mouse_imported is offline
Mouse_imported
Участник
 
4 / 10 (1) +
Регистрация: 15.04.2009
Thumbs up
Делаю выгрузку из/в Nav (4 SP3) из/в 1С и др. корпоративного софта. Большая часть ПО на SQL, по этому устраивать синхронизацию данных проще директно в SQL ( собственный сервис анализирующий изменения в базах данных и синхронизирующий базы по мере необходимости )

Собственно вопрос :
1. Исходя из какого параметра ( или где он счетчик хранит ) берется ключевое значение в поле No_ в таблице клиентов ( да и контактов )? На сколько я заметил, Nav не анализирует наличие/отсутствие ключа, он просто берет откуда то это число и плюсует 1. Т.е. добавив прямо в таблицу клиента при попытке добавить его в Nav он рявкнет, что запись уже существует.
2. При добавлении клиента я вношу данные в таблицу <company>$Customers ( и <company>$Contact соответственно для контактов). Какие еще связи нужно учесть, где и что добавить для корректного импорта данных по клиенту и по контактам?
3. Есть ли связь между клиентами и контактами? Если да, то как верно вносить тех и других?

Спасибо.
Старый 15.04.2009, 17:53   #2  
prefreitor is offline
prefreitor
Участник
 
214 / 11 (1) +
Регистрация: 03.10.2006
При создании нового клиента используется заданная серия номеров, т.е система запоминает последний использованный номер.
Получается что вы через SQL создали новую запись, но при этом не отработала соответствующая бизнес - логика в самой системе (не изменился последний использованный номер). Потом вы в системесоздаете новую запись, система смотрит последний использованный номер, увеличивает его и пытается вставить запись, а такая уже есть). Нужно смотреть что происходит в триггере OnInsert, какие таблицы еще затрагиваются, какие проверки происходят...
Старый 15.04.2009, 18:19   #3  
Forward is offline
Forward
Участник
 
101 / 10 (1) +
Регистрация: 21.05.2007
Все же проще загружать через navision, избавитесь от многих головных болей, особенно стоит учесть этот совет, если возникают вопросы, какие связи между таблицами существуют (можно посмотреть связи открыв таблицы в нав).
Старый 16.04.2009, 10:47   #4  
Mouse_imported is offline
Mouse_imported
Участник
 
4 / 10 (1) +
Регистрация: 15.04.2009
:(
Да, подгружать в нем самом безусловно надежнее, но суть в том, что данные в сторонних приложениях обновляются практически каждую минуту, по этому я пока не вижу другого пути

Может подскажите наиболее правильный путь по вот такой задаче :

Существует серия приложений :
* 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  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от Mouse Посмотреть сообщение
...по этому устраивать синхронизацию данных проще директно в SQL...
Поверьте, с NAV это не проще. Отработку всех триггеров вы все равно не сможете эмулировать.

Некий средний способ может быть следующий:
1. Создаете буферную таблицу в NAV
2. Заполянете ее через SQL вашим анализатором
3. Запускаете пакетное задание в NAV (проще всего при помощи Application Server'а), которое вставляет данные в нужную таблицу, при этом запуская все ее необходмые триггеры

P.S. В принципе можно обойтись без таблицы, если загружать данные, например, из файла тем же NAS.
Старый 16.04.2009, 11:23   #6  
Mouse_imported is offline
Mouse_imported
Участник
 
4 / 10 (1) +
Регистрация: 15.04.2009
Т.е. получаем следующее :

1С -> подает актуальные данные в центральный сервис
Nav -> подает актуальные данные в центральный сервис
Сервис все это обмазговывает, прихватывая данные от остальных систем и формирует пакеты исполнения для 1C и Nav и отправляет им их
1С -> обмозговывает полученные данные и вносит изменения в свою базу
Nav -> обмозговывает данные и вносит изменения в свою

Так?
Старый 16.04.2009, 12:39   #7  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Именно.
Старый 16.04.2009, 16:28   #8  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
искренне желаю автору удачи!
жуткий зверь получится!
Старый 16.04.2009, 16:31   #9  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
Цитата:
Сообщение от Mouse Посмотреть сообщение
3. Есть ли связь между клиентами и контактами? Если да, то как верно вносить тех и других?
таблица Contact Business Relation. последовательность создания не важна (сам Нав работает как с клиентами без контактов, так и с контактами без клиентов)
Старый 16.04.2009, 17:24   #10  
Mouse_imported is offline
Mouse_imported
Участник
 
4 / 10 (1) +
Регистрация: 15.04.2009
Спасибо за ответы)
 


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:08.