Здравствуйте! необходимо чтобы формировался список численности по подразделениям.
Создаю внешний отчет. 1С8.3
Подскажите что делаю не так, если не заносятся данные в макет после выборки из запроса. в тз после запроса все правильно считается вроде.

```1c
    ТабДок=Новый ТабличныйДокумент();

    Макет = Отчет.РеквизитМакет;

    ТЗ = Новый ТаблицаЗначений;
    ТЗ.Колонки.Добавить("Подразделение");
    ТЗ.Колонки.Добавить("РШ");
    ТЗ.Колонки.Добавить("РФ");
    ТЗ.Колонки.Добавить("РП");
    ТЗ.Колонки.Добавить("РС");
    ТЗ.Колонки.Добавить("РВР");
    ТЗ.Колонки.Добавить("РВД");

    ТЗ.Колонки.Добавить("СпШ");
    ТЗ.Колонки.Добавить("СпФ");
    ТЗ.Колонки.Добавить("СпП");
    ТЗ.Колонки.Добавить("СпС");
    ТЗ.Колонки.Добавить("СпВР");
    ТЗ.Колонки.Добавить("СпВД");

    Запрос1=Новый Запрос;
    Запрос1.Текст =
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    | ТекущиеКадровые.ТекущееПодразделение КАК ТекущееПодразделение,
    | ДопРеквизитыСрезПоследних.Категория КАК Категория,
    | СУММА(ВЫБОР
    | КОГДА СостоянияСотрудниковСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.Факт)
    | ТОГДА 1
    | ИНАЧЕ 0
    | КОНЕЦ) КАК ФАКТ,
    | СУММА(ВЫБОР
    | КОГДА СостоянияСотрудниковСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)
    | ТОГДА 1
    | ИНАЧЕ 0
    | КОНЕЦ) КАК ВД,
    | СУММА(ВЫБОР
    | КОГДА ДопРеквизитыСрезПоследних.ХарактерРаботы = ЗНАЧЕНИЕ(Перечисление.ХарактерРаботы.РаботающийНаВременнойРаботе)
    | ТОГДА 1
    | ИНАЧЕ 0
    | КОНЕЦ) КАК ВР,
    | СУММА(ВЫБОР
    | КОГДА ИсторияСотрСрезПоследних.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
    | ИЛИ ИсторияСотрСрезПоследних.ВидЗанятости = ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
    | ТОГДА 1
    | ИНАЧЕ 0
    | КОНЕЦ) КАК Сов,
    | СУММА(ВЫБОР
    | КОГДА ДопРеквизитыСрезПоследних.ХарактерРаботы = ЗНАЧЕНИЕ(Перечисление.ХарактерРаботы.РаботающийНаПостояннойРаботе)
    | И СостоянияСотрудниковСрезПоследних.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)
    | И ИсторияСотрСрезПоследних.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.Совместительство)
    | И ИсторияСотрСрезПоследних.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятости.ВнутреннееСовместительство)
    | ТОГДА 1
    | ИНАЧЕ 0
    | КОНЕЦ) КАК Пост
    |ИЗ
    | РегистрСведений.СостоянияСотрудников.СрезПоследних КАК СостоянияСотрудниковСрезПоследних
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровые КАК ТекущиеКадровые
    | ПО СостоянияСотрудниковСрезПоследних.Сотрудник = ТекущиеКадровые.Сотрудник
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДопРеквизиты.СрезПоследних КАК ДопРеквизитыСрезПоследних
    | ПО СостоянияСотрудниковСрезПоследних.Сотрудник = ДопРеквизитыСрезПоследних.Сотрудник
    | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИсторияСотр.СрезПоследних КАК ИсторияСотрСрезПоследних
    | ПО СостоянияСотрудниковСрезПоследних.Сотрудник = ИсторияСотрСрезПоследних.Сотрудник
    |ГДЕ
    | ТекущиеКадровые.ТекущееПодразделение В ИЕРАРХИИ(&ТекущееПодразделение)
    |
    |СГРУППИРОВАТЬ ПО
    | ТекущиеКадровые.ТекущееПодразделение,
    | ДопРеквизитыСрезПоследних.Категория
    |
    |УПОРЯДОЧИТЬ ПО
    | ТекущееПодразделение
    |ИТОГИ
    | СУММА(ФАКТ),
    | СУММА(ВД),
    | СУММА(ВР),
    | СУММА(Сов),
    | СУММА(Пост)
    |ПО
    | ТекущееПодразделение ТОЛЬКО ИЕРАРХИЯ";

    Запрос1.УстановитьПараметр("ТекущееПодразделение",Подразделение);
    РезультатЗапроса = Запрос1.Выполнить();
    ТабДок.Очистить();

    Шапка=Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Подразделение=Подразделение;
    ТабДок.Вывести(Шапка);

    ОснБлок=Макет.ПолучитьОбласть("ОснБлок");

    Выборка = РезультатЗапроса.Выбрать();

    Пока Выборка.Следующий() цикл

    Стр = ТЗ.Добавить();

    Стр.Подразделение=Выборка.ТекущееПодразделение;
    ОснБлок.Параметры.Подразделение = Стр.Подразделение;

    ОснБлок.Параметры.Заполнить(Выборка);
    Если Выборка.Категория= Справочники.КВ_КатегорииСотрудников.НайтиПоКоду("000000001") Тогда //специалисты
    Стр.СпФ=Выборка.Факт;
    Стр.СпП=Выборка.Пост;
    Стр.СпС= Выборка.Сов;
    Стр.СпВР= Выборка.ВР;
    Стр.СпВД= Выборка.ВД;
    ИначеЕсли Выборка.Категория= Справочники.КВ_КатегорииСотрудников.НайтиПоКоду("000000002") Тогда //руковод
    Стр.РФ=Выборка.Факт;
    Стр.РП=Выборка.Пост;
    Стр.РС= Выборка.Сов;
    Стр.РВР= Выборка.ВР;
    Стр.РВД= Выборка.ВД;
    КонецЕсли;

    ТабДок.Вывести(ОснБлок);

    КонецЦикла;

    тз.ВыбратьСтроку();
```

ПС.:очень мало опыта.
---
и что, в макете, в основном блоке, есть параметры точно совпадающие по имени с полями выборки ?
Факт, пост, Сов, ВР, ВД
---
как то так:

```1c
    Если Выборка.Категория= Справочники.КВ_КатегорииСотрудников.НайтиПоКоду("000000001") Тогда //специалисты
    ОснБлок.Параметры.СпФ =Выборка.Факт;
    ОснБлок.Параметры.СпП =Выборка.Пост;
    ОснБлок.Параметры.СпС = Выборка.Сов;
    ОснБлок.Параметры.СпВР = Выборка.ВР;
    ОснБлок.Параметры.СпВД = Выборка.ВД;
    ИначеЕсли Выборка.Категория= Справочники.КВ_КатегорииСотрудников.НайтиПоКоду("000000002") Тогда //руковод
    ОснБлок.Параметры.РФ = Выборка.Факт;
    ОснБлок.Параметры.РП = Выборка.Пост;
    ОснБлок.Параметры.РС = Выборка.Сов;
    ОснБлок.Параметры.РВР = Выборка.ВР;
    ОснБлок.Параметры.РВД = Выборка.ВД;
    КонецЕсли;
```
---
"ОснБлок.Параметры.СпФ = " параметр в макете, "Стр.СпП" - табличная часть а до если она у тебя пустая, тебе нужно из выборки заполнять:

```1c
    ОснБлок.Параметры.СпФ = Выборка.ФАКТ
```

И зачем таблица значений?
---
или так если писать:

```1c
    Для каждого строка из тз Цикл
    Если строка.категория = Справочники.КатегорииСотр.НайтиПоНаименованию("Специалисты", Истина) тогда
    ОснБлок.Параметры.фактС = строка.Факт;
    ОснБлок.Параметры.постС = строка.Пост;
    ОснБлок.Параметры.совмС = строка.Совм;
    ИначеЕсли строка.категория = Справочники.КатегорииСотр.НайтиПоНаименованию("Вспомогательные рабочие", Истина) тогда
    ОснБлок.Параметры.фактРа = строка.Факт;
    ОснБлок.Параметры.постРа = строка.Пост;
    ОснБлок.Параметры.совмРа = строка.Совм;
    ИначеЕсли строка.категория = Справочники.КатегорииСотр.НайтиПоНаименованию("Руководители", Истина) тогда
    ОснБлок.Параметры.фактР = строка.Факт;
    ОснБлок.Параметры.постР = строка.Пост;
    ОснБлок.Параметры.совмР = строка.Совм;
```
---
и что, в макете, в основном блоке, есть параметры точно совпадающие по имени с полями выборки ?
Факт, пост, Сов, ВР, ВД
---
должно быть так ведь?? --
ОбластьМакет.Параметры.Какой-тоПараметр = Выборка.Какое-тоЗначение
Т.е. факт, пост, сов - это значение из выборки, а не параметр
так?

псысы:могу тупить. пардон.
---
прикрепляю часть макета

там параметры другие нежели Факт, пост, сов, вр и вд
но для этого же и производится выборка по категориям и соответственно в разных колонках (у руководителей и у специалистов) будут разные числа
добавила до Если

```1c
    ОснБлок.Параметры.СпФ = Стр.СпФ;
    ОснБлок.Параметры.СпП = Стр.СпП;
    ОснБлок.Параметры.СпС = Стр.СпС;
    ОснБлок.Параметры.СпВР = Стр.СпВР;
    ОснБлок.Параметры.СпВД = Стр.СпВД;

    ОснБлок.Параметры.РФ = Стр.РФ;
    ОснБлок.Параметры.РП = Стр.РП;
    ОснБлок.Параметры.РС = Стр.РС;
    ОснБлок.Параметры.РВР = Стр.РВР;
    ОснБлок.Параметры.РВД = Стр.РВД;
```

и все равно пусто в макете.
пардон, за такие вопросы, но что не так делаю? пусто во всех столбцах, кроме подразделения
---
"ОснБлок.Параметры.СпФ = " параметр в макете, "Стр.СпП" - табличная часть а до если она у тебя пустая, тебе нужно из выборки заполнять:

```1c
    ОснБлок.Параметры.СпФ = Выборка.ФАКТ
```

И зачем таблица значений?
---
как то так:

```1c
    Если Выборка.Категория= Справочники.КВ_КатегорииСотрудников.НайтиПоКоду("000000001") Тогда //специалисты
    ОснБлок.Параметры.СпФ =Выборка.Факт;
    ОснБлок.Параметры.СпП =Выборка.Пост;
    ОснБлок.Параметры.СпС = Выборка.Сов;
    ОснБлок.Параметры.СпВР = Выборка.ВР;
    ОснБлок.Параметры.СпВД = Выборка.ВД;
    ИначеЕсли Выборка.Категория= Справочники.КВ_КатегорииСотрудников.НайтиПоКоду("000000002") Тогда //руковод
    ОснБлок.Параметры.РФ = Выборка.Факт;
    ОснБлок.Параметры.РП = Выборка.Пост;
    ОснБлок.Параметры.РС = Выборка.Сов;
    ОснБлок.Параметры.РВР = Выборка.ВР;
    ОснБлок.Параметры.РВД = Выборка.ВД;
    КонецЕсли;
```
---
Спасибо огромное! Работает!!! УРА!!!!!!!!!!!!!!!!!!!!!!!!!!!!
---
Если хочешь, что бы работало это

```1c
    ОснБлок.Параметры.Заполнить(Выборка);
```

То в макете параметры должны соответствовать полям ввыборке типа того:

```1c
    ОснБлок.Параметры.СпФ =Выборка.СпФ; // а не Факт
```
---
Ну подскажите еще как НЕ из выборки, а из получаемой из запроса ТЗ занести данные в макет.
При этом ТЗ выглядит так
категрия факт пост сов подразделение
Вспомогательные рабочие 5 1 бухгалтерия
Руководители 1 снабжение
Специалисты 7 1 снабжение
Руководители 2 бухгалтерия
Специалисты 3 бухгалтерия

```1c
    РезультатЗапроса = Запрос.Выполнить();

    тз = РезультатЗапроса.Выгрузить();

    тз.Свернуть("Подразделение,Категория","Факт,Пост,Сов");
    тз.ВыбратьСтроку();

    ТабличныйДокумент=Новый ТабличныйДокумент();

    Обработка = РеквизитФормыВЗначение("Отчет");
    МакетОбработки = Обработка.ПолучитьМакет("Макет");

    ОбластьШапка = МакетОбработки.ПолучитьОбласть("Шапка");
    ОбластьСтрока = МакетОбработки.ПолучитьОбласть("Строка");
    ОбластьШапка.Параметры.Текущая = ТекущаяДата();
    ТабличныйДокумент.Вывести(ОбластьШапка);

    Строка=МакетОбработки.ПолучитьОбласть("Строка");
    Строка.Параметры.Заполнить(тз);
    Специалисты = тз.Найти(Специалисты, "Категория");
    Руководители = тз.Найти(Руководители, "Категория");
    ВспРаб = тз.Найти("Вспомогательные Рабочие", "Категория");

    Для каждого строка из тз Цикл

    Если Специалисты = истина Тогда //специалисты
    Строка.Параметры.фактС =тз.Факт;
    Строка.Параметры.постС =тз.Пост;
    Строка.Параметры.совмС = тз.Сов;

    ИначеЕсли ВспРаб = истина Тогда //всп. раб
    Строка.Параметры.фактРа =тз.Факт;
    Строка.Параметры.постРа =тз.Пост;
    Строка.Параметры.совРа = тз.Сов;
    ИначеЕсли Руководители = истина Тогда //руковод
    Строка.Параметры.фактР = тз.Факт;
    Строка.Параметры.постР = тз.Пост;
    Строка.Параметры.совР = тз.Сов;
    ТабличныйДокумент.Вывести(Строка);
    КонецЦикла;
```

пс: используя метод найти можно так?
---
В теле цикла "тз" замени на "Строка".
Так же у тебя нет "КонецЕсли;".
---
Заработало! И теперь мне понятно почему. Спасибо!
---
только сейчас получается отписаться. в итоге заполняются значения в макете только у специалистов
---
Ну правильно "Специалисты = тз.Найти(Специалисты, "Категория");" проверяешь есть ли такое значение, а далее условие "Если Специалисты = истина Тогда ", если "Специалисты" = истина, то всегда будет отрабатывать первое условие заполнения, на условие " ИначеЕсли Руководители = истина Тогда" не перейдет.
---
(15) Скорее всего тебе надо так:

```1c
    Если Специалисты = Строка.Категория Тогда //специалисты
    Строка.Параметры.фактС =тз.Факт;
    Строка.Параметры.постС =тз.Пост;
    Строка.Параметры.совмС = тз.Сов;

    ИначеЕсли ВспРаб = истина Тогда //всп. раб
    Строка.Параметры.фактРа =тз.Факт;
    Строка.Параметры.постРа =тз.Пост;
    Строка.Параметры.совРа = тз.Сов;
    ИначеЕсли Руководители = Строка.Категория Тогда //руковод
    // или просто Иначе
    Строка.Параметры.фактР = тз.Факт;
    Строка.Параметры.постР = тз.Пост;
    Строка.Параметры.совР = тз.Сов;
    КонецЕсли;
```
---
Руководители = Строка.Категория
т.е. если так

```1c
    Для каждого строка из тз Цикл
    Специалисты = тз.Найти("Специалисты", "Категория");
    Руководители = тз.Найти("Руководители", "Категория");
    ВспРаб = тз.Найти("Вспомогательные Рабочие", "Категория");

    Если Специалисты = Строка.Категория тогда
    Строка.Параметры.фактС = тз.Факт;
    Строка.Параметры.постС = тз.Пост;
    Строка.Параметры.совмС = тз.Сов;

    ИначеЕсли ВспРаб = Строка.Категория тогда
    Строка.Параметры.фактРа =тз.Факт;
    Строка.Параметры.постРа =тз.Пост;
    Строка.Параметры.совРа = тз.Сов;

    ИначеЕсли Руководители = Строка.Категория тогда
    Строка.Параметры.фактР = тз.Факт;
    Строка.Параметры.постР = тз.Пост;
    Строка.Параметры.совР = тз.Сов;
    КонецЕсли;
    ТабличныйДокумент.Вывести(Строка);

    КонецЦикла;
```

или если все то же, но вместо тз.факт и проч поставить строка.факт и т.д. --- все равно не записываются данные. никакие при чем.
мне просто интересно можно ли путем поиска значения в ячейке (спец,рук и проч..) заполнять соответствующие ячейки в макете.
1с8.3 зуп
---
Вот так должно работать:
---
выдает ошибки типа "Переменная не определена (Специалисты)" и так же с руководителями и проч..

поэтому я как рыба об лед.. не пойму в чем дело..

при этом тз получается из запроса. не знаю есть ли разница. по-идеи разницы нет.
---
тут "тз.Найти(Специалисты, "Категория");" чему "Специалисты" равны? Что в переменной храниться? Ссылка на элемент справочника?
---
я так понимаю когда используешь метод Найти
Синтаксис:
Найти(<Значение>, <Колонки>)
Параметры:
<Значение> (обязательный)
Тип: Произвольный.
Искомое значение.

то Значение - это есть то, что записано в тз в указанной (или нет) колонке.
в данном случае у меня получается что посредством запроса получаю таблицу значений

```1c
    РезультатЗапроса = Запрос1.Выполнить();
    тзДанных = РезультатЗапроса.Выгрузить();
    тзДанных.Свернуть("Подразделение,Категория","Факт,Пост,Сов");
    тзДанных.ВыбратьСтроку();
```

где в колонке Категория содержатся следующие значения: Вспомогательные рабочие, Специалисты, Руководители.
в запросе Категория берется из регистра сведений, а в регистре сведений есть измерение Категория, являющееся ссылкой на справочник категорий

кстати так тоже не работает:

```1c
    Если Строка.Категория="Специалисты" тогда
    Строка.Параметры.фактС = тз.Факт;
    Строка.Параметры.постС = тз.Пост;
    Строка.Параметры.совС = тз.Сов;

    ИначеЕсли Строка.Категория ="Вспомогательные рабочие" тогда
    Строка.Параметры.фактРа = тз.Факт;
    Строка.Параметры.постРа = тз.Пост;
    Строка.Параметры.совРа = тз.Сов;

    ИначеЕсли Строка.Категория="Руководители" тогда
    Строка.Параметры.фактР = тз.Факт;
    Строка.Параметры.постР = тз.Пост;
    Строка.Параметры.совР = тз.Сов;
```
---
Ну правильно, ты обходишь циклом таблицу, функцией Найти() находишь есть ли значение в таблице и каждый раз тебе возвращается тебе одну и туже строку, и по этому у тебя срабатывает первое условие . В данном случае у тебя возвращается одна и та же строка со значение специалисты. Зачем тебе в цикле использовать найти? Сразу в условии сравнивать, а если использовать Найти() надо по другому строить цикл и немного извратиться.
---
Спасибо Вам, попробую поэкспериментировать, отпишусь, но уже завтра. раб день заканчивается..
---
сразу в условии сравнение делать не получается, выдает ошибку - не находит переменную.
подскажите как лучше написать? чтобы из колонки выбирались все строки с одной категорией к примеру, все специалисты, все руководители и их количество записывалось в отдельные колонки.
а нельзя как-то посредством выборки из полученной в результате запроса тз?
---
Выложи весь текст процедуры.
---
запрос не буду выкладывать. большой. его делала коллега

```1c
    РезультатЗапроса = Запрос.Выполнить();

    тз = РезультатЗапроса.Выгрузить();

    тз.Сортировать("ФизическоеЛицо");

    тз.Колонки.Добавить("ПодразделениеПолное", Новый ОписаниеТипов("Строка"),,240);

    сообщить(тзДанных.Количество());

    тз.Свернуть("ПодразделениеПолное,Категория","Факт,Пост,Совм");

    тз.ВыбратьСтроку(); //см.прикрепленный файл

    Обработка = РеквизитФормыВЗначение("Отчет");
    Макет = Обработка.ПолучитьМакет("Макет");

    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("ОснБлок");

    ОбластьШапка.Параметры.Текущая = ТекущаяДата();
    ТабличныйДокумент.Вывести(ОбластьШапка);

    ОснБлок = Макет.ПолучитьОбласть("ОснБлок");
    ОснБлок.Параметры.Заполнить(тз); //заполняются только те параметры, имена которых совпадают с именами свойств объектов

    //Специалисты = тз.Найти(Специалисты, "Категория");
    //Руководители = тз.Найти(Руководители, "Категория");
    //ВспРаб = тз.Найти("Вспомогательные Рабочие", "Категория");

    Для каждого строка из тз Цикл

    Если строка.категория= Специалисты тогда
    ОснБлок.Параметры.фактС = строка.Факт;
    ОснБлок.Параметры.постС = строка.Пост;
    ОснБлок.Параметры.совмС = строка.Совм;
    //ИначеЕсли строка = ВспРаб тогда
    // ОснБлок.Параметры.фактРа = строка.Факт;
    // ОснБлок.Параметры.постРа = строка.Пост;
    // ОснБлок.Параметры.совмРа = строка.Совм;
    ИначеЕсли строка.категория = Руководители тогда
    ОснБлок.Параметры.фактР = строка.Факт;
    ОснБлок.Параметры.постР = строка.Пост;
    ОснБлок.Параметры.совмР = строка.Совм;
    КонецЕсли;

    ТабличныйДокумент.Вывести(ОснБлок);

    КонецЦикла;
```

в прикрепленном файле вид тз

мне надо чтобы в макет заносились данные (прикрепленный файл "книга2")
в свойствах подразделение фактР и проч.. стоит параметр
---
как я писал выше у тебя не определены переменные Специалисты, Руководители. Тебе до цикла, нужно их определить, в условии получается что у тебя сравнивается грубо говоря "строка.категория = Неопределено" и вываливается с ошибкой. Тебе нужно в переменные поместить значения с которыми нужно сравнивать. Что находится в "строка.категория" - какой тип и какое значение?
---
т.е. так

```1c
    Специалисты = тз.Найти(Специалисты, "Категория");
    Руководители = тз.Найти(Руководители, "Категория");
    ВспРаб = тз.Найти("Вспомогательные Рабочие", "Категория");

    Для каждого строка из тз Цикл
    Если Специалисты = строка.Категория тогда
    ОснБлок.Параметры.фактС = строка.Факт;
    ОснБлок.Параметры.постС = строка.Пост;
    ОснБлок.Параметры.совмС = строка.Совм;
    //ИначеЕсли строка = ВспРаб тогда
    // ОснБлок.Параметры.фактРа = строка.Факт;
    // ОснБлок.Параметры.постРа = строка.Пост;
    // ОснБлок.Параметры.совмРа = строка.Совм;
    ИначеЕсли Руководители = строка.Категория тогда
    ОснБлок.Параметры.фактР = строка.Факт;
    ОснБлок.Параметры.постР = строка.Пост;
    ОснБлок.Параметры.совмР = строка.Совм;
    КонецЕсли;
    ТабличныйДокумент.Вывести(ОснБлок);
    КонецЦикла;
```

Если Специалисты ----- где Специалисты и есть переменная, которая получается поиском значения в указанных колонках таблицы значений.
я правильно понимаю? пардон.. все вокруг до около хожу.. но в итоге в табдоке добавляются строки с нужным количеством но они пустые.

 В колонке Категория из тз содержатся следующие значения: Вспомогательные рабочие, Специалисты, Руководители.
в запросе Категория берется из регистра сведений, а в регистре сведений есть измерение Категория, являющееся ссылкой на справочник категорий
---
являющееся ссылкой на справочник категорий- вот в справочнике элементы предопределенные или добавлены в ручную?
---
посмотрела. нет в предопределенных и нет в реквизитах. они я так понимаю добавляются вручную на клиенте
---
тогда нужно определить переменные

```1c
    Специалисты = Справочник.Категории.НайтиПоНаименованию("Наименование", Истина);
```

где Категории - это точное наименование справочника в конфигураторе, а Наименование - это название категории которое нужно, точно такое же как в справочнике в поле наименование. По ангиологии для других переменных.
---
Специалисты = Справочник.Категории.НайтиПоНаименованию("Наименование", Истина);
получается, --- Спасибо!
только необходимо теперь правильно организовать цикл, иначе дублируются цифры в колонках

```1c
    Для каждого строка из тз Цикл
    у меня так:
    Специалисты = Справочники.КатегорииСотру.НайтиПоНаименованию("Специалисты", Истина);
    Руководители = Справочники.КатегорииСотр.НайтиПоНаименованию("Руководители", Истина);
    ВспРаб = Справочники.КатегорииСотр.НайтиПоНаименованию("Вспомогательные рабочие", Истина);

    Если Специалисты = строка.Категория тогда
    ОснБлок.Параметры.фактС = строка.Факт;
    ОснБлок.Параметры.постС = строка.Пост;
    ОснБлок.Параметры.совмС = строка.Совм;
```
---
или так если писать:

```1c
    Для каждого строка из тз Цикл
    Если строка.категория = Справочники.КатегорииСотр.НайтиПоНаименованию("Специалисты", Истина) тогда
    ОснБлок.Параметры.фактС = строка.Факт;
    ОснБлок.Параметры.постС = строка.Пост;
    ОснБлок.Параметры.совмС = строка.Совм;
    ИначеЕсли строка.категория = Справочники.КатегорииСотр.НайтиПоНаименованию("Вспомогательные рабочие", Истина) тогда
    ОснБлок.Параметры.фактРа = строка.Факт;
    ОснБлок.Параметры.постРа = строка.Пост;
    ОснБлок.Параметры.совмРа = строка.Совм;
    ИначеЕсли строка.категория = Справочники.КатегорииСотр.НайтиПоНаименованию("Руководители", Истина) тогда
    ОснБлок.Параметры.фактР = строка.Факт;
    ОснБлок.Параметры.постР = строка.Пост;
    ОснБлок.Параметры.совмР = строка.Совм;
```
---
Покажи скиншот макета таб документа.
---
Если необходимо что бы данные выводились в одну строку по подразделению нужно использовать метод "Присоединить" при выводе в табличный документ. Но а вообще это проще было бы в скд сделать.
---
сейчас почитаю за Присоединить. начальство сказало скд не трогать.. да и я меньше месяца в программировании 1С. поэтому даже если читала что-то могу забывать и не получается еще систематизировать знания/применять.
---
ничего страшного, мы все были такими... Для этого и форум, спрашивай если что )))
Так же можно и без метода присоединить это сделать, только нужно полностью видеть результат твоего запроса.
---
так, ну мои попытки пораскидывать значения по колонкам согласно категории не удались..
поэтому прошу помощи и предложений.
рез-т запроса могу только в личку скинуть. сюда не могу выкладывать.
HELP!!!!!
---
Ну скинь мне, я посмотрю.
---
куда? на сайте тут "написать" не работает
могу на почту?
---
ну кинь на почту скриншот, или ссылку на скриншот в личку
---
Справочники.КатегорииСотр.НайтиПоНаименованию("Специалисты", Истина)

И так в цикле не очень хорошо делать, лучше до цикла в переменную внести данные и в цикле с переменной сравнивать.
---
спасибо! буду знать. убрала до цикла.
---
кстати так тоже не работает:

Конечно так не работает )))) "Строка.Категория="Специалисты". Какой тип у "Строка.Категория"? Там же скорее всего перечисление? А ты со строкой сравниваешь. До цикла надо в переменные Специалисты, ВспРаб , Руководители получить ссылки.
---
так а сам ТабДок выводите? нигде не видно ТабДок.Показать()
---
ТабДок.Показать()

Пусто, только подразделения выводятся. А циферек нет.
---
Вставляй заполнение параметров ТабДока после, того как заполнишь строку Стр