Проверка при создании нового элемента справочника

1. pilot_Danik 03.08.21 10:54 Сейчас в теме
Добрый день, в конфигурации УТ создан новый справочник, который хранит реквизиты документа ЗаказКлиента. Прямо из документа вводом по строке можно создать новый элемент справочника. Реализовал проверку на дубликат, а вот как сделать отсечение лишних пробелов в начале и конце не соображу (новичек). На форме документа на поле ввода реквизита при событии создания добавил процедуру. Верное направление? Но вот в коде не уверен
Если Объект.ЭтоНовый() Тогда
Объект.Наименование = СокрЛП ("Новый элемент");
КонецЕсли;
Вернее ко точно не верный. Может кто подскажет?
По теме из базы знаний
Найденные решения
6. BomjBandit 7 03.08.21 14:25 Сейчас в теме
(4)добавь в событие "ПередЗаписью" модуля объекта:
Если ЭтоНовый() Тогда
Наименование = СокрЛП (Наименование);
КонецЕсли;

Не знаю с точки зрения ведения справочника подойдет вам это или нет, но будет отрабатывать всегда, даже при программном создании элементов.
pilot_Danik; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. BomjBandit 7 03.08.21 11:50 Сейчас в теме
В форме нет метода "ЭтоНовый()", он доступен в модуле объекта. На форме можно проверять через ссылку:
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
    Объект.Наименование = СокрЛП ("Новый элемент");
КонецЕсли;
3. pilot_Danik 03.08.21 12:23 Сейчас в теме
Спасибо, сейчас попробую.А вот таким способом в модуле объекта сделал проверку на дубликаты при создании. Работает, но верно ли точки зрения программистов.

Процедура ПередЗаписью(Отказ)
	Если ЭтоНовый() Тогда
       Запрос = Новый Запрос("ВЫБРАТЬ Наименование ИЗ Справочник.ТипДвигателя ГДЕ Наименование = &Наименование ");
       Запрос.УстановитьПараметр("Наименование",Наименование);
       Результат = Запрос.Выполнить();
       Если НЕ Результат.Пустой() Тогда
           Сообщение = Новый СообщениеПользователю;
           Сообщение.Текст = "Тип двигателя уже существует";
           Сообщение.Сообщить();
           Отказ = Истина;
       КонецЕсли;
   КонецЕсли;
КонецПроцедуры
Показать
5. BomjBandit 7 03.08.21 14:19 Сейчас в теме
(3) помимо отбора по наименованию в запросе, тебе нужно добавить условие на Ссылка<>&Ссылка и передавать в параметр ссылку на текущий элемент, а то при перезаписи элемента он будет находить в дублях сам себя и ругаться.
4. pilot_Danik 03.08.21 13:36 Сейчас в теме
Если Не ЗначениеЗаполнено(Объект.Ссылка) Тогда
    Объект.Наименование = СокрЛП ("Новый элемент");
КонецЕсли;


Не не то, не работает. Может в событиях ПриСоздании не сюда надо было вписывать?
6. BomjBandit 7 03.08.21 14:25 Сейчас в теме
(4)добавь в событие "ПередЗаписью" модуля объекта:
Если ЭтоНовый() Тогда
Наименование = СокрЛП (Наименование);
КонецЕсли;

Не знаю с точки зрения ведения справочника подойдет вам это или нет, но будет отрабатывать всегда, даже при программном создании элементов.
pilot_Danik; +1 Ответить
7. pilot_Danik 03.08.21 15:03 Сейчас в теме
Да крутяк, то что надо, спасибо.
Оставьте свое сообщение

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