Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Как использовать ТекущиЭлемент() в условии? (число прочтений - 966 )
Frog
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 27. Мая 2008
Как использовать ТекущиЭлемент() в условии?
19. Июня 2012 :: 00:36
Печать  
Стоит задача при попытке сохранения элемента справочника проверить дубли по определенным параметрам это все работает.
Но есть проблема: если элемент уже записан, нужно сключить поиск по "самому себе", в отладчике вижу что значения полей различны, но как передать корректное значение не пойму. Хелп ми.
Функция ПолучитьТаблицуДублейСчета()
     RS = СоздатьОбъект("ODBCRecordset");
     RS.УстБД1С();
     ТекстЗапроса = "
     |SELECT спрСчетаГААП.ID [Ссылка $Справочник.спрСчетаГААП]
     | , спрСчетаГААП.ID AS ID
     | , $спрСчетаГААП.КодСчета AccountId
     | , $спрСчетаГААП.AccountIFRSId AccountIFRSId
     | , $спрСчетаГААП.AccountIFRSSubNumber AccountIFRSSubNumber
     |FROM $Справочник.спрСчетаГААП AS спрСчетаГААП
     |WHERE  (($спрСчетаГААП.КодСчета = :AccountId))      
     |";      
     Если ПустоеЗначение(AccountIFRSId)=0 Тогда
           ТекстЗапроса=ТекстЗапроса+      " OR (($спрСчетаГААП.AccountIFRSId        = :AccountIFRSId)
                                                     | AND ($спрСчетаГААП.AccountIFRSSubNumber = :AccountIFRSSubNumber))";
           RS.УстановитьТекстовыйПараметр("AccountIFRSId",AccountIFRSId);
           RS.УстановитьТекстовыйПараметр("AccountIFRSSubNumber",AccountIFRSSubNumber);
     КонецЕсли;      
     //Если элемент записан исключаем самого себя
     Если Выбран()=1 Тогда
           ТекстЗапроса=ТекстЗапроса+      "AND (спрСчетаГААП.ID <> :ТекущийЭлемент)";
           RS.УстановитьТекстовыйПараметр("ТекущийЭлемент",ТекущийЭлемент());
     КонецЕсли;      
     RS.УстановитьТекстовыйПараметр("AccountId",КодСчета);      
     RS.Отладка(глОтладкаЗапросов);      
     Попытка
           ТЗРезультат= RS.ВыполнитьИнструкцию(ТекстЗапроса);
     Исключение
           Сообщить("При поиске дублей по счету произошла ошибка: "+ОписаниеОшибки());
           ТЗРезультат=0;
     КонецПопытки;
     
     Возврат ТЗРезультат;
КонецФункции

  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Как использовать ТекущиЭлемент() в условии?
Ответ #1 - 19. Июня 2012 :: 02:23
Печать  
     |WHERE 
     |    (($спрСчетаГААП.КодСчета = :AccountId))
     |    AND спрСчетаГААП.ID != :ЭтотЭлемент
     |";      
     RS.УстановитьТекстовыйПараметр("ЭтотЭлемент", ТекущийЭлемент());
  
Наверх
 
IP записан
 
Frog
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 22
Зарегистрирован: 27. Мая 2008
Re: Как использовать ТекущиЭлемент() в условии?
Ответ #2 - 19. Июня 2012 :: 04:50
Печать  
Все разобрался. Дурная 1С-я привычка скобки ставить где попало.
Не корреткно сформировал условие.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать