Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
07 ноя 2025, 22:31

Пометка и дата, поиск

Автор Дмитрий Корнилов, 28 окт 2025, 20:59

0 Пользователей и 1 гость просматривают эту тему.

Дмитрий Корнилов

Здравствуйте, помогите пожалуйста исправить ошибку



Создайте на форме список значений (тип значения Дата) и поместите его на форму, также
поместите на форме поле Пометка.
При выполнении команды заполняйте этот список датами текущего месяца.
Создайте реквизит с типом Дата и поместите его на форму.
После ввода даты ищите такую дату в списке значений, и отмечайте её пометкой. Пометки не
должны накапливаться, очищайте все пометки перед установкой новой.

&НаКлиенте
Процедура ЗаполнитьМесяц(Команда)
    // Вызов серверной процедуры для получения и заполнения данных
    ЗаполнитьМесяцНаСервере();
   
    // После заполнения можно установить текущую дату в поле ввода
    ДатаДляПометки = ТекущаяДата();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьМесяцНаСервере()
   
    // Очищаем список перед заполнением
    СписокДатМесяца.Очистить();
   
    // Получаем начало и конец текущего месяца
    НачалоМесяца = НачалоМесяца(ТекущаяДата());
    КонецМесяца  = КонецМесяца(ТекущаяДата());
   
    ТекущаяДатаЦикла = НачалоМесяца;
   
    // Заполняем список датами
    Пока ТекущаяДатаЦикла <= КонецМесяца Цикл
       
        // Добавляем дату в список
        СписокДатМесяца.Добавить(ТекущаяДатаЦикла);
       
        // Переходим к следующему дню
        ТекущаяДатаЦикла = ТекущаяДатаЦикла + (60 * 60 * 24); // Прибавляем 1 день
       
    КонецЦикла;
   
КонецПроцедуры 


&НаКлиенте
Процедура ДатаДляПометкиПриИзменении(Элемент)
    // Вызов серверной процедуры для поиска и пометки
    ПометитьДатуНаСервере();
КонецПроцедуры

&НаСервере
Процедура ПометитьДатуНаСервере()
   
    // 1. Очищаем все пометки
    Для Каждого ЭлементСписка Из СписокДатМесяца Цикл
        ЭлементСписка.Пометка = Ложь;
    КонецЦикла;
   
    // 2. Ищем и устанавливаем новую пометку
    ИскомаяДата = НачалоДня(ДатаДляПометки); // Убираем время для точного сравнения
   
    Для Каждого ЭлементСписка Из СписокДатМесяца Цикл
       
        Если НачалоДня(ЭлементСписка.Значение) = ИскомаяДата Тогда
           
            // Найдена! Устанавливаем пометку.
            ЭлементСписка.Пометка = Истина;
            Прервать; // Выходим из цикла, так как нашли нужную дату
           
        КонецЕсли;
       
    КонецЦикла;
   
КонецПроцедуры

antoneus

И не надо бегать на сервер, чтобы выполнять там то, что можно выполнить на клиенте.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск