27.03.2012, 11:35 | #1 |
Moderator
|
Можно ли самому заполнять RecId
Добрый день!
Есть необходимость таблицу Аксапты заполнять непосредственно на SQL сервере. В RecId хочу записывать произвольное целое число (числа). В таблице не будет индекса для уникальности RecId. Как думаете - какие могут быть последствия для системы? Поискал на форуме по Генерация RecId - вроде никто так не делал. Axapta 3.0 |
|
27.03.2012, 11:57 | #2 |
Участник
|
Цитата:
Сообщение от DreamCreator
Поискал на форуме по Генерация RecId - вроде никто так не делал.
|
|
27.03.2012, 12:08 | #3 |
Moderator
|
Цитата:
Сообщение от S.Kuskov
А тема Формирование RecId при вставке в таблицу AX из SQL Server чем отличается от вашей?
Интересен негативный опыт - вот в таблице не уникальные RecId - из-за этого случились такие-то неприятности. |
|
27.03.2012, 12:25 | #4 |
Участник
|
Версия системы - Axapta 3.0?
__________________
Ivanhoe as is.. |
|
27.03.2012, 12:27 | #5 |
Участник
|
Делал подобное. Сторонняя программа SQL пишет в поле RecId -1, в аксапте PrimaryIndex отличный от RecId и убирается генерация recid с помощью SystemSequence().suspendRecIds. Полет нормальный, проблем не замечено
Axapta 3.0 |
|
|
За это сообщение автора поблагодарили: DreamCreator (2). |
27.03.2012, 12:53 | #6 |
Moderator
|
|
|
27.03.2012, 12:55 | #7 |
Moderator
|
|
|
27.03.2012, 13:12 | #8 |
Участник
|
Цитата:
Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId? Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid. Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы. Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится |
|
|
За это сообщение автора поблагодарили: DreamCreator (2). |
27.03.2012, 13:19 | #9 |
Участник
|
Если таблица заполняется только извне, то можно и не убирать, но у меня была ситуация, когда аксапта тоже в эту таблицу что-то писала и для единообразия recid в аксапте тоже заполнялся -1. Да и чтобы recid лишний раз не тратились.
Да, еще компания должна быть виртуальной, иначе стороннему приложению придется dataareaid выдумывать |
|
27.03.2012, 13:20 | #10 |
Участник
|
Вернуть генерацию RecId можно с помощью SystemSequence().removeRecIdSuspension(tableNum(ВашаТаблица)), на 3.0 работает.
Я генерацию RecId убирал для функционала любезно предоставленного db кода - Выборка произвольных записей одним запросом Хорошо работает при создании сложных фильтров на формах, с различными NotExists join-ами например.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет. |
|
|
За это сообщение автора поблагодарили: DreamCreator (2). |
27.03.2012, 13:25 | #11 |
Участник
|
Цитата:
Сообщение от S.Kuskov
Очень я сомниваюсь что всё будет хорошо
Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId? Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid. Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы. Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится |
|
27.03.2012, 13:28 | #12 |
Moderator
|
Цитата:
Сообщение от S.Kuskov
Очень я сомниваюсь что всё будет хорошо
Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId? Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid. Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы. Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится Спасибо! |
|
27.03.2012, 13:30 | #13 |
Moderator
|
Цитата:
Сообщение от Lucky13
Да, Вы правы, все что связано с recid в аксапте работать не будет, так как в качестве уникального используется уже другой индекс. И на форме естественно только чтение. Но такие таблицы, как правило, делаются для того чтобы обмениваться данными с другими системами и пользовательский ввод там не нужен
|
|
27.03.2012, 13:31 | #14 |
Moderator
|
Цитата:
Сообщение от Lucky13
Если таблица заполняется только извне, то можно и не убирать, но у меня была ситуация, когда аксапта тоже в эту таблицу что-то писала и для единообразия recid в аксапте тоже заполнялся -1. Да и чтобы recid лишний раз не тратились.
Да, еще компания должна быть виртуальной, иначе стороннему приложению придется dataareaid выдумывать А разве нельзя в не виртуальной компании в таблице поставить код компании который используется для всех таблиц компании - dat например? |
|
27.03.2012, 13:40 | #15 |
Участник
|
|
|
27.03.2012, 13:48 | #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 |
|
27.03.2012, 13:51 | #17 |
Участник
|
Цитата:
Кстати, был не прав про редактирование/удаление через форму. Должно работать, так как аксапта будет использовать индекс, указанный в свойстве PrimaryIndex вместо RecId. |
|
27.03.2012, 13:51 | #18 |
Участник
|
|
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|