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

Как заполнить список значений на форме ?

Автор Ликол, 28 июн 2022, 21:35

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

Ликол

LexaK, пробовал. Точнее, скопировал и немного доработал под себя. Практика выявила - программа не считывает условия типа "ЛевоеКолесо = "На месте" и ПравоеКолесо = "В перед""". То есть, если в режиме пользователя установить именно эти значения, программа это не воспринимает как выполнение условия Если, и соответственно ничего не выводит. Вот когда колеса одинаковые,тогда она это воспринимает выполнение условия "ЛевоеКолесо = ПравоеКолесо", и тогда выводит любое сообщение. Поставишь, как в Вашем примере, лкДвижение = ЛевоеКолесо - выведет значение переменной ЛевоеКолесо (я поменял лкДвижение на Сообщение, но сути это не меняет). Поставишь Сообщение = "Любой текст в кавычках" - она будет выводить "Любой текст в кавычках". То есть с выводом все нормально.

То есть, на данный момент проблему можно сформулировать так - если пользователь установил для ЛевоеКолесо какое-либо значение из списка, например значение "Вперед", программа это не воспринимает как выполнение условия ЛевоеКолесо = "Вперед".

LexaK

Ликол, все просто, пример - это просто пример!
он показывает как анализировать данные (выбор пользователя) и выводить результат на форму,
пример рассматривает только несколько вариантов, на остальные пишет  ...в разработке...
(как раз было оставлено вам, для самостоятельной доделки... по примеру)

(очень жаль что пример не подошел  :dfbsdfbsdf:  )
если помогло нажмите: Спасибо!

alexandr_ll

Ликол, Чем приводить описание ваших мыслей, лучше выкладывайте пример кода, либо саму конфигурацию или файл внешней обработки. Так скорее получите помощь.

Ликол

LexaK, пример мне очень помог, спасибо!Просто появились новые вопросы.

Ликол

alexandr_ll,

&НаКлиенте
Процедура РасчетДвижения(Команда)
   ОбработатьДвижение();
КонецПроцедуры

&НаКлиенте
Процедура ОбработатьДвижение() 
   
   

   //просто набот кейсов
   Если ЛевоеКолесо = NULL или ПравоеКолесо = NULL Тогда
      Сообщение = "Необходимо выбрать оба значения колес";  //случай, когда пользователь
                                                //не ввел направление движения для одного из колес
      
            ИначеЕсли ЛевоеКолесо = ПравоеКолесо Тогда   //если оба колеса движутся в одном направлении
                                                
      Сообщение = ЛевоеКолесо;
      
   ИначеЕсли ЛевоеКолесо = "На месте" и ПравоеКолесо = "Вперед" Тогда //одно из колес неподвижно
      Сообщение = "Поворот влево медленный";
      
   ИначеЕсли ЛевоеКолесо = "Назад" и ПравоеКолесо = "Вперед" Тогда //колеса в противофазе
      Сообщение = "Поворот влево быстрый";
      
      
       ИначеЕсли ЛевоеКолесо = "Вперед" и ПравоеКолесо = "На месте" Тогда //одно из колес неподвижно
      Сообщение = "Поворот вправо медленный";
      
   ИначеЕсли ЛевоеКолесо = "Вперед" и ПравоеКолесо = "Назад" Тогда //колеса в противофазе
      Сообщение = "Поворот вправо быстрый";   

      
   КонецЕсли;
    
   Предупреждение(Сообщение,5,"Движение");
КонецПроцедуры

Практика применения показала - когда колеса движутся одинаково, программа выводит то, что надо, и можно задавать значение для переменной Сообщение и как  Сообщение=ЛевоеКолесо, и как Сообщение="какой-нибудь текст". А когда колеса движутся по-разному, то выдает пустое сообщение.

Из чего я делая вывод - программа не видит выполнения условия типа ЛевоеКолесо="Вперед", даже если пользователь выбрал для ЛевоеКолесо значение Вперед.

antoneus

А у реквизитов ЛевоеКолесо и ПравоеКолесо тип-то какой?

Ликол

antoneus, тип - ПеречислениеСсылка.СписокДляПарохода

У перечисления СписокДляПарохода 3 значения - Вперед, НаМесте и Назад.

antoneus

Так перечисление никогда и не будет равно строке.

Если не ЗначениеЗаполнено(ЛевоеКолесо) или не ЗначениеЗаполнено(ПравоеКолесо) Тогда
      Сообщение = "Необходимо выбрать оба значения колес";  //случай, когда пользователь
                                                //не ввел направление движения для одного из колес
     
ИначеЕсли ЛевоеКолесо = ПравоеКолесо Тогда   //если оба колеса движутся в одном направлении
                                               
      Сообщение = ЛевоеКолесо;
     
ИначеЕсли ЛевоеКолесо = Перечисления.СписокДляПарохода.НаМесте и ПравоеКолесо = Перечисления.СписокДляПарохода.Вперед Тогда
       Сообщение = "Поворот влево медленный";

и т.д.

Ликол

antoneus, большое спасибо! Теперь должно сработать.

Ликол

antoneus, прошу еще подсказки.

Для случая с незаполненными значениями - отлично сработало. Но далее почему-то пишет


{ОбщаяФорма.Форма.Форма(21,26)}: Переменная не определена (Перечисления)
   ИначеЕсли ЛевоеКолесо = <<?>>Перечисления.СписокДляПарохода.НаМесте


Перечисление под названием СписокДляПарохода в дереве есть, значение НаМесте тоже есть.

Теги:

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

Рейтинг@Mail.ru

Поиск