Обязательный реквизит реализации

1. Fanatiq777 02.12.21 07:35 Сейчас в теме
Чего не так делаю, хочу чтобы выдавало предупреждение что не заполнен договор.

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)

СобытияФормКлиент.ПередЗаписью(ЭтотОбъект, Отказ, ПараметрыЗаписи);

// Если документ проводится, рассчитаем скидки

Если Не ЗначениеЗаполнено(Договор) Тогда
Отказ=Истина;
<Не заполнен договор>
Возврат;
Если НеВыполнятьПроверкуПередЗаписью Тогда
НеВыполнятьПроверкуПередЗаписью = Ложь;
Возврат;
КонецЕсли;

Если ПараметрыЗаписи.РежимЗаписи = РежимЗаписиДокумента.Проведение Тогда
ВыполнитьПроверкиИЗадатьВопросыПередЗаписью(Отказ, ПараметрыЗаписи);
КонецЕсли;

ЗаполнитьПоказателиЭтаповОплатыКлиент();
ОбщегоНазначенияУТКлиент.ЗаписатьОбъектПриНеобходимости(ЭтотОбъект, ПараметрыЗаписи, Отказ);

КонецПроцедуры
Показать
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
5. glek 119 02.12.21 08:11 Сейчас в теме
(1) У Вас договор это реквизит объекта? Тогда надо писать Если не ЗначениеЗаполнено(Объект.Договор). А по хорошему, как указали коллеги надо курить ОбработкуПроверкиЗаполненияНаСервере (судя по всему, Вы проверяете в форме объекта) или в обработке проверки заполнения в модуле объекта.
2. collider 02.12.21 07:50 Сейчас в теме
Запись интерактивная? Если да, то можно у реквизита поставить свойство Проверка заполнения в "Выдавать ошибку"
user1619761; grumpi; +2 Ответить
3. grumpi 02.12.21 07:55 Сейчас в теме
А процедура ВыполнитьПроверкиИЗадатьВопросыПередЗаписью отрабатывает?

Проверь отладчик в нее входит?
4. user1278383 4 02.12.21 08:02 Сейчас в теме
Для таких целей есть событие "ОбработкаПроверкиЗаполнения"...
grumpi; user1619761; Torin; +3 Ответить
6. Torin 744 02.12.21 08:12 Сейчас в теме
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

Договор = ПроверяемыеРеквизиты.Найти("Договор");
Если Не ЗначениеЗаполнено(Договор) Тогда
    
    // Если он не заполнен, сообщим об этом пользователю

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

КонецПроцедуры
Показать
5H1; user1278383; +2 Ответить
7. artemsmtp 02.12.21 09:38 Сейчас в теме
Пример (https://its.1c.ru/db/v8std/content/463/hdoc):
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты) 

  НепроверяемыеРеквизиты = Новый Массив();
  ...

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

  ...
  // Значение реквизита не должно быть пустым в зависимости от другого реквизита
  Если ЮрФизЛицо <> Перечисления.ЮрФизЛицо.ФизЛицо Тогда  
    НепроверяемыеРеквизиты.Добавить("ИндивидуальныйПредприниматель");
  КонецЕсли;

  ...
  УдалитьНепроверяемыеРеквизитыИзМассива(ПроверяемыеРеквизиты, НепроверяемыеРеквизиты);
КонецПроцедуры;

Процедура УдалитьНепроверяемыеРеквизитыИзМассива(МассивРеквизитов, МассивНепроверяемыхРеквизитов) Экспорт

  Для Каждого ЭлементМассива Из МассивНепроверяемыхРеквизитов Цикл
 
    // перед удалением реквизита из массива необходимо проверить, что он там есть
    // (не был удален ранее платформой или в коде).
    ПорядковыйНомер = МассивРеквизитов.Найти(ЭлементМассива);
    Если ПорядковыйНомер <> Неопределено Тогда
      МассивРеквизитов.Удалить(ПорядковыйНомер);
    КонецЕсли;
 
  КонецЦикла;
 
КонецПроцедуры
Показать
8. JohnGalt 57 02.12.21 18:35 Сейчас в теме
Если все таки хочется свою проверку использовать, лучше разместить в обработчике ПередЗаписью на форме.
Оставьте свое сообщение

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