Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
05 июл 2024, 17:41

Передача значения переменной в обработчик команды

Автор Wallesss, 02 ноя 2022, 13:13

0 Пользователей и 1 гость просматривают эту тему.

Wallesss

Цитата: LexaK от 02 ноя 2022, 14:06саму задачу опишите, для чего создаете такие извороты изыски ?
Создается заданное количество (пользователем) полей ввода, в которые пользователь вводит имеющуюся у него информацию. Дело в том, что каждый пользователь располагает различным объемом информации, поэтому и создается определенное количество полей ввода. Затем с помощью обработчика "ПолучениеЗнач" в цикле данные считываются из этих полей и над ними производятся некоторые действия. Но не зная в обработчике команды "ПолучениеЗнач" установленное пользователем количество полей (оно сохраняется в переменной "ПеремЧисло"), невозможно произвести считывание данных.

antoneus

А поля ввода - это что, не реквизиты формы? Когда они создаются - им присваиваются имена? И что мешает обращаться к ним в обработчике команды: ЭтаФорма[ИмяСозданногоРеквизита]?

LexaK

Wallesss, мдааа...
очень подойдет, для решения этой задачи, применение ТаблицыЗначений
Реквизит формы (ТИп ТЗ) вытащите ее на форму,
пользователи смогут в ней создавать/добавлять разное количество строчек и вводить нужные данные
рядом кнопка: Обработать (по ней в цикле проходитесь по ТЗ, считаете все что надо)

все стационарно, немного примитивно правда, но ведь главное получить правильный результат?
(или цель: наговнокодить выше крыши, где после вас ни кто не сможет разобраться?)
если помогло нажмите: Спасибо!

Wallesss

Цитата: antoneus от 02 ноя 2022, 14:43Когда они создаются - им присваиваются имена?
Да, имена реквизитов генерируются в цикле с помощью операции конкатенации ("Поле1", "Поле2", "Поле3" и т.д.).

Цитата: antoneus от 02 ноя 2022, 14:43И что мешает обращаться к ним в обработчике команды: ЭтаФорма[ИмяСозданногоРеквизита]?
Именно это я и пытаюсь сделать. Вот только переменную, хранящую количество реквизитов, я передать в обработчик не могу.

LexaK

Wallesss, а зачем количество всех хранить?
используйте цикл от 1 до 1000
в цикле
НомерПоПорядку = НомерПоПорядку + 1;//это пример
лкЭлемент = ЭлементыФормы.Найти("Поле" + НомерПоПорядку);
если помогло нажмите: Спасибо!

antoneus

Вы же пишете: Создается заданное количество (пользователем) полей ввода. Он это количество как задает - силой мысли? Или все-таки через какой-то реквизит формы?

Wallesss

Цитата: antoneus от 02 ноя 2022, 17:22Вы же пишете: Создается заданное количество (пользователем) полей ввода. Он это количество как задает - силой мысли? Или все-таки через какой-то реквизит формы?
С помощью функции ВвестиЧисло().

antoneus

Вот очень оригинальный и не примитивный способ передачи числа в обработчик команды

&НаСервере
Процедура Кнопка()

ПеремЧисло=5999;
Кмд = ЭтаФорма.Команды.Добавить("_" + Формат(ПеремЧисло, "ЧГ=0"));
Кмд.Действие = "ПолучениеЗнач";
Кмд.Заголовок = "Передать значение";

//Добавляем саму кнопку
Кнопка = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
Кнопка.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
Кнопка.ИмяКоманды = Кмд.Имя;

КонецПроцедуры

&НаКлиенте
Процедура ПолучениеЗнач(Команда)
Сообщить(Число(Сред(Команда.Имя, 2)))
КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск