8.х Ограничить вид цвета

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Zeta, 2 июл 2010.

  1. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! На форме находится поле ввода с данными реквизита формы, этот реквизит типа Цвет.
    Как можно ограничить выбор пользователем цвета, чтобы ему были доступны только webцвета, никаких стиль:Особый текст и т.д. По умолчанию стоит Абсолютный, пробовала менять при открытии формы ПолеВводаЦвета.Вид = ВидЦвета.WebЦвет. Пишет ошибку, так как доступно только для чтения. Может можно как-нибудь ограничить в процедуре ПолеВводаЦветаНачалоВыбора(Элемент, СтандартнаяОбработка)? Подскажите как.
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Диалог выбора цвета не содержит доп параметров чтоб ограничить по вашей задумке.. единственный способ.. это проверка после ввода данных на форму..

    Если не web цвет то пошел нафиг))
  3. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Ну тогда может-быть можно как-то сохранить выбранное пользователем значение цвета. Чтобы он выбрал значение цвета, закрыл форму, а когда открыл, то увидел выбранный цвет в поле ввода цвета. К сожалению, у реквизита справочника не может быть тип Цвет.
  4. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Есть замечательное слово "Строка" )))

    Разложи цвет на RGB составляющие и храни как 212,222,0
    а при открытии формируй из них цвет Новый Цвет()
  5. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    К сожалению, не было возможности написать 2 дня.

    Разложи цвет на RGB составляющие и храни как 212,222,0
    а при открытии формируй из них цвет Новый Цвет()

    Как разложить на составляющие? При отладке после выбора цвета все значения (Красный, Зеленый, Синий) = -1.
  6. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    попробуй выбрать не web цвет и посмотри
  7. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    То же самое для любого вида цвета, если пользователь просто выбирает название цвета, а не сам вводит RGB. Красный, Зеленый и Синий = -1.
  8. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    что значит название?? Значит webЦвет.. с ним не получиться.. разложить на составляющие... и даже если его сожранить потом нет возможности его установить..
  9. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    то есть единственный вариант, чтобы пользователь сам вводил RGB? Как-то это неудобно.
  10. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    варинт как то извернуться .. )) пускай выбирает web только внизупотом нажмет смещение и у тебя уже получиться не webЦвет.. но попробуй поколдовать с работой метаданных чтоб все таки получить webЦвет по названию..
  11. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Не пробовал, но должно сработать
    Код:
    ТекстПоИмени = "Красный";
    КрасныйЦвет = WebЦвета[ТекстПоИмени]
    
  12. TopicStarter Overlay
    Zeta
    Offline

    Zeta Опытный в 1С

    Регистрация:
    8 ноя 2009
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    Да, так работает, только там немного сложнее получается, нужно отсечь все, что не относится к названию цвета (английское наименование, пробелы, тире), тогда работает. Так я сразу и сделала.
    Код:
    ПозицияСкобка = Найти(Значение, "(");			
    НужныйЦвет = Лев(Значение, ПозицияСкобка-2);
    НужныйЦвет = СтрЗаменить(НужныйЦвет, "-", ""); 
    НужныйЦвет = СтрЗаменить(НужныйЦвет, " ", "");
    ЭлементыФормы.ПолеВводаЦвета.Значение = WebЦвета[НужныйЦвет];
    
    Проблема состояла лишь в том, что на стандартной форме выбора цвета находятся наименования также цветов других видов (Элемент стиля, например) и если пользователь выберет этот цвет (например, стиль: Особый цвет), то такая схема уже не пройдет. Поэтому остается либо, ка предложил tirk, если не webцвет, то выбери другой. Или же заставлять пользователя вводить RGB (2й вариант совсем не подходит).
  13. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    прикол.. на моей платформе так не сработало( Надо обновиться...

Поделиться этой страницей