Поля комбинация и число в условии

Светлана

Посетитель
Здравствуйте уважаемые разработчики и участники форума! С наступившим Новым годом! Спасибо за Ваш труд! У Ирины описана ситуация, которая возникала с полем Комбинация, практически тоже самое происходит, если применяется в Условии поле Переключатель. Например, Условие: [Пол]=муж, [Выписка]=выписан, [Выписка]=домой присвоить значение полю [Дата перевода] пустое значение. Если условие не выполняется вставляется дата из поля [Дата перевода]. В дальнейшем это значение (пустое или дата) вставляется в составное поле. (Поля [Пол] и [Выписка] - переключатели). В версии 6.0.21 срабатывало при открытии записи для изменения. В версии 6.0.22 от 03.01.2020г - при первом открытии проекта условие не срабатывает, т.е. пустое значение в поле [Дата перевода ] вновь дата и эта дата отображается в составном поле - необходимо кликнуть по значению в переключателе [Выписка], чтобы это условие сработало. Если запись вновь открывается для изменения, условие вновь не выполняется, и отражается дата. Ситуация разрешается если закрыть и открыть проект, в основном с третьего раза. Еще раз хочу сказать спасибо!
 

Anti

Администратор
Команда форума
Здравствуйте, Светлана! Спасибо за добрые слова и пожелания. Вам также желаю успехов в Новом году!

Уточните, пожалуйста, тип поля Выписка - переключатель или комбинация? Перечисление условий в поле через запятую обрабатывается по правилу "И". Поэтому в условии можно прописать "..., [Выписка]=выписан, [Выписка]=домой" только если поле Выписка может принимать одновременно несколько значений. А это возможно только для поля комбинация.
 

Светлана

Посетитель
Еще раз здравствуйте! Я сейчас увидела, что неправильно написала поле [Выписка]=домой, это должно выглядеть так [Выписка/перевод]=домой и это поле Переключатель. Поле [Выписка]=выписан - это строка, которое заполняется по условию в зависимости от других значений. Например: Условие 1 [Состояние при рождении]=удовлетворительное, [Реанимационные мероприятия]=не проводились, [Диагноз]=здоров присвоить значение строке [Выписка] "выписан". Все поля в условии 1- строки, в проекте есть еще условия, которые задают значение для поля [Выписка] н.п. "переведен". Следующее условие [Пол]=муж, [Выписка]=выписан, [Выписка/перевод]=домой присвоить значение [Дата перевода] пустое значение. [Дата перевода] это поле Дата, вид строка. Спасибо.
 

Ирина

Продвинутый
Здравствуйте.
Спасибо Светлане, за тему переключатель с условием, поэтому пишу свое наблюдение сюда.

Заметила такую интересную особенность с полем условие, когда задействовано поле "число".
Если поле "число"=4, то через условие полю "переключатель" присваивается нужное значение (например, проверка). Все работает отлично. Но, если числу присвоено значение 41, то условие не воспринимает это число, как двухзначное, а "видит" только первую цифру 4 и соответственно присваивает полю переключатель значение "проверка".
P.S. Логично конечно же использовать функция string, но данная функция уже задействована для этого переключателя. Т.е. к одному полю "переключатель", нужно задействовать разные условия, поэтому одновременно используются функция string и поле условие.
 

Светлана

Посетитель
И еще одна особенность Условия с полем "число" и "расчёт". Например: Есть 3 числа: [min], [max], [med]. [min]=0,6 [max]=1,08 [med]=0,84 в поле вводится [Число] и поле [Заключение]. В условии [Число] сравнивается с [min], [max] : Условие 1 [Число]<0,6 присвоить значение [Заключение] "ниже нормы". Условие 2 [Число]>1,08 присвоить значение [Заключение] "выше нормы". Условие 3 [Число]>0,6<1,08 присвоить значение [Заключение] "в пределах нормы". Если [Число]=1,03 или 0,88 и это входит в норму, условие обрабатывает только целое число - сравнивает с 0 и заключение "ниже нормы" и с 1 и заключение "выше нормы". Возможно уже есть этому решение, просто я не могу найти. Если есть решение подскажите как правильно записать Условие. В данное время я высчитываю % от [med] и в Условие вставляю целые числа %.
 

Ирина

Продвинутый
Если есть решение подскажите как правильно записать Условие.
Здравствуйте, Светлана!
У меня получилось сделать пример по Вашему описанию Условия.

Правда пришлось использовать 5 дополнительных полей (размещены на вкладке 8). При желании их можно скрыть группой.
Использовала эти дополнительные поля, т.к. функция String не хочет выбирать условие по третьему значению (а возможно просто мне не хватает знаний). Т.е. в третьем условии, функция String всегда выдает результат не одного значения, например, "ниже нормы", а еще и второе обязательно подтягивает.
Зато с дополнительными полями, все нужные Вам условия соблюдены.

P.S. Т.к. поле "условие" не возвращает значение, как функция String (что конечно менее удобно), выход все равно есть. Если вдруг неправильно внесено число, например, 2 и присвоено значение "выше нормы", то для исправления числа, нужно его просто удалить и внести новое значение числа, например, 0,2, тогда присвоится нужное значение "ниже нормы".
 

Вложения

Ирина

Продвинутый
В 1 примере проекта поле "Значение" - это поле "строка", почему я ее использовала, даже не могу объяснить))) Если использовать это поле, то при редактировании числа, нужно предпринимать дополнительные действия, описанные выше в послесловии.
Конечно лучше использовать поле "переключатель". Тогда все действия, описанные в послесловии не нужны. Т.е. никакие дополнительные удаления числа при обнаружении неправильно внесенного числового значения не потребуются. Все без удаления прекрасно редактируется.
Так что смотрите 2 вариант примера, где вместо поле "строка" используется поле "переключатель" с нужным значением (заключением).
 

Вложения

Последнее редактирование модератором:

Светлана

Посетитель
Здравствуйте, Ирина. Спасибо, 2-й вариант работает. В своих расчетах я не использовала составные поля и функцию String. Попробую обыграть на своем проекте. Возможно появятся еще варианты.
 

Ирина

Продвинутый
При появлении новых вариантов, напишите, пожалуйста, если конечно будет желание. Это всегда полезно! Иногда "нагородишь" всего, а оказывается проще можно сделать (это я про себя).
Кстати, у меня в проекте, почему-то при задействованном поле "переключатель" при неправильно введенном значение числа нужно производить именно "дополнительные действия ", описанные в послесловии. :unsure: Теперь свой проект нужно хорошо поковырять)))))
 
Последнее редактирование модератором:

Светлана

Посетитель
Обязательно напишу. Я в своем проекте делала напрямую - и поле Заключение - это строка. Прописывала Условие если Число меньше min, строке Заключение присваивалось значение "меньше нормы". Это работает с целыми числами. А вот если Число с запятой, то сравнение только с 0 или с 1. Возможно я просто пишу "коряво". Раньше я прописывала формулы в экселе, и где-то в голове они всё ещё сидят, я совершенно не программист, стараюсь методом проб и ошибок. Спасибо за помощь.
 

Ирина

Продвинутый
Прописывала Условие если Число меньше min, строке Заключение присваивалось значение "меньше нормы". Это работает с целыми числами.
И Вам спасибо, Вы тоже помогли. Мне такая идея даже в голову не пришла) Возможно когда-нибудь пригодится, путь даже с целыми числами.
Благодарю.
 

Anti

Администратор
Команда форума
Светлана, спасибо за ожидание. По первому сообщению - благодаря Вашему уточнению, удалось воспроизвести проблему. Исправление войдёт в ближайшее обновление.
И еще одна особенность Условия с полем "число" и "расчёт". Например: Есть 3 числа: [min], [max], [med]. [min]=0,6 [max]=1,08 [med]=0,84 ...
В поле Условия идёт перечисление условий через запятую, они обрабатываются по принципу И. Поэтому запись [Число]<0,6 воспринимается программой как два условия через запятую - 1) [Число]<0, 2) 6 (что всегда верно)
Изначально не продумали, как будет проходить в Условии сравнение с дробными числами. В ближайшем обновлении, во избежание такой коллизии, добавим возможность задавать дробные значения через точку: [Число]<0.6
Также проблему решило бы сравнение числа не с константой, а с другим полем: [Число]>[max], где [max]=1,08. Также добавим в одном из ближайших обновлений такую возможность для поля Условие.

Небольшое замечание. Правильно задавать проверку попадания числа в диапазон следующим образом: [Число]>0.6, [Число]<1.08, запись вида [Число]>0,6<1,08 программа не воспримет.
 

Светлана

Посетитель
Спасибо.
Возможно ли будет в Условии сравнение с полем Расчёт. Например [Число]>[max], где [max] поле Расчёт?
 

Anti

Администратор
Команда форума

Anti

Администратор
Команда форума
Заметила такую интересную особенность с полем условие, когда задействовано поле "число".
Если поле "число"=4, то через условие полю "переключатель" присваивается нужное значение (например, проверка). Все работает отлично. Но, если числу присвоено значение 41, то условие не воспринимает это число, как двухзначное, а "видит" только первую цифру 4 и соответственно присваивает полю переключатель значение "проверка".
Добрый день, Ирина! Дело в том, что когда мы начинаем набирать число "41", то сначала вводится "4", срабатывает условие, и по нему меняется значение переключателя. Если сразу после автоматического изменения значения переключателя вручную поменять значение переключателя на другое, а потом поставить курсор в конец числа и дописать вторую цифру, то условие уже срабатывать не будет. В таком случае можно добавить второе поле Условия с условием неравенства: [Число]!=4, которое задаёт нужное (исходное) значение переключателя.
 

Ирина

Продвинутый
Здравствуйте, Наталья!
Если сразу после автоматического изменения значения переключателя вручную поменять значение переключателя на другое, а потом поставить курсор в конец числа и дописать вторую цифру, то условие уже срабатывать не будет.
Переключатель на вкладках скрыт, поэтому менять его вручную нет возможности. Но зная такую особенность, делаю проще, ввожу дополнительно цифру 1, если нужно ввести двухзначное число 41, т.е. получается 141. Потом убираю 1 и остается нужное число 41 без присвоенного значения в переключателе. Получается нужный изначально итог.
Дело в том, что я знаю такую "особенность", а другой пользователь наверняка запутается с таким вводом данных.

В таком случае можно добавить второе поле Условия с условием неравенства: [Число]!=4, которое задаёт нужное (исходное) значение переключателя.
Это я не поняла совсем.
Через условие присваивается значение переключателю "проверка", если значение поля число=4. Если добавить второе поле Условие с неравенством [Число]!=4, возникают 2 противоположных условия к одному и тому же числу.
 

Ирина

Продвинутый
Вот упрощенный пример.
Есть контрагенты со статусом ЮЛ (юридическое лицо), ИП (индивидуальный предприниматель), ФЗ (физическое лицо).
Числовое поле называется "Уровень риска". По значению числового поля в поле переключатель "Действия" автоматически присваивается нужное значение. Поле переключатель на вкладке скрыто.
Значение к полю переключатель "Действия" присваивается в 2-х случаях:
1. Когда соблюдено 1 условие.
2. Когда соблюдены 2 условия.

1 СЛУЧАЙ
Если у контрагентов "Уровень риска" равен 1, 2 и 3, то автоматически присваивается определенное значение в поле переключатель "Действие". При 1 и 2 это "низкий уровень", при 3 – "средний уровень".
Условие задается через функцию String, где все отлично работает.
В этом случае не имеет значение статус контрагента, значение присваивается любому контрагенту.

2 СЛУЧАЙ
При "Уровне риска"=4, нужно автоматически присвоить значение полю переключатель "проверка". Но тут должны одновременно соблюдаться 2 условия:
1. Статус=ЮЛ
2. "Уровень риска"=4
Поэтому в этом случае использую поле "условие". Как писала ранее, все хорошо работает, если число не двухзначное, т.е. не 41-49.

При использовании функции String, конструктор четко "видит" нужное число, т.е. число 14 не воспринимает, как 1. А вот в поле условие число 41, воспринимает, как 4. Вот это я и не пойму. Почему в функции String все четко, а в поле условие нет?
Возможно я что-то неправильно делаю, но пока никаких других идей не пришло, как к одному полю переключатель, применить 2 варианта условий (выборки значений).
 

Вложения

Vladimir

Администратор
Команда форума
При использовании функции String, конструктор четко "видит" нужное число, т.е. число 14 не воспринимает, как 1. А вот в поле условие число 41, воспринимает, как 4. Вот это я и не пойму. Почему в функции String все четко, а в поле условие нет?
В функции String() всегда работает две проверки:
1) на выполнение условия;
2) на невыполнение условия.
При этом как для выполнения, так и для невыполнения условия задаются результаты, которые должны быть получены.

В поле условия выполняется только одна проверка - того условия, которое указано в "Свойстве". Проверка выполняется каждый раз, как только в проверяемом поле меняется значение.
При вводе "41" первая проверка производится после ввода "4" (условие выполняется и производится присвоение). Затем производится проверка нового значения "41" - условие не выполняется, никаких действий не производится.
Чтобы проверка работала аналогично функции String(), необходимо создавать два поля условия: на выполнение условия и на его невыполнение: чтобы программа знала, что делать в одном случае, а что делать в другом.
 
Последнее редактирование:

Vladimir

Администратор
Команда форума
Функция String() проста, но её возможности достаточно ограничены. Поле условие имеет более широкое применение, но требует большей осознанности при использовании.
Всё как в жизни: какие способности - такая и ответственность. ;)
 
Сверху Снизу