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

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


Я люблю этот Форум!

Сообщений: 176
Открыть форму ввода с определенным системный номер
23.08.2017 :: 14:12:26
 
Добрый день
Вопрос
Есть две связанные таблицы . мне надо из форм ввода связывать данные между ними(в первой заносятся данные пропуска) во второй заносятся накладные(данные из накладных) Но накладных может быть много до 30 штук у одного водителя и они должны быть привязаны к одному пропуску. Вопрос я сделал две формы в одной у меня заносятся данные по пропуску в другой при нажатие кнопки открывается форма по накладным Все вроде вводится и данные связываются, но есть одна загвоздка как мне открыть форму ввода с системным номером который передавался в переменной Arg.nakl
Код формы 1
Код:
function кнопка8_Click( control )
--связь с формой накладная
--глобал переменная для отдачи подчиненным формам
local formargs = {}
formargs.nakl = Me.RecordNumber --системный номер текущей записи
Me:SaveRecord()-- на всякий случай сохраним в банке изменения записи
-- открываем форму накладная
CroApp.GetBank():OpenForm( 1, "НА", Me, formargs)
Me:CloseForm ()
end

 



Код формы 2
Код:
function кнопка1_Click( control )

---данные переданные из формы РД системный номер
baseRD = CroApp.GetBank():GetBase("РД")  -- получаем базу "РД"
newNakl = Record.new(baseRD)
newNakl = Arg.nakl -- присваиваем созданной записи базы "РД" значение переданное из  формы
MsgBox("База РД   "..newNakl)
-------------
baseHA = CroApp.GetBank():GetBase("НА") --получаем базу НА
newRecHA = Record.new(baseHA) -- ноавя запись
--MsgBox("Форма   "..Me.Record.SN)
if newRecHA then
baseHA:AddRecord(newRecHA)  -- добавляем запись в базу данных
newRecHA:SetValue("Номер документа", Me.поле1_1.Value );
newRecHA:SetValue("Дата состовления документа", Me.поле2_1.Value );
newRecHA:SetValue("Наименование груза(первая позиция)", Me.поле3_1.Value );
newRecHA:SetValue("Количество", Me.поле4_1.Value );
newRecHA:SetValue("Сумма(с учетом НДС)", Me.поле5_1.Value );
newRecHA:Update()
SNHA = newRecHA.SN -- берем системный номер записи
--MsgBox("База РД   "..SNHA)
res = baseHA:AddLink (SNHA, 6, "РД", newNakl, Base.LockWait, Base.LockWait)           -- делаем связь
Me:DeleteRecord(Form.DCNo,Form.DENone) --удаляем системную запись
-----проверка связи
--if res then
 --MsgBox (SNHA.."\r\n"..newNakl.."\r\n"..tostring(res))
--end
Me:CloseForm ()-- закрываем форму
CroApp.GetBank("dzr!"):OpenForm("Коррекция пропуска ОРД","РД",Me);
end
end
 


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


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

Сообщений: 2 813
Санкт-Петербург
Re: Открыть форму ввода с определенным системный номер
Ответ #1 - 23.08.2017 :: 14:55:02
 
Что то Вы перемудрили (как мне кажется).
Есть база Пропуска (РД) и есть база Накладные (НА). Они связаны между собой по полю 6 (из базы НА. Из РД - непонятно).
Делаете форму ввода для базы РД с нужными полями и вложенной формой НА или вызываемой функцией OpenSubForm из базы РД. При этом закрывать форму базы РД не надо. Все связи будут устанавливаться автоматически. Для вложенной формы можно предусмотреть табличное представление, двойной клик по выбранной накладной будет автоматически переходить в ее коррекцию. При этом никаких скриптов писать вообще не надо.
В приведенном Вами скрипте получается какая то "ерунда".  Вы создаете новую запись, открывая форму НА. Потом создаете программным способом еще одну новую запись в базе. Из полей формы переносите значения в запись, созданную программно. Потом сохраняете эту запись и удаляете запись формы.
Непонятно.
Наверх
 
 
IP записан
 
Alexandr
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 176
Re: Открыть форму ввода с определенным системный номер
Ответ #2 - 23.08.2017 :: 15:36:36
 
Если  форму не закрывать, то  у меня связь между базами не осуществляется(Видимо где то блокируется) Поэтому так и перемудрил
Хорошо попробую с вложенной формой
Что значит табличное представление?
Наверх
 
 
IP записан
 
Alexandr
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 176
Re: Открыть форму ввода с определенным системный номер
Ответ #3 - 23.08.2017 :: 15:46:35
 
Сделал вложенную форму
Вроде работаег
Спасибо
Наверх
 
 
IP записан
 
Alexandr
Профи
****
Вне Форума


Я люблю этот Форум!

Сообщений: 176
Re: Открыть форму ввода с определенным системный номер
Ответ #4 - 24.08.2017 :: 09:40:09
 
Для общего развития, все таки как открыть форму  ввода с определенным системным номером Код:
local base = CroApp.GetBank():GetBase("РД")
local records = base:GetRecordSet(47)
CroApp.GetBank():OpenForm( 5, "РД", Me, "", records )
Открывает первую системную запись, а не 47
 


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


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

Сообщений: 2 813
Санкт-Петербург
Re: Открыть форму ввода с определенным системный номер
Ответ #5 - 24.08.2017 :: 10:37:49
 
Код:
local base = CroApp.GetBank():GetBase("РД")
local records = base:GetRecord(47)
CroApp.GetBank():OpenForm( 5, "РД", Me, nil, records )
 

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


Περσεύς

Сообщений: 68
Re: Открыть форму ввода с определенным системный номер
Ответ #6 - 12.03.2021 :: 11:05:07
 
Прошу подсказать! Как перейти к конкретной записи во вложенной форме?
Пример. Запись базы "Трудовая деятельность" (далее - ТД) связана с несколькими записями базы "Работа в компании" (далее - РК). На форме ввода, принадлежащей базе ТД, вложенная форма базы РК, а также поле со списком с перечнем должностей, сформированных на основе данных, полученных от связанных записей базы РК. Цель: кликая по списку должностей переходить во вложенной форме к соответствующей записи.
Как обратиться к этой вложенной форме, заставить ее переходить и отображать конкретную запись, управляя из основной формы?
Наверх
 
 
IP записан
 
Mit
Опытный пользователь
***
Вне Форума


Περσεύς

Сообщений: 68
Re: Открыть форму ввода с определенным системный номер
Ответ #7 - 12.03.2021 :: 11:30:07
 
Всем спасибо!))) Вопрос решил путем переноса списка должностей из основой формы во вложенную и добавлением нижеизложенного кода во вложенную форму:
Код:
function Форма_Load( form )
	ToMoveList()
end
function ToMoveList()
	t_snrk={}
	Me.lst_rk:Clear()
		for rec in Me.RecordSet.Records do
			Me.lst_rk:Add(rec:GetValue(2))
			table.insert(t_snrk,rec.SN)
		end
	end
function lst_rk_DoubleClick( control, event )
	Me.RecordNumber=t_snrk[Me.lst_rk.SelectedIndex]
end 

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