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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.06.2010, 12:55   #1  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
В Codeunit выполняется некий цикл.

типа

begin

a:=function();
end;

Хотелось бы проверить значения, которые он присваивает переменным.
как можно вывести эти значения переменной a в текстовый файл.

В дебаггере как-то не удобно за изменением проследить.
Старый 18.06.2010, 13:03   #2  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Создай таблицу, записывай туда, так будет проще, чем с файлом.
Таблица из двух полей, первое (ключ) номер записи, второе значение.
Старый 18.06.2010, 13:45   #3  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
Отличная идея.
Но опять загвоздка.
Создал Таблицу TestTable
полям присваиваю значения переменных.
не хочет компилить, ругается TableData 0 не существует
Это что такое?
Старый 18.06.2010, 14:06   #4  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Так сразу не скажу что это, или ты таблицу создал позже чем открыл код, либо ещё что то. Пришли скриншот что ли.
Старый 18.06.2010, 14:32   #5  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
вот часть кода
Код:
  Increment(TotalSalesLine.Amount,Amount);
     ia:=ia+1;
   TestTable.init;
   TestTable.LineAmount:=Amount;
   TestTable.TLineAmount:=TotalSalesLine.Amount;
   TestTable.In:=ia;
   TestTable.insert;
Изображения
Тип файла: bmp test.bmp (809.7 Кб, 269 просмотров)
Старый 18.06.2010, 14:56   #6  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
теперь просит определит переменную TestTable
в SymbolMenu.
Не соображу как это сделать

В C/Al Globals ввел переменную TestTable присвоил record и номер созданной таблицы.
Пишет Здесь должно быть поле таблицы. Запись.Поле Клиент.Название
Старый 18.06.2010, 15:24   #7  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Описываю по шагам:
Создаёшь таблицу с ид больше 50000, создаёшь в ней три поля LineNo , LineAmount, TLineAmount. In указываешь первичным ключём. Сохраняешь с компиляцией. Заходишь в свой код и:
Создаёшь переменную TestTable с типом Record

Немного изменяешь код:
Increment(TotalSalesLine.Amount,Amount);

ia:=ia+1;
TestTable.LineNo:=ia;
TestTable.LineAmount:=Amount;
TestTable.TLineAmount:=TotalSalesLine.Amount;
TestTable.insert;

Поменяй название поля In на LineNo, есть такой оператор In.
И присылать надо не скриншот таблицы. А лучше всего включить дебугер, запустить программу, в случае ошибки она покажет где ошибка в коде, точнее на какой строчке и что выдала сама ошибка написать.
Старый 18.06.2010, 15:53   #8  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
Спасибо
С этим разобрался где прописать переменную и как ввести данные.
Возник еще вопрос. Как начать транзакцию? Иначе таблицу не заполняет.
Старый 18.06.2010, 16:14   #9  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Где у тебя этот процесс проходит?
Скорее всего нужно добавить commit после inserta, но учти что в случае ошибки все изменёные значения на исходное положение не откатятся, так что если это один из основных бизнес процессов, то надо анализировать код глубже.
Старый 18.06.2010, 16:27   #10  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
откатывать не надо.
специально ведь создал тестовую таблицу, которую заполняю значениями для просмотра.
поменял таблицу на временную. т.е. в свойствах поставил значение на temporary.
пишет TestTable LineN'0' уже существует.
в чем проблема?
Старый 18.06.2010, 17:06   #11  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
как понимаю, при создании таблицы получилось поле
c заполненными значениями. везде нули.
при этом элемент ia в некоторые моменты принимает значение 0,
что не позволяет сделать запись.
Как сделать, чтобы записывалось все подряд, даже повторяющиеся строки?
Старый 18.06.2010, 17:52   #12  
GGNAME is offline
GGNAME
Участник
 
67 / 10 (1) +
Регистрация: 21.02.2010
Цитата:
Сообщение от flov Посмотреть сообщение
как понимаю, при создании таблицы получилось поле
c заполненными значениями. везде нули.
при этом элемент ia в некоторые моменты принимает значение 0,
что не позволяет сделать запись.
Как сделать, чтобы записывалось все подряд, даже повторяющиеся строки?
Так сделать нельзя, первичный ключ уникален и не должен повторяться. Очищай содержимое таблицы перед каждым началом работы твоего кода
testtable.reset;
testtable.deleteall;
Старый 18.06.2010, 19:11   #13  
flov_imported is offline
flov_imported
Участник
 
42 / 10 (1) +
Регистрация: 05.06.2010
а можно под ключ создать поле типа id,
которое и будет все время увеличиваться.
Дело в том что, ia пробегает значения от 0 до 10
и к этому коду программа обращается несколько раз,
при этом значения других полей будут меняться.

как сделать чтобы id все время увеличивался
и не ругался на на то что нулевое значение уже есть.
Почему в первой строке по умолчанию стоят нули?
Старый 18.06.2010, 19:27   #14  
Storkich is offline
Storkich
Участник
 
149 / 10 (1) +
Регистрация: 08.03.2007
AddLog(Msg : Text[1000]) : Boolean
Код:
FN := 'C:\Log.txt';
F.TEXTMODE(TRUE);
F.WRITEMODE(TRUE);
IF EXISTS(FN) THEN
  F.OPEN(FN)
ELSE
  F.CREATE(FN);
F.SEEK(F.LEN);
F.WRITE(Msg);
F.CLOSE;
SLEEP(10);

Name	DataType	Subtype	Length
F	File		
FN	Text		30
Вызов
Код:
AddLog(STRSUBSTNO('%1 | %2 | %3', ia, Amount, TotalSalesLine.Amount);
 

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

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

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

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

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