Непонятная ошибка при поиске в таблице значений

Новая тема
"Выполняю следующий отчет:



Процедура Сформировать()

   

ТекстЗапроса =  

"//{{ЗАПРОС(Запрос)

|Период с Дата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);

Таблица.Показать("Отчет по отпускам");



КонецПроцедуры

"
Попробуй

Если Таб.НайтиЗначение(СпрСотр.ТекущийЭлемент(),Стр,Кол)=0 тогда

Обходные пути есть, но хотелось бы разобраться в сути происходящего.
В таблице значений у вас хранятся ссылки на элементы справочника. Поэтому в параметрах поиска вы тоже должны явным образом указать именно элемент справочника, а не сам справочник - даже если текущая запись в нем и является критерием для поиска.
А, ну да, спасибо, разобрался :)
Читают тему
(гостей: 1)

Быстрый переход