Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: СообщениеПользователю - Поле
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
mister-x
На реквізиті форми ДатаДоставки є процедура:

&НаКлиенте


Процедура ДатаДоставкиПриИзменении(Элемент)
    

Если Объект.ДатаДоставки < ТекущаяДата() Тогда    


        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Дата доставки товара не может быть меньше текущей даты!";
        Сообщение.Поле = Объект.ДатаДоставки;
        Сообщение.УстановитьДанные(Объект);
        Сообщение.Сообщить();
        Объект.ДатаДоставки = ТекущаяДата();
    КонецЕсли;
    
КонецПроцедуры


тобто потрібно, щоб при введені дати доставки, меншої за системну дату видавалось повідомлення, що прив"язане до елемента ДатаДоставки і відповідно в дату доставки прописувати системну дату.


При такому коді, платформа видає помилку:

{Документ.ЗаявкаНаТранспорт.Форма.ФормаДокумента.Форма(7)}: Ошибка при установке значения атрибута контекста (Поле)
Сообщение.Поле = Объект.ДатаДоставки;
Несоответствие типов



Чому?
logist
"Поле" должно быть названием элемента формы типа строка, а не реквизитом.
Боромир
Если Объект.ДатаДоставки < ТекущаяДата() Тогда

замените на
Если ЭтотОбъект.ДатаДоставки < ТекущаяДата() Тогда
logist
Если не ошибаюсь, в Вашем случае должно быть так:
Сообщение.Поле = "ДатаДоставки";
Боромир
Цитата(logist @ 12.03.11, 19:35) необходимо зарегистрироваться для просмотра ссылки
Если не ошибаюсь, в Вашем случае должно быть так:
Сообщение.Поле = "ДатаДоставки";

или
Сообщение.Поле = Формат(ДатаДоставки,"ДЛФ=д");

как вариант
mister-x
а як тоді повідомомлення причепити до ДатаДоставки?
Vofka
Цитата
а як тоді повідомомлення причепити до ДатаДоставки?

Вы попробовали, как написал logist?
Сообщение.Поле = "ДатаДоставки";
mister-x
Так, повідомлення №6, було написане до того як з"явились повідомлення №№4-5. smile.gif

Цитата(Боромир @ 12.03.11, 19:34) необходимо зарегистрироваться для просмотра ссылки
Если Объект.ДатаДоставки < ТекущаяДата() Тогда
замените на
Если ЭтотОбъект.ДатаДоставки < ТекущаяДата() Тогда


воно і так працює, а в чому полягає різниця?
logist
Цитата(mister-x @ 12.03.11, 19:13) необходимо зарегистрироваться для просмотра ссылки
воно і так працює, а в чому полягає різниця?

Ну читайте ж "Синтаксис-помощник", там все замечательно описано, и зачастую с примерами.
mister-x
Читаю:
ЭтотОбъект (ThisObject)
Использование:

Только чтение.
Описание:

Тип: ДокументОбъект. Содержит сам объект базы данных. Предназначено, в основном, для получения данного объекта встроенного языка в модуле объекта или модуле формы.

Доступность:

Сервер, толстый клиент, внешнее соединение.

Наскільки я розумію - тут я маю копію об"єкта із сервера, при зміні копії об"єкта при записі форми відбувається синхронізація копії об"єкту із об"єктом на сервері.

При чому ЭтотОбъект (ThisObject) в процедурі, яка компілюється на клієнті недоступний.
pablo
Цитата
Наскільки я розумію - тут я маю копію об"єкта із сервера, при зміні копії об"єкта при записі форми відбувається синхронізація копії об"єкту із об"єктом на сервері.

Контекст выполнения процедуры желательно указывать.

Для Вашего случая уже указан ответ в №5.
Еще один вариант:
Сообщение.Поле = Строка(ДатаДоставки);
pablo
P.S. Контекст не увидел, виноват
mister-x
Цитата(pablo @ 14.03.11, 10:06) необходимо зарегистрироваться для просмотра ссылки
P.S. Контекст не увидел, виноват

Контекст висвітлено в необходимо зарегистрироваться для просмотра ссылки (&НаКлиенте) wink.gif

необходимо зарегистрироваться для просмотра ссылки
mister-x
Всім дякую за допомогу, скористався повідмленнями 4-5, тему закрити.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.