![]() |
#1 |
Участник
|
Значение CheckBox, mandatory
Доброго времени суток. Новичок в dax, не могу разобраться.
Есть чекбоксы со значениями аналитик. При выборе любой необходимо делать поля аналитик обязательными к заполнению. Как сделать проверку чекбоксов с последующим выставлением mandatory? |
|
![]() |
#2 |
Участник
|
Где хранятся значения чекбоксов? Где происходит заполнение аналитик?
|
|
![]() |
#3 |
Участник
|
Да, опишите детальнее.
Что у вас - форма связанная с таблицей? просто диалог? И укажите версию DAX |
|
![]() |
#4 |
Участник
|
Значения чекбоксов в именах журналов inventJournalName (они слинкованы с inventDimParm)
Аналитики в журналах проводки / строки журнала inventJournalMovement Версия 12 Последний раз редактировалось Earl1; 20.02.2020 в 14:05. |
|
![]() |
#5 |
Участник
|
Вообще в системе свойство mandatory может быть задано на разных уровнях.
- на поле таблицы - на поле источника данных - на элементе управления Для вашего случая подойдёт уровень источника данных. Уровень таблицы будет недостаточным, так как не позволит динамически включать и выключать это свойство, а уровень элемента управления будет избыточным. Вообще обращаться напрямую к элементу управления не принято, разве что когда он не связан с источником данных. 1) Нужно уметь из кода менять свойства у полей источника данных. Это делается так: FormDataSourceName_ds.object(FieldId).mandatory(value), где FieldId - это идентификатор поля. Он у вас либо уже есть, раз вы используете inventDimParm, либо его можно получить при помощи функции fieldNum(). 2) Нужно понимать в какой момент это делать. Где написать этот код? Самый простой вариант - это метод Active источника данных. Он срабатывает каждый раз при получении строкой фокуса ввода. Если интересно то почитайте ещё про событие LinkActive. В вашем случае подойдёт и оно. |
|
![]() |
#6 |
Участник
|
А если как то перебрать в цикле?
|
|
![]() |
#7 |
Участник
|
|
|
![]() |
#8 |
Участник
|
Мне кажется, вам лучше описать всю вашу задачу подробнее.
С учетом того что у вас уже используется inventDimParm - возможно, используется и стандартный движок обязательности складских аналитик. Ну или его можно подключить. |
|
![]() |
#9 |
Участник
|
На форме строк журнала добавить метод, который в зависимости от выбранных аналитик делает поля аналитик обязательными
|
|
![]() |
#10 |
Роман Долгополов (RDOL)
|
Цитата:
Складская аналитика и ее доступность и обязательность это в первую очередь настройки номенклатуры. Ваши дополнительные проверки должны работать вместе со стандартными. Иначе, например, может получиться что будете требовать обязательность неактивной для конкретной номенклатуры аналитики. |
|
![]() |
#11 |
Участник
|
Если по-боцмански и без исследования связанного стандартного функционала (о котором вам писали уже выше):
при открытии строк журнала идете в наименование, смотрите какие там стоят флажки для ваших обязательных аналитик, делаете InvetDim_ds.object(fieldnum(InventDim, XXX)).mandatory(true) для нужных также имеет смысл в validateWrite для строки аналогичную проверку прописать Как-то такой вариант работать будет, но это не самое верное решение, скорее всего (но вам, видимо, сгодится). |
|
![]() |
#12 |
Участник
|
А как можно реализовать проверку checkbox'ов в цикле? проверяется с value() же?
Table.Field = CheckBoxName.value() |
|
![]() |
#13 |
Участник
|
А почему в цикле? они у вас хранятся в массиве?
Если нет, если отдельным полями - то так и берите отдельные проверки, у вас их, как и складских аналитик, определенное заранее известное и практически неизменное количество |
|
![]() |
#14 |
Участник
|
А как их брать?)
|
|
![]() |
#15 |
Участник
|
Я понятия не имею, как у вас хранятся эти данные в InventJournalName
Вероятно, отдельными полями типа InventJournalName.InventDimSizeMandatory, InventJournalName.InventDimSiteMandatory и т.д. Или массивом InventJournalName.InventDimMandatory[] |
|
![]() |
#16 |
Участник
|
Есть сhbox на форме. Как их проверить на true/false? как обратиться не пойму. Нужны названия выбранных на chbox'ах аналитик.
|
|
![]() |
#17 |
Участник
|
Мне кажется, вы взялись за слишком сложную для вас задачу, не понимая даже базовых основ.
У вас контролы на форме привязаны, наверно, к каким-то полям таблицы? тогда эти значения хранятся в соответствующих полях таблицы или контролы просто так созданы, без привязки? но тогда их значение нигде не сохраняется, если форма уже закрыта |
|
![]() |
#18 |
Участник
|
Просто, как проверить чекбокс?)
|
|
![]() |
#19 |
Участник
|
Нельзя просто так взять и проверить чекбокс )
Как я понял с ваших слов у вас чекбоксы расположены на одной форме (в именах журналов inventJournalName), а проверять вы их хотите находясь в контексте другой формы (в строках журнала)? Вас ничего не смущает? |
|
![]() |
#20 |
Участник
|
Проверять собираюсь на форме, которой находятся они)
|
|