cro-logo      
Добро пожаловать, Гость. Пожалуйста, выберите Вход или Регистрация

 
 
  ГлавнаяСправкаПоискВходРегистрация  
 
Страниц: 1 2 3 
Послать Тему Печать
Заполнение списка и словарные поля (Прочитано 1 430 раз)
Юзер99335588
Опытный пользователь
***
Вне Форума



Сообщений: 64
Re: Заполнение списка и словарные поля
Ответ #30 - 19.01.2022 :: 20:58:30
 
Я попытался программно создать похожий банк, сделал в нём 32к записей
Моя форма внутри архива
Посмотрите пожалуйста, есть разница по времени исполнения если словарь декодировать или из таблицы программно вычислять

Спасибо.

п.с. за структуру банка прошу не ругать - это простая таблица с текстовыми полями с которой я ничего не могу сделать, так исторически сложилось

https://disk.yandex.ru/d/c80D6u7AZlLW5Q
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 968
Санкт-Петербург
Re: Заполнение списка и словарные поля
Ответ #31 - 20.01.2022 :: 00:25:24
 
Действительно. Получение декодированных словарных значений почти в 10 раз увеличивает время формирования списка. Формирование словарей в памяти в виде таблиц и декодирование из них позволяет значительно увеличить скорость работы.
Код:
function GetVocs()-- формирование таблиц словарей в глобальную таблицу Vocs. Запускать в событии Load
	Vocs={{},{}}
	local rs=CroApp:GetBank():GetVocabulary():GetBase(1).RecordSet
	for record in rs.Records do
		Vocs[1][record:GetValue(1)]=record:GetValue(2)
	end
	rs=CroApp:GetBank():GetVocabulary():GetBase(2).RecordSet
	for record in rs.Records do
		Vocs[2][record:GetValue(1)]=record:GetValue(2)
	end
end

function DecodeVals(t,numvoc)-- получение декодированных значений по номеру словаря numvoc из таблицы t и выдача в виде строки
	local out={}
	for k,v in ipairs(t) do
		table.insert(out,Vocs[numvoc][v])
	end
	return table.concat(out,"; ")
end

-- пример использования
--local v=record:GetValue(6,0,false)
--local str2=DecodeVals(v,1) 

Наверх
 
 
IP записан
 
Юзер99335588
Опытный пользователь
***
Вне Форума



Сообщений: 64
Re: Заполнение списка и словарные поля
Ответ #32 - 21.01.2022 :: 10:28:03
 
Спасибо большое!

Если работать со стандартным (табличная форма Кроноса) выводом информации проблем нет. 90+М записей в виртуальном ПК на не свежей ЭВМ работает всё шикарно, без тормозов. А вот если надо что-то "своё", то появляются нюансы

А вот такой ещё вопрос: можно ли как-то создавать и запускать сценарий Lua в Кроносе без создания форм? Или они только в формах существуют?
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


Старинный пользователь
Кронос

Сообщений: 2 968
Санкт-Петербург
Re: Заполнение списка и словарные поля
Ответ #33 - 21.01.2022 :: 10:55:22
 
Цитата:
...можно ли как-то создавать и запускать сценарий Lua в Кроносе без создания форм? Или они только в формах существуют?


скрипты управляющих и входных форм (обычно именуются просто скриптами форм); 
скрипты банка;
системные скрипты.
Описаны в справке по Cronos и CroLua.
Ничто не мешает запускать форму и скрипт и сделать ее невидимой.

Наверх
 
 
IP записан
 
Страниц: 1 2 3 
Послать Тему Печать