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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.10.2004, 14:43   #1  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
по прежнему бьюсь с 1 проблемой:
при импорте (в таблицу Gen. Journal Line ) каждая импортируемая запись записывает свой Amount в поле Amount самой первой импортированной записи.
при этом все производные поля (Credit, Debet и т.д.) первой записи остаются корректными.

стал разбираться с порядком выполнения датаИМпорта
поставил в onpredataport дежурный message('g'), а также мессаги в onafterimportrecord...
так вот эти message выполняется ПОСЛЕ импорта(после всего остального кода т.е. с запозданием)!!!
как понял? ну во-1-х, индикатор состояния "отработал" до вывода сообщения, во-2-х, когда сообщение появилось, через sql сделал запрос и убедился, что записи "уже там", и первая записи уже "повреждена"...

результат примерно такой
amount debit credit
555.0... 000.0... 111.0...
-222.0... 000.0... 222.0...
333.0... 333.0... 000.0...
444.0... 444.0... 000.0...
555.0... 555.0... 000.0...

у меня есть ряд вопросов в связи с этим.
и главный вопрос:

ЧТО ЭТО ЗА ФИГНЯ??????????????????
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 11.10.2004, 15:15   #2  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
+++++++++++++++++++++++код датапорта (русские символы как всегда непередаваемо красивы!!!!):

Documentation()

OnInitDataport()
CurrDataport.IMPORT := TRUE;
RecordsInFile :=0;
RecordsImported :=0;

OnPreDataport()

IF NOT CurrDataport.IMPORT THEN
BEGIN;
MESSAGE('EXPORT DISABLED!');
CurrDataport.QUIT;
END;

OnPostDataport()
MESSAGE('Èìïîðòèðîâàíî ' + FORMAT(RecordsImported) + ' èç ' + FORMAT(RecordsInFile) + ': óñïåøíî.');

FuncDescrRas(VAR VarManager : Text[30];VAR VarZia : Text[6]) FuncDescrRas : Text[100]
FuncDescrRas:=ConstDescrRas + VarManager + VarZia;

FuncCompanyName(VarCode : Text[2];VarManager : Text[30]) FuncCompanyName : Text[250]
FuncCompanyName:='ÎÎÎ"ÂÓËÊÀÍ"' + ConstCompanyName + VarCode + VarManager;

++++++++++++++++++++++++код импорта записи

Documentation()

OnPreDataItem()

OnBeforeExportRecord()

OnAfterExportRecord()

OnBeforeImportRecord()
INIT;

OnAfterImportRecord()
RecordsInFile := RecordsInFile+1;
IF Amount=0 THEN
CurrDataport.SKIP; // âûõîä áåç èìïîðòà

Manager:=' ÷åðåç ';
ZIA:='(***)';
Company:='';
CFURecord.RESET;
CFURecord.SETRANGE(CFURecord."CFU Code","Shortcut Dimension 1 Code");
IF CFURecord.FIND('-') THEN
BEGIN
Manager:=Manager + CFURecord."Manager Name" + ' ' + CFURecord."Manager Initials";
IF EVALUATE(CFUInt, CFURecord."Internal Code") THEN
Company:=FORMAT(CFUInt);
ZIA:=' ÇÈÀ' + Company;
END
ELSE
Manager:=Manager + '(ìåíåäæåð íå óêàçàí)';
CFURecord.RESET;
Company:=FuncCompanyName(Company, Manager);

AccType := "Account Type"::"G/L Account";
IF Amount > 0 THEN
// åñëè ðàñõîäíèê
BEGIN
JournalTemplateName := KRas;
AccountNo := ARas;
Descr := FuncDescrRas(Manager,ZIA);
END
ELSE
// åñëè ïðèõîäíèê
BEGIN
JournalTemplateName :=KPri;
Descr:=DescrPri;
IF DATE2DMY("Posting Date",1)=1 THEN
BEGIN
AccType := "Account Type"::Customer;
AccountNo:=APri1;
END
ELSE
BEGIN
AccountNo:=APri;
END;
END;

// íàéäåì LineNo.
Lines.RESET;
Lines.SETRANGE(Lines."Journal Template Name",JournalTemplateName);
Lines.SETRANGE(Lines."Journal Batch Name",KRUB);
IF Lines.FIND('+') THEN
LineNo:=Lines."Line No." + 10000
ELSE
LineNo:= 10000;
Lines.RESET;

VALIDATE("Journal Template Name",JournalTemplateName);
VALIDATE("Journal Batch Name", KRUB);
VALIDATE("Line No.", LineNo);

VALIDATE("Posting Date");

VALIDATE("Document Type", "Document Type"::Payment);

VALIDATE("Account Type", AccType);
VALIDATE("Account No.", AccountNo);

VALIDATE(Amount,Amount);

VALIDATE("Bal. Account Type", "Bal. Account Type"::"Bank Account");
VALIDATE("Bal. Account No.", KRUB);

VALIDATE("Text 1", '*'); // + text1 + ZIA);
IF Amount > 0 THEN
VALIDATE("Text 3", text3)
ELSE
VALIDATE("Text 2", text2);

VALIDATE("Bank Payment Type", "Bank Payment Type"::"Computer Check");
VALIDATE(Description,Descr);
VALIDATE("Source Type", "Source Type"::"Bank Account");
VALIDATE("Source No.", KRUB);
VALIDATE("Source Code", 'ÔÈÍÆÓÐ');
VALIDATE("Company Name", Company);
VALIDATE("Allow Application", TRUE);
VALIDATE("Default Tolerance Posting","Default Tolerance Posting"::"Payment Discount Accounts");

// èçìåðåíèÿ
VALIDATE("Shortcut Dimension 1 Code","Shortcut Dimension 1 Code");

INSERT;
RecordsImported := RecordsImported+1;

Lines.RESET;
Lines.SETRANGE(Lines."Text 1",'*');
IF Lines.FIND('-') THEN
MESSAGE(FORMAT(Lines.Amount));
Lines.RESET;

OnPostDataItem()



****************************
поясню последний блок - он типа по ходу самый показательный.
для каждой записи я нахожу набор уже импортированных (специально в [text 1] пишу '*' чтобы фильтр сделать) и из первой беру amount.
и этот самый мессаг (3-я строка с конца) для первой записи выводит -111, для второй -111 (т.е. запись еще не повреждена), для третьей уже 222 (т.е. первая запись повреждена добавлением второй но ПОСЛЕ добавления) и т.д.: -333, 444.
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 11.10.2004, 15:18   #3  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
ну и в дополнение - прошу ознакомиться с исходным файлом
[Posting Date],[Shortcut Dimension 1 Code],[Amount]
01.09.2004,0401502,-111
01.09.2004,0401502,-222
01.09.2004,0401502,333
01.09.2004,0401502,444
01.09.2004,0401502,555

и с результатом импорта...
Миниатюры
Нажмите на изображение для увеличения
Название: set.JPG
Просмотров: 350
Размер:	30.1 Кб
ID:	9679  
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 11.10.2004, 15:48   #4  
Uni_DeMoN_imported is offline
Uni_DeMoN_imported
Участник
 
83 / 10 (1) +
Регистрация: 05.04.2004
Цитата:
Сообщение от барбудас
ну и в дополнение - прошу ознакомиться с исходным файлом
[Posting Date],[Shortcut Dimension 1 Code],[Amount]
01.09.2004,0401502,-111
01.09.2004,0401502,-222
01.09.2004,0401502,333
01.09.2004,0401502,444
01.09.2004,0401502,555

и с результатом импорта...
делаешь так:
создаёшь временный рекорд
фильтруешь его гетом по первичному ключу таблицы датапорта а только потом делаешь modify этого рекорда.
и будет тебе счастье...



Старый 11.10.2004, 16:05   #5  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
Цитата:
Сообщение от Uni_DeMoN
делаешь так:
создаёшь временный рекорд
фильтруешь его гетом по первичному ключу таблицы датапорта а только потом  делаешь modify этого рекорда.
и будет тебе счастье...
объясни мне плз популярно. Я ПОНЯТЬ ХОЧУ!!!
зачем (то бишь нафига) делать временный рекорд если я хочу запись обработать в момент ИМПОРТа
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 11.10.2004, 16:21   #6  
Uni_DeMoN_imported is offline
Uni_DeMoN_imported
Участник
 
83 / 10 (1) +
Регистрация: 05.04.2004
Цитата:
Сообщение от барбудас
Цитата:
Сообщение от Uni_DeMoN
делаешь так:
создаёшь временный рекорд
фильтруешь его гетом по первичному ключу таблицы датапорта а только потом  делаешь modify этого рекорда.
и будет тебе счастье...
объясни мне плз популярно. Я ПОНЯТЬ ХОЧУ!!!
зачем (то бишь нафига) делать временный рекорд если я хочу запись обработать в момент ИМПОРТа
(хз почему), но у меня иногда импорт по стандартному происходил некорректно система раскидывала данные по таблицам не в тему
поэтому я подстраховаюсь именно таким способом.
вот пример (замена кода менеджера у списка номенклатурны позиций)
Вложения
Тип файла: txt updmancode.txt (1.0 Кб, 401 просмотров)
Старый 11.10.2004, 17:33   #7  
rootadmin is offline
rootadmin
Участник
Аватар для rootadmin
 
224 / 10 (1) +
Регистрация: 25.03.2003
Адрес: Москва
to барбудас :
чего-то мне даже интересно стало
может постнешь экспорт (я имею в виду fob-file) своего датапорта полностью?
__________________
С уваженем,
rootadmin
Старый 12.10.2004, 10:41   #8  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
Цитата:
Сообщение от rutadmeen
to барбудас :
чего-то мне даже интересно стало
может постнешь экспорт (я имею в виду fob-file) своего датапорта полностью?
На самом деле, когда я закомментировал валидаторы (это применимый термин к методу Validate?) полей DataPort Fields (в т.ч. Amount) повреждение первой записи исчезло
Вроде бы проблема решена... но тем не менее предвижу, что подобных проблем будет возникать великое множество (да и в данном датапорте, наверно, куча багов ещё...). Поэтому постю датапорт - буду счастлив, если эксперты там обнаружат баги и симптомы некорректного восприятия мной навижн-подхода к программированию.
Файл-источник я вроде уже выкладывал (см. выше).
Спасибо, что Вам небезинтересны чужие трудности

ЗЫ. У нас в Питере заморозки. Вчера "накрапывал" снежок...
Вложения
Тип файла: txt Gen._Journal_Line_Import.txt (9.0 Кб, 333 просмотров)
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 12.10.2004, 11:38   #9  
Dzemon is offline
Dzemon
Moderator
 
1,247 / 12 (3) ++
Регистрация: 09.09.2004
Ну ты хотфикс-то поставил?

ЗЫ Чой-то сегодня аська не работает...
Старый 12.10.2004, 16:58   #10  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
у меня тож аська не работает
такое ощущение что у нас на работе она работает у тех, кто ее раньше включил

нет, хотфикс пока не поставил. медлю
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
Старый 13.10.2004, 12:47   #11  
rootadmin is offline
rootadmin
Участник
Аватар для rootadmin
 
224 / 10 (1) +
Регистрация: 25.03.2003
Адрес: Москва
ну фиг знает... у меня датапорт отработал нормально. даже когда я убрал комменты с валидейтов.
__________________
С уваженем,
rootadmin
Старый 14.10.2004, 12:20   #12  
барбудас is offline
барбудас
Участник
 
55 / 10 (1) +
Регистрация: 30.09.2004
ну значит видимо нужен хотфикс...
__________________
извиняюсь если вопрос ТУП - спрашиваю исключительно потому, что не знаю. спасибо, что не послали
 

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:15.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.