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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.02.2007, 12:12   #1  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
внесение новых клиентов
такая ерунда нужно перенести клиентов в уже рабочую базу...
раньше заносила по принципу.
Axapta_Code = strRFix(Int2str(countCustind),5,"0");
где countCustind начинался с 1..
А теперь нужно добавлять записи в уже существующую таблицу.. понимаю, что нужно идти в номерные серии NumberSequenceTable и смотреть какой следующий номер будет у серии документов по клиенту.. но как лучше это прописать ума не приложу... может кто что подскажет...
Старый 21.02.2007, 12:20   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
В принципе, если у вас код клиента всегда имеет именно приведенный вами формат, то можно просто найти максимальное значение кода клиента в таблице клиентов (maxof). Вытащить из него число и присвоить его countCustInd. И делать, как вы делали ранее.

А если через номерную серию идти, то вот пример: (для непрерывной)
(выдернуто и переделано из класса SalesAutoCreate)
X++:
static void TestContinuousNumberSeq(Args _args)
{
    NumberSeq       num;
    SalesId         tmpSalesId;
    SalesTable      salesTable;
    ;

    salesTable.clear();
    salesTable.initValue();

    num = NumberSeq::newGetNumFromCode("TEST", true);//(SalesParameters::numRefSalesId());
    tmpSalesId = num.num();

    box::info(tmpSalesId);

    if (true)//SalesTable::exist(tmpSalesId))
    {
        num.abort();
        checkFailed("@SYS55111");
        checkFailed(strfmt("@SYS55112", tmpSalesId));
        throw error("@SYS23020");
    }

    salesTable.salesId = tmpSalesId;

    num.used();
}
Думаю, будет понятно, что нужно изменить в коде чтобы сделать для Клиентов
Старый 21.02.2007, 13:42   #3  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
спасибо... получилось всё нормально.
Старый 22.02.2007, 14:39   #4  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Что-то несуразица какая-то выходит...
custTable.clear() ;
num = NumberSeq::newGetNumFromCode("КЛ", true);
r= num.num();
countCustind =str2int(r);

if (!custUpdate)
countCustind++;
Axapta_Code = strRFix(Int2str(countCustind),5,"0");
Само интересно у меня в номерных сериях следующий номер = 15420, а если проверять через дебаг, то почему -то 4301
Старый 22.02.2007, 14:46   #5  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Видать у вас где то в номерных сериях так сказать высвободился номер и Акса хочет его заюзать...
Старый 22.02.2007, 14:49   #6  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
1. Для получения серии документов по клиенту лучше использовать метод таблицы СustParameters::numRefCustAccount()
X++:
NumberSeq::newGetNum(ustParameters::numRefCustAccount())
2. И если Вы уже используете номерные серии, то уже их и используйте. А у вас получается, что используя номерные серии вы делаете свой инкремент.

То есть в вашем случае нужно просто указать
Axapta_Code = num.num()

А номерную серию настроить так, чтобы в ней были эти ваше 5 нулей спереди. (странный кстати код - пять нулей и число)

И сделайте очистку ей.(номерной серии)
Старый 22.02.2007, 14:51   #7  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Sada Посмотреть сообщение
Видать у вас где то в номерных сериях так сказать высвободился номер и Акса хочет его заюзать...
это уже поняла.. а как от этого избавится...
вот если делать всё через maxof из Таблицы Клиентов, то нормально получается... Но хочется всё-таки сделать ч\з номерные серии...
Старый 22.02.2007, 14:57   #8  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Основное/настройка/серии документов/сери документов
находите вашу серию и чистите (кнопка очистка кажися справа)

Последний раз редактировалось Sada; 22.02.2007 в 14:59.
Старый 22.02.2007, 14:58   #9  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от kashperuk Посмотреть сообщение
1. Для получения серии документов по клиенту лучше использовать метод таблицы СustParameters::numRefCustAccount()



2. И если Вы уже используете номерные серии, то уже их и используйте. А у вас получается, что используя номерные серии вы делаете свой инкремент.

То есть в вашем случае нужно просто указать
Axapta_Code = num.num()

А номерную серию настроить так, чтобы в ней были эти ваше 5 нулей спереди. (странный кстати код - пять нулей и число)

И сделайте очистку ей.(номерной серии)
Если делать через СustParameters::numRefCustAccount(), ругается что он не является классом... Сделала так...
num = NumberSeq::newGetNumFromCode("КЛ", true);
Axapta_Code = num.num() ;
Но всё равно Axapta_Code равен не 15***, а 4***
Старый 22.02.2007, 15:00   #10  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
Цитата:
Сообщение от Sada Посмотреть сообщение
Основное/настройка/серии документов/сери документов
находите вашу серию и чистите (кнопка очистка кажися справа)
А настройки не свалятся.. ?
Старый 22.02.2007, 15:03   #11  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
А тестовая база есть? Давно этого не делал, врать не буду - не помню, но по идее не должны.
Старый 22.02.2007, 15:04   #12  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
всё... тут просто косяки в базе разработок были.. В тестовой подцепила- всё нормально... Спасибо...
Кстати.. мальчики с наступающим праздником...
Старый 22.02.2007, 15:05   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от fialka Посмотреть сообщение
А настройки не свалятся.. ?
fialka, почитайте
http://axapta.mazzy.ru/lib/numbersequence/
http://axapta.mazzy.ru/lib/numbersequence_using/
__________________
полезное на axForum, github, vk, coub.
Старый 22.02.2007, 15:05   #14  
fialka is offline
fialka
Участник
 
347 / 16 (1) ++
Регистрация: 05.10.2006
Адрес: Екатеринбург
всё... тут просто косяки в базе разработок были.. В тестовой подцепила- всё нормально... Спасибо...
Кстати.. мальчики с наступающим праздником...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Добавление новых строк в SalesLine Qaz Qwerty DAX: База знаний и проекты 6 04.02.2009 17:23
Удаление клиентов (контрагентов) с данными otkudao DAX: Администрирование 3 12.09.2008 16:52
Сергей Герасимов: О технической поддержке клиентов по продуктам Microsoft Dynamics Blog bot DAX Blogs 4 13.02.2007 14:58
Гарантированные запасы под особых клиентов LR20 DAX: Функционал 1 26.05.2004 10:47
Коды клиентов в CRM - проблема Zabr DAX: Функционал 5 01.12.2003 12:41

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

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

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