Передать ID

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

Передать ID

Сообщение Maria » 01 апр 2018, 19:04

Возникает проблема. Когда через портал выбираю запчасть, получаю ее ID по скрипту (см. скриншот). Автоматически заполняются Цена, Артикул и тд..
Но этот скрипт работает лишь для двух строк портала. Дальше начинает зависать.
Может можно сделать так, если запчасть уже выбрана, она не будет отображаться в выпадающем списке (вып.список формируется из таблицы Запчасти).
Или может есть другие варианты получения ID запчасти из привязанной таблицы.
Вложения
Снимок экрана 2018-04-02 в 2.01.40.png
Снимок экрана 2018-04-02 в 2.01.40.png (77.91 КБ) 10454 просмотра

Аватара пользователя
mihalych_2017
Сообщения: 39
Зарегистрирован: 11 сен 2017, 15:36
Откуда: Подольск
Контактная информация:

Re: Передать ID

Сообщение mihalych_2017 » 02 апр 2018, 11:10

А почему бы не связать Строки накладной с таблицей Запчасти по наименованию запчасти?
Тогда можно получить id Запчасти напрямую.
Шичко Игорь
FileMaker Developer & Programmer Delphi
https://igorshichko.wordpress.com/

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

Re: Передать ID

Сообщение Alexei Sytch » 03 апр 2018, 20:38

Maria писал(а):
01 апр 2018, 19:04
Может можно сделать так, если запчасть уже выбрана, она не будет отображаться в выпадающем списке (вып.список формируется из таблицы Запчасти).
Или может есть другие варианты получения ID запчасти из привязанной таблицы.
Для получения ID я бы порекомендовал сделать портал пикер вместо выпадающего списка.
Это позволит искать запчасти:
  • по названию
  • по артикулу
  • по цене
  • и т.п.
Разместить справа от списка позиций заказа
Picker1.PNG
Picker1.PNG (14.33 КБ) 10430 просмотров
Из пикера при нажатии кнопки с плюсиком буду добавляться ID в позиции заказа, (цена, артикул, название копируются по LookUp через прямую реляцию между таблицей OrderItems и Parts при создании записи
Picker2.PNG
Picker2.PNG (13.63 КБ) 10430 просмотров

Здесь небольшой пример, как я себе это вижу
Orders-Items-Parts.zip
Небольшая демка
(229.02 КБ) 413 скачиваний

Maria
Сообщения: 17
Зарегистрирован: 04 фев 2018, 14:54

Re: Передать ID

Сообщение Maria » 15 апр 2018, 01:36

Крутое решение. спасибо! Попробовала перенести его в свой проект, но к сожалению, не корректно все работает.
Так как в макете Диагностика я работаю через таблицу Заказы, здесь не позволяет выбирать и добавлять запчасти, как показано в Вашем примере.

Если макет Диагностика привязываю к Накладной, то все работает супер, но поля из таблицы "Диагностика и ремонт" не отображаются в макете Диагностики, в котором я работаю и там теряется вся связь. Надеюсь, понятно объяснила.
Как можно решить проблему, не ломая все собранное? :(
Как сделать так, чтобы была возможность поиска, но чтобы все сохранялось, а именно у Заказа был свой ДИАГ ЛИСТ, у ДИАГ ЛИСТА был свой СЧЕТ. Соответственно у счета множество своих строк с разными деталями.
Вложения
Снимок экрана 2018-04-15 в 8.33.35.png
Снимок экрана 2018-04-15 в 8.33.35.png (37.46 КБ) 10319 просмотров
Снимок экрана 2018-04-15 в 8.25.10.png
Снимок экрана 2018-04-15 в 8.25.10.png (35.41 КБ) 10319 просмотров

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

Re: Передать ID

Сообщение Alexei Sytch » 15 апр 2018, 22:13

Maria писал(а):
15 апр 2018, 01:36

Так как в макете Диагностика я работаю через таблицу Заказы, здесь не позволяет выбирать и добавлять запчасти, как показано в Вашем примере.

Если макет Диагностика привязываю к Накладной, то все работает супер, но поля из таблицы "Диагностика и ремонт" не отображаются в макете Диагностики, в котором я работаю и там теряется вся связь. Надеюсь, понятно объяснила.
Мария, добрый день. Рад, что пример подошел. Могу предложить привязать Пикер к тому Макету (таблице), в котором вы работаете (т.е. если это Макет Диагностика (основанный на Заказы), сделайте связку прямо из таблицы Заказы - правки отмечены маркером на вашей схеме) вместо привязки к Накладной.
Corrected 2018-04-16.png
предлагаемое место привязки Picker
Corrected 2018-04-16.png (29.68 КБ) 10308 просмотров

Maria
Сообщения: 17
Зарегистрирован: 04 фев 2018, 14:54

Re: Передать ID

Сообщение Maria » 16 апр 2018, 08:25

Нет, не получается. В портале - пикере не отображаются Запчасти :( Возможно, он пытается найти связанные записи с таблицей запчастей, а их как бы нет, т.к. для начала мы должны их выбрать..

Maria
Сообщения: 17
Зарегистрирован: 04 фев 2018, 14:54

Re: Передать ID

Сообщение Maria » 16 апр 2018, 11:59

Очень понравился данный поиск, не хочется его терять )
Конечно и по-другому все работает (если передавать ID), но без поиска уже не то :)

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

Re: Передать ID

Сообщение Alexei Sytch » 16 апр 2018, 19:14

Вы можете сделать самопроверку привязки Пикера к таблице Х (например, Заказ далее обозначается как таблица Х ) по такому списку.

1. В Таблице Х есть поле gПоискЗапчастиID - глобальное текстовое
2. В Таблице Х есть gПоискЗапчасти - глобальное текстовое
3. Между таблицей Х и Запчасти установлена связь Х_Запчасти по полю gПоискЗапчастиID = PartID
4. В скрипте SearchID ссылки заменены на поля Таблица Х::gПоискЗапчастиID (там где устанавливается поле и в последнем аргументе формулы ExecuteSQL там где подставляется поисковое значение -- Substitute (Lower( Таблица Х::gПоискЗапчасти ); " "; "%" )
5. Пикер вместе с поисковым полем скопирован на макет, основанный на таблице Х и изменены ссылки для поискового поля Пикера на поле Таблица Х::gПоискЗапчасти, а для всего портала для каждого поля в портале на созданную в п.3 связь с таблицей Запчасти - Х_Запчасти::Артикул, Название, PartID и т.д.
6. В кнопке (Плюсик) исправлен параметр с которым запускается привязанный к кнопке скрипт CreateOrderItem - ссылка на поле PartID через на созданную в п3. связь -- Х_Запчасти::PartID
7.Исправлены ссылки в скрипте CreateOrderItem так чтобы они работали с макета, основанного на Таблице Х
8. Исправлена формула в условном форматировании кнопки с плюсиком в портале
9. У поля для поиска gSearch есть триггер, скрипт SearchID
10. ОСТОРОЖНО при использовании кнопки удаление строки заказа в портале обязательно проверьте, что свойствах связи между OrderItem и Part сняты галки с каскадного удаление, иначе будут удаляться записи из справочника

Подсказать что-то более конкретное, можно было бы взглянув на файл. Я правильно понимаю, что вы описываете бизнес-модель Сервиса по ремонту чего-то ?

Ответить