Здравствуйте, ещё не до конца разбираюсь в языке поэтому никак не могу понять. Имеется следующий код:
Не могу понять как сделать так, чтобы вместо: , появлялось окно с предупреждение НаКлиенте
&НаСервере
Процедура СотрудникПриИзмененииНаСервере()
Перем СВСОТР
Сотр = Объект.Сотрудник;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СведенияОСотрудниках.Регистратор КАК Регистратор
|ИЗ
| РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
|ГДЕ
| СведенияОСотрудниках.Работает = &ИСТИНА
| И СведенияОСотрудниках.Сотрудник = &Сотрудник
|
|СГРУППИРОВАТЬ ПО
| СведенияОСотрудниках.Регистратор";
Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
Запрос.УстановитьПараметр("Сотрудник", Сотр);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СВСОТР = ВыборкаДетальныеЗаписи.Регистратор;
Если НЕ ЗначениеЗаполнено(СВСОТР) Тогда
Иначе
Сообщить(СВСОТР);
Объект.Сотрудник = "";
Объект.ТабличнаяЧасть1.Очистить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
СотрудникПриИзмененииНаСервере();
КонецПроцедуры
ПоказатьНе могу понять как сделать так, чтобы вместо:
Сообщить(СВСОТР);
По теме из базы знаний
- Как выдать сообщение всем пользователям (для управляемого приложения)
- Информирование пользователя. Работа с объектом «СообщениеПользователю»
- Как заработать миллион или История успешного сотрудничества
- Как работать настоящим программистом и стоит ли стремиться уйти из 1С
- Собственная начальная страница с избранным, историей и сообщениями
Найденные решения
попробуйте такой вариант (а еще не совсем понятно, сколько может быть документов)
&НаСервере
Функция СотрудникПриИзмененииНаСервере()
Перем СВСОТР
//Сотр = Объект.Сотрудник;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ различные
| СведенияОСотрудниках.Регистратор КАК Регистратор
|ИЗ
| РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
|ГДЕ
| СведенияОСотрудниках.Сотрудник = &Сотрудник
| и СведенияОСотрудниках.Работает = ИСТИНА
|
|//СГРУППИРОВАТЬ ПО
|// СведенияОСотрудниках.Регистратор
|";
//Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СВСОТР = "";
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СВСОТР = СВСОТР + ВыборкаДетальныеЗаписи.Регистратор + Символы.ПС;
//Если НЕ ЗначениеЗаполнено(СВСОТР) Тогда
//
//Иначе
//
//Сообщить(СВСОТР);
Объект.Сотрудник = "";
Объект.ТабличнаяЧасть1.Очистить();
//КонецЕсли;
КонецЦикла;
Возврат СВСОТР;
КонецФункции
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
СВСОТР = СотрудникПриИзмененииНаСервере();
Если Не ПустаяСтрока(СВСОТР) Тогда
ПоказатьПредупреждение(,СВСОТР,20);
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)Со временем придет понимание что
"| СведенияОСотрудниках.Работает = &ИСТИНА" соответствует "| СведенияОСотрудниках.Работает"
Когда начинаешь программировать и не такие перлы могут вылезать. ;) Мы же все когда то начинали с подобных "шедевров"
ЗЫ (4)
"| СведенияОСотрудниках.Работает = &ИСТИНА" соответствует "| СведенияОСотрудниках.Работает"
Когда начинаешь программировать и не такие перлы могут вылезать. ;) Мы же все когда то начинали с подобных "шедевров"
ЗЫ (4)
| и СведенияОСотрудниках.Работает = ИСТИНА
- тоже "хорошо" ;) .
Это же алгоритмический вопрос. Соответственно без использования логики не обойтись, если хочешь чего-то понять.
Чтобы вывести что-то на клиенте, надо вывод перенести на клиент.
Чтобы вывести это что-то при каком-то условии, условие должно быть известно на клиенте в момент вывода.
Условие формируется на сервере, значит, надо передать результат вычисления на клиент.
Ну вот когда это все будет закодировано, можно будет дальше смотреть.
Чтобы вывести что-то на клиенте, надо вывод перенести на клиент.
Чтобы вывести это что-то при каком-то условии, условие должно быть известно на клиенте в момент вывода.
Условие формируется на сервере, значит, надо передать результат вычисления на клиент.
Ну вот когда это все будет закодировано, можно будет дальше смотреть.
попробуйте такой вариант (а еще не совсем понятно, сколько может быть документов)
&НаСервере
Функция СотрудникПриИзмененииНаСервере()
Перем СВСОТР
//Сотр = Объект.Сотрудник;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ различные
| СведенияОСотрудниках.Регистратор КАК Регистратор
|ИЗ
| РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
|ГДЕ
| СведенияОСотрудниках.Сотрудник = &Сотрудник
| и СведенияОСотрудниках.Работает = ИСТИНА
|
|//СГРУППИРОВАТЬ ПО
|// СведенияОСотрудниках.Регистратор
|";
//Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СВСОТР = "";
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СВСОТР = СВСОТР + ВыборкаДетальныеЗаписи.Регистратор + Символы.ПС;
//Если НЕ ЗначениеЗаполнено(СВСОТР) Тогда
//
//Иначе
//
//Сообщить(СВСОТР);
Объект.Сотрудник = "";
Объект.ТабличнаяЧасть1.Очистить();
//КонецЕсли;
КонецЦикла;
Возврат СВСОТР;
КонецФункции
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
СВСОТР = СотрудникПриИзмененииНаСервере();
Если Не ПустаяСтрока(СВСОТР) Тогда
ПоказатьПредупреждение(,СВСОТР,20);
КонецЕсли;
КонецПроцедуры
Показать
(6)Вот как раз таки это бесячее сообщение и нужно которое бы появлялось по центру. Что бы бухгалтер точно мог его заметить и не заполнил случайно ещё раз
(4)
В принципе, вот это как раз идеальный вариант. Спасибо большое
(4)
&НаСервере
Функция СотрудникПриИзмененииНаСервере()
Перем СВСОТР
//Сотр = Объект.Сотрудник;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ различные
| СведенияОСотрудниках.Регистратор КАК Регистратор
|ИЗ
| РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
|ГДЕ
| СведенияОСотрудниках.Сотрудник = &Сотрудник
| и СведенияОСотрудниках.Работает = ИСТИНА
|
|//СГРУППИРОВАТЬ ПО
|// СведенияОСотрудниках.Регистратор
|";
//Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СВСОТР = "";
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СВСОТР = СВСОТР + ВыборкаДетальныеЗаписи.Регистратор + Символы.ПС;
//Если НЕ ЗначениеЗаполнено(СВСОТР) Тогда
//
//Иначе
//
//Сообщить(СВСОТР);
Объект.Сотрудник = "";
Объект.ТабличнаяЧасть1.Очистить();
//КонецЕсли;
КонецЦикла;
Возврат СВСОТР;
КонецФункции
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
СВСОТР = СотрудникПриИзмененииНаСервере();
Если Не ПустаяСтрока(СВСОТР) Тогда
ПоказатьПредупреждение(,СВСОТР,20);
КонецЕсли;
КонецПроцедуры
ПоказатьФункция СотрудникПриИзмененииНаСервере()
Перем СВСОТР
//Сотр = Объект.Сотрудник;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ различные
| СведенияОСотрудниках.Регистратор КАК Регистратор
|ИЗ
| РегистрСведений.СведенияОСотрудниках КАК СведенияОСотрудниках
|ГДЕ
| СведенияОСотрудниках.Сотрудник = &Сотрудник
| и СведенияОСотрудниках.Работает = ИСТИНА
|
|//СГРУППИРОВАТЬ ПО
|// СведенияОСотрудниках.Регистратор
|";
//Запрос.УстановитьПараметр("ИСТИНА", ИСТИНА);
Запрос.УстановитьПараметр("Сотрудник", Объект.Сотрудник);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
СВСОТР = "";
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СВСОТР = СВСОТР + ВыборкаДетальныеЗаписи.Регистратор + Символы.ПС;
//Если НЕ ЗначениеЗаполнено(СВСОТР) Тогда
//
//Иначе
//
//Сообщить(СВСОТР);
Объект.Сотрудник = "";
Объект.ТабличнаяЧасть1.Очистить();
//КонецЕсли;
КонецЦикла;
Возврат СВСОТР;
КонецФункции
&НаКлиенте
Процедура СотрудникПриИзменении(Элемент)
СВСОТР = СотрудникПриИзмененииНаСервере();
Если Не ПустаяСтрока(СВСОТР) Тогда
ПоказатьПредупреждение(,СВСОТР,20);
КонецЕсли;
КонецПроцедуры
В принципе, вот это как раз идеальный вариант. Спасибо большое
Лучше вместо бесячего окна предупреждения, которое будет постоянно появляться при изменении сотрудника, добавить рядом надпись с текстом "уже работает".
Безусловно очищать данные документа тоже такое себе.
И в качестве занятной особенности вашего кода - в проведенном документе попробуйте перевыбрать этого же сотрудника.
Безусловно очищать данные документа тоже такое себе.
И в качестве занятной особенности вашего кода - в проведенном документе попробуйте перевыбрать этого же сотрудника.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот