SimpleUI: при открытии формы процесса не могу скрыть элементы
Создал процесс и переопределил его как стартовое меню:

При старте процесса (открытии меню) мне нужно по условию спрятать некоторые элементы. Событие процесса "OnStart" не отрабатывает (пробовал toast). Также, пробовал сделать с помощью общего обработчика "onStartMenu", тоже не получается.
Скрыть элементы пытаюсь отправкой команды: hashMap.put("Show_button","-1")
Ответы (3 шт):
Автор решения: alex
→ Ссылка
Обработчики авторизации и меню:
#Область ПРОЦЕСС_МЕНЮ
//menu_
//ОБНУЛЯЕТ ВСЕ ПЕРЕМЕННЫЕ ПРОЦЕССА
Процедура Меню_ОбнулитьПеременныеПроцесса(Переменные)
КонецПроцедуры
//ПРОЦЕСС АВТОРИЗАЦИЯ
Процедура Меню_ЭкранМеню_ПриСтарте(Переменные) Экспорт
Процесс = "Меню";
//Переменные.Вставить("noRefresh", "");
ТекущийПользователь = ПолучитьТекущегоПользователя(Переменные, Ложь);
//проверим авторизацию
Если ТекущийПользователь = Неопределено Тогда
Переменные.Вставить("menu_nadpis_deystviya", "Пожалуйста авторизируйтесь");
МассивОпераций = Новый Массив;
СтруктураДжисон = ПолучитьСтруктуруДжисон(Справочники.СтруктурыДжисон.СписокЭлементовМеню.ДжисонТекст);
СтруктураДокумент = Новый Структура;
СтруктураДокумент.Вставить("key", "Авторизация");
СтруктураДокумент.Вставить("punkt_menu", "Авторизация");
МассивОпераций.Добавить(СтруктураДокумент);
СтруктураДжисон.customcards.Вставить("cardsdata", МассивОпераций);
ЗаписьДжисон = Новый ЗаписьJSON;
ЗаписьДжисон.УстановитьСтроку();
ЗаписатьJSON(ЗаписьДжисон, СтруктураДжисон);
ТекстДжисон = ЗаписьДжисон.Закрыть();
Переменные.Вставить("menu_cards", ТекстДжисон);
Иначе
Переменные.Вставить("menu_nadpis_deystviya", "Выберите операцию");
//ПОЛУЧИМ ОПЕРАЦИИ ДОСТУПНЫЕ ПОЛЬЗОВАТЕЛЮ
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Пользователь", ТекущийПользователь);
Запрос.Текст =
"ВЫБРАТЬ
| змт_ДоступныеПользователюОперацииWMS.Операция,
| змт_ДоступныеПользователюОперацииWMS.ПорядокОпераций КАК ПорядокОпераций,
| змт_ДоступныеОперацииWMS.ИмяПроцесса,
| змт_ДоступныеОперацииWMS.НаименованиеПроцесса
|ИЗ
| РегистрСведений.змт_ДоступныеПользователюОперацииWMS КАК змт_ДоступныеПользователюОперацииWMS
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.змт_ДоступныеОперацииWMS КАК змт_ДоступныеОперацииWMS
| ПО змт_ДоступныеПользователюОперацииWMS.Операция = змт_ДоступныеОперацииWMS.Ссылка
|ГДЕ
| змт_ДоступныеПользователюОперацииWMS.Пользователь = &Пользователь
| И НЕ змт_ДоступныеОперацииWMS.НаименованиеПроцесса = """"
| И НЕ змт_ДоступныеОперацииWMS.ИмяПроцесса = """"
| И змт_ДоступныеОперацииWMS.ПометкаУдаления = ЛОЖЬ
|
|УПОРЯДОЧИТЬ ПО
| ПорядокОпераций";
РезультатЗапроса = Запрос.Выполнить();
МассивОпераций = Новый Массив;
СтруктураДжисон = ПолучитьСтруктуруДжисон(Справочники.СтруктурыДжисон.СписокЭлементовМеню.ДжисонТекст);
Если не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
СтруктураДокумент = Новый Структура;
СтруктураДокумент.Вставить("key", СокрЛП(Выборка.ИмяПроцесса));
СтруктураДокумент.Вставить("punkt_menu", СокрЛП(Выборка.НаименованиеПроцесса));
МассивОпераций.Добавить(СтруктураДокумент);
КонецЦикла;
КонецЕсли;
СтруктураДокумент = Новый Структура;
СтруктураДокумент.Вставить("key", "Авторизация");
СтруктураДокумент.Вставить("punkt_menu", "Авторизация");
МассивОпераций.Добавить(СтруктураДокумент);
СтруктураДжисон.customcards.Вставить("cardsdata", МассивОпераций);
ЗаписьДжисон = Новый ЗаписьJSON;
ЗаписьДжисон.УстановитьСтроку();
ЗаписатьJSON(ЗаписьДжисон, СтруктураДжисон);
ТекстДжисон = ЗаписьДжисон.Закрыть();
Переменные.Вставить("menu_cards", ТекстДжисон);
КонецЕсли;
КонецПроцедуры
Процедура Меню_КарточкаНажатие(Переменные) Экспорт
Процесс = "Меню";
//ПРОВЕРИМ НЕ ТАПНУЛИ ЛИ ЗАГЛУШКУ
Если Не ЗначениеЗаполнено(Переменные.selected_card_key) Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Не определен тип операции");
возврат;
КонецЕсли;
Если Переменные.selected_card_key = "Авторизация" Тогда
Переменные.Вставить("StartProcess", "Авторизация");
Иначе
//ОбнулитьПеременныеПроцесса_УкладкаВКоробку(Переменные);
//ИнформацияПоШтрихКоду_ОбнулитьПеременныеПроцесса(Переменные);
//ПроверкаУкладки_ОбнулитьПеременныеПроцесса(Переменные);
//ПеремещениеКоробокПоЗаказу_ОбнулитьПеременныеПроцесса(Переменные);
Переменные.Вставить("StartProcess", Переменные.selected_card_key);
КонецЕсли;
КонецПроцедуры
Процедура Меню_ОкноАвторизация_ПриСтарте(Переменные) Экспорт
Процесс = "Меню";
Если Переменные.Свойство("_1cusername") = Ложь Тогда
Переменные.Вставить("_1cusername", " ");
КонецЕсли;
КонецПроцедуры
Процедура Меню_Проверка_ШК(Переменные) Экспорт
Процесс = "Меню";
ГуидПользователя = "";
Если Переменные.Свойство("menu_barcode", ГуидПользователя) = Ложь
или ГуидПользователя = "" Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Ошибка чтения штрих кода");
возврат;
КонецЕсли;
//очистка штрих кода
ГуидПользователя = СокрЛП(ГуидПользователя);
//проверка повторгоно считывания
Если Переменные.Свойство("_1cuserguid") = Истина
и Переменные._1cuserguid = ГуидПользователя Тогда
//это повторный пик для подтверждения операции
Переменные.Вставить("ShowScreen", "Экран меню");
возврат;
КонецЕсли;
Попытка
СсылкаНаПользователя = Справочники.Пользователи.ПолучитьСсылку(Новый УникальныйИдентификатор(ГуидПользователя));
Исключение
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Пользователь не найден в базе данных по гуиду");
возврат;
КонецПопытки;
Если Не ПроверитьСсылку(СсылкаНаПользователя) = Истина Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Пользователь не найден в базе данных по гуиду");
возврат;
КонецЕсли;
СтруктураРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаПользователя, "ПометкаУдаления, ИдентификаторПользователяИБ, ФизЛицо");
Если СтруктураРеквизитов.ПометкаУдаления = Истина Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Учетная запись пользователя помечена на удаление");
возврат;
КонецЕсли;
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(СтруктураРеквизитов.ИдентификаторПользователяИБ);
Если ПользовательИБ = Неопределено Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Ошибка получения пользователя ИБ");
возврат;
Иначе
Если не ПользовательИБ.Роли.Содержит(Метаданные.Роли.змт_ПользовательВМС) Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Пользователь не имеет прав входа в WMS");
возврат;
КонецЕсли;
КонецЕсли;
Если не ЗначениеЗаполнено(СтруктураРеквизитов.ФизЛицо) Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "У пользователя не заполнено физическое лицо");
возврат;
КонецЕсли;
Переменные.Вставить("_1cusername", Строка(СтруктураРеквизитов.ФизЛицо));
Переменные.Вставить("_1cuserguid", ГуидПользователя);
КонецПроцедуры
Процедура Меню_ОкноАвторизация_ЗакрытьИПерейтиВМенюОпераций(Переменные) Экспорт
Процесс = "Меню";
Переменные.Вставить("ShowScreen", "Экран меню");
КонецПроцедуры
#КонецОбласти
Автор решения: alex
→ Ссылка
#Область ПРОЦЕСС_АВТОРИЗАЦИЯ
//ОБРАБОТЧИКИ СОБЫТИЙ ВМС
//ПРОЦЕСС АВТОРИЗАЦИЯ
Процедура Авторизация_ОкноАвторизация_ПриСтарте(Переменные) Экспорт
Если Переменные.Свойство("_1cusername") = Ложь Тогда
Переменные.Вставить("_1cusername", " ");
КонецЕсли;
КонецПроцедуры
Процедура Авторизация_Проверка_ШК(Переменные) Экспорт
ГуидПользователя = "";
Если Переменные.Свойство("barcode_autorization", ГуидПользователя) = Ложь
или ГуидПользователя = "" Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Ошибка чтения штрих кода");
возврат;
КонецЕсли;
//очистка штрих кода
ГуидПользователя = СокрЛП(ГуидПользователя);
//проверка повторгоно считывания
Если Переменные.Свойство("_1cuserguid") = Истина
и Переменные._1cuserguid = ГуидПользователя Тогда
//это повторный пик для подтверждения операции
Переменные.Вставить("FinishProcessResult", "");
Переменные.Вставить("UpdateMenu", "");
возврат;
КонецЕсли;
Попытка
СсылкаНаПользователя = Справочники.Пользователи.ПолучитьСсылку(Новый УникальныйИдентификатор(ГуидПользователя));
Исключение
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Пользователь не найден в базе данных по гуиду");
возврат;
КонецПопытки;
Если Не ПроверитьСсылку(СсылкаНаПользователя) = Истина Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Пользователь не найден в базе данных по гуиду");
возврат;
КонецЕсли;
СтруктураРеквизитов = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(СсылкаНаПользователя, "ПометкаУдаления, ИдентификаторПользователяИБ, ФизЛицо");
Если СтруктураРеквизитов.ПометкаУдаления = Истина Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Учетная запись пользователя помечена на удаление");
возврат;
КонецЕсли;
ПользовательИБ = ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(СтруктураРеквизитов.ИдентификаторПользователяИБ);
Если ПользовательИБ = Неопределено Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Ошибка получения пользователя ИБ");
возврат;
Иначе
Если не ПользовательИБ.Роли.Содержит(Метаданные.Роли.змт_ПользовательВМС) Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "Пользователь не имеет прав входа в WMS");
возврат;
КонецЕсли;
КонецЕсли;
Если не ЗначениеЗаполнено(СтруктураРеквизитов.ФизЛицо) Тогда
ДобавитьСообщениеПользователю(Переменные, "Ошибка", "У пользователя не заполнено физическое лицо");
возврат;
КонецЕсли;
Переменные.Вставить("_1cusername", Строка(СтруктураРеквизитов.ФизЛицо));
Переменные.Вставить("_1cuserguid", ГуидПользователя);
//Переменные.Вставить("FinishProcessResult", "");
//Переменные.Вставить("toast", "Авторизация пройдена");
КонецПроцедуры
Процедура Авторизация_ОкноАвторизация_ЗакрытьИПерейтиВМенюОпераций(Переменные) Экспорт
Переменные.Вставить("FinishProcessResult", "");
Переменные.Вставить("UpdateMenu", "");
КонецПроцедуры
#КонецОбласти
Автор решения: alex
→ Ссылка
Есть еще вот такой джисон, для вывода меню: (он из предопределенного элемента справочника берется, так просто удобней мне было)
{
"customcards":
{
"options":
{
"search_enabled":true,
"save_position":true
},
"layout":
{
"type": "LinearLayout",
"orientation": "vertical",
"gravity_vertical": "center",
"height": "wrap_content",
"width": "match_parent",
"Value": "Карточка меню",
"BackgroundColor": "#d4d4d4",
"StrokeWidth": "3",
"Radius": "5",
"Elements": [
{
"type": "TextView",
"orientation": "vertical",
"height": 5,
"width": "wrap_content",
"Value": " ",
"type_s": "Надпись",
"height_value": 5,
"weight": "0",
"width_value": "wrap_content"
},
{
"type": "TextView",
"orientation": "vertical",
"height": "wrap_content",
"width": "match_parent",
"gravity_horizontal": "center",
"Value": "@punkt_menu",
"TextSize": "20",
"TextBold": true,
"type_s": "Надпись",
"weight": "0",
"width_value": "match_parent",
"height_value": "wrap_content"
},
{
"type": "TextView",
"orientation": "vertical",
"height": 5,
"width": "wrap_content",
"Value": " ",
"type_s": "Надпись",
"height_value": 5,
"weight": "0",
"width_value": "wrap_content"
},
],
"height_value": "wrap_content",
"type_s": "Контейнер",
"weight": "0",
"width_value": "match_parent"
}
}
}