7.7 Добавление элемента в справочник

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем nad, 21 янв 2008.

  1. TopicStarter Overlay
    nad
    Offline

    nad

    Регистрация:
    5 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Как предотвратить повторную запись в справочник одного и того же элемента?
  2. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Я так понимаю, вопрос поводу проверки на дублирование?
    Или что?
  3. TopicStarter Overlay
    nad
    Offline

    nad

    Регистрация:
    5 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Да, именно так!
  4. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    а чего за справочник? только если проверять призаписи() по какому-нить реквизиту... для контрагентов например подойдет ИНН
  5. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Поставь обработку при изменении наименования:

    Код:
    спр.СоздатьОбъект("Справочник.Чегото");
    Если спр.НайтиПоНаименованию(Наименование)=1 тогда
    Предeпреждение("Твою мать, запись: "+ Наименование+" уже существует! Глаза разуй!");
    Наименование="";
    КонецЕсли;
    
    
    
    
    :unsure:
  6. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    MaxxaM: не вариант... ошиблись в одной букве, нижний / верхний регистр, кол-во пробелов между словами...
  7. TopicStarter Overlay
    nad
    Offline

    nad

    Регистрация:
    5 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Есть справочник Студенты, уникальным является номер зачетки, так как возможны студенты с одинаковым ФИО.

    Код:
        Справочник=СоздатьОбъект("Справочник.Студенты");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()>0 Цикл 
    если Справочник.НомерЗачетки<>НомерЗачетки тогда
    Справочник.Новый();    
    Справочник.НомерЗачетки=НомерЗачетки;
    Справочник.Наименование=Наименование;  
    Справочник.Курс=Курс;
    Справочник.Группа=Группа;
    Справочник.ВидОбучения=ВидОбучения;
    Справочник.Стоимость=Стоимость; 
    Справочник.ДатаОплаты=ДатаОплаты; 
    Справочник.Записать();
    КонецЕсли;
    
    КонецЦикла;
    
    
    Почему-то не работает(( Все равно добавляет одну и ту же запись сколь угодно много раз
  8. BabySG
    Offline

    BabySG Администраторы Команда форума Администратор

    Регистрация:
    10 июн 2007
    Сообщения:
    11.853
    Симпатии:
    12
    Баллы:
    29
    Есть два варианта:

    1. Использовать внешнюю компоненту, которая будет вычислять расстояние Левенштейна между двумя строками. Удобно и красиво :)

    2. Переделать стандартную обработку для 8.х (Поиск дублей)
  9. Stado_adama
    Offline

    Stado_adama Модераторы Модератор

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ПриЗаписи()
    спр.СоздатьОбъект("Справочник.Студенты");
    Если спр.найтипореквизиту("НомерЗачетки",НомерЗачетки)=1 тогда
    Предупреждение("Твою мать, запись: "+ Наименование+" уже существует! Глаза разуй!");
    Наименование="";
    КонецЕсли;
    КонецПроцедуры;
    
    
    
    
    
    примерно так...
  10. Akulina
    Offline

    Akulina Опытный в 1С

    Регистрация:
    30 авг 2007
    Сообщения:
    87
    Симпатии:
    0
    Баллы:
    26
    У Вас же миллион ошибок! Вы что-то откуда-то скопировали, но даже не понимаете, как у Вас этот код работает (вернее, не работает)! Вы хотя бы через отладчик прогоните!

    Поменьше эмоций, пожалуйста.
  11. MaxxaM
    Offline

    MaxxaM Опытный в 1С

    Регистрация:
    16 окт 2007
    Сообщения:
    288
    Симпатии:
    2
    Баллы:
    29
    Ну погарячились немного правильно :

    Код:
    Процедура ПроверкаЗачетки()
    спр=СоздатьОбъект("Справочник.Студенты");
    Если спр.НайтиПоРеквизиту("НомерЗачетки",НомерЗачетки)=1 тогда
    Предупреждение("Твою мать, запись: "+ Наименование+" уже существует! Глаза разуй!");
    Наименование="";
    КонецЕсли;
    КонецПроцедуры;
    
    
    
    
    Эт дабы не придерались - но суть то была понятна и раньше,
    ну я б добавил кнопку на форму "Проверка", а кнопку "Записать" залочил
    после проверки разрешал бы запись ну где то так

    :unsure:
  12. TopicStarter Overlay
    nad
    Offline

    nad

    Регистрация:
    5 янв 2008
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Вот собственно заработавший вариант:
    Код:
     
    Процедура ПроверкаЗачетки()
    спр=СоздатьОбъект("Справочник.Студенты");
    Если спр.НайтиПоРеквизиту("НомерЗачетки",НомерЗачетки,1)=1 Тогда
    Предупреждение("Твою мать, запись: "+ Наименование+" уже существует! Глаза разуй!"); 
    Иначе    
    Спр.Новый();    
    Спр.НомерЗачетки=НомерЗачетки;
    Спр.Наименование=Наименование; 
    ...
    Спр.Записать();
    КонецЕсли;
    КонецПроцедуры;
    
    
    
    Метод можно использовать только для реквизитов с установленным признаком ''Сортировка''.
    Всем спасибо! :unsure:

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