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

Самый глупый вопрос

Автор AgataBlack, 29 июн 2022, 10:29

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

AgataBlack

Добрый день, подскажите пожалуйста.
Есть форма документа в которой есть реквизит "Мастер" тип СправочникСсылка.Сотрудники
Нужно пользователю методом сообщить указать на то что он не выбрал мастера в заявке.
По умолчанию в поле "Мастер" стоит "Не указан" то есть галочкой "Проверка заполнения" не отделаться.

Попыталась сделать сама:

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

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

Но выдаёт ошибку:

{Документ.ОказаниеУслуг.Форма.ФормаДокумента.Форма(34,16)}: Переменная не определена (Справочники)
   НеОпределен = <<?>>Справочники.Сотрудники.НайтиПоНаименованию("Не указан"); (Проверка: Тонкий клиент)

Так видимо работать не будет. Получается чтобы обратиться к справочнику из документа нужно обращаться к серверу:

&НаСервере
Процедура МастерПриИзмененииНаСервере(Элемент)
    НеОпределен = Справочники.Сотрудники.НайтиПоНаименованию("Не указан");     
   
   КонецПроцедуры

&НаКлиенте
Процедура МастерПриИзменении(Элемент)
   Если НеОпределен тогда
      Сообщить("Смените имя");
   иначе
      Сообщить ("Всё гуд");
      КонецЕсли;

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

Но так тоже не работает)

{Документ.ОказаниеУслуг.Форма.ФормаДокумента.Форма(24,7)}: Переменная не определена (НеОпределен)
   Если <<?>>НеОпределен тогда (Проверка: Тонкий клиент)

Делаю всё в модуле формы документа. Подскажите что я делаю не так.




LexaK

AgataBlack, как один из вариантов, можно сделать такую проверку
(это пример, при необходимости проверить изменить на свои наименования)
&НаКлиенте
Процедура МастерПриИзменении(Элемент)
   Если ПроверкаМастера(Объект.Мастер) тогда
      Сообщить ("Всё гуд");
   иначе
      Сообщить("Смените имя");
   КонецЕсли;
КонецПроцедуры
 
&НаСервереБезКонтекста
Функция ПроверкаМастера(Мастер)
Возврат ЗначениеЗаполнено(Мастер) и Нрег(Мастер.Наименование) <> "не указан";
КонецФункции
если помогло нажмите: Спасибо!

AgataBlack

LexaK, ошибок нет уже хорошо)
Только теперь при любом имени мастера пишет "Всё гуд" если вместо <> ставлю = пишет "Смените имя" так же везде
Ох этот коварный "Не указан" в поле "Мастер"

AgataBlack

LexaK,
&НаСервереБезКонтекста
Функция ПроверкаМастера(Мастер)
  Возврат ЗначениеЗаполнено(Мастер) и Мастер.Наименование <> "Не определен";   
КонецФункции

Вот так вроде получилось))Сейчас еще поковыряюсь и огрооооооооооооооомное спасибо поставлю)
Осталось запретить действие пока не поменяют на другого мастер)Я так понимаю это уже с "если" нужно работать)

LexaK

AgataBlack, лучше не надо ни чего запрещать,
у формы есть события, ПереЗакрытием или Проверказаполнения или др.
там добавьте свою проверку и если Проверка не прошла выдавайте сообщение, отказ и т.д.
если помогло нажмите: Спасибо!

AgataBlack

LexaK, Видимо не дошла еще до этой главы в учебнике. Пока только знаю события :ПриИзменении,НачалоВыбора,НачалоВыбораИзСписка,Очистка и тд те что есть в политре поля в самом низу

AgataBlack

LexaK,
Алексей, если я правильно поняла то должно выглядеть вот так?

&НаКлиенте
Процедура ПриЗаписи(Объект.Мастер)
   
    Если ПроверкаМастера(Объект.Мастер) Тогда
        Предупреждение("Укажите ИНИЦИАТОРА заявки!");
        СтатусВозврата(0);
        Возврат;
    КонецЕсли;
   
КонецПроцедуры
   
 
&НаСервереБезКонтекста
Функция ПроверкаМастера(Мастер)
  Возврат ЗначениеЗаполнено(Мастер) и Мастер.Наименование <> "Не определен";   
КонецФункции

Но почему то возникает ошибка:

{Документ.ОказаниеУслуг.Форма.ФормаДокумента.Форма(73,27)}: Ожидается символ ')'
Процедура ПриЗаписи(Объект<<?>>.Мастер) (Проверка: Тонкий клиент)

LexaK

AgataBlack, наверно лучше такое и так событие использовать
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Если Не ПроверкаМастера(Объект.Мастер) Тогда
        ПоказатьПредупреждение(,"Укажите ИНИЦИАТОРА заявки!",10);
        Отказ = Истина;
КонецЕсли;
КонецПроцедуры

обязательно проверьте/назначьте эту процедуру в обработчик события формы!!! (иначе не сработает)
Форма - свойства - события - ПередЗаписью (поле должно быть заполнено)
если помогло нажмите: Спасибо!

AgataBlack

LexaK, Сколько же еще нужно узнать))Спасибо большое Алексей, всё получилось. Вы молодец :zebzdr:  :zebzdr:  :zebzdr:
Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!Спасибо!

Теги:

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

Рейтинг@Mail.ru

Поиск