18.06.2010, 12:55 | #1 |
Участник
|
В Codeunit выполняется некий цикл.
типа begin a:=function(); end; Хотелось бы проверить значения, которые он присваивает переменным. как можно вывести эти значения переменной a в текстовый файл. В дебаггере как-то не удобно за изменением проследить. |
|
18.06.2010, 13:03 | #2 |
Участник
|
Создай таблицу, записывай туда, так будет проще, чем с файлом.
Таблица из двух полей, первое (ключ) номер записи, второе значение. |
|
18.06.2010, 13:45 | #3 |
Участник
|
Отличная идея.
Но опять загвоздка. Создал Таблицу TestTable полям присваиваю значения переменных. не хочет компилить, ругается TableData 0 не существует Это что такое? |
|
18.06.2010, 14:06 | #4 |
Участник
|
Так сразу не скажу что это, или ты таблицу создал позже чем открыл код, либо ещё что то. Пришли скриншот что ли.
|
|
18.06.2010, 14:32 | #5 |
Участник
|
вот часть кода
Код: Increment(TotalSalesLine.Amount,Amount); ia:=ia+1; TestTable.init; TestTable.LineAmount:=Amount; TestTable.TLineAmount:=TotalSalesLine.Amount; TestTable.In:=ia; TestTable.insert; |
|
18.06.2010, 14:56 | #6 |
Участник
|
теперь просит определит переменную TestTable
в SymbolMenu. Не соображу как это сделать В C/Al Globals ввел переменную TestTable присвоил record и номер созданной таблицы. Пишет Здесь должно быть поле таблицы. Запись.Поле Клиент.Название |
|
18.06.2010, 15:24 | #7 |
Участник
|
Описываю по шагам:
Создаёшь таблицу с ид больше 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 |
Участник
|
Спасибо
С этим разобрался где прописать переменную и как ввести данные. Возник еще вопрос. Как начать транзакцию? Иначе таблицу не заполняет. |
|
18.06.2010, 16:14 | #9 |
Участник
|
Где у тебя этот процесс проходит?
Скорее всего нужно добавить commit после inserta, но учти что в случае ошибки все изменёные значения на исходное положение не откатятся, так что если это один из основных бизнес процессов, то надо анализировать код глубже. |
|
18.06.2010, 16:27 | #10 |
Участник
|
откатывать не надо.
специально ведь создал тестовую таблицу, которую заполняю значениями для просмотра. поменял таблицу на временную. т.е. в свойствах поставил значение на temporary. пишет TestTable LineN'0' уже существует. в чем проблема? |
|
18.06.2010, 17:06 | #11 |
Участник
|
как понимаю, при создании таблицы получилось поле
c заполненными значениями. везде нули. при этом элемент ia в некоторые моменты принимает значение 0, что не позволяет сделать запись. Как сделать, чтобы записывалось все подряд, даже повторяющиеся строки? |
|
18.06.2010, 17:52 | #12 |
Участник
|
Цитата:
testtable.reset; testtable.deleteall; |
|
18.06.2010, 19:11 | #13 |
Участник
|
а можно под ключ создать поле типа id,
которое и будет все время увеличиваться. Дело в том что, ia пробегает значения от 0 до 10 и к этому коду программа обращается несколько раз, при этом значения других полей будут меняться. как сделать чтобы id все время увеличивался и не ругался на на то что нулевое значение уже есть. Почему в первой строке по умолчанию стоят нули? |
|
18.06.2010, 19:27 | #14 |
Участник
|
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); |
|