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

 
 
  ГлавнаяСправкаПоискВходРегистрация  
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать
Ошибка при запуске управляющей формы (Прочитано 376 раз)
oksanatver
Начинающий пользователь
*
Вне Форума



Сообщений: 4
Ошибка при запуске управляющей формы
26.05.2020 :: 16:43:04
 
Написан скрипт для установления связей двух таблиц через управляющую форму. При запуске через некоторое время возникает ошибка: not enough memory? Таблицы 27000 и 3000тысячи записей
Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


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

Сообщений: 2 741
Санкт-Петербург
Re: Ошибка при запуске управляющей формы
Ответ #1 - 26.05.2020 :: 21:39:50
 
Открыть редактор скрипта у Вас видимо получилось.
Приведите скрипт.
По каким параметрам и как производится установление связей?
По Вашему сообщение Цитата:
27000 и 3000 тысячи записей
речь идет о 27 и 3 миллионах.
Наверх
 
 
IP записан
 
oksanatver
Начинающий пользователь
*
Вне Форума



Сообщений: 4
Re: Ошибка при запуске управляющей формы
Ответ #2 - 27.05.2020 :: 14:52:16
 
скрипт на установление связей:
local bseDel=CroApp.GetBank():GetBase("WW")
local bseLic=CroApp.GetBank():GetBase("FF")
local rsDel=bseDel.RecordSet
local rsLic=bseLic.RecordSet

for recdel in rsDel.Records do
local nsyst_Del=recDel:GetValue(0)
local nomer_Del=recDel:GetValue(1)
if nomer_Del~="" then
for recLic in rsLic.Records do
local nsyst_Lic=recLic:GetValue(0)
local nomer_Lic=recLic:GetValue(1)
if nomer_Del==nomer_Lic then
if bseDel:Addlink(nsyst_Del,"Link_FF",bseLic,nsyst_Lic)==false then
Me.listbox1:Add("ошибка")
end
if bseLic:AddLink(nsyst_Lic,"Link_WW",bseDel,nsyst_Del)==false then
Me.listbox1:Add("ошибка")
end
end
end
end
end

Наверх
 
 
IP записан
 
oksanatver
Начинающий пользователь
*
Вне Форума



Сообщений: 4
Re: Ошибка при запуске управляющей формы
Ответ #3 - 27.05.2020 :: 14:53:35
 
В таблицах 27000 и 3000 записей. Нули были лишними в моем сообщении
Наверх
 
 
IP записан
 
Freelancer
Разработчик
Вне Форума


Per aspera ad Astra

Сообщений: 225
Re: Ошибка при запуске управляющей формы
Ответ #4 - 27.05.2020 :: 15:42:17
 
Попробуйте сделать принудительную очистку памяти после вложенной итерации по записям:

Код:
local bseDel=CroApp.GetBank():GetBase("WW")
local bseLic=CroApp.GetBank():GetBase("FF")
local rsDel=bseDel.RecordSet
local rsLic=bseLic.RecordSet

for recdel in rsDel.Records do
	local nsyst_Del=recDel:GetValue(0)
	local nomer_Del=recDel:GetValue(1)
	if nomer_Del~="" then
		for recLic in rsLic.Records do
			local nsyst_Lic=recLic:GetValue(0)
			local nomer_Lic=recLic:GetValue(1)
			if nomer_Del==nomer_Lic then
				if bseDel:Addlink(nsyst_Del,"Link_FF",bseLic,nsyst_Lic)==false then
					Me.listbox1:Add("ошибка")
				end
				if bseLic:AddLink(nsyst_Lic,"Link_WW",bseDel,nsyst_Del)==false then
					Me.listbox1:Add("ошибка")
				end
			end
		end
		collectgarbage() -- очистить объекты
	end
end 

Наверх
 
 
IP записан
 
Zuluss
Бета-тестер
Вне Форума


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

Сообщений: 2 741
Санкт-Петербург
Re: Ошибка при запуске управляющей формы
Ответ #5 - 27.05.2020 :: 15:54:54
 
Скрипт хороший,
Цитата:
Код:
local bseDel=CroApp.GetBank():GetBase("WW")
local bseLic=CroApp.GetBank():GetBase("FF")
local rsDel=bseDel.RecordSet
local rsLic=bseLic.RecordSet

for recdel in rsDel.Records do
	local nsyst_Del=recDel:GetValue(0)
	local nomer_Del=recDel:GetValue(1)
	if nomer_Del~="" then
		for recLic in rsLic.Records do
		local nsyst_Lic=recLic:GetValue(0)
		local nomer_Lic=recLic:GetValue(1)
			if nomer_Del==nomer_Lic then
				if bseDel:Addlink(nsyst_Del,"Link_FF",bseLic,nsyst_Lic)==false then
					Me.listbox1:Add("ошибка")
				end
				if bseLic:AddLink(nsyst_Lic,"Link_WW",bseDel,nsyst_Del)==false then
					Me.listbox1:Add("ошибка")
				end
			end
		end
	end
end 


только с ошибками.
1.  Lua регистрозависимый язык, поэтому recdel и recDel совершенно разные переменные. Проверьте и другие.
2. Вместо GetValue(0) лучше использовать .SN
3. Связи нужно устанавливать только с одной стороны, при условии корректной структуры. Проверьте чтобы в структуре связи были и с одной, и с другой стороны.
И из цикла одну из ветвей на установление связей надо убрать.
Наверх
 
 
IP записан
 
oksanatver
Начинающий пользователь
*
Вне Форума



Сообщений: 4
Re: Ошибка при запуске управляющей формы
Ответ #6 - 02.06.2020 :: 16:02:02
 
Спасибо за ваши замечания, постараюсь все исправить
Наверх
 
 
IP записан
 
Переключение на Главную Страницу Страниц: 1
Послать Тему Печать