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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 27.03.2012, 11:35   #1  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
? Можно ли самому заполнять RecId
Добрый день!

Есть необходимость таблицу Аксапты заполнять непосредственно на SQL сервере.
В RecId хочу записывать произвольное целое число (числа). В таблице не будет индекса для уникальности RecId.

Как думаете - какие могут быть последствия для системы?

Поискал на форуме по Генерация RecId - вроде никто так не делал.

Axapta 3.0
Старый 27.03.2012, 11:57   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Поискал на форуме по Генерация RecId - вроде никто так не делал.
А тема Формирование RecId при вставке в таблицу AX из SQL Server чем отличается от вашей?
Старый 27.03.2012, 12:08   #3  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Если я правильно понял в ней хотят хоть как-то следить за уникальностью RecId (например брать из Аксапты или инкремент), а я хочу для всех RecId поставить 1 и не обращать на него внимания.

Интересен негативный опыт - вот в таблице не уникальные RecId - из-за этого случились такие-то неприятности.
Старый 27.03.2012, 12:25   #4  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Версия системы - Axapta 3.0?
__________________
Ivanhoe as is..
Старый 27.03.2012, 12:27   #5  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Делал подобное. Сторонняя программа SQL пишет в поле RecId -1, в аксапте PrimaryIndex отличный от RecId и убирается генерация recid с помощью SystemSequence().suspendRecIds. Полет нормальный, проблем не замечено
Axapta 3.0
За это сообщение автора поблагодарили: DreamCreator (2).
Старый 27.03.2012, 12:53   #6  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Версия системы - Axapta 3.0?
Да, Axapta 3.0 SP3 Retail
Старый 27.03.2012, 12:55   #7  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
?
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Делал подобное. Сторонняя программа SQL пишет в поле RecId -1, в аксапте PrimaryIndex отличный от RecId и убирается генерация recid с помощью SystemSequence().suspendRecIds. Полет нормальный, проблем не замечено
Axapta 3.0
А для чего убирать генерацию RecId?
Старый 27.03.2012, 13:12   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
я хочу для всех RecId поставить 1 и не обращать на него внимания.

Интересен негативный опыт - вот в таблице не уникальные RecId - из-за этого случились такие-то неприятности.
Очень я сомниваюсь что всё будет хорошо
Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId?
Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid.
Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы.

Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится
За это сообщение автора поблагодарили: DreamCreator (2).
Старый 27.03.2012, 13:19   #9  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
А для чего убирать генерацию RecId?
Если таблица заполняется только извне, то можно и не убирать, но у меня была ситуация, когда аксапта тоже в эту таблицу что-то писала и для единообразия recid в аксапте тоже заполнялся -1. Да и чтобы recid лишний раз не тратились.

Да, еще компания должна быть виртуальной, иначе стороннему приложению придется dataareaid выдумывать
Старый 27.03.2012, 13:20   #10  
Weez is offline
Weez
Участник
Axapta Retail User
 
250 / 84 (3) ++++
Регистрация: 18.01.2006
Адрес: Moscow city
Вернуть генерацию RecId можно с помощью SystemSequence().removeRecIdSuspension(tableNum(ВашаТаблица)), на 3.0 работает.
Я генерацию RecId убирал для функционала любезно предоставленного db кода - Выборка произвольных записей одним запросом
Хорошо работает при создании сложных фильтров на формах, с различными NotExists join-ами например.
__________________
Существует 10 типов людей: одни понимают двоичную систему, другие - нет.
За это сообщение автора поблагодарили: DreamCreator (2).
Старый 27.03.2012, 13:25   #11  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Очень я сомниваюсь что всё будет хорошо
Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId?
Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid.
Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы.

Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится
Да, Вы правы, все что связано с recid в аксапте работать не будет, так как в качестве уникального используется уже другой индекс. И на форме естественно только чтение. Но такие таблицы, как правило, делаются для того чтобы обмениваться данными с другими системами и пользовательский ввод там не нужен
Старый 27.03.2012, 13:28   #12  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Очень я сомниваюсь что всё будет хорошо
Ну например вот такой код работать не будет точно Common.reread() - альтернатива для findRecId?
Конечно это не реальный код, а тестовый пример. Но он хорошо демонстрирует, что курсоры в аксапты сильно завязаны на recid.
Я не уверен что такую таблицу, например, можно будет редактировать через аксаптовские формы.

Если из аксапты использовать такую таблицу только на чтение, то вполне возможно что-то и получится
Про курсоры запомню, редактировать такие таблицы через формы можно - проверял. Таблица будет использоваться на чтение, запись и удаление.

Спасибо!
Старый 27.03.2012, 13:30   #13  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Да, Вы правы, все что связано с recid в аксапте работать не будет, так как в качестве уникального используется уже другой индекс. И на форме естественно только чтение. Но такие таблицы, как правило, делаются для того чтобы обмениваться данными с другими системами и пользовательский ввод там не нужен
А что еще может быть связано с RecId? В таблицах я предполагаю разрешить вставку, редактирование и удаление.
Старый 27.03.2012, 13:31   #14  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Если таблица заполняется только извне, то можно и не убирать, но у меня была ситуация, когда аксапта тоже в эту таблицу что-то писала и для единообразия recid в аксапте тоже заполнялся -1. Да и чтобы recid лишний раз не тратились.

Да, еще компания должна быть виртуальной, иначе стороннему приложению придется dataareaid выдумывать
Для единообразия - понял, Спасибо!

А разве нельзя в не виртуальной компании в таблице поставить код компании который используется для всех таблиц компании - dat например?
Старый 27.03.2012, 13:40   #15  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
Для единообразия - понял, Спасибо!

А разве нельзя в не виртуальной компании в таблице поставить код компании который используется для всех таблиц компании - dat например?
dat тоже можно и так наверное проще будет.
Старый 27.03.2012, 13:48   #16  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
dat тоже можно и так наверное проще будет.
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  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от DreamCreator Посмотреть сообщение
А что еще может быть связано с RecId? В таблицах я предполагаю разрешить вставку, редактирование и удаление.
Если создать новую таблицу, то проблем скорее всего не будет. Если использовать уже существующую, то нужно поискать не используется ли где-нибудь поиск записей по RecId.

Кстати, был не прав про редактирование/удаление через форму. Должно работать, так как аксапта будет использовать индекс, указанный в свойстве PrimaryIndex вместо RecId.
Старый 27.03.2012, 13:51   #18  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
SaveDataPerCompany = No, нет?
Угу, оно самое
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как выполнять дефрагментирование RecID mazzy DAX: База знаний и проекты 174 05.10.2017 12:59
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15
Связь таблиц по RecId и отображение строки renat DAX: Программирование 16 14.03.2003 18:32
Экспорт-импорт и Recid skof DAX: Программирование 1 26.02.2003 13:36
RecID при экспорте-импорте не восстанавливаются? mazzy DAX: База знаний и проекты 14 04.02.2003 14:07

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

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

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