05.08.2004, 09:34 | #1 |
Участник
|
Автонумерация
Не подскажите как создать програмно атонумерацию произвольного поля
|
|
05.08.2004, 09:57 | #2 |
Участник
|
Аналога identity ( MS SQL ) или автоинкрементного поля, как в Access, в Аксапте нет.
Но есть последовательности, которые называются сериями документов (Основное->Настройки->Серии документов) . Их и можно использовать. 1) Создайте новую последовательность (к примеру Seq1) 2) На закладке "разное" поставьте флажок "непрерывная" 3) Перекройте метод insert() таблицы, для которой делаете счетчик Я делала так: PHP код:
|
|
05.08.2004, 10:07 | #3 |
Участник
|
все так.
только если вы ставите галочку "непрерывная", то кода должно быть больше. для начала не ставьте эту галочку. и все будет пучком. |
|
05.08.2004, 10:12 | #4 |
NavAx
|
все правильно, но по хорошему нужно бы еще:
- увидеть эту серию в форме "Основное-Настройки-Серии документов-ссылки" - брать таки имя серии из параметров соответствующего модуля, а не прописывать его в коде Сумеете?
__________________
И все они создания природы... |
|
05.08.2004, 10:35 | #5 |
Участник
|
В Best Practices есть раздел, в котором достаточно подробно описано, как сделать новую номерную серию по всем правилам Аксапты. Попробуйте поискать по ключевым словам "Number sequence".
|
|
05.08.2004, 10:47 | #6 |
Участник
|
В ближайшее время постараюсь улучшить свой код, касающийся серий документов.
А пока просто нет времени на рефакторинг =(( |
|
05.08.2004, 16:07 | #7 |
Участник
|
ATimTim, может напишете статью или пошаговую инструкцию?
С удовольствием размещу у себя на сайте или здесь. |
|
05.08.2004, 18:39 | #8 |
Участник
|
2mazzy
Могу, но только в том объеме, в котором изложил. Т.е. пока без ссылок Давайте, я вышлю набросок инструкции на Ваш электронный адрес, а Вы посмотрите и решите размещать ли на сайте или нет,Ok ? |
|
10.08.2004, 17:56 | #9 |
Участник
|
Автонумерация
Огромное спасибо за ответ.
Однако после советов доброжелателей, в предлагаемом коде X++ code:-------------------------------------------------------------------------------- public void insert() { NumberSeq MyNewId; ttsbegin; MyNewId = NumberSeq::newGetNumFromCode("Seq1"); this.BodyId = MyNewId.num(); super(); ttscommit; }-------------------------------------------------------------------------------- были внесены некоторые изменения MyNewId =NumberSeq::newGetNum(NumberSeqReference::findReference(typeId2ExtendedTypeId(typeid(MyEDT)))); Правда при этом был создан ExtendedDataType MyEDT который соответствует полю (которое я собрался нумеровать) А так же внесены изменения в класс соответствующий необходимому модулю public class NumberSeqReference_название_модуля extends numberSeqReference { } в методе (правда если вы заглянете в любой из соответсвующих классов там все эти изменения описаны) loadModule() { numRef.dataTypeId = typeId2ExtendedTypeId(typeid(MyEDT)); numRef.configurationKeyId = configurationKeyNum(ledgerBasic); numRef.referenceHelp = literalStr("текст"); numRef.wizardContinuous = true; numRef.wizardManual = NoYes::No; numRef.wizardAllowChangeDown = NoYes::No; numRef.wizardAllowChangeUp = NoYes::No; numRef.wizardHighest = 999999; numRef.sortField = 1; this.create(numRef); } Не знаю на сколько я был прав. Но думаю что такое решение тоже имеет право на жизнь, каким бы оно громозким не казалось бы. |
|
Теги |
номерная серия |
|
Похожие темы | ||||
Тема | Ответов | |||
Gustav: Unsorted, или Записки DAX-дилетанта - II | 39 | |||
Автонумерация инвентарных номеров | 5 | |||
Автонумерация | 3 |
|