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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.07.2011, 13:57   #1  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Добрый день всем. У меня стоит задача импортировать данные из текстового файла. Можно конечно всё сделать через код. Но думаю правильнее будет импортировать через Dataport(но проблема что с ними я ещё толком не работал). Файл содержит набор данныъ все поля кроме нескольких должны записаться в одну таблицу, но есть несколько полей используя данные которых мы должны вычислить значение и уже после записать в таблицу. Не подскажите как мне их объявить правильно? В Datapot-е без проблем прописываются все необходимые поля но как быть с вычисляемыми? Заранее спасибо!
Старый 19.07.2011, 15:06   #2  
Captain is offline
Captain
Участник
Лучший по профессии 2017
 
300 / 81 (3) ++++
Регистрация: 28.02.2003
Цитата:
Сообщение от Shaitan-Babay Посмотреть сообщение
Добрый день всем. У меня стоит задача импортировать данные из текстового файла. Можно конечно всё сделать через код. Но думаю правильнее будет импортировать через Dataport(но проблема что с ними я ещё толком не работал). Файл содержит набор данныъ все поля кроме нескольких должны записаться в одну таблицу, но есть несколько полей используя данные которых мы должны вычислить значение и уже после записать в таблицу. Не подскажите как мне их объявить правильно? В Datapot-е без проблем прописываются все необходимые поля но как быть с вычисляемыми? Заранее спасибо!
- Добавить переменные на расчетные поля (Field1,Field2..)
- вставить их в структуру полей датапорта
- на триггере OnBeforeImportRecord записи или OnBeforeEvaluateField данной переменной вычислить её значение.
__________________
---------------------------------------------------------------------------------------------
"Собрать стадо из баранов легко, трудно собрать стадо из кошек" Профессор Сергей Капица
Старый 19.07.2011, 16:45   #3  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Спасибо capitan
Ещё вопрос. А как добраться в триггере до значений фильтра которые были введены при запуски импорта(все поля фильтра предопределены)?
Дело в том что фильтр мне не нужен, а нужны значения которые я в дальнейшем при загрузке и использую(прописываю в поля таблицы). Либо это можно сделать иначе?
Можно прописать поля в закладке Параметры, но тогда там пропадает путь до файла...
Старый 19.07.2011, 18:12   #4  
erp_man
Гость
 
n/a
еще обратите внимание на свойство AutoSave и еще вроде на Autoupdate, autoreplace.
Старый 19.07.2011, 18:15   #5  
Fly is offline
Fly
Участник
Аватар для Fly
 
102 / 10 (1) +
Регистрация: 05.10.2007
Цитата:
Сообщение от Shaitan-Babay Посмотреть сообщение
Спасибо capitan
Ещё вопрос. А как добраться в триггере до значений фильтра которые были введены при запуски импорта(все поля фильтра предопределены)?
Дело в том что фильтр мне не нужен, а нужны значения которые я в дальнейшем при загрузке и использую(прописываю в поля таблицы). Либо это можно сделать иначе?
Можно прописать поля в закладке Параметры, но тогда там пропадает путь до файла...
Если я Вас правильно понял, то функцией Rec.GETFILTER(<Поле>) поможет. А вот цель "прописывание в поля таблицы" не очень понятна. Объясните поподробнее, возможно можно будет сделать проще
Старый 19.07.2011, 18:56   #6  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Shaitan-Babay Посмотреть сообщение
Ещё вопрос. А как добраться в триггере до значений фильтра которые были введены при запуски импорта(все поля фильтра предопределены)?
Дело в том что фильтр мне не нужен, а нужны значения которые я в дальнейшем при загрузке и использую(прописываю в поля таблицы). Либо это можно сделать иначе?
Когда то я тоже "морочился" этим вопросом и немного экспериментировал.. но в итоге после НИнита все теряется.. Почему так сделано было, я не знаю, но долго времени терять не стал.. Просто вынес все на Параметры.
Цитата:
Можно прописать поля в закладке Параметры, но тогда там пропадает путь до файла...
А почему не сделать код контрола 1 на закладки Параметры для контрола выбора файла или вообще быстренько не своять свой типа Filename?
Старый 20.07.2011, 11:56   #7  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Значит Стоит задача при импорте прописать параметры которыми заполнять некоторые поля. Решил пойти через изменение формы диалога, закладка параметры. Как вернуть пропавший элемент ввода пути до файла я понял Request Form & Dataport(Прописал Edit c ID 1). Откорректировал триггер чтоб рассчитывались и записывались прочие поля, но при запуске Датапорта выдало ошибку "Операционная система не может найти устройство и каталог для файла. Пожалуйста проверте, что названия устройства, каталога и имя файла корректны" Как мне кажется где-то нужно подставить переменную которая содержит путь до файла. Вопрос где?
Старый 20.07.2011, 12:24   #8  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от captain Посмотреть сообщение
- на триггере OnBeforeImportRecord записи или OnBeforeEvaluateField данной переменной вычислить её значение.
Скорее всего имелся ввиду триггер OnAfterImportRecord
Старый 20.07.2011, 14:41   #9  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
понял что происходит... стоило убрать AssistEdit= YES как сразу заработало.(это конечно не Айс но после разберусь). Возникла другая проблема. Я вычисляю и прописываю поля в триггере OnAfterImportRecord. По дебагеру смотрю всё нормально присваивает. Но после импорта строки в таблице не появились :-(. В случае если я в триггере ставлю принудительно INSERT, то система ругается что такие данные уже есть.... Что не так делаю?
Старый 20.07.2011, 15:47   #10  
Captain is offline
Captain
Участник
Лучший по профессии 2017
 
300 / 81 (3) ++++
Регистрация: 28.02.2003
Цитата:
Сообщение от Shaitan-Babay Посмотреть сообщение
понял что происходит... стоило убрать AssistEdit= YES как сразу заработало.(это конечно не Айс но после разберусь). Возникла другая проблема. Я вычисляю и прописываю поля в триггере OnAfterImportRecord. По дебагеру смотрю всё нормально присваивает. Но после импорта строки в таблице не появились :-(. В случае если я в триггере ставлю принудительно INSERT, то система ругается что такие данные уже есть.... Что не так делаю?
- В свойствах DataItem поставить AutoSave=False
- переприсвоить расчетную переменную конкретному полю таблицы

Код:
mydata:=test_dataport.id;
test_dataport.id2:=mydata;
test_dataport.INSERT(TRUE);
Проверил. Работает
__________________
---------------------------------------------------------------------------------------------
"Собрать стадо из баранов легко, трудно собрать стадо из кошек" Профессор Сергей Капица
Старый 20.07.2011, 17:18   #11  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Shaitan-Babay Посмотреть сообщение
понял что происходит... стоило убрать AssistEdit= YES как сразу заработало.(это конечно не Айс но после разберусь). Возникла другая проблема. Я вычисляю и прописываю поля в триггере OnAfterImportRecord. По дебагеру смотрю всё нормально присваивает. Но после импорта строки в таблице не появились :-(. В случае если я в триггере ставлю принудительно INSERT, то система ругается что такие данные уже есть.... Что не так делаю?
Ну а может они действительно в таблице есть (такие записи)? Или в файле есть записи с одинаковыми значениями первичного ключа.

Если запись есть и значения ее полей нужно обновить, то делаем Modify, если ее нет, то Insert.
Старый 20.07.2011, 17:25   #12  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Я уже завёл локальную переменную "Item Journal Line"(назвал её иначе). Все поля в Датапорте присваиваю простым переменные. В триггере ручками прописываю в свою таблицу(из переменных). Делаю инсерт, и не появляются записи :-((( . Уже начал думать может просто не те данные записываю, чего-то не хватает....вынес процедуру записи на отдельную форму с кнопкой(просто те значения прямо пишу в таблицу)... все добавилось :-( . Что ещё может быть не так?
Старый 20.07.2011, 17:40   #13  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Alterant в том и дело что нет .... ц уже оставил в файле импорта всего одну строчку.... всё проходит хорошо, не ругается, но моей строки нет в таблице.
Старый 20.07.2011, 22:20   #14  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Цитата:
Сообщение от Shaitan-Babay Посмотреть сообщение
Alterant в том и дело что нет .... ц уже оставил в файле импорта всего одну строчку.... всё проходит хорошо, не ругается, но моей строки нет в таблице.
Тогда могу только посоветовать раскрыть код этого секретного датапорта общественности. Ну или переносить вопрос на форум гадалок, предсказателей и ясновидящих.
Старый 21.07.2011, 00:17   #15  
Sancho is offline
Sancho
Administrator
Аватар для Sancho
Лучший по профессии 2017
Лучший по профессии 2009
 
1,294 / 221 (10) ++++++
Регистрация: 11.01.2006
может датапорт просто не сохранен?..
Старый 21.07.2011, 09:50   #16  
Fordewind is offline
Fordewind
Участник
 
1,134 / 10 (3) +
Регистрация: 01.12.2005
Цитата:
Сообщение от Sancho Посмотреть сообщение
может датапорт просто не сохранен?..
или запускается из кода через ctrl+r (так он запускается в тестовом режиме)
Старый 21.07.2011, 09:53   #17  
raniel is offline
raniel
Участник
Аватар для raniel
 
239 / 11 (1) +
Регистрация: 20.10.2006
Всем приношу извинения. Виноват. Просто никак не могу привыкнуть к особенностям навика. Sancho Вы правы. Вчера бился я с этой задачей до позднего вечера, плюнул на всё и закрыл Навик. Он меня спросил о сохранении датапорта(до этого я постоянно его сохранял Ctrl+S). Сегодня утром запустил и всё отработало. Странно конечно, я ведь и через дебагер смотрел, вроде всё было. Ещё раз приношу всем извинения. Спасибо.
 


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

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

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