Контроль заполнения поля формы по конкретному пользователю

Версия для печатиPDF-версия

Платформа:

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

В форме документа добавила процедуру

&НаСервереБезКонтекста

Процедура ПроверитьЗаполнениеКомментария()
 
Пользователь = ПараметрыСеанса.ТекущийПользователь; 
Если Пользователь.Наименование = Справочники.Пользователи.НайтиПоНаименованию("Иванов",Истина,,) Тогда
Если ПустаяСтрока(Элементы.Комментарий) Тогда
Сообщить("Заполните комментарий");
Отказ = Истина;
 
Если Отказ  Тогда
 
Возврат;
КонецЕсли;
 КонецЕсли;
КонецЕсли;
 
КонецПроцедуры
 
И в команде Расчет добавила
&НаКлиенте
Процедура Расчет(Команда)
 
ПроверитьЗаполнениеКомментария();
...
 
При нажатии кнопки Расчет должна проводиться проверка на заполнение поля и выдавать сообщение если пользователь Иванов, а поле Комментарий не заполнено, но проверка не проводится ((
Что не так я сделала, подскажите, пожалуйста.
 

 

Во-первых, условие "Если Пользователь.Наименование = Справочники.Пользователи.НайтиПоНаименованию("Иванов",Истина,,)" всегда будет ложно, т.к. вы сравниваете Строку со ссылкой на справочник Пользователи.

Во-вторых, у вас процедура ПроверитьЗаполнениеКомментария() объявлена с директивой компиляции &НаСервереБезКонтекста. А следовательно данные формы в ней недоступны. Т.е. строка "Если ПустаяСтрока(Элементы.Комментарий) Тогда" будет выдавать ошибку.

В-третьих, если Комментарий - это реквизит документа, то нужно проверять Объект.Комментарий, а если это реквизит формы, то просто Комментарий. Но никак не Элементы.Комментарий.

Попробуйте такой вариант:

&НаСервере
Функция ПроверитьЗаполнениеКомментария()
	ТекПользователь = Пользователи.ТекущийПользователь(); 
	Если ТекПользователь.Наименование = "Иванов" Тогда
		Если ПустаяСтрока(Объект.Комментарий) Тогда
			Сообщить("Заполните комментарий");
			Возврат Ложь;
		КонецЕсли;
	КонецЕсли;
	Возврат Истина;
КонецФункции

&НаКлиенте
Процедура Расчет(Команда)
	Если Не ПроверитьЗаполнениеКомментария() Тогда 
		Возврат;
	КонецЕсли;
	...
КонецПроцедуры

Большое спасибо. Помогло ))