Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
12 дек 2024, 19:02

Уникальность реквизита в табличной части

Автор _leon4uk_, 18 апр 2012, 18:43

0 Пользователей и 1 гость просматривают эту тему.

_leon4uk_

Проверку уникальности для Наименования я реализовал таким вот способом:


  • Процедура ПередЗаписью(Отказ)
    Если ПустаяСтрока(Наименование) Тогда
    Сообщить("Не заполнено ключевое поле 'Наименование'.", СтатусСообщения.Важное);
    Отказ = Истина;
    Иначе ТекущийСправочник = Справочники.Модели_автомобилей;
    НайденнаяСсылка = ТекущийСправочник.НайтиПоНаименованию(Наименование, Истина);
    Если НайденнаяСсылка <> ТекущийСправочник.ПустаяСсылка() И НайденнаяСсылка.Код <> Код Тогда
    Сообщить("Справочник уже содержит запись с наименованием '" + НайденнаяСсылка + "'.", СтатусСообщения.Важное);
    Отказ = Истина;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры


но ещё необходимо сделать уникальность реквизита "Модификация" в табличной части. как это реализовать?

cska-fanat-kz

Приведено событие ПередЗаписью()... чего?
Документа, справочника?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

_leon4uk_


cska-fanat-kz

как-то так...

&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
             Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
                          Если Объект.Наименование <> Объект.Ссылка.Наименование Тогда
                              Сообщить("Наименование поменялось");
                                       Если Справочники.Вольеры.СуществуетЭлементСТакимНаименованием(Объект.Наименование) Тогда
                                                    Сообщить("Такой уже есть, чувак! :((");
                                                    Отказ = Истина;
                                       КонецЕсли;
                          Иначе 
                                       Сообщить("Наименование не поменялось");
                          КонецЕсли;
             Иначе
                          Сообщить("Да это ваще новый!");
                          Если Справочники.Вольеры.СуществуетЭлементСТакимНаименованием(Объект.Наименование) Тогда
                                       Сообщить("Такой уже есть, чувак! :((");
                                       Отказ = Истина;
                          КонецЕсли;
             КонецЕсли;
КонецПроцедуры

а это в модуле менеджера справочника:
Функция СуществуетЭлементСТакимНаименованием(ИскомоеНаименование) Экспорт

             Запрос = Новый Запрос;
             Запрос.Текст =
                          "ВЫБРАТЬ
                          |           Вольеры.Ссылка
                          |ИЗ
                          |           Справочник.Вольеры КАК Вольеры
                          |ГДЕ
                          |           Вольеры.Наименование = &Наименование";

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

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

             Возврат Выборка.Следующий();

КонецФункции // ЭлементаСТакимНаименованиемНеСуществует()
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

cska-fanat-kz

Небольшая редакция второй функции:

Функция СуществуетЭлементСТакимНаименованием(ИскомоеНаименование) Экспорт

   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   Вольеры.Ссылка
      |ИЗ
      |   Справочник.Вольеры КАК Вольеры
      |ГДЕ
      |   Вольеры.Наименование = &Наименование";

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

   Возврат НЕ Запрос.Выполнить().Пустой();

КонецФункции // ЭлементаСТакимНаименованиемНеСуществует()

ЗЫ thanks Klyacksa ;)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск