Вход | Регистрация

1С:Предприятие ::

Метки: справочники

Корректен ли следующий код?

Я
   SAP
 
20.05.04 - 15:07
Если СпрЮрЛица.НайтиПоРеквизиту("ИДКИС",ИДКИС,1)=1 Тогда
ИначеЕсли СпрЮрЛица.НайтиПоРеквизиту("ИНН",ИНН,1)=1 Тогда
Иначе
    СпрЮрЛица.Новый();
    СпрЮрЛица.Наименование=РабочееИмя;
    СпрЮрЛица.ПолнНаименование=НаимКорр;
    СпрЮрЛица.ИНН=ИНН;
    СпрЮрЛица.ОКПО=ОКПО;
    СпрЮрЛица.ЮрАдрес=ЮридическийАдрес;
    СпрЮрЛица.ФактАдрес=Адрес;
    СпрЮрЛица.Записать();
КонецЕсли;

Я читал, что 1С проверяет сразу все условия в "Если Тогда", в связи с этим в случае успешного поиска по "ИДКИС" буден ли выполняться поиск по "ИНН"?
 
 
   mszsuz
 
1 - 20.05.04 - 15:18
Если СпрЮрЛица.НайтиПоРеквизиту("ИДКИС",ИДКИС,1)=0 Тогда 
Если СпрЮрЛица.НайтиПоРеквизиту("ИНН",ИНН,1)=0 Тогда 
   СпрЮрЛица.Новый(); 
...
   СпрЮрЛица.Записать(); 
КонецЕсли; 
КонецЕсли;
   SAP
 
6 - 20.05.04 - 16:11
Дело в том, что в случае удачного поиска мне надо получить найденный элемент, а как я понял такая конструкция все равно не позволит этого сделать, так что придется делать через флаг.
   mszsuz
 
7 - 20.05.04 - 16:25
(6) Какой флаг?
Смотрим (1): ищем по "ИДКИС", если есть такой, то СпрЮрЛица.ТекущийЭлемент() и будет найденный элемент. Если поиск неудачный, тогда ищем по ИНН, если находим, то СпрЮрЛица.ТекущийЭлемент() опять же. Если и второй поиск неудачный, тогда уже создается новый...
Т.е. после кода в (1), СпрЮрЛица.ТекущийЭлемент() в любом случае отдаст тебе нужного ...
   Outlander
11 - 20.05.04 - 17:27
(10) Тогда почему такой код работает вполне корректно:
.
Если (СпрК.НайтиПоРеквизиту("ОКПО",окпо0,1)=0) и
     (СпрК.НайтиПоРеквизиту("ИНН",инн0,1)=0) Тогда 
    Сообщить("Клиент не найден...");
Иначе
    Сообщить("Нашли!");
КонецЕсли;
.
Так кто прав?
   mszsuz
 
13 - 20.05.04 - 17:41
(12) Дело не в нуле. Судя по твоим предположениям, правое условие в (10) никогда не должно выполниться, т.к. левое всегда ложно.
   mszsuz
 
14 - 20.05.04 - 17:47
Пример в (10) не совсем удачный.
Вот другой:
ТЗ=0;
Если (ТипЗначенияСтр(ТЗ)="ТаблицаЗначений") И (ТЗ.КоличествоСтрок()>0) тогда
// и опять летаем по ошибке ...
   OctoberHammer
 
17 - 20.05.04 - 19:29
2(16) Лучше было найти страницу, где сказано, что в77 вычисляет выражение в условии полностью. Но самому лень. :))


Список тем форума
Рекламное место пустует   Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует