[РЕШЕНО] Выбрать тип значения в поле ввода

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

  1. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Всем привет. Вновь моя тупость меня губит. Есть поле ввода с составным типом данных. Если оставить стандартную обработку, то выдается окно выбора типа значения, а затем открывается формы.
    1) Нужно сделать отбор в этой форме. Как?
    или
    2) Как программно спровоцировать на окно выбора типа значения, чтобы я мог потом сам получить форму и установить нужные мне отборы?
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    От чего зависит тип значения?
  3. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    От человека. Он формирует документ. Там есть поле ввода с составным типом и он сам решает какой тип ему сейчас нужен.
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Необходимо в обработчик события "НачалоВыбора" писать код выбора типа значения и установку нужного отбора, стандартную обработку при этом отключать.
  5. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Я в курсе. А какой код выбора типа значения? :)
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.566
    Симпатии:
    717
    Баллы:
    204
    Формируешь список значений из доступных типов для поля ввода, потом делаешь ВыбратьИзСписка() и далее по ситуации.
    nbIpKuH_BaH9I нравится это.
  7. TopicStarter Overlay
    nbIpKuH_BaH9I
    Offline

    nbIpKuH_BaH9I Модераторы Команда форума Модератор

    Регистрация:
    16 сен 2009
    Сообщения:
    6.980
    Симпатии:
    398
    Баллы:
    104
    Да, забыл совсем про них. Только сделал мальца по-другому. Намного приятнее вид стал :). Лучше чем в стандартном варианте.
    Код:
    Процедура ПриходныйКассовыйОрдерНачалоВыбора(Элемент, СтандартнаяОбработка)
    
        СтандартнаяОбработка = Ложь;
        Если ЗначениеЗаполнено(Элемент.Значение) Тогда
            Если ТипЗнч(Элемент.Значение) = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее") Тогда
                ФормаВыбора = Документы.ПлатежноеПоручениеИсходящее.ПолучитьФормуВыбора();
                ФормаВыбора.Отбор.ВидОперации.Использование = Истина;
                ФормаВыбора.Отбор.ВидОперации.Значение      = Перечисления.ВидыОперацийППИсходящее.ПеречислениеДенежныхСредствПодотчетнику;
            Иначе
                ФормаВыбора = Документы.ПриходныйКассовыйОрдер.ПолучитьФормуВыбора();
                ФормаВыбора.Отбор.ВидОперации.Использование = Истина;
                ФормаВыбора.Отбор.ВидОперации.Значение      = Перечисления.ВидыОперацийПКО.ПолучениеНаличныхДенежныхСредствВБанке;
            КонецЕсли;
        Иначе
            СписокЗначений = Новый СписокЗначений;
            СписокЗначений.Добавить(Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее"));
            СписокЗначений.Добавить(Тип("ДокументСсылка.ПриходныйКассовыйОрдер"));
            ВыбранноеЗначение = ВыбратьИзМеню(СписокЗначений);
            Если ВыбранноеЗначение.Значение = Тип("ДокументСсылка.ПлатежноеПоручениеИсходящее") Тогда
                ФормаВыбора = Документы.ПлатежноеПоручениеИсходящее.ПолучитьФормуВыбора();
                ФормаВыбора.Отбор.ВидОперации.Использование = Истина;
                ФормаВыбора.Отбор.ВидОперации.Значение      = Перечисления.ВидыОперацийППИсходящее.ПеречислениеДенежныхСредствПодотчетнику;
            Иначе
                ФормаВыбора = Документы.ПриходныйКассовыйОрдер.ПолучитьФормуВыбора();
                ФормаВыбора.Отбор.ВидОперации.Использование = Истина;
                ФормаВыбора.Отбор.ВидОперации.Значение      = Перечисления.ВидыОперацийПКО.ПолучениеНаличныхДенежныхСредствВБанке;
            КонецЕсли;
        КонецЕсли;
        Значение = ФормаВыбора.ОткрытьМодально();
        Если НЕ Значение = Неопределено Тогда
            Элемент.Значение = Значение;
        КонецЕсли;
    
    КонецПроцедуры

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