Имя: Пароль:
1C
1C 7.7
v7: Функция Счетчик не правильно срабатывает в запросе мне
0 ЮлияКорж
 
24.01.12
14:18
У меня в повтояются доки приема на одного сотрудника при при применении функциии счетчик  в выборке количество одинаковых комбинаций должно быть две а функция счетчик напротив каждой из них  выводит 1
Процедура Выполнить()
   Перем ВерДубль,Сотр1,Дата1,С;
   Таб=СоздатьОбъект("Таблица");
   ТАБ.ИсходнаяТаблица("Таблица");
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |ОбрабатыватьДокументы Все;
   //|Обрабатывать НеПомеченныеНаУдаление;
   |Сотр = Справочник.Сотрудники.ФизическоеЛицо.ТекущийЭлемент;
   |ДатаНачала = Справочник.Сотрудники.ДатаНачалаДействия;
   |ДатаОкон = Справочник.Сотрудники.ДатаОкончанияДействия;
   |Функция счет=Счётчик(Сотр,ДатаНачала);
   //|Функция Cум=Сумма(счет);
   |Группировка Сотр;
   |Группировка ДатаНачала;
   |"//}}ЗАПРОС
   ;
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
   КонецЕсли;            
       Сотр1="";
       Пока (Запрос.Группировка("Сотр")=1) Цикл
           //Если(Сотр1=Запрос.Сотр) Тогда
               Cотр1=Сотр1+"1";
           //КонецЕсли;
               Пока (Запрос.Группировка("ДатаНачала")=1) Цикл
   //Если (Дата1=Запрос.ДатаНачала) Тогда
       Cотр1=Cотр1+"2";
//    КонецЕсли;    
   Если (ПустаяСтрока(Cотр1)=0) Тогда
       ЕСЛИ ПустоеЗначение(Запрос.ДатаОкон)=1 Тогда
           ТАБ.ВывестиСекцию("Сотр");
   КонецЕсли;
КонецЕсли;
   //ВерДубль=1;
       КонецЦикла;
//    ВерДубль=1;
   КонецЦикла;            
   Таб.Показать("Таблица");
Таб.ТолькоПросмотр(1);
1 filh
 
24.01.12
14:19
продолжайте наблюдения.
2 Ёпрст
 
24.01.12
14:23
(0) у вас неверное представление о функции счётчик в запросе
Зы: у неё нет аргументов, если че
3 ЮлияКорж
 
24.01.12
15:05
В чем подвох может быт
4 povar
 
24.01.12
15:07
(3) никаких подвохов, читайте доки
5 ЮлияКорж
 
24.01.12
15:14
Организовать цикл по докам типа док.выбрьдоки
Пока док.получить>0 цикл так
6 ЮлияКорж
 
24.01.12
17:44
Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   ДокПриема=СоздатьОбъект("Документ.ПриказОПриеме");
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |ОбрабатыватьДокументы все;
   |ТекущийЭлемент = Справочник.Сотрудники.ФизическоеЛицо.ТекущийЭлемент;
   |ДатаНачалаДействия = Справочник.Сотрудники.ДатаНачалаДействия;
   |ДатаОкончанияДействия = Справочник.Сотрудники.ДатаОкончанияДействия;
   |ТекущийЭлемент1 = Документ.ПриказОПриеме.Сотрудник.ФизическоеЛицо.ТекущийЭлемент;
   |ДатаДокнАЧ=Документ.ПриказОПриеме.ДатаНачала;
   |Функция Счётчик = Счётчик();
   |Группировка ТекущийЭлемент;
   |Группировка ДатаНачалаДействия;
   |Группировка ДатаОкончанияДействия;
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
         // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   ДокПриема.ВыбратьДокументы();
Пока  ДокПриема.ПолучитьДокумент()>0 Цикл
       Пока Запрос.Группировка(1) = 1 Цикл
       с=0;k=0;
       Если (Запрос.ТекущийЭлемент=ДокПриема.Сотрудник.ФизическоеЛицо.ТекущийЭлемент()) Тогда
           с=с+1;
       КонецЕсли;
           // Заполнение полей ТекущийЭлемент
       Таб.ВывестиСекцию("ТекущийЭлемент");
       Пока Запрос.Группировка(2) = 1 Цикл
           Если  (Запрос.ДатаНачалаДействия=ДокПриема.ДатаНачала) Тогда
               k=k+1;
           КонецЕсли;    
           // Заполнение полей ДатаНачалаДействия
           Таб.ВывестиСекцию("ДатаНачалаДействия");
           Пока Запрос.Группировка(3) = 1 Цикл
               //Если  ПустоеЗначение(Запрос.ДатаОкончанияДействия)=1 Тогда
                   // Заполнение полей ДатаОкончанияДействия
               Таб.ВывестиСекцию("ДатаОкончанияДействия");
               КонецЕсли;
           КонецЦикла;
       КонецЦикла;
   КонецЦикла;
   КонецЦикла;
   // Заполнение полей "Итого"
Таб.ВывестиСекцию("Секция_6");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
Вот так или как я уже что то сегодня вообще
7 Ёпрст
 
24.01.12
17:46
(6) да уж..
всё в топку смело и без оглядки
8 Скользящий
 
24.01.12
17:59
Жесть. Руки отрезать мало.
9 Cthulhu
 
24.01.12
19:06
пятнично!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший