7.7 Блокирование введения фирм с одинаковым инн в справочник Контрагенты

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем mk55, 9 июл 2009.

  1. TopicStarter Overlay
    mk55
    Offline

    mk55 Опытный в 1С

    Регистрация:
    1 ноя 2008
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте!
    Бухгалтерия 7.7. р. 507
    Написал код для отмены ввода похожих инн в справочник контрагенты. При занесении выскакивает окно что такой контрагент существует,но программа его все равно записывает и не дает редактировать после записи. А нужно,чтобы вообще не давала записывать. Подскажите кто знает.
    В модуле формы справочника Контрагенты:

    Код:
    Процедура ПриЗаписи()
    Если СокрЛП(ИНН) <> "" Тогда
    СпрКонтр=СоздатьОбьект("СправочникКонтрагенты");
    Если Спр.Контр.НайтиПоРеквизиту("ИНН",ИНН,1)=1 тогда
    Предупреждение(.....)
    СтатусВозврата(1);
    КонецЕсли;
    КонецЕсли;
    
  2. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Наверное, все-таки так:
    Код:
    Процедура ПриЗаписи()
    Если СокрЛП(ИНН) <> "" Тогда
    СпрКонтр=СоздатьОбьект("СправочникКонтрагенты");
    Если Спр.Контр.НайтиПоРеквизиту("ИНН",ИНН,1)=1 тогда
    Предупреждение(.....);
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
    
    
    И к слову:
  3. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    А вообще лучше это проверку вешать не при записи, а на процедуру при вводе реквизита.

    И в типовой бухгалтерии я бы по ИНН сравнивал с более сложным условием - там же ИНН и КПП вместе хранятся. А то может получиться дублирование:
    ООО "Вася Пупкин" - реквизит ИНН:7717111111 - указан только ИНН
    ООО "Вася Пупкин" - реквизит ИНН:7717111111\771701001 -указан ИНН и КПП
    Вашей проверкой такой случай не отсечется.
  4. TopicStarter Overlay
    mk55
    Offline

    mk55 Опытный в 1С

    Регистрация:
    1 ноя 2008
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Спасибо.
    Происходит еще такая вещь,что при попытке изменить что-либо в открывшихся сведениях вылезает ошибка,что контрагент с таким инн существует и не возможно ничего изменить.
    Если не сложно подскажите.....
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Нет проверки на принадлежность ИНН текущиму элементу. Добавь код

    Код:
    СпрКонтр=СоздатьОбьект("СправочникКонтрагенты");      
    Если Спр.Контр.НайтиПоРеквизиту("ИНН",ИНН,1)=1 тогда   
    Если Спр.ТекущийЭлемент()<>ТекущийЭлемент() Тогда
    Предупреждение(.....);         
    СтатусВозврата(0);         
    Возврат; 
    КонецЕсли;      
    КонецЕсли;
    
    
  6. TopicStarter Overlay
    mk55
    Offline

    mk55 Опытный в 1С

    Регистрация:
    1 ноя 2008
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Все равно не дает редактировать после ввода контрагента....((((((

    Вот мой код к этой форме.

    Вложения:

    • Текст1.txt
      Размер файла:
      93 байт
      Просмотров:
      34
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Прикреплен совершенно непонятный текст
  8. TopicStarter Overlay
    mk55
    Offline

    mk55 Опытный в 1С

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

    Если добавить эту строку (Если Спр.ТекущийЭлемент()<>ТекущийЭлемент() Тогда) то программа так же ругается.

    Ума не приложу что делать....(((((((((((
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Попробуй по коду

    Код:
    Если Спр.Код<>Код Тогда
    предупреждение("Уже есть");
    конецесли;
    
    
  10. TopicStarter Overlay
    mk55
    Offline

    mk55 Опытный в 1С

    Регистрация:
    1 ноя 2008
    Сообщения:
    84
    Симпатии:
    0
    Баллы:
    26
    Все ровно(((((((((((
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Скорее всего дело не в этой процедуре, т.к. она вызывается только при записи элемента справочника. Ищи где еще проверка стоит.
  12. sergey
    Offline

    sergey Курильщик

    Регистрация:
    13 апр 2006
    Сообщения:
    365
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ПриЗаписи()   
    Спр=СоздатьОбъект("Справочник.Контрагенты");
    Если Спр.НайтиПоКоду(Код,0)=0 Тогда
    Если СокрЛП(ИНН) <> "" Тогда      
    СпрКонтр=СоздатьОбьект("СправочникКонтрагенты");      
    Если Спр.Контр.НайтиПоРеквизиту("ИНН",ИНН,1)=1 тогда         
    Предупреждение("Контрагент с ИНН "+СокрЛП(ИНН)+" уже существует.");         
    СтатусВозврата(0);         
    Возврат;      
    КонецЕсли;   
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
    
    Неужели такая конструкция не работает?

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