Работа с таблицами AmiSharp
1. Как организовать цикл и перебрать все строки в таблице.
2. С помощью фильтра amisharp.ApplyFilterName("LK-GZ,"Код бумаги","GZU2","Filter"); создаем таблицу Filter.-все замечательно. Но когда скрипт проходит еще раз, обновляя таблицу, она пропадает в списке таблиц есть но не вызывается.
Но если удаляешь таблицу, то при новом проходе скрипта все возобновляется. Можно ли без удаления, а просто обновление значение таблицы.
С уважением, Александр.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Если нужно перебрать все строки в таблице, то это делается так (для именованной)
heght = strtonum(amisharp. GetHeight (......))
for (i=1 ; i <= height ; i++)
чего-то там со строкой номер i
Для неименованной цикл начинаем с 0 - заголовка-то в нулевой строке нет.
Если Вы хотите найти в таблице строку, где в определенном столбце находятся нужные Вам данные, то можно сделать это перебором строк и GetCell / GetCellName для каждой строки, а можно воспользоваться фильтром Applyfilter или ApplyFiltername. Обе эти функции из исходной таблицы сделают другую, новую, с именем, которое Вы зададите. В результирующей таблице будут помещены все (и только те) строки из исходной, где в требуемом столбце стоит нужное значение. Эта новая таблица ничем по функционалу не отличается от иных. С ней можно работать точно также, как и с остальными. После того как вы сделали с ней требуемые действия, ее следует удалить, чтобы не копить мусор в памяти. В случае, если используете ApplyFilterName, в результирующую таблицу будет скопирован заголовок из исходной.
Обычное применение - это поиск сделки в таблице сделок по ее известному номеру. Или поиск строки, отвечающей за нужный инструмент в таблице всех сделок.
Вот пример использования
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
У Вас в примерах было хорошо все показано и описано. И пример хороший.
Уточню вопрос. Формируем amisharp.ApplyFilterName("LK-GZ,"Код бумаги","GZU2","Filter");
новая таблица Filter содержит 4 строчки
heght = strtonum(amisharp. GetHeight (......))
for (i=1 ; i <= height ; i++) //и тут все понятно
{
a=Filter.имя_колонки; // таким образом можно прочитать данные?
}
По поводу создание новой таблицы, потом удаление, и так на каждом проходе скрипта. На сколько сильно эти операции влияют на производительность?
А в целом amisharp.ApplyFilterName - удобная вещь ))
Спасибо, Александр.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
AlexLan пишет: Спасибо за ответ.
Уточню вопрос. Формируем amisharp.ApplyFilterName("LK-GZ,"Код бумаги","GZU2","Filter");
новая таблица Filter содержит 4 строчки
heght = strtonum(amisharp.GetHeight(......))
for (i=1 ; i <= height ; i++) //и тут все понятно
{
a=Filter.имя_колонки; // таким образом можно прочитать данные?
}
Конечно нет.
a=amisharp. GetCell ("Filter",номер столбца, номер строки);
Или
a=amisharp. GetCellName ("Filter",имя столбца, номер строки);
AlexLan пишет: По поводу создание новой таблицы, потом удаление, и так на каждом проходе скрипта. На сколько сильно эти операции влияют на производительность?
Александр, удаление таблицы - элементарнейшая операция. Нисколько не влияет.
Фильтрация таблиц занимает несколько больше процесорного времени, но в любом случае внутри Амишарпа это происходит очень быстро, можно по этому поводу не задумываться.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Спасибо за пример))
Спасибо за оперативность.
Пишу функцию, перестановка (подтягивание ) стоп-лимитной заявки. Все хочется по проще, а код получается большой. Не привычный язык, но поддается.
С уважением, Александр.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.