helpf.pro
Регистрация

v8: Проверка дублей в справочнике

Anjut-ka4
31.07.2015 14:08Прочитано: 4738
Yandex
Возможно, вас также заинтересует
Реклама на портале
Anjut-ka4
31.07.2015 14:34Ответ № 1

В простом справочнике, у которого реквизиты - код, наименование и владелец, хочу контролировать занесение дублей по наименованию. Если способ редактирования "в диалоге", то там понятно - я перед записью поставила процедуру контроля и мониторю переменную "отказ".

А если я хочу использовать способ редактирования "в списке" ? Использую процедуру контроля и если это дубль, то очищаю "наименование" - тут же появляется ошибка - "Поле наименование не заполнено". Не очень красиво. Может можно не очищать поле наименование, а не выпускать из режима редактирования? Можно так сделать?

Anjut-ka4
31.07.2015 14:45Ответ № 2

и при копировании строки тоже свои проблемы (модуль объекта много чего не видит). Это все можно как-то красиво обойти или проще способ редактирования изменить на "в диалоге"?

E_Migachev
01.08.2015 00:47Ответ № 3

А зачем в списке, может лучше в форме?

Это УП или обычные формы?

Anjut-ka4
03.08.2015 11:28Ответ № 4

это обычные формы.. 

хотела в списке, потому что в этом справочнике меняется только один реквизит (наименование).. в списке быстрее..

IBReiter
03.08.2015 12:54Ответ № 5

Модуль объекта все события видит, здесь проблемы нет.

Если вы хотите проверят наименование - тогда на форме списка событие Перед окончанием редактирования - в нем и можете наименование проверить.

asdfr1
03.08.2015 15:47Ответ № 6

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

Им = Лев(Имя, 1);

От = Лев(Отчество, 1);

Фамилия = СокрЛП(Фамилия);

Имя = СокрЛП(Имя);

Отчество = СокрЛП(Отчество);

ДлинаНаименования = СтрДлина(Имя);

//Сообщить(ДлинаНаименования);

Наименование = Фамилия+" "+Им+"."+От+".";

хз=СокрЛП(Наименование);

хз=Наименование;

Фам = Фамилия;

им3 = им;

Рожд = ДатаРожд;

Если ЭтоНовый() = Истина Тогда

//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

// Данный фрагмент построен конструктором.

// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ РАЗЛИЧНЫЕ

| СправочникКлиенты.Фамилия,

| СправочникКлиенты.Имя,

| СправочникКлиенты.Отчество,

| СправочникКлиенты.ДатаРожд

|ИЗ

| Справочник.СправочникКлиенты КАК СправочникКлиенты

|ГДЕ

| СправочникКлиенты.Фамилия =Фам

| И СправочникКлиенты.Имя =Им3

| И СправочникКлиенты.Отчество =От

| ИЛИ СправочникКлиенты.ДатаРожд =Рожд";

Запрос.УстановитьПараметр("Им3", Имя);

Запрос.УстановитьПараметр("От", Отчество);

Запрос.УстановитьПараметр("Рожд", ДатаРожд);

Запрос.УстановитьПараметр("Фам", Фамилия);

Результат = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = Результат.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

// Вставить обработку выборки ВыборкаДетальныеЗаписи

КонецЦикла;

//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

ТЗ = Результат.Выгрузить();

//ОткрытьЗначение(ТЗ);

//Если Результат.Выгрузить().Количество() > 0 Тогда

Для каждого Строка Из ТЗ Цикл

Ф = Строка.Фамилия;

Им5 = Строка.Имя;

От5 = Строка.Отчество;

Рж = Строка.ДатаРожд;

мля = Формат(Рж,"ДФ=dd.MM.yyyy");

Если Ф = Фамилия И Им5 = Имя И От5 = Отчество И Рж = ДатаРожд Тогда

Текст = "Запись с таким именем, отчеством, фамилией и датой рождения уже есть !!!

|Клиен: " + Фамилия +" "+Имя+" "+Отчество+ " "+ мля;

Предупреждение(Текст,5);

Отказ = Истина;

Форма = ЭтаФорма;

Форма.Закрыть("Нет");

КонецЕсли; КонецЦикла;

ИначеЕсли ЭтоНовый() = Ложь Тогда

Отказ = Ложь;

КонецЕсли;

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

Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.