Скрипт на загрузку макета
Скрипт на загрузку макета
Здравствуйте! Я Новичок и у меня такой вопрос. Как организовать скрипт на Управление Макетом - Показать только те записи в макете при его загрузке, одно из полей которых соответствует заданному значению? Заранее спасибО!)
Re: Скрипт на загрузку макета
Вам нужно изучить как работает поиск в FileMaker и написать соотвествующий скрипт, который будет вызываться при входе в макет (например при нажатии кнопки пользователем для перехода)
Посмотрите примеры от самого FileMaker - там все это есть
Посмотрите примеры от самого FileMaker - там все это есть
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: Скрипт на загрузку макета
откуда берется это заданное значение?
-
- Сообщения: 106
- Зарегистрирован: 21 сен 2017, 18:48
- Откуда: Минск
Re: Скрипт на загрузку макета
Maria, сначала переходим на макет, потом в этом макете находим то что нужно по образу
посмотрите на второй пример в этом разделе справки
https://fmhelp.filemaker.com/help/16/fm ... -find.html
только первым шагом добавьте переход на нужный макет с помощью шага
"Перейти к макету" (Go to Layout)
для автоматизации поиска делаем скрипт со следующей логикой (если излагать по-русски)
1 Перейти к макету (Ваш макет, например Каталог колясок)
2 Войти в режим поиска
3 Задать поле (Ваше целевое поле (Например, "Статус наличия" ; Ваше поисковое значение (например, "В наличии")
4 Выполнить поиск
Такой скрипт можно привязать к кнопке на макете или вызвать из меню программы
Если надо усложнить поиск, до подбора по нескольким параметрам задаем несколько полей, а если надо найти сразу несколько записей с разными вариантами в одном поле, то создаем дополнительные строчки запроса (шагом Создать запись/запрос в режиме поиска) и задаем в них нужное поле
посмотрите на второй пример в этом разделе справки
https://fmhelp.filemaker.com/help/16/fm ... -find.html
только первым шагом добавьте переход на нужный макет с помощью шага
"Перейти к макету" (Go to Layout)
для автоматизации поиска делаем скрипт со следующей логикой (если излагать по-русски)
1 Перейти к макету (Ваш макет, например Каталог колясок)
2 Войти в режим поиска
3 Задать поле (Ваше целевое поле (Например, "Статус наличия" ; Ваше поисковое значение (например, "В наличии")
4 Выполнить поиск
Такой скрипт можно привязать к кнопке на макете или вызвать из меню программы
Если надо усложнить поиск, до подбора по нескольким параметрам задаем несколько полей, а если надо найти сразу несколько записей с разными вариантами в одном поле, то создаем дополнительные строчки запроса (шагом Создать запись/запрос в режиме поиска) и задаем в них нужное поле
Re: Скрипт на загрузку макета
Добрый день! Я новичек новичковский, не знающий основ программирования, но вынужденный в силу определенных обстоятельств работать в чудесной программе FM. Будьте любезны подскажите как реализовать подобный скрипт, но только чтобы макет открывался не с заданным в скрипте значением, а в зависимости от того что написано на кнопке перехода на данный макет. Например, есть лэйаут, на котором кнопки с названиями организаций: АО1, АО2, АО3, нужно чтобы по нажатию этих кнопок открывался макет с информацией о той организации, которая указана на кнопке.
Re: Скрипт на загрузку макета
Удалось решить ситуацию самостоятельно. В продолжении темы остался еще один вопрос.
Как было описано в предыдущем посте есть макет №1 с перечнем организации, на котором в поле "наименование организации" установлен скрипт OnObjectEnter (set field (глобальное поле к обычному полю) и go to layout), таким образом при нажатии на поле с определенной организацией открывается макет №2 с данными этой организации. В этом макете № 2 вставлен портал (сам к себе), в котором указан некий перечень информации, характеризующий данную организацию. Так вот вопрос, как организовать переход на макет № 3 из этого портала аналогичным образом (при нажатии определенного поля открывается макет № 3 с данными этого поля)?
Как было описано в предыдущем посте есть макет №1 с перечнем организации, на котором в поле "наименование организации" установлен скрипт OnObjectEnter (set field (глобальное поле к обычному полю) и go to layout), таким образом при нажатии на поле с определенной организацией открывается макет №2 с данными этой организации. В этом макете № 2 вставлен портал (сам к себе), в котором указан некий перечень информации, характеризующий данную организацию. Так вот вопрос, как организовать переход на макет № 3 из этого портала аналогичным образом (при нажатии определенного поля открывается макет № 3 с данными этого поля)?
-
- Сообщения: 338
- Зарегистрирован: 11 сен 2017, 13:42
- Откуда: Санкт-Петербург
Re: Скрипт на загрузку макета
аналогичную задачу решаете аналогичным образом.
Судя по описанию, есть подозрение, что что-то вы делаете не совсем оптимальным способом. Если вы хотите оптимизировать процедуру, то пришлите скрины и более подробное описание (например, описание макета 2)
Поскольку я не уверен, что все правильно понял, задам вопрос: когда пользователь нажимает в некое поле, на новом макете он должен увидеть только это поле?
Re: Скрипт на загрузку макета
Спасибо, что откликнулись. При нажатии на поле в портале макета 2 нужно чтобы открывался макет 3 с информацией, которая характеризует организация выбранную из макета 1 по критерию выбранного поля из макета 2. Решил поставленную задачу аналогичным образом, были проблемы со связями между таблицами, поэтому ничего не выходило..andrey volkov писал(а): ↑18 авг 2018, 05:57аналогичную задачу решаете аналогичным образом.
Судя по описанию, есть подозрение, что что-то вы делаете не совсем оптимальным способом. Если вы хотите оптимизировать процедуру, то пришлите скрины и более подробное описание (например, описание макета 2)
Поскольку я не уверен, что все правильно понял, задам вопрос: когда пользователь нажимает в некое поле, на новом макете он должен увидеть только это поле?
-
- Сообщения: 106
- Зарегистрирован: 21 сен 2017, 18:48
- Откуда: Минск
Re: Скрипт на загрузку макета
У меня одного такое ощущение, что 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 есть опция - показать "все связанные записи" используя Макет (например "Динамика Показателя")
Надеюсь, я правильно понял ситуацию.
Если решать задачу в лоб, то да функция 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 есть опция - показать "все связанные записи" используя Макет (например "Динамика Показателя")
Надеюсь, я правильно понял ситуацию.