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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.01.2007, 12:44   #1  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Главная проблема данной задачи - это узнать первую или НЕ первую запись файла Excel сейчас обрабатываем. Дальше все просто. Но КАК находясь внутри процедуры обработки ОДНОЙ записи это узнать? Никак! Нужен внешний счетчик уже обработанных записей.
Так это жe и есть оригинальный вопрос ...

Вставил код перед тем как вызывается эта функция .. просто решение не идеальное так как теоретически возможны конфликты между пользователями.

У меня есть еще несколько идей как это преодолеть, просто больше програмирования, можeт как нибудь потом попробую:

1. Сделать отдельную таблицу с полями: требуемый ID и какой нибудь уникальный идентификатор сессии. Просто писать только одно значнеие на сессию.

2. Этот код хранится в таблице в виде текста, возможно можно модифицировать его, меняя константу там перед вызовом цикла обработчика записай. . Таблица выглядит так как будто запись создается для каждого запуска импорта, т.е. конфликтов не должно быть.
__________________
_databaseTransDelete ... bl@$ !
Старый 26.01.2007, 13:04   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от DTD Посмотреть сообщение
1. Сделать отдельную таблицу с полями: требуемый ID и какой нибудь уникальный идентификатор сессии. Просто писать только одно значнеие на сессию.
Вы запустили процедуру импорта первый раз - все замечательно.

Затем, не выходя из AXAPTA, находясь в той же сессии, запустили процедуру импорта еще раз.

И вот тут-то и проблема. Все идентификаторы те же самые, но импорт ДРУГОЙ. Нужен НОВЫЙ код. А Вы возьмете старое значение из того, что было сохранено.

Цитата:
Сообщение от DTD Посмотреть сообщение
2. Этот код хранится в таблице в виде текста, возможно можно модифицировать его, меняя константу там перед вызовом цикла обработчика записай. . Таблица выглядит так как будто запись создается для каждого запуска импорта, т.е. конфликтов не должно быть.
Т.е. каждая запись будет иметь свой идентификатор? Генерация кода происходит для каждой записи в отдельности или для всей процедуры импорта (всех записей) одного файла Excel?
Старый 26.01.2007, 13:48   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Вы запустили процедуру импорта первый раз - все замечательно.

Затем, не выходя из AXAPTA, находясь в той же сессии, запустили процедуру импорта еще раз.

И вот тут-то и проблема. Все идентификаторы те же самые, но импорт ДРУГОЙ. Нужен НОВЫЙ код. А Вы возьмете старое значение из того, что было сохранено.
По моему, здесь остается единственный вопрос - сброс сохраненного значения перед началом импорта (или после окончания).

В общем-то, для этого можно воспользоваться тем же классом Info - добавить в обработчик таймера (addTimeOut) свой класс, в котором сбрасывать сохраненный параметр. Параметр idle = true. Время срабатывания - минимальное.

Схема работы будет такая.
Сохраняем требуемый нам параметр и идентификатор таймера.
При запуске проверяем, что парамерт не установлен устанавливаем его. Запускаем таймер. Значение таймера сохраняем так же как параметр. Если при запуске таймер установлен, сбрасываем его.

В результате, как только импорт отработает, запустится метод по таймеру и сбросит сохраненный параметр.
__________________
Axapta v.3.0 sp5 kr2
Старый 26.01.2007, 15:27   #4  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Вы запустили процедуру импорта первый раз - все замечательно.

Затем, не выходя из AXAPTA, находясь в той же сессии, запустили процедуру импорта еще раз.

И вот тут-то и проблема. Все идентификаторы те же самые, но импорт ДРУГОЙ. Нужен НОВЫЙ код. А Вы возьмете старое значение из того, что было сохранено.
Это было понятно с самого начала и решено путем сбрасывания значения после каждого импорта, посмотрите пост #4 -" ...и инициализации / сбрасыванием его перед/после импортом таблицы в SysDataImportExcel/importTable"
__________________
_databaseTransDelete ... bl@$ !
Старый 26.01.2007, 15:31   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,715 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от DTD Посмотреть сообщение
Это было понятно с самого начала и решено путем сбрасывания значения после каждого импорта, посмотрите пост #4 -" ...и инициализации / сбрасыванием его перед/после импортом таблицы в SysDataImportExcel/importTable"
У Вас произошла ошибка в процессе импорта. Флаг установился, но не сбросился. Ваши действия?

==============
Минуточку!

SysDataImportExcel/importTable относится к импорту ВСЕЙ таблицы? Не одной строки, а именно ВСЕХ строк? Если вот в этом методе и формировать твое значение NEW_PriceDiscId и записывать в спец.поле таблицы или переменную класса Global, а в методе разбора одной строки просто считывать это значение?

Последний раз редактировалось Владимир Максимов; 26.01.2007 в 15:40. Причина: Сразу не понял
Старый 26.01.2007, 18:50   #6  
DTD is offline
DTD
Участник
 
183 / 18 (1) ++
Регистрация: 09.08.2005
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
SysDataImportExcel/importTable относится к импорту ВСЕЙ таблицы? Не одной строки, а именно ВСЕХ строк? Если вот в этом методе и формировать твое значение NEW_PriceDiscId и записывать в спец.поле таблицы или переменную класса Global, а в методе разбора одной строки просто считывать это значение?


Гениально !
__________________
_databaseTransDelete ... bl@$ !
Теги
импорт, импорт из excel, критерии

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Экспорт стандартных отчетов в Excel ? ena_ax DAX: Программирование 14 12.04.2010 14:16
Экспорт в Excel exodus DAX: Программирование 1 23.01.2008 09:35
Экспорт из Excel... soin DAX: Администрирование 10 24.01.2007 21:32
Экспорт в Excel. Проблема с '\n' axaLearner DAX: Программирование 12 17.04.2006 18:43
Экспорт в Excel через WorkBooks.OpenText() Владимир Максимов DAX: Программирование 2 09.04.2004 17:16

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

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

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