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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.05.2002, 00:23   #1  
Дмитрий is offline
Дмитрий
Участник
 
11 / 10 (1) +
Регистрация: 15.05.2002
генерирование RecId
может кто эксперементировал в этом направлении?
интересует возможность инсерта в таблицы Ах из "посторонних"
источников, т.е. непосредственно в базу. возможно ли искуственно
генерировать RecId после инсерта?
можно конечно создавать n пустых записей Ах'ой а потом их update,
но это имхо громоздко.

Д.К.
Старый 31.05.2002, 16:43   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Экспериментировал. Следы привели к таблице UtilElements.

Посмотрел и плюнул:
1. это системнозависимая таблица. Решил в ней не копаться и к ней не привязываться.
2. так и не понял как она работает, если appl каталоги разные.

Решил заставлять Аксапту создавать записи через COM.
Может быть и зря. Но не уверен, что такие знания пригодятся в следующей версии.
Старый 10.06.2002, 15:12   #3  
skof is offline
skof
NavAx
NavAx Club
 
100 / 12 (1) ++
Регистрация: 09.01.2002
Адрес: РБ, Минск
В прошлом году мы разрабатывали систему синхронизации нескольких баз данных
Axapta, так что бы сама система "не видела" синхронизации, и решали эту проблему.
Вот выдержка из нашей документации по системе синхронизации:

В поле DataAreaId хранится идентификатор компании, к которой принадлежит данная запись в нашем случае это: «Hld», «Msk», «Pit» и «Tvr». В поле RecId хранится порядковый номер записи, который уникален во всех записях, принадлежащих одной компании во всех таблицах. Таким образом, сочетание этих полей дает уникальный ключ, который мы и будем применять.
Здесь необходимо знать о правилах присвоения значения поля RecID. Axatpa не пользуется никакими сервисами базы даных для вычисления нового номера в этом поле. Вместо этого она ведет таблицу SystemSequences следующей структуры:

Имя столбца | Тип | Значение по умолч. | NULL | Описание столбца.
ID | NUMBER(10) | 0 | NOT
NEXTVAL | NUMBER(10) | 0 | NOT | Начало следующего пула номеров
MINVAL | NUMBER(10) | 0 | NOT | Минимальный номер
MAXVAL | NUMBER(10) | 0 | NOT | Максимальный номер
CYCLE | NUMBER(10) | 0 | NOT | Номера по кругу
NAME | VARCHAR2(20) | ' ' | NOT | Наименование последовательности
TABID | NUMBER(10) | 0 | NOT
DATAAREAID | VARCHAR2(3) | 'dat' | NOT | Идентификатор компании
RECID | NUMBER(10) | | NOT | Номер записи

Работает AXAPTA с этой таблицей следующим образом:
1. При вставке первой записи в новую компанию система AXAPTA добавляет в таблицу SystemSequences запись. В поле DATAAREAID устанавливается значение равное идентификатору компании, а в поля MINVAL и NEXVAL записывается единица.
2. Сразу после этого система AXAPTA берет лот номеров (лот в данном случае это - несколько подряд идущих номеров, AXAPTA берет 25). И записывает в поле NEXTVAL следующий свободный номер – 26.
3. Заносит в таблицу, с которой все началось запись с RECID равным 1 и DATAAREAID равным идентификатору компании.
4. После того как номера в лоте заканчиваются, система AXAPTA снова читает таблицу SystemSequences, берет оттуда NEXTVAL как первый номер следующего лота. А в таблицу SystemSequences записывает значение NEXTVAL+25.
Таким образом AXAPTA решает две проблемы – каждый пользователь ведет свой лот номеров RECID и значения этого поля не пересекаются, второе – пользователь (вернее его приложение) обращается к таблице SystemSequences один раз на 25 операций вставки и таким образом не возникает ожидания из-за обращения всех к этой таблице.


Надеюсь понятно...
К сожалению таблица рассыпалась, но заинтересованные лица я думаю восстановят...
Старый 10.06.2002, 18:08   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Спасибо!!! Очень ценная информация.

Есть ли изменения в алгоритме в разных сервис-паках самой Аксапты?
Старый 10.06.2002, 18:13   #5  
Дмитрий is offline
Дмитрий
Участник
 
11 / 10 (1) +
Регистрация: 15.05.2002
Спасибо
Я уже потерял надежду на ответ. Приятно удивлен. Спасибо.

Д.К.
Старый 30.01.2003, 10:26   #6  
rdv is offline
rdv
Участник
 
24 / 10 (1) +
Регистрация: 21.01.2003
Цитата:
Изначально опубликовано skof
В прошлом году мы разрабатывали систему синхронизации нескольких баз данных
Axapta, так что бы сама система "не видела" синхронизации, и решали эту проблему.
Вот выдержка из нашей документации по системе синхронизации:
Не могли бы вы поподробнее рассказать о системе синхронизации?
Это что закачка данных нескольких компаний в одну базу? Или это репликация данных? Или что-то еще.
Вопрос в общем то в следующем: пока тонкий клиент работает по выделенной лини все хорошо. Но линия в любой момент может пропасть, всякое бывает!
Нужно обеспечить работоспособность клиента и все что он наизменял передать в центральную базу данных. Если же ремонт лини продолжается, например, больше суток, то следуют организовать передачу информации дискетами с курьером.
Решает ли ваша система эти задачи?
Старый 30.01.2003, 10:56   #7  
skof is offline
skof
NavAx
NavAx Club
 
100 / 12 (1) ++
Регистрация: 09.01.2002
Адрес: РБ, Минск
Поподробнее можно - система написана еще под Конкорд, разработана под Оракл, прерывания линий поддерживает, перенос на дискетах - с определенными ограничениями можно реализовать, требует наличие серверов баз данных на обоих концах линий, т.е. ваш тонкий клиент должен иметь на своем филиале сервер Оракл,
по своей сути данная система подобна репликации реализованной в MSSQL, но на момент своей разработки делала больше чем родная мелкомягкая репликация и наверное сейчас - таже ситуация...
Старый 30.01.2003, 12:04   #8  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Можно поподробнее насчет того, что есть у Вас и не реализовано у MS? А то как-то за ребят обидно

Для того, чтобы иметь две базы, нужно Аксапту два раза купить?
Старый 30.01.2003, 13:55   #9  
skof is offline
skof
NavAx
NavAx Club
 
100 / 12 (1) ++
Регистрация: 09.01.2002
Адрес: РБ, Минск
Цитата:
Изначально опубликовано Vadik
Можно поподробнее насчет того, что есть у Вас и не реализовано у MS? А то как-то за ребят обидно

Для того, чтобы иметь две базы, нужно Аксапту два раза купить?
За ребят не обдно:
1. Они не ставили перед собой таких "спецфических" задач...
2. Они живут в стране где связь не пропадает...

Основное отличие - до недавнего времени у нас был более тонкий механизм выборки какие записи синхронизировать а какие -нет, что MS наворотили в последних версиях - я не знаю, может уже все это есть

Насчет еще одной - Аксапты - консультируйтесь с тем кто вам ее продает...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
if (record) vs if (record.RecId) kashperuk DAX: Программирование 18 27.11.2008 18:53
Как сформировать RecId Arahnid DAX: Программирование 18 14.07.2008 15:02
поля, содержащие RecId somebody DAX: Программирование 15 16.05.2008 17:50
aEremenko: Дефрагментация RecID Blog bot DAX Blogs 2 06.03.2007 22:25
Два RecId у одной записи таблицы sparur DAX: Программирование 33 18.12.2006 15:56

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

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

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