Расширение поля формы для поля календаря.РазрешитьПеретаскивание

Свойства · EnableDrag

Тип: Булево. Включает механизм перетаскивания у приёмника перетаскивания.

Полное описание, параметры и ограничения

Расширение поля формы для поля календаря.РазрешитьПеретаскивание (Form field extension for a calendar field.EnableDrag)

Расширение поля формы для поля календаря (Form field extension for a calendar field)

РазрешитьПеретаскивание (EnableDrag)

Доступен, начиная с версии 8.2.

Использование:
Чтение и запись.
Описание:
Тип: Булево.
Включает механизм перетаскивания у приёмника перетаскивания.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

Примечание:
Истина - перетаскивание разрешено; Ложь - запрещено.
Использование в версии:

Доступен, начиная с версии 8.2.

Описание изменено в версии 8.3.20.

Методическая информация

Практические примеры

Выбрать дату внутри ограниченного учебного периода

Одиночный календарь связан с собственным реквизитом. Кнопка переключает 6 октября и 5 ноября, не выходя за октябрь–ноябрь.

Где и как запускать

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. Создайте отдельную внешнюю обработку с пустой управляемой основной формой. Каждый урок — полный модуль отдельной копии.

  2. В событиях формы свяжите ПриСозданииНаСервере с процедурой из кода. Не создавайте УчебнаяДата, УчебныйКалендарь и проверочную кнопку вручную.

  3. Код создаёт свой календарь и реквизит Дата с начальным значением 04.10.2026. Нет документов, регистров, файлов или календарей рабочего времени базы.

  4. Для размеров в месяцах нужен режим совместимости выше Версия8_3_2. Здесь предполагается учебная база на 8.5.1.1343 без старого режима совместимости.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("УчебнаяДата", Новый ОписаниеТипов("Дата")));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.УчебнаяДата = Дата(2026, 10, 4);
    Календарь = Элементы.Добавить("УчебныйКалендарь", Тип("ПолеФормы"));
    Календарь.Вид = ВидПоляФормы.ПолеКалендаря;
    Календарь.ПутьКДанным = "УчебнаяДата";
    Календарь.Заголовок = "Собственная учебная дата";
    Календарь.НачалоПериодаОтображения = Дата(2026, 10, 1);
    Календарь.КонецПериодаОтображения = Дата(2026, 11, 30);
    Календарь.РежимВыделения = РежимВыделенияДаты.Одиночный;
    Календарь.ПеремещениеПоКалендарю = Истина;
    Календарь.ОтображатьТекущуюДату = Истина;
    Календарь.РазрешитьНачалоПеретаскивания = Ложь;
    Календарь.РазрешитьПеретаскивание = Ложь;

    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Проверить учебный календарь";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если ЭтаФорма.УчебнаяДата = Дата(2026, 10, 6) Тогда
        ЭтаФорма.УчебнаяДата = Дата(2026, 11, 5);
    Иначе
        ЭтаФорма.УчебнаяДата = Дата(2026, 10, 6);
    КонецЕсли;
    Календарь = Элементы.УчебныйКалендарь;
    Сообщить(Формат(ЭтаФорма.УчебнаяДата, "ДФ=dd.MM.yyyy"));
    Сообщить(ЭтаФорма.УчебнаяДата >= Календарь.НачалоПериодаОтображения И ЭтаФорма.УчебнаяДата <= Календарь.КонецПериодаОтображения);
    Сообщить(Не Календарь.РазрешитьНачалоПеретаскивания И Не Календарь.РазрешитьПеретаскивание);
КонецПроцедуры

Разбор по шагам

  1. ПутьКДанным связывает календарь с УчебнаяДата. Переключение меняет этот реквизит, а не текущую дату компьютера.

  2. Начало и конец периода ограничивают доступный диапазон календаря. Разрешение перемещения не отменяет эти границы.

  3. ОтображатьТекущуюДату включает строку с фактической текущей датой клиента, а не с фиксированной УчебнаяДата.

  4. Перетаскивание с обеих сторон выключено: для учебного выбора не нужны чужие файлы или обработчики drag-and-drop.

Как проверить результат

  1. Первое нажатие: 06.10.2026 и два Истина; второе: 05.11.2026 и два Истина.

  2. Выберите допустимый день мышью и проверьте реквизит; переход за 01.10–30.11 не должен разрешаться календарём.

Ожидаемый результат

Выбор связан с настоящим собственным реквизитом и имеет явные границы.

На что обратить внимание

  1. Не путайте выбранную дату и текущую системную дату.

  2. Ограничение интерфейса не заменяет проверку даты перед серверной записью рабочего документа.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.