Как вывести сообщение на клиенте

1. VKuser207941938 14.11.23 09:50 Сейчас в теме
Здравствуйте, ещё не до конца разбираюсь в языке поэтому никак не могу понять. Имеется следующий код:
&НаСервере
Процедура СотрудникПриИзмененииНаСервере()
	Перем СВСОТР
	Сотр = Объект.Сотрудник;
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	СведенияОСотрудниках.Регистратор КАК Регистратор
		|ИЗ
		|	РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
		|ГДЕ
		|	СведенияОСотрудниках.Работает = &ИСТИНА
		|	И СведенияОСотрудниках.Сотрудник = &Сотрудник
		|
		|СГРУППИРОВАТЬ ПО
		|	СведенияОСотрудниках.Регистратор";
	
	Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
	Запрос.УстановитьПараметр("Сотрудник", Сотр);

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



КонецПроцедуры

&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
	СотрудникПриИзмененииНаСервере();
КонецПроцедуры
Показать


Не могу понять как сделать так, чтобы вместо:
Сообщить(СВСОТР);
, появлялось окно с предупреждение НаКлиенте
По теме из базы знаний
Найденные решения
4. soft_wind 14.11.23 10:13 Сейчас в теме
попробуйте такой вариант (а еще не совсем понятно, сколько может быть документов)
&НаСервере
Функция СотрудникПриИзмененииНаСервере()
    Перем СВСОТР
    //Сотр = Объект.Сотрудник;
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ различные
        |    СведенияОСотрудниках.Регистратор КАК Регистратор
        |ИЗ
        |    РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
        |ГДЕ
        |    СведенияОСотрудниках.Сотрудник = &Сотрудник
        |    и СведенияОСотрудниках.Работает = ИСТИНА
        |
        |//СГРУППИРОВАТЬ ПО
        |//    СведенияОСотрудниках.Регистратор
		|";
    
    //Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
    Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);

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



КонецФункции

&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
    СВСОТР = СотрудникПриИзмененииНаСервере();
	Если Не ПустаяСтрока(СВСОТР) Тогда
		ПоказатьПредупреждение(,СВСОТР,20);
	КонецЕсли;
КонецПроцедуры
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. soft_wind 14.11.23 10:00 Сейчас в теме
Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);

ЭТО ПРОСТО ШЕДЕВР!!!!
5. lefthander 14.11.23 10:17 Сейчас в теме
(2)Со временем придет понимание что
"| СведенияОСотрудниках.Работает = &ИСТИНА" соответствует "| СведенияОСотрудниках.Работает"

Когда начинаешь программировать и не такие перлы могут вылезать. ;) Мы же все когда то начинали с подобных "шедевров"

ЗЫ (4)
| и СведенияОСотрудниках.Работает = ИСТИНА
- тоже "хорошо" ;) .
Student1C; +1 Ответить
3. starjevschik 14.11.23 10:06 Сейчас в теме
Это же алгоритмический вопрос. Соответственно без использования логики не обойтись, если хочешь чего-то понять.
Чтобы вывести что-то на клиенте, надо вывод перенести на клиент.
Чтобы вывести это что-то при каком-то условии, условие должно быть известно на клиенте в момент вывода.
Условие формируется на сервере, значит, надо передать результат вычисления на клиент.
Ну вот когда это все будет закодировано, можно будет дальше смотреть.
4. soft_wind 14.11.23 10:13 Сейчас в теме
попробуйте такой вариант (а еще не совсем понятно, сколько может быть документов)
&НаСервере
Функция СотрудникПриИзмененииНаСервере()
    Перем СВСОТР
    //Сотр = Объект.Сотрудник;
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ различные
        |    СведенияОСотрудниках.Регистратор КАК Регистратор
        |ИЗ
        |    РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
        |ГДЕ
        |    СведенияОСотрудниках.Сотрудник = &Сотрудник
        |    и СведенияОСотрудниках.Работает = ИСТИНА
        |
        |//СГРУППИРОВАТЬ ПО
        |//    СведенияОСотрудниках.Регистратор
		|";
    
    //Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
    Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);

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



КонецФункции

&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
    СВСОТР = СотрудникПриИзмененииНаСервере();
	Если Не ПустаяСтрока(СВСОТР) Тогда
		ПоказатьПредупреждение(,СВСОТР,20);
	КонецЕсли;
КонецПроцедуры
Показать
7. VKuser207941938 14.11.23 10:37 Сейчас в теме
(6)Вот как раз таки это бесячее сообщение и нужно которое бы появлялось по центру. Что бы бухгалтер точно мог его заметить и не заполнил случайно ещё раз

(4)
&НаСервере
Функция СотрудникПриИзмененииНаСервере()
Перем СВСОТР
//Сотр = Объект.Сотрудник;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ различные
| СведенияОСотрудниках.Регистратор КАК Регистратор
|ИЗ
| РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
|ГДЕ
| СведенияОСотрудниках.Сотрудник = &Сотрудник
| и СведенияОСотрудниках.Работает = ИСТИНА
|
|//СГРУППИРОВАТЬ ПО
|// СведенияОСотрудниках.Регистратор
|";

//Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

СВСОТР = "";
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СВСОТР = СВСОТР + ВыборкаДетальныеЗаписи.Регистратор + Символы.ПС;
//Если НЕ ЗначениеЗаполнено(СВСОТР) Тогда
//
//Иначе
//
//Сообщить(СВСОТР);
Объект.Сотрудник = "";
Объект.ТабличнаяЧасть1.Очистить();
//КонецЕсли;
КонецЦикла;

Возврат СВСОТР;



КонецФункции

&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
СВСОТР = СотрудникПриИзмененииНаСервере();
Если Не ПустаяСтрока(СВСОТР) Тогда
ПоказатьПредупреждение(,СВСОТР,20);
КонецЕсли;
КонецПроцедуры
Показать

В принципе, вот это как раз идеальный вариант. Спасибо большое
6. Sashares 33 14.11.23 10:22 Сейчас в теме
Лучше вместо бесячего окна предупреждения, которое будет постоянно появляться при изменении сотрудника, добавить рядом надпись с текстом "уже работает".

Безусловно очищать данные документа тоже такое себе.

И в качестве занятной особенности вашего кода - в проведенном документе попробуйте перевыбрать этого же сотрудника.
8. soft_wind 14.11.23 11:17 Сейчас в теме
(6)
И в качестве занятной особенности вашего кода - в проведенном документе попробуйте перевыбрать этого же сотрудника.

- сразу всего не учтешь, остается простор для роста
9. Sashares 33 14.11.23 11:32 Сейчас в теме
(8)Да я не спорю, просто указал на ошибку=)
soft_wind; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот