Версия для печати темы (https://pro1c.org.ua/index.php?s=da45a83be004740b1cdf952e68e2cc4d&showtopic=46271)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Создание исключения для ввода в поле "Номер"

Автор: Andrian 15.06.18, 14:22

Хочу попросить помощи, в общем есть справочник "ДоговорыКонтрагентов" и надо провести проверку на заполнение "Номера"(Номер договора). Просто если два менеджера зайдут в документ "ЗаказКлиента" и поставят одинаковые номера, то будет не хорошо и хочется проверку поставить, что бы при ПриЗаписи проверяла объект.номер и поиск по справочнику по реквизиту и выдавало ошибку. Вот код, вроде выдает ошибку, но выдает даже на любой номер ,какой бы я не ставил, даже если этого номера совсем нет, все равно не дает провести

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



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

Автор: Petre 15.06.18, 14:42

1. ПриЗаписи ссылка на текущий объект уже существует, т. е. такой поиск всегда найдет как минимум себя.
2. Для разных организаций / контрагентов / дат может быть одинаковый номер в договоре.

Автор: Andrian 15.06.18, 14:53

а куда тогда лучше закинуть текущее исключение, что бы он до записи проверил?
ПРосто на каждый заказ, один номер, номера не дублируются

Автор: Petre 15.06.18, 15:59

Andrian @ Today, 14:53 * ,
Куда закинуть - зависит от многих факторов. Если проверки тяжелые, то следует избегать их в момент транзакции. Иначе - дело вкуса.
Тут речь о том, что необходимо построить нормальный запрос, внести туда все необходимые условия (в т. ч. и исключить из выборки ссылку на себя).

Автор: Andrian 19.06.18, 7:46

Petre @ 15.06.18, 15:59 * ,
Разве обязательно делать запрос, если можно проверкой обойтись?
Дело в том, что тут и без запроса можно, просто не знаю, как обратиться ко всем элемента реквизита "Номер" справочника ЗаказыКонтрагентов и сравинть в Если

Автор: Vofka 19.06.18, 8:04

Цитата(Andrian @ 19.06.18, 8:46) *
Разве обязательно делать запрос, если можно проверкой обойтись?

Запрос будет в любом случае, хочется вам этого или нет. Но в одном случае просто он будет как бы неявный (для вас), а в другом явный и более гибкий в своих настройках.

Автор: Andrian 19.06.18, 9:24

Vofka @ Сегодня, 8:04 * ,
Хорошо, а на какое действие делать запрос?

Автор: Vofka 19.06.18, 9:29

Я бы сделал это в ОбработкаПроверкиЗаполнения()

Автор: Andrian 19.06.18, 9:58

Vofka @ Сегодня, 9:29 * ,
А как вообще сообразить этот отчет, я просто как исключение сделать, вроде представляю, а как отчет, я даже не могу представить(

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua