Процедура Сформировать()
Спр = СоздатьОбъект("Справочник.Сотрудники");
Расх = СоздатьОбъект("Документ.РасходнаяНакладная");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка ("Сотрудник");
ТЗ.НоваяКолонка ("КолСис"); // количество систем
.............................................................................
.............................................................................
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
ТЗ.НоваяСтрока();
ТЗ.Сотрудник = Спр.Наименование;
...................................................
..................................................
К = 0;
Расх.ВыбратьДокументы(НачДата,КонДата);
Пока Расх.ПолучитьДокумент()=1 Цикл
// Сообщить("Сотр:"+ ТЗ.Сотрудник);
// Сообщить("Инж:"+ Расх.Инженер);
// Сообщить("След. накл");
Если ТЗ.Сотрудник = Расх.Инженер Тогда
К=К+1;
// Иначе К=10;
КонецЕсли;
КонецЦикла;
ТЗ.КолСис = К;
КонецЦикла;
ТЗ.ВыбратьСтроку();
КонецПроцедуры
Строки
// Сообщить("Сотр:"+ ТЗ.Сотрудник);
// Сообщить("Инж:"+ Расх.Инженер);
// Сообщить("След. накл");
и строку
// Иначе К=10;
я вставлял с целью диагностики проблемы. Пришел к выводу, что условие
Если ТЗ.Сотрудник = Расх.Инженер Тогда
не выполняется , когда оно должно выполняться. Реквизит Инженер в РасходныхНакладных берется из Справочника Сотрудники. Оттуда же берется и значение ТЗ. Сотрудник. Почему же при совпадении этих значений программа считает, что они не равны?! Программа в таблицу записывает К= 10. А если закомментировать тестовую строку Иначе К=10, тогда в столбце ТЗ.КолСис вообще ничего не прописывается. То есть, условие железно должно выполняться, а программа ведет себя так, вроде оно не выполняется. Уже сутки ломаю голову. Спасибо!