Скрипт на загрузку макета

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Ответить
Maria
Сообщения: 17
Зарегистрирован: 04 фев 2018, 14:54

Скрипт на загрузку макета

Сообщение Maria » 07 фев 2018, 08:47

Здравствуйте! Я Новичок и у меня такой вопрос. Как организовать скрипт на Управление Макетом - Показать только те записи в макете при его загрузке, одно из полей которых соответствует заданному значению? Заранее спасибО!)

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

Re: Скрипт на загрузку макета

Сообщение Arcady » 09 фев 2018, 22:47

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

andrey volkov
Сообщения: 174
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: Скрипт на загрузку макета

Сообщение andrey volkov » 10 фев 2018, 05:57

откуда берется это заданное значение?

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

Re: Скрипт на загрузку макета

Сообщение Alexei Sytch » 25 фев 2018, 15:31

Maria, сначала переходим на макет, потом в этом макете находим то что нужно по образу

посмотрите на второй пример в этом разделе справки
https://fmhelp.filemaker.com/help/16/fm ... -find.html

только первым шагом добавьте переход на нужный макет с помощью шага
"Перейти к макету" (Go to Layout)

для автоматизации поиска делаем скрипт со следующей логикой (если излагать по-русски)

1 Перейти к макету (Ваш макет, например Каталог колясок)
2 Войти в режим поиска
3 Задать поле (Ваше целевое поле (Например, "Статус наличия" ; Ваше поисковое значение (например, "В наличии")
4 Выполнить поиск

Такой скрипт можно привязать к кнопке на макете или вызвать из меню программы

Если надо усложнить поиск, до подбора по нескольким параметрам задаем несколько полей, а если надо найти сразу несколько записей с разными вариантами в одном поле, то создаем дополнительные строчки запроса (шагом Создать запись/запрос в режиме поиска) и задаем в них нужное поле

hvoya
Сообщения: 3
Зарегистрирован: 16 июл 2018, 05:57

Re: Скрипт на загрузку макета

Сообщение hvoya » 31 июл 2018, 06:21

Добрый день! Я новичек новичковский, не знающий основ программирования, но вынужденный в силу определенных обстоятельств работать в чудесной программе FM. Будьте любезны подскажите как реализовать подобный скрипт, но только чтобы макет открывался не с заданным в скрипте значением, а в зависимости от того что написано на кнопке перехода на данный макет. Например, есть лэйаут, на котором кнопки с названиями организаций: АО1, АО2, АО3, нужно чтобы по нажатию этих кнопок открывался макет с информацией о той организации, которая указана на кнопке.

hvoya
Сообщения: 3
Зарегистрирован: 16 июл 2018, 05:57

Re: Скрипт на загрузку макета

Сообщение hvoya » 13 авг 2018, 07:26

Удалось решить ситуацию самостоятельно. В продолжении темы остался еще один вопрос.
Как было описано в предыдущем посте есть макет №1 с перечнем организации, на котором в поле "наименование организации" установлен скрипт OnObjectEnter (set field (глобальное поле к обычному полю) и go to layout), таким образом при нажатии на поле с определенной организацией открывается макет №2 с данными этой организации. В этом макете № 2 вставлен портал (сам к себе), в котором указан некий перечень информации, характеризующий данную организацию. Так вот вопрос, как организовать переход на макет № 3 из этого портала аналогичным образом (при нажатии определенного поля открывается макет № 3 с данными этого поля)?

andrey volkov
Сообщения: 174
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: Скрипт на загрузку макета

Сообщение andrey volkov » 18 авг 2018, 05:57

hvoya писал(а):
13 авг 2018, 07:26
Удалось решить ситуацию самостоятельно. ....
Так вот вопрос, как организовать переход на макет № 3 из этого портала аналогичным образом (при нажатии определенного поля открывается макет № 3 с данными этого поля)?
аналогичную задачу решаете аналогичным образом.
Судя по описанию, есть подозрение, что что-то вы делаете не совсем оптимальным способом. Если вы хотите оптимизировать процедуру, то пришлите скрины и более подробное описание (например, описание макета 2)

Поскольку я не уверен, что все правильно понял, задам вопрос: когда пользователь нажимает в некое поле, на новом макете он должен увидеть только это поле?

hvoya
Сообщения: 3
Зарегистрирован: 16 июл 2018, 05:57

Re: Скрипт на загрузку макета

Сообщение hvoya » 24 авг 2018, 05:38

andrey volkov писал(а):
18 авг 2018, 05:57
аналогичную задачу решаете аналогичным образом.
Судя по описанию, есть подозрение, что что-то вы делаете не совсем оптимальным способом. Если вы хотите оптимизировать процедуру, то пришлите скрины и более подробное описание (например, описание макета 2)

Поскольку я не уверен, что все правильно понял, задам вопрос: когда пользователь нажимает в некое поле, на новом макете он должен увидеть только это поле?
Спасибо, что откликнулись. При нажатии на поле в портале макета 2 нужно чтобы открывался макет 3 с информацией, которая характеризует организация выбранную из макета 1 по критерию выбранного поля из макета 2. Решил поставленную задачу аналогичным образом, были проблемы со связями между таблицами, поэтому ничего не выходило..

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

Re: Скрипт на загрузку макета

Сообщение Alexei Sytch » 04 сен 2018, 13:35

У меня одного такое ощущение, что Hvoya, пытается имитировать на FileMaker переключение между листами в Excel (либо по ярлычкам, либо по кнопке с макросом перехода?)
Если решать задачу в лоб, то да функция GetLayoutObjectAttribute( "ObjectYaNazvalTak"; "content") вас должна выручить.

// GetLayoutObjectAttribute
Let( [
objectName = "ObjectYaNazvalTakr"
; attributeName = "content"
; repetitionNumber = ""
; portalRowNumber =""
] ;
GetLayoutObjectAttribute( objectName ; attributeName ; repetitionNumber ; portalRowNumber )
)
если использовать "content", то можно даже использовать значение Merge Variable и получать его при нажатии кнопки.


hvoys, мне кажется, что можно сделать все проще. Если вы переключаетесь между разными Макетами основанными на одной таблице, то текущая запись останется той же после переключения между макетами. В этом различие между Excel и FileMaker при работе с данными. т.е. можно сделать 50 полей для организации, два первых из которых будут Название и ИНН. Эти два поля расположить в виде списка (ListView) сделать кнопочку с шагом GoToLayout (например, "Карточка Организации") где будут видны остальные 48 полей.
GoToLayout будет достаточно ( и на Макете Карточка организации сделать кнопку вернуться назад). Вы остаетесь в одной запси, только просматриваете еще через разные Макеты.
А вот чтобы перейти к связанной записи/записям (в этом Макете, или в другом Макете, или через Автореляцию) попробуйте GoToRelatedRecord (например у вас есть два таблицы - одна со списком названий предприятий, а вторая, с показателями их работы за разные периоды времени. В GotoReleted Records есть опция - показать "все связанные записи" используя Макет (например "Динамика Показателя")

Надеюсь, я правильно понял ситуацию.

Ответить