![]() |
#1 |
Moderator
|
![]()
Добрый день!
![]() Есть необходимость таблицу Аксапты заполнять непосредственно на SQL сервере. В RecId хочу записывать произвольное целое число (числа). В таблице не будет индекса для уникальности RecId. Как думаете - какие могут быть последствия для системы? Поискал на форуме по Генерация RecId - вроде никто так не делал. Axapta 3.0 |
|
![]() |
#2 |
Участник
|
Цитата:
Сообщение от DreamCreator
![]() Поискал на форуме по Генерация RecId - вроде никто так не делал.
|
|
![]() |
#3 |
Moderator
|
Цитата:
Сообщение от S.Kuskov
![]() А тема Формирование RecId при вставке в таблицу AX из SQL Server чем отличается от вашей?
![]() Интересен негативный опыт - вот в таблице не уникальные RecId - из-за этого случились такие-то неприятности. |
|
![]() |
#4 |
Участник
|
Версия системы - Axapta 3.0?
__________________
Ivanhoe as is.. |
|
![]() |
#5 |
Участник
|
Делал подобное. Сторонняя программа SQL пишет в поле RecId -1, в аксапте PrimaryIndex отличный от RecId и убирается генерация recid с помощью SystemSequence().suspendRecIds. Полет нормальный, проблем не замечено
Axapta 3.0 |
|
|
За это сообщение автора поблагодарили: DreamCreator (2). |
![]() |
#6 |
Moderator
|
|
|
![]() |
#7 |
Moderator
|
![]() |
|
![]() |
#8 |
Участник
|
Цитата:
![]() Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId? Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid. Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы. Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится ![]() |
|
|
За это сообщение автора поблагодарили: DreamCreator (2). |
![]() |
#9 |
Участник
|
Если таблица заполняется только извне, то можно и не убирать, но у меня была ситуация, когда аксапта тоже в эту таблицу что-то писала и для единообразия recid в аксапте тоже заполнялся -1. Да и чтобы recid лишний раз не тратились.
Да, еще компания должна быть виртуальной, иначе стороннему приложению придется dataareaid выдумывать |
|
![]() |
#10 |
Участник
|
Вернуть генерацию RecId можно с помощью SystemSequence().removeRecIdSuspension(tableNum(ВашаТаблица)), на 3.0 работает.
Я генерацию RecId убирал для функционала любезно предоставленного db кода - Выборка произвольных записей одним запросом Хорошо работает при создании сложных фильтров на формах, с различными NotExists join-ами например.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
|
За это сообщение автора поблагодарили: DreamCreator (2). |
![]() |
#11 |
Участник
|
Цитата:
Сообщение от S.Kuskov
![]() Очень я сомниваюсь что всё будет хорошо
![]() Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId? Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid. Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы. Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится ![]() |
|
![]() |
#12 |
Moderator
|
Цитата:
Сообщение от S.Kuskov
![]() Очень я сомниваюсь что всё будет хорошо
![]() Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId? Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid. Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы. Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится ![]() Спасибо! ![]() |
|
![]() |
#13 |
Moderator
|
Цитата:
Сообщение от Lucky13
![]() Да, Вы правы, все что связано с recid в аксапте работать не будет, так как в качестве уникального используется уже другой индекс. И на форме естественно только чтение. Но такие таблицы, как правило, делаются для того чтобы обмениваться данными с другими системами и пользовательский ввод там не нужен
|
|
![]() |
#14 |
Moderator
|
Цитата:
Сообщение от Lucky13
![]() Если таблица заполняется только извне, то можно и не убирать, но у меня была ситуация, когда аксапта тоже в эту таблицу что-то писала и для единообразия recid в аксапте тоже заполнялся -1. Да и чтобы recid лишний раз не тратились.
Да, еще компания должна быть виртуальной, иначе стороннему приложению придется dataareaid выдумывать ![]() А разве нельзя в не виртуальной компании в таблице поставить код компании который используется для всех таблиц компании - dat например? |
|
![]() |
#15 |
Участник
|
|
|
![]() |
#16 |
Administrator
|
SaveDataPerCompany = No, нет?
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
![]() |
#17 |
Участник
|
Цитата:
Кстати, был не прав про редактирование/удаление через форму. Должно работать, так как аксапта будет использовать индекс, указанный в свойстве PrimaryIndex вместо RecId. |
|
![]() |
#18 |
Участник
|
|
|