Имя: Пароль:
1C
1C 7.7
v7: условие в запросе.
0 zladenuw
 
17.10.12
18:22
если в списке пару групп.
такое условие правильное ?
|ТекущийЭлемент = Справочник.СтруктураКомпании.ТекущийЭлемент;
|Условие(ТекущийЭлемент в лСпЗнГруппы);
1 zladenuw
 
17.10.12
18:25
или только так ?
Условие((ТекущийЭлемент.ПринадлежитГруппе(Группа1) = 1)
2 Wobland
 
17.10.12
18:29
это ты правильно решил здесь спросить. для того, чтобы взять проверить надо кучу дополнительных библиотек подключать
3 zladenuw
 
17.10.12
18:33
поехали дальше.
почему вот есть функция.
Функция ЕстьСвязь(Параметр)
   мСпрСвязи.ИспользоватьВладельца(Параметр);
   мСпрСвязи.ВыбратьЭлементы();
   Если мСпрСвязи.ПолучитьЭлемент() = 0 Тогда
       Возврат 0;
   Иначе
       Возврат 1;
   КонецЕсли;
КонецФункции
|Условие(ЕстьСвязь(ТекущийЭлемент)=1);
а при обходе запроса все равно есть элементы которые попадают в условие
лСпрСвязи    = СоздатьОбъект("Справочник.Связи");
   Если (Запрос.Выполнить(ТекстЗапроса) = 1) и (флКлиентПродаж=0) Тогда
       Сообщить("Выгрузка по запросу");
       Пока Запрос.Группировка() = 1 Цикл
           Если Запрос.ТекущийЭлемент.Выбран() = 0 Тогда
               Продолжить;
           КонецЕсли;
           лЭлемент        = Запрос.ТекущийЭлемент.ТекущийЭлемент();
           лКПКАгент        = лЭлемент.КПКАгентАвтор.ТекущийЭлемент();
           лСпрСвязи.ИспользоватьВладельца(лЭлемент);
           лСпрСвязи.ВыбратьЭлементы();
           Если лСпрСвязи.ПолучитьЭлемент() = 0 Тогда
               Сообщить("не убирать");
               Продолжить;
           КонецЕсли;
4 zladenuw
 
17.10.12
18:35
где туплю.
5 Wobland
 
17.10.12
18:36
>Запрос.ТекущийЭлемент.ТекущийЭлемент()
чувствую необратимые изменения в психике. сдаюсь
6 zladenuw
 
17.10.12
18:37
то есть так ?
Запрос.ТекущийЭлемент
и я точно получу объект, а не ссылку на него ?

да походу надо отдохнуть пару часиков.
7 zladenuw
 
17.10.12
18:38
(5) по психе потом. почему условие в запросе не работает ?
8 GreyK
 
17.10.12
18:49
8тморозки вон из старой доброй 77. Читать СП вам никто не будет! :)
9 Wobland
 
17.10.12
18:52
(7) нене, мой нежный разум этого не осиливает. извини, конечно, но мне здесь нужен инструмент кроме мозга
10 zladenuw
 
17.10.12
18:56
(9) да надо было в группировку добавить |Группировка ТекущийЭлемент без групп;

и все
11 Wobland
 
17.10.12
18:59
(10) то есть текст запроса был важен..
12 zladenuw
 
17.10.12
19:01
да
надо вот так

ТекстЗапроса =    "//{{ЗАПРОС(Сформировать)
   |ТекущийЭлемент = Справочник.СтруктураКомпании.ТекущийЭлемент;
   |Родитель = Справочник.СтруктураКомпании.Родитель;
   |Тип = Справочник.СтруктураКомпании.Тип;
   |лАгент = Справочник.СтруктураКомпании.КПКАгентАвтор;
   |Группировка ТекущийЭлемент без групп;
   |Условие(Тип = мТипПокупатель);
   |Условие(ТекущийЭлемент в лСпЗнПокупатели);
   |Условие(ЕстьСвязь(ТекущийЭлемент)=1);
13 zladenuw
 
17.10.12
19:01
(12) а роль играет какое условие перед чем ?
14 Sh1ko
 
17.10.12
19:03
(13) Да, играет. Красиво смотрится или нет.
15 Wobland
 
17.10.12
19:03
(13) я до сих пор не могу в себя внедрить понимание фразы "однопроходный запрос" (или что-то в этом духе), но имхо поровну
16 zladenuw
 
17.10.12
19:13
Тут его нету. если еще раз обращаюсь к списку лСпЗнВыгруженных для выгрузку в другие теги. он есть. что может быть не так ?
Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =    "//{{ЗАПРОС(Сформировать)
   |ТекущийЭлемент = Справочник.СтруктураКомпании.ТекущийЭлемент;
   |Родитель = Справочник.СтруктураКомпании.Родитель;
   |Тип = Справочник.СтруктураКомпании.Тип;
   |лАгент = Справочник.СтруктураКомпании.КПКАгентАвтор;
   |Группировка ТекущийЭлемент без групп;
   |Условие(Тип = мТипПокупатель);
   |Условие(ТекущийЭлемент в лСпЗнПокупатели);
   |Условие(ЕстьСвязь(ТекущийЭлемент)=1);
   |";//}}ЗАПРОС;
   
   Если (Запрос.Выполнить(ТекстЗапроса) = 1) и (флКлиентПродаж=0) Тогда
       Сообщить("Выгрузка по запросу"+ ТекущаяДата());
       Пока Запрос.Группировка() = 1 Цикл
           Если Запрос.ТекущийЭлемент.Выбран() = 0 Тогда
               Продолжить;
           КонецЕсли;
           лЭлемент        = Запрос.ТекущийЭлемент;
           лКПКАгент        = лЭлемент.КПКАгентАвтор.ТекущийЭлемент();
           
           лЮрЛицо    = лСпрСвязи.ВнешнееНаименование;
           
           Если лСпр.ЭтоГруппа() = 1 Тогда
               Сообщить("не убирать");
               Продолжить;
           КонецЕсли;
           
           Если лСпр.ПометкаУдаления() = 1 Тогда
               Сообщить("не убирать");
               Продолжить;
           КонецЕсли;
           
           Если мнфПодходитПоУсловию("Сотрудники", лКПКАгент, ОбъектыЕФ.Сотрудники) = 0 Тогда
               
               buyer    = ДобавитьОбъект(ДокXML, Строка(лСпр), "buyer");
               
               ДобавитьПотомка(buyer, "code"            , ЗначениеВСтрокуВнутр(лЭлемент));
               ДобавитьПотомка(buyer, "producercode"    , лЭлемент.Код);
               
               ДобавитьПотомка(buyer, "name"            , СокрЛП(лЭлемент.Наименование)+" (Не чибо)");
               ДобавитьПотомка(buyer, "deleted"        , 1);
               ВыгрузитьПодчСпрКонтрагенты(buyer, лЭлемент);
               
               /////////////////////////////////////////////
               //выгрузка подчиненных справочников (начало)
               /////////////////////////////////////////////
               лСпЗнВыгруженныхНечибо.ДобавитьЗначение(лЭлемент);
               ДобавитьНоду(buyers, buyer);
               Продолжить;
           КонецЕсли;
           
           Если лСпЗнВыгруженных.Принадлежит(лЭлемент) = 1 Тогда
               Продолжить;    
           КонецЕсли;            
           
           лСпЗнВыгруженных.ДобавитьЗначение(лЭлемент);
           buyer    = ДобавитьОбъект(ДокXML, Строка(лЭлемент), "buyer");
17 zladenuw
 
17.10.12
19:19
ай пойду отдохну
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший