Имя: Пароль:
1C
1C 7.7
v7: Вывести список контрагентов по признаку
,
0 Pechka
 
16.01.13
09:18
Добрый день,помогите пожалуйста с условием-мне нужно вывести список контрагентов с данными,кроме тех,у кого в договоре  записано состояние договора - Закрыт..у меня выходят все контрагенты,Исправьте пожалуйста,если,что не верно.
Процедура Сформировать()
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   //Таб.ВывестиСекцию("Шапка");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
       Таб.ВывестиСекцию("Шапка");

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

       
         
         ПКод = контр.код;
         ППолнНаименование = контр.ПолнНаименование;
         МКрНаименование   = контр.Наименование;
         Пинн          = контр.ИНН;  
         ЮрАдрес   =   контр.ЮридическийАдрес;
         Рег      =    контр.КМ_Регион;
         Гор      = контр.КМ_Город;
         

   
             Таб.ВывестиСекцию("Строка");
             Таб.ТолькоПросмотр(1);
       Таб.Показать("Таблица", "");
       КонецЦикла;    
   

КонецПроцедуры
1 cw014
 
16.01.13
09:20
А запрос не подходит?
2 mikecool
 
16.01.13
09:20
на запрос бы это переписать
а так - перебрать договоры, если статус = Закрыт - вывести данные владельца
3 1Сергей
 
16.01.13
09:20
тип дог.КМ_СостояниеДоговора ?
4 Гефест
 
16.01.13
09:21
ну так у тебя сделана проверка, результат которой не учитывается при выводе контрагента
5 Heckfy
 
16.01.13
09:21
Все не так. Запрос нужен.

А по коду, тут не так:

Если ПустоеЗначение(дог.КМ_СостояниеДоговора)=1 Тогда
                  КонтрАктуальный=1;
                  прервать;
              КонецЕсли;
             
              Если  дог.КМ_СостояниеДоговора.Закрыт = 0 Тогда
                  КонтрАктуальный=1;
                  продолжить;
              КонецЕсли;
6 Mikeware
 
16.01.13
09:21
а как исправить ДНК?
7 1Сергей
 
16.01.13
09:22
достаточно добавить одну строку
Если КонтрАктуальный<> Тогда Продолжить; КонецЕсли;
8 Pechka
 
16.01.13
09:28
(7)КонтрАктуальный не равен чему?
9 monsterZE
 
16.01.13
09:34
а на словах могешь объяснть, что вот это должно делать?
--
          Пока дог.ПолучитьЭлемент()=1  Цикл
              Если ПустоеЗначение(дог.КМ_СостояниеДоговора)=1 Тогда
                  КонтрАктуальный=1;
                  прервать;
              КонецЕсли;
             
              Если  дог.КМ_СостояниеДоговора.Закрыт = 0 Тогда
                  КонтрАктуальный=1;
                  продолжить;
              КонецЕсли;
          КонецЦикла;
--
если че, продолжить внутри вложенного цикла продолжает вложенный цикл =)
10 PuhUfa
 
16.01.13
09:35
(8) а если 5 договоров и только 2 из них "закрыты"?
ps правильный ответ в (5)
11 1Сергей
 
16.01.13
09:36
(8) сама не догадаешься?
12 monsterZE
 
16.01.13
09:40
и КонтрАктуальный зачем? оно где-то используется?
13 Pechka
 
16.01.13
09:42
с запросом получилось,спасибо всем)
14 1Сергей
 
16.01.13
09:46
(13) да????
недооценили. в (0) вопрос-то глупый
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.