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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.08.2007, 08:04   #1  
Critic is offline
Critic
Участник
Аватар для Critic
 
13 / 10 (1) +
Регистрация: 17.03.2006
Кратко: Есть датапорт, который выгружает данные с одной таблицы в несколько файлов. Формат файла фиксированный, разделители "новая строка".
В каждом создаваемом файле дополнительно требуется сделать шапку в несколько строк.
Инструкция записи в файл:
CurrFile.WRITE( TextFormat.DOS2Win('Платежное Поручение номер ' + FORMAT(PLE."Document No.") +
' дата ' + FORMAT(PLE."Posting Date")));
CurrFile.WRITE( TextFormat.DOS2Win('Назначение платежа ' + FORMAT(DocType)));

Это шапка. после нее выгружаются данные с таблицы, по требуемому критерию.

Проблема:
1) Шапка выводится одной строкой, пробовала разнями способами перенос делать - не помогает.
2) в 1ом созданном файле строка выгрузки с таблицы выводится без перевода строки, сразу за шапкой, в остальных 30 файлах - как положено, с новой строки.
__________________
Ведрусса. Я не волшебник, а только учусь
Старый 06.08.2007, 08:42   #2  
Yermek is offline
Yermek
Участник
 
29 / 10 (1) +
Регистрация: 06.06.2006
Можно использовать Outstream и Writetext
Старый 06.08.2007, 19:49   #3  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Добавте в момент перевода символы возврата каретки и новой строки (как раньше делали с С под DOS) и все будет работать (это же текстовый файлик)
Старый 06.08.2007, 19:59   #4  
apanko is offline
apanko
MCTS
MCBMSS
Лучший по профессии 2009
 
1,164 / 139 (7) +++++
Регистрация: 24.02.2005
Символы 13 и 10 если не ошибаюсь.

ch10 :=10; //тип char
ch13 :=13; //тип char
NEW STRING = STRSUBSTNO('%1%2',ch10,ch13);
Старый 07.08.2007, 05:46   #5  
Critic is offline
Critic
Участник
Аватар для Critic
 
13 / 10 (1) +
Регистрация: 17.03.2006
Цитата:
Сообщение от Yermek Посмотреть сообщение
Можно использовать Outstream и Writetext
Респект. Потоком получается корректно. Ранее не использовала.

Проблема для меня имеет решение, но хотелось бы узнать почему в датапорте срабатывают только потоки?

Для остальных попытвашихся: спасибо за участие, символы 10 и 13 верны, но в данной функции не подходят.
__________________
Ведрусса. Я не волшебник, а только учусь
Старый 07.08.2007, 11:20   #6  
Critic is offline
Critic
Участник
Аватар для Critic
 
13 / 10 (1) +
Регистрация: 17.03.2006
По аналогии с потоком получилось и через CurrFile.WRITE сделать
__________________
Ведрусса. Я не волшебник, а только учусь
Старый 08.08.2007, 15:41   #7  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Critic Посмотреть сообщение
Проблема для меня имеет решение, но хотелось бы узнать почему в датапорте срабатывают только потоки?

Для остальных попытвашихся: спасибо за участие, символы 10 и 13 верны, но в данной функции не подходят.
В датапорте как раз все прекрасно работает с этой комбинацией. По крайней мере у меня было раньше все прекрасно с этим..
Просто добавте в конце выводимой строки и система сама запишет.

См также help:
= WRITE (File) - Use this function to write to an ASCII or binary file. :-)
= TEXTMODE (File) - This function is used to set whether a file should be opened as an ASCII file or a binary file. The function can also be used to determine what the current setting of this option is for a file.

[IsTextmode] := File.TEXTMODE([SetTextmode])

IsTextmode: boolean
The current setting of this option for the file.
If IsTextmode is...
TRUE An ASCII file
FALSE A binary file

P.S. Возврат каретки (код 0Dh), Перевод строки (0Аh) (сокращенно CR/LF)
Старый 10.08.2007, 05:07   #8  
Critic is offline
Critic
Участник
Аватар для Critic
 
13 / 10 (1) +
Регистрация: 17.03.2006
Цитата:
Сообщение от RedFox Посмотреть сообщение
[IsTextmode] := File.TEXTMODE([SetTextmode])
P.S. Возврат каретки (код 0Dh), Перевод строки (0Аh) (сокращенно CR/LF)
1) Если бы все в этот раз получилось, как я задумала, то не спрашивала бы в последней инстанции
2) Напиши пожалуйста как правильно включить код перевода в выгружаемую строку, чотб он действительно сработал. Может я что-то не так делала. (в файле идет преобразование текста DOS2WIN)
3) Может этот код срабатывает ТОЛЬКО в режиме TEXTMODE? ....

В любом случае задача реализована и файлы корректно обработались только с использованием потока, хотя я раньше никогда его не применяла... в файлах.

На сей момент у меня 2 реализации. Через датапорт и отчетом.
С отчета полечилось более корректно, со всеми форматированиями, выравниваниями, группировками и итоговыми и начальными шапками.
Делаю вывод: чтоб получить красоту по формату, удобнее использовать отчеты, а датапорты - как элемент переноса данных и простой построчной выгрузки из "временной" таблицы.
__________________
Ведрусса. Я не волшебник, а только учусь
 


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

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

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