1. Наш канал codeby в telegram. Пишем об информационной безопасности, методах защиты информации, о программировании. Не пропускай новости с кодебай, будь в тренде ! Подробнее ...

    Скрыть объявление

Помогите с кодом!

Тема в разделе "Базы данных и администрирование", создана пользователем UDF, 14 апр 2008.

  1. UDF

    UDF Гость

    Репутация:
    0
    Вот есть такой кусок кода. Надо дописать чтоб программа не давала записывать данные если ИНН повторяется! Как это сделать???

    // Список найденных элементов с таким же ИНН.
    Список = СоздатьОбъект("СписокЗначений");

    Объект = СоздатьОбъект("Справочник.ЮрЛица");
    Объект.ВыбратьЭлементыПоРеквизиту("ИНН", ИНН, 0, 1);

    // Поиск элементов с таким же ИНН.
    Пока Объект.ПолучитьЭлемент(1) = 1 Цикл
    Если Объект.ТекущийЭлемент() = ТекущийЭлемент() Тогда
    Возврат; // элемент уже был записан
    Иначе
    Список.ДобавитьЗначение(Объект.ТекущийЭлемент());
    КонецЕсли;
    КонецЦикла;

    // Найдены элементы с таким же ИНН.
    Если 0 < Список.РазмерСписка() Тогда
    Стр = "В справочнике """+Объект.ПредставлениеВида()+""" уже есть элементы с таким же ИНН1111!";

    КонецЕсли;

    КонецПроцедуры // ПриИзмененииИНН()
     
  2. Zab

    Zab Well-Known Member

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Реально работающий кусок кода:
    Код:
    Процедура ПриЗаписи()
    Если Константа.КонтрольИНН=Перечисление.ДаНет.Да Тогда
    Спр = СоздатьОбъект ("Справочник.Контрагенты"); 
    Если ПустоеЗначение(ИНН)=1 Тогда 
    Предупреждение("Пустой ИНН");
    СтатусВозврата(0);
    Иначе 
    Спр.ВыбратьЭлементыПоРеквизиту("ИНН",ИНН,0,0);
    Пока Спр.ПолучитьЭлемент()=1 Цикл 
    Если Спр.Код=Код Тогда
    Продолжить;
    КонецЕсли; 
    Предупреждение("Не уникальный ИНН!");
    СтатусВозврата(0); 
    КонецЦикла;
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры //ПриЗаписи
     
  3. Typhoon

    Typhoon Гость

    Репутация:
    0
    Народ может вам и нравиться работать с циклами и переборами, мне например больше по душе поставить признак отбор по реквизиту и написать такой вот код

    Код:
    спр = создатьобъект("Справочник.Контрагенты");
    если спр.найтипореквизиту("ИНН",ИНН) = 1 тогда
    ..... ругнуться по неуникальности!!!
    статусвозврата(0);
    конецЕсли;
     
  4. UDF

    UDF Гость

    Репутация:
    0
    Надо чтоб он после того как ругнулся на неуникальность ИНН===> очистил это поле или не дал сохранить результат!!!
     
  5. Zab

    Zab Well-Known Member

    Репутация:
    0
    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Честно скажу, код не мой, знаю только, что работает, сам таким вопросом задался, пока постил... но разбираться времени небыло. (первое правило программиста: работает, не трогай :) )
    он так и делает, при попытке записать элемент


    PS: а, ну да, не очищает только

    PPS: но это, думаю, не будет проблемой самому реализовать? )))

    PPPS: Typhoon переборка для того, чтобы себя (текущий элемент) была возможность пропустить, вот :)
     
  6. UDF

    UDF Гость

    Репутация:
    0
    По поводу не будет проблеммой самому реализовать===> Покопался в книжках не могу найти с помощь какого оператора это сделать, ВОТ!!!!
    Если Кто знает подскажите!!!!
     
  7. mihail922

    mihail922 Гость

    Репутация:
    0
    Свой код проверки ставишь в процедуре ПриЗаписи
    А для отмены действия (записи) пиши
    СтатусВозврата (0)
    Для очищения ИНН напиши
    ИНН=""; (иль как у тебя реквизит там называется.... :) )
    пример тебе уже приводили
     
  8. UDF

    UDF Гость

    Репутация:
    0
    Спасибо помогло!!! ))))
     
Загрузка...

Поделиться этой страницей