Работа с Диалогами в языке 1С 8.3, 8.2 (в примерах

Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.

Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

См. урок для начинающих по диалогам в 1С
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Оглавление (нажмите, чтобы раскрыть)

// ***** Немодальные версии диалогов ***
 
/// Как немодально вывести диалог вопроса с заголовком и нужными
/// кнопками в 1с 8.3, 8.2
 
&НаКлиенте
Процедура ДиалогСВопросом(Команда)
 
    Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса",
      ЭтотОбъект);	
 
    ПоказатьВопрос(Оповещение,
        "Вы добрый человек?",
        РежимДиалогаВопрос.ДаНетОтмена,
        0, // таймаут в секундах
        КодВозвратаДиалога.Да, // (необ.) кнопка по умолчанию
        "Хороший вопрос" // (необ.) заголовок
    );    
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеЗакрытияВопроса(Результат, Параметры) Экспорт
 
    Если Результат = КодВозвратаДиалога.Да Тогда
        Сообщить("Какой вы молодец!");
    КонецЕсли;	
 
КонецПроцедуры
 
/// Как немодально вывести предупреждение пользователю в 1с 8.3, 8.2
 
&НаКлиенте
Процедура ПредупреждениеПользователю(Команда)
 
    Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияПредупреждение",
        ЭтотОбъект);	
 
    ПоказатьПредупреждение(
        Оповещение,
        "Будьте осторожны.", // предупреждение
        0, // (необ.) таймаут в секундах
        "Это предупреждение." // (необ.) заголовок
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеЗакрытияПредупреждение(Параметры) Экспорт	
КонецПроцедуры
 
/// Как немодально открыть значение для интерактивной
/// работы с ним в 1с 8.3, 8.2
 
&НаКлиенте
Процедура ПоказЗначенияДляИнтерактивнойРаботыСНим(Команда)
 
    Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияЗначения",
        ЭтотОбъект);
 
    ПоказатьЗначение(Оповещение, 23.56);
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеЗакрытияЗначения(Параметры) Экспорт	
КонецПроцедуры
 
/// Как немодально ввести дату от пользователя
/// в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакИнтерактивноВвестиДатуОтПользователя(Команда)
 
    Оповещение = Новый ОписаниеОповещения("ПослеВводаДаты", ЭтотОбъект);	
 
    ПоказатьВводДаты(
        Оповещение,
        , // пропускаем начальное значение даты
        "Введите дату рождения", 
        ЧастиДаты.Дата
    );    
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВводаДаты(Дата, Параметры) Экспорт
 
    Если Не Дата = Неопределено Тогда
        Сообщить("Вы родились " + Дата);		
    КонецЕсли;
 
КонецПроцедуры
 
/// Как немодально ввести значение определенного
/// типа от пользователя в 1с 8.3, 8.2 
 
&НаКлиенте
Процедура КакИнтерактивноВвестиЗначениеОпределенногоТипа(Команда)
 
    Оповещение = Новый ОписаниеОповещения("ПослеВводаЗначения", 
      ЭтотОбъект);	
 
    ПоказатьВводЗначения(
        Оповещение,
        , // пропускаем начальное значение
        "Введите значение",
        "Число"
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВводаЗначения(Результат, Параметры) Экспорт	
 
    Если Не Результат = Неопределено Тогда
        Сообщить(Результат);		
    КонецЕсли;
 
КонецПроцедуры
 
/// Как немодально ввести строку от пользователя в 1с 8.3, 8.2
 
&НаКлиенте
Процедура КакНемодальноВвестиСтроку(Команда)
 
    Оповещение = Новый ОписаниеОповещения("ПослеВводаСтроки", 
        ЭтотОбъект);
 
    ПоказатьВводСтроки(
        Оповещение,
        , // пропускаем начальное значение
        "Введите строку",
        0, // (необ.) длина
        Истина // (необ.) многострочность
    );
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВводаСтроки(Результат, Параметры) Экспорт
 
    Если Не Результат = Неопределено Тогда
        Сообщить(Результат);
    КонецЕсли;
 
КонецПроцедуры
 
/// Как немодально ввести число определенного типа от
/// пользователя в 1С 8.3, 8.2
 
&НаКлиенте
Процедура КакНемодальноВвестиЧислоОпределенногоТипа(Команда)
 
    Оповещение = Новый ОписаниеОповещения("ПослеВводаЧисла", 
        ЭтотОбъект);
 
    ПоказатьВводЧисла(
        Оповещение,
        , // пропускаем начальное значение
        "Введите число",
        3, // длина числа, включая дробную часть без разделителя
        1 // длина дробной части
    );    
 
КонецПроцедуры
 
&НаКлиенте
Процедура ПослеВводаЧисла(Результат, Параметры) Экспорт
 
    Если Не Результат = Неопределено Тогда
        Сообщить(Результат);
    КонецЕсли;
 
КонецПроцедуры
 
// ***** Модальные версии диалогов *****
 
&НаКлиенте
Процедура МодальныеВерсииДиалогов(Команда)
 
    Перем Ч;
    Перем Стр;
    Перем Дата;
 
    /// Как модально вывести диалог вопроса с заголовком
    /// и нужными кнопками в 1с 8.3, 8.2
 
    Ответ = Вопрос("Вы добрый человек?",
        РежимДиалогаВопрос.ДаНетОтмена,
        0, // таймаут в секундах
        КодВозвратаДиалога.Да, // (необ.) кнопка по умолчанию
        "Хороший вопрос" // (необ.) заголовок
        );
 
    Если Ответ = КодВозвратаДиалога.Да Тогда
        Сообщить("Какой вы молодец!");
    КонецЕсли;
 
    /// Как модально обработать прерывание операции от пользователя 
    /// (нажатие Break)
 
    // Расскоментировать для испытаний
    // Пока Истина Цикл
        // если пользователь нажал break, чтобы прервать выполнение кода
        // прервется не только цикл, но и весь поток кода
        // ОбработкаПрерыванияПользователя();
    // КонецЦикла;
 
    /// Как модально вывести предупреждение пользователю в 1с 8.3, 8.2
 
    Предупреждение(
        "Будьте осторожны.", // предупреждение
        0, // (необ.) таймаут в секундах
        "Это предупреждение." // (необ.) заголовок
    );
 
    /// Как модально открыть значение для интерактивной
    /// работы с ним в 1с 8
 
    ОткрытьЗначение(23.56);
 
    // откроет элемент справочника с кодом 1    
    // Выполнять этот код на сервере, а не на клиенте:
    // ОткрытьЗначение(Справочники.Номенклатура.НайтиПоКоду("000000001"));
 
    /// Как очистить служеб. сообщения и вывести предупреждающий
    /// сигнал 
 
    Для Индекс = 1 По 100 Цикл
        Сообщить(Индекс);
    КонецЦикла;
 
    Предупреждение("Сейчас все сообщения будут удалены.", 5);
    ОчиститьСообщения();
    Сигнал();
 
    /// Как указать статус сообщения при выводе в 1с 8.3, 8.2
 
    Сообщить(
        "Очень важный текст.",
        СтатусСообщения.ОченьВажное //по умолчанию статус Обычное
    );
 
    /// Как модально ввести дату от пользователя в 1с 8.3, 8.2
 
    Если
        ВвестиДату(Дата, "Введите дату рождения", ЧастиДаты.Дата) = Истина
    Тогда
        Сообщить("Вы родились " + Дата);
    КонецЕсли;
 
    /// Как модально ввести значение определенного типа от
    /// пользователя в 1С 8.3, 8.2
 
    Если ВвестиЗначение(Ч, "Введите значение", "Число") Тогда
        Сообщить(Ч);
    КонецЕсли;
 
    /// Как модально ввести строку от пользователя в 1с 8.3, 8.2
 
    Если ВвестиСтроку(
        Стр,
        "Введите строку",
        0, // (необ.) длина
        Истина // (необ.) многострочность
    )
    Тогда
        Сообщить(Стр);
    КонецЕсли;
 
    /// Как модально ввести число определенного типа от
    /// пользователя в 1С 8.3, 8.2
 
    Если ВвестиЧисло(
        Ч,
        "Введите число",
        3, // длина числа, включая дробную часть без разделителя
        1 // длина дробной части
    )
    Тогда
        Сообщить(Ч);
    КонецЕсли;    
 
КонецПроцедуры
 
/// Скачать и выполнить эти примеры на компьютере

Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)

Работа с Диалогами в языке 1С 8.3, 8.2 (в примерах

Дата Если Массивы Математика Процедуры Строки Циклы
Диалоги ОписаниеТипов ОперационнаяСистема Приложение Соответствие
СписокЗначений Структура ТаблицаЗначений ФайловаяСистема Формат

ОбщиеОбъекты Запросы ПрикладныеОбъекты УниверсальныеФункции

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



Владимир Милькин
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.

Нажмите одну из кнопок, чтобы поделиться: