Передача ID между таблицами

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Ответить
artema
Сообщения: 4
Зарегистрирован: 01 дек 2018, 09:29

Передача ID между таблицами

Сообщение artema » 15 дек 2018, 11:43

Прошу подсказать как грамотно реализовать передачу ID.

Есть заказ. В каждом заказе может быть несколько устройств. У каждого устройства свой статус.
Т.е. «Заказ» с «Устройствами» соединяется по «ID заказа». А «Устройства» с «Историей статусов» – по ID устройства.
Отношения таблиц.JPG
Отношения таблиц.JPG (24.05 КБ) 6401 просмотр
Что мы имеем: на форме «Заказ» встроен портал, через который добавляются записи в таблицу «Устройства». Каждое устройство имеет свой уникальный ID, который создается автоматически при создании новой записи.
После оформления всего заказа пользователь нажимает на некоторую кнопку на форме «Заказ», после чего в таблице «История статусов» формируется новая запись с указанием нового статуса для конкретно устройства.

Я пробовал создать скрипт, который создает в «Истории статусов» новую запись, копирует в поле «ID устройства» из аналогичного поля таблицы «Устройства» собственно сам ID. Однако при всех этих манипуляциях ничего не выходит (запись создается, но без ID устройства).
Но, если производить такую же манипуляции без участия портала, то данные копируются и вставляются как положено - однако такой вариант не рассматривается, т.к. как сказано выше: устройств может быть несколько.

Каким образом следует привязать новообразованный статус к конкретному устройству (и всем устройствам из одного заказа)?

Заранее благодарю за совет!

Аватара пользователя
Arcady
Администратор
Сообщения: 201
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: Передача ID между таблицами

Сообщение Arcady » 16 дек 2018, 19:07

если я правильно понял, что вы хотите, то в скрипит вам надо просто в переменную сохранить нужный ID потом перейти на лайаут "история статусов" создать запись и прописать запомненное ID из переменной в нужное поле. Потом, видимо, вернуться на исходный лайаут или какая у вас в приложении логика после нажатия кнопки.
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

Alexei Sytch
Сообщения: 106
Зарегистрирован: 21 сен 2017, 18:48
Откуда: Минск

Re: Передача ID между таблицами

Сообщение Alexei Sytch » 17 дек 2018, 20:44

Artema, как альтернативная идея - если единственное, что надо это хранить историю-лог изменения статуса - могу порекомендовать создать поле "История статусов" и просто дописывать строчку в это текстовое поле ( кто и когда, старый статус, новый статус, позльзователь) символ абзаца)

Плюс такого подхода что не нужны реляции, проще логика скрипта, и что можно использовать описание изменений на обычном русском языке "Статус "исполнено" установил Иванов 12 декабря 2018 года в 18.30"

Если же непосредственно по теме вопроса - Передать ID в несвязанную в несвязанную таблицу можно еще как параметр скрипта в момент нажатия кнопки (при запуске скрипта по кнопке в параметрах указываете нужный ID, который потом в вызванном скрипте считываете по Get(ScriptParameter).

Для промежуточных таблиц как "История статусов" в вашем примере часто бывает удобно сделать отдельный контекстно независимый скрипт "Добавить в историю статусов ID1 ID2", в который на вход подаются ID1 и ID2 через знак абзаца, (дальше скрипт делает все то что описал Аркадий, переход к промежуточной таблице создание новой записи, задание ID1 значению GetValue( Get( ScriptParameter ) ; 1 ), ID2 - значению GetValue( Get( ScriptParameter ) ; 2 ), сохраняет запись, и возвращается к первоначальному макету). Для этих целей можно сделать в схеме отдельное табличное представление для переходной таблицы, которое не связано с другими таблицами.

Ответить