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

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 3 02.12.21 08:02 Сейчас в теме
Для таких целей есть событие "ОбработкаПроверкиЗаполнения"...
grumpi; user1619761; Torin; +3 Ответить
6. Torin 735 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 Сейчас в теме
Если все таки хочется свою проверку использовать, лучше разместить в обработчике ПередЗаписью на форме.
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день