7.7 Создание реквизита формы документа связанного с выпадающим списком возможных значений

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем leonid_gun, 15 янв 2019.

  1. TopicStarter Overlay
    leonid_gun
    Offline

    leonid_gun

    Регистрация:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Здравствуйте.
    ТиС 032. платформа 7.7 027
    Есть необходимость создать в форме реквизит документа тип Строка, который будет связан с выпадающим списком, из которого можно выбрать одно значение из многих для этого реквизита, с последующим сохранением этого значения. И при открытии сохраненного документа этот реквизит отображал сохраненное значение. Как можно правильно такое реализовать?
  2. TopicStarter Overlay
    leonid_gun
    Offline

    leonid_gun

    Регистрация:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Немного продвинулся с кодом, но это работает если реквизит тип Строка.
    Код:
    Процедура ИзмПрозрачность()
        СпЗн = СоздатьОбъект("СписокЗначений");
        СпЗн.ДобавитьЗначение("прозрачная","прозрачная");
        СпЗн.ДобавитьЗначение("непрозрачная","непрозрачная");
        Зн = 0;                                            
        Если СпЗн.ВыбратьЗначение(Зн,"Прозрачность биоматериала",,,1) = 1 Тогда
            Прозрачность = Зн;
        КонецЕсли;
    КонецПроцедуры
    и далее
    Код:
    Процедура ПриНачалеВыбораЗначения(Рекв,ФлагСтандОбр)
    Если Рекв = "Прозрачность" Тогда
             ИзмПрозрачность()
        КонецЕсли;
    КонецПроцедуры
    А вот как быть если обрабатываем список для реквизита тип Число, еще и с дробной частью? ))
    при выборе "педальки" список выводится, но при выборе значения из списка, выпадает экранная цифровая калава, стандартная для цифрового поля ввода с кнопкой. Нужно менять тип на Строку? Но хотелось бы оставить ограничение по разрядности для проверки ввода от руки.
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.553
    Симпатии:
    538
    Баллы:
    204
    Нужно отменить стандатную обработку.. Смотри в сторону ПриНачалеВыбораЗначения. Но тогда в списке должен быть еще п.п. типа "ввести вручную"
    leonid_gun нравится это.
  4. TopicStarter Overlay
    leonid_gun
    Offline

    leonid_gun

    Регистрация:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Вот это

    Код:
    ФлагСтандОбр = 0;
    в теле предопределенной процедуры ПриНачалеВыбораЗначения как раз и помогло!! Перестала появляться экранная цифровая клава на реквизитах типа Число. То что нужно )))
    Не нашел кнопки "Спасибо", так что Благодарю!! здесь ))
    Последнее редактирование: 16 янв 2019
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.553
    Симпатии:
    538
    Баллы:
    204
    "Спасибо" это "Мне нравится" под сообщением внизу справа.
    leonid_gun нравится это.
  6. TopicStarter Overlay
    leonid_gun
    Offline

    leonid_gun

    Регистрация:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    Сделал тот же способ выбора вариантов для реквизита, но с выбором из справочника, доступного пользователю, что дает возможность ему без программера редактировать варианты для списка выбора.
    Собственно сама функция:
    Код:
    Функция ВыбратьВариантыРеквизита(Параметр)
       СписокВариантовПараметра = СоздатьОбъект("СписокЗначений");
       СправочникПараметров = СоздатьОбъект("Справочник.ПараметрыУЗИ_ЩЖ");
       // отбираем только те элементы, которые могут отображаться в текущем списке
        СправочникПараметров.ВыбратьЭлементы();
        Пока СправочникПараметров.ПолучитьЭлемент() = 1 Цикл
          // отбираем только те элементы, которые удовлетворяют заданному признаку
              Если (СправочникПараметров.Наименование = Параметр) Тогда
                  Вариант = СправочникПараметров.ТекущийЭлемент();
                СписокВариантовПараметра.ДобавитьЗначение(Вариант.ВариантыПараметраУкр,Вариант.ВариантыПараметраРус);
            КонецЕсли;
        КонецЦикла;
       //ИспользоватьСписокЭлементов(СписокВариантовПараметра);
           Зн = 0;                                           
        Если СписокВариантовПараметра.ВыбратьЗначение(Зн,"Расположение ЩЖ",,,0) = 1 Тогда
            ВыбВариант = Зн;
        КонецЕсли;
        Возврат  ВыбВариант;
    КонецФункции
    и процедура обработки выбора:
    Код:
    Процедура ПриНачалеВыбораЗначения(Рекв,ФлагСтандОбр)
    
        Если Рекв = "ИмяРеквизита" Тогда
            РеквизитДокумента= ВыбратьВариантыРеквизита(Рекв);
        КонецЕсли;
    КонецПроцедуры
    Теперь очень мешает однострочность самого реквизита на форме. Неудобно читать длинные варианты выбора (а они есть длиной и по 500 символов). Никак нельзя сделать его многострочным? И второй вопрос, как с клавиатуры активировать кнопку выбора реквизита?
    Последнее редактирование: 6 фев 2019
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.553
    Симпатии:
    538
    Баллы:
    204
    1) Нельзя
    2) Вынести за границы формы кнопку (будет невидима но активна. Назначить горячую клавишу. Организовать процедуру выбора.
  8. TopicStarter Overlay
    leonid_gun
    Offline

    leonid_gun

    Регистрация:
    13 июл 2016
    Сообщения:
    7
    Симпатии:
    0
    Баллы:
    1
    В вопросе 2 я имел ввиду кнопку выбора, которая на самом элементе реквизита, и доступна только мышкой. В процессе ввода значений в реквизиты документа, а их в форме более тридцати, организован обход через Tab. И естественно хотелось бы и далее производить выбор из списка через клаву.
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    22.553
    Симпатии:
    538
    Баллы:
    204
    Попробуйте перефразировать. Ничего из вышесказанного не понял.
    Если вы хотите, чтобы открывался диалог ввода значения конкретного реквизита формы по горячей клавише - я сказал как это сделать.
    Если же имели ввиду что-то иное - сформулируйте задачу как то иначе.