Страница 1 из 1

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

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

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

Добавлено: 09 фев 2018, 22:47
Arcady
Вам нужно изучить как работает поиск в FileMaker и написать соотвествующий скрипт, который будет вызываться при входе в макет (например при нажатии кнопки пользователем для перехода)
Посмотрите примеры от самого FileMaker - там все это есть

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

Добавлено: 10 фев 2018, 05:57
andrey volkov
откуда берется это заданное значение?

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

Добавлено: 25 фев 2018, 15:31
Alexei Sytch
Maria, сначала переходим на макет, потом в этом макете находим то что нужно по образу

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Добавлено: 04 сен 2018, 13:35
Alexei Sytch
У меня одного такое ощущение, что 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 есть опция - показать "все связанные записи" используя Макет (например "Динамика Показателя")

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