Непонятная ошибка при поиске в таблице значений
25.08.2003
11:14
#1
"Выполняю следующий отчет:
Процедура Сформировать()
ТекстЗапроса =
"//{{ЗАПРОС(Запрос)
|Период с Дата1 по Дата2;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
|ДатаНачала = ЖурналРасчетов.Зарплата.ДатаНачала;
|ДатаОкончания = ЖурналРасчетов.Зарплата.ДатаОкончания;
|ВидРасчета = ЖурналРасчетов.Зарплата.ВидРасч;
|
|Группировка Сотрудник Без Групп Упорядочить по Сотрудник.Наименование;
|Условие(ВидРасчета.ВходитВГруппу(ГруппаРасчетов.Отпуска)=1);
|"//}}ЗАПРОС
;
Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Ошибка выполнения запроса","!");
Возврат;
КонецЕсли;
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
Таблица=СоздатьОбъект("Таблица");
Таблица.ИсходнаяТаблица("Таблица");
Если Были=1 тогда
Таблица.ВывестиСекцию("Шапка<");
Таблица.ВывестиСекцию("Заголовок1");
Таблица.ВывестиСекцию("Шапка>");
Пока Запрос.Группировка("Сотрудник")=1 Цикл
П1=Запрос.Сотрудник.Код;
П2=Запрос.Сотрудник;
П3=Запрос.ВидРасчета.Наименование;
П4=Запрос.ДатаНачала;
П5=Запрос.ДатаОкончания;
Таблица.ВывестиСекцию("СтрокаОтчета");
КонецЦикла;
Иначе
Таблица.ВывестиСекцию("Шапка<");
Таблица.ВывестиСекцию("Заголовок2");
Таблица.ВывестиСекцию("Шапка>");
Таб=СоздатьОбъект("ТаблицаЗначений");
Таб.НоваяКолонка("Сотрудник");
Запрос.Выгрузить(Таб);
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
Стр=0;
Кол=0;
Если Таб.НайтиЗначение(СпрСотр,Стр,Кол)=0 тогда
Насколько я понимаю, в этом месте метод Таб.НайтиЗначение(СпрСотр,Стр,Кол) должен возвращать 1 если найден соответствующий элемент справочника сотрудники. Тем не менее 1 возвращается для всех сотрудников, хотя абсолютно точно известно, что в таблице имеются не все сотрудники. Подскажите, где моя ошибка.
П1=СпрСотр.Код;
П2=СпрСотр;
П3="""";
П4="""";
П5="""";
Таблица.ВывестиСекцию("СтрокаОтчета");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Таблица.ТолькоПросмотр(1);
Таблица.Опции(0, 0, 0, 0, 0);
Таблица.ПараметрыСтраницы(2,,,0,0,0,0);
Таблица.Показать("Отчет по отпускам");
КонецПроцедуры
"
Процедура Сформировать()
ТекстЗапроса =
"//{{ЗАПРОС(Запрос)
|Период с Дата1 по Дата2;
|Сотрудник = ЖурналРасчетов.Зарплата.Объект;
|ДатаНачала = ЖурналРасчетов.Зарплата.ДатаНачала;
|ДатаОкончания = ЖурналРасчетов.Зарплата.ДатаОкончания;
|ВидРасчета = ЖурналРасчетов.Зарплата.ВидРасч;
|
|Группировка Сотрудник Без Групп Упорядочить по Сотрудник.Наименование;
|Условие(ВидРасчета.ВходитВГруппу(ГруппаРасчетов.Отпуска)=1);
|"//}}ЗАПРОС
;
Запрос = СоздатьОбъект("Запрос");
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Сообщить("Ошибка выполнения запроса","!");
Возврат;
КонецЕсли;
СпрСотр=СоздатьОбъект("Справочник.Сотрудники");
Таблица=СоздатьОбъект("Таблица");
Таблица.ИсходнаяТаблица("Таблица");
Если Были=1 тогда
Таблица.ВывестиСекцию("Шапка<");
Таблица.ВывестиСекцию("Заголовок1");
Таблица.ВывестиСекцию("Шапка>");
Пока Запрос.Группировка("Сотрудник")=1 Цикл
П1=Запрос.Сотрудник.Код;
П2=Запрос.Сотрудник;
П3=Запрос.ВидРасчета.Наименование;
П4=Запрос.ДатаНачала;
П5=Запрос.ДатаОкончания;
Таблица.ВывестиСекцию("СтрокаОтчета");
КонецЦикла;
Иначе
Таблица.ВывестиСекцию("Шапка<");
Таблица.ВывестиСекцию("Заголовок2");
Таблица.ВывестиСекцию("Шапка>");
Таб=СоздатьОбъект("ТаблицаЗначений");
Таб.НоваяКолонка("Сотрудник");
Запрос.Выгрузить(Таб);
СпрСотр.ВыбратьЭлементы();
Пока СпрСотр.ПолучитьЭлемент()=1 Цикл
Стр=0;
Кол=0;
Если Таб.НайтиЗначение(СпрСотр,Стр,Кол)=0 тогда
Насколько я понимаю, в этом месте метод Таб.НайтиЗначение(СпрСотр,Стр,Кол) должен возвращать 1 если найден соответствующий элемент справочника сотрудники. Тем не менее 1 возвращается для всех сотрудников, хотя абсолютно точно известно, что в таблице имеются не все сотрудники. Подскажите, где моя ошибка.
П1=СпрСотр.Код;
П2=СпрСотр;
П3="""";
П4="""";
П5="""";
Таблица.ВывестиСекцию("СтрокаОтчета");
КонецЕсли;
КонецЦикла;
КонецЕсли;
Таблица.ТолькоПросмотр(1);
Таблица.Опции(0, 0, 0, 0, 0);
Таблица.ПараметрыСтраницы(2,,,0,0,0,0);
Таблица.Показать("Отчет по отпускам");
КонецПроцедуры
"
Читают тему
(гостей: 1)