7.7 Помогите задать условие

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

  1. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    Есть запрос
    Код:
    ТекстЗапроса = 
    "Период с НачДата по КонДата;
    |ДокСпецификация = Документ.СпецификацияСнабжение.ТекущийДокумент;
    |Автор = Документ.СпецификацияСнабжение.Автор;
    |Договор = Документ.СпецификацияСнабжение.Договор;
    |Контрагент = Документ.СпецификацияСнабжение.Договор.Владелец;
    |Группировка Контрагент Без Групп;
    |Группировка Договор Без Групп;
    //	|Группировка Автор;
    |Группировка ДокСпецификация; 
    |Функция Принадлежит = Среднее(НоменклатураПрисутствуетВСпецификации(ДокСпецификация));
    |Условие (Контрагент в выбКонтрагент);
    |Условие (Договор в выбДоговор);
    |Условие (Автор в выбАвторСпецификации); 
    |Условие (ДокСпецификация в выбСпецификация); 
    |Условие (Принадлежит = 1); //в этом месте 1С ругается!!!
    |";
    
    Есть функция, прописанная в модуле

    Код:
    //******************************************************************************
    Функция НоменклатураПрисутствуетВСпецификации(пДокСпецификация)
    Присутствует = 0;
    Если ТипЗначенияСтр(пДокСпецификация) = "Документ" Тогда 
    Если пДокСпецификация.Вид() = "СпецификацияСнабжение" Тогда    
    Присутствует = 1;                
    Если ПустоеЗначение(выбНоменклатура) = 0 Тогда     
    Присутствует = 0;
    ДокСпецификация = СоздатьОбъект("Документ.СпецификацияСнабжение");   
    ДокСпецификация.НайтиДокумент(пДокСпецификация); 
    ДокСпецификация.ВыбратьСтроки();
    Пока ДокСпецификация.ПолучитьСтроку() = 1 Цикл
    Если выбНоменклатура.ЭтоГруппа() = 0 Тогда  
    Если ДокСпецификация.Номенклатура = выбНоменклатура Тогда 
    Присутствует = 1;
    КонецЕсли;   
    Иначе
    Если ДокСпецификация.Номенклатура.ПринадлежитГруппе(выбНоменклатура) = 1 Тогда 
    Присутствует = 1;
    КонецЕсли;
    КонецЕсли;
    КонецЦикла;			
    КонецЕсли;
    КонецЕсли;		
    КонецЕсли;      
    
    Возврат Присутствует;
    КонецФункции
    

    Вопрос: как сказать 1Сине, чтобы она включала в запрос только те записи, для которых значение данной функции равно 1? Без последнего условия работает прекрасно, функцию вычисляет, но как ограничить выборку? Пробовал писать Среднее(НоменклатураПрисутствуетВСпецификации(ДокСпецификация)) - вообще аварийно завершает работу. Что не так? Заранее благодарен.
  2. Stado_adama
    Offline

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

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    почитай про оператор КОГДА
  3. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    И что? Вы меня прямо заинтриговали...
  4. Stado_adama
    Offline

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

    Регистрация:
    27 ноя 2007
    Сообщения:
    1.086
    Симпатии:
    0
    Баллы:
    26
    Код:
    |Функция Принадлежит = Среднее(НоменклатураПрисутствуетВСпецификации(ДокСпецификация)) Когда (Среднее(НоменклатураПрисутствуетВСпецификации(ДокСпецификация))  =  1;
    
    
    вот так попробуй вместо последнего условия...

    P.S. не уверен за синтаксис
  5. TopicStarter Overlay
    X-Man
    Offline

    X-Man Опытный в 1С

    Регистрация:
    18 май 2007
    Сообщения:
    428
    Симпатии:
    3
    Баллы:
    29
    Работает с небольшой поправкой, вот так:
    Код:
    ТекстЗапроса = 
    "Период с НачДата по КонДата;
    |ДокСпецификация = Документ.СпецификацияСнабжение.ТекущийДокумент;
    |Автор = Документ.СпецификацияСнабжение.Автор;
    |Договор = Документ.СпецификацияСнабжение.Договор;
    |Контрагент = Документ.СпецификацияСнабжение.Договор.Владелец;
    |Группировка Контрагент Без Групп;
    |Группировка Договор Без Групп;
    //    |Группировка Автор;
    |Группировка ДокСпецификация; 
    |Условие (Контрагент в выбКонтрагент);
    |Условие (Договор в выбДоговор);
    |Условие (Автор в выбАвторСпецификации); 
    |Условие (ДокСпецификация в выбСпецификация); 
    |Условие (НоменклатураПрисутствуетВСпецификации(ДокСпецификация) = 1);
    |";
    
    
    Всем спасибо за участие.

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