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

```1c
    //Список Сотрудников
    КЛ = СотрудникиФормы.КлючиСтруктурыТекущихКадровыхДанныхСотрудника();
    КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудниковТЗ, КЛ, Объект.Дата,,Ложь);

    МассивСотрудников = Новый Массив;
    ДанныеОбъекта.Вставить("МассивСотрудников", МассивСотрудников);

    Если Тип(Объект.Сотрудники) = Тип("ДокументТабличнаяЧасть.ДоговорМОЛ_Коллективный.Сотрудники") Тогда
    ТЗДат = Объект.Сотрудники.Выгрузить(,"Сотрудник");
    Иначе
    Возврат Ложь;
    КонецЕсли;

    СтрокаМассива = ";
    СтрокаМассива1 = ";
    //СтрокаМассива2 = ";
    Первый = Истина;
    Для каждого СтрокаСотр Из КадровыеДанные Цикл
    //собираем представление сотрудника
    Если НЕ Первый Тогда
    СтрокаМассива = СтрокаМассива + ",";
    КонецЕсли;
    СЭ_ТабНомер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СтрокаСотр.Сотрудник.Код, Истина, Истина);
    Если ПустаяСтрока(СЭ_ТабНомер) Тогда
    СЭ_ТабНомер = СокрЛП(СтрокаСотр.Сотрудник.Код);
    СЭ_ТабНомер = СЭ_УправлениеПечатьюСервер.УбратьНечисловые(СЭ_ТабНомер);
    КонецЕсли;
    СтрДолжность = НРег(СокрЛП(СтрокаСотр.ТекущаяДолжность));

    ПредставлениеПодразделения = СЭ_УправлениеПечатьюСервер.СЭ_ПолучитьСклонение(СтрокаСотр.ТекущееПодразделение, "ПД=Родительный");
    ПредставлениеДолжности = СтрокаСотр.ТекущаяДолжность;

    ПредставлениеИмени = СтрокаСотр.Сотрудник;
    ФизЛицо = СтрокаСотр.ФизическоеЛицо;
    ПредоставлениеИмениИн = СЭ_УправлениеПечатьюСервер.СЭ_ФамилияИнициалы(СтрокаСотр.Сотрудник);
    СотИнА = ФизическиеЛицаКлиентСервер.ФамилияИнициалы (СтрокаСотр.Сотрудник.Наименование);
    Если СтрНайти(ПредставлениеДолжности, ПредставлениеПодразделения) <> 0 Тогда
    ПредставлениеПодразделения = ";
    КонецЕслИ;

    СотрудникКатегория = ПолучитьРазрядКатегориюСотрудника(СтрокаСотр.Сотрудник, Объект.Дата);
    СотрудникКатегория = Сред(СотрудникКатегория, 1, СтрДлина(СотрудникКатегория) - 1);

    Если ПредставлениеПодразделения = " Тогда
    СтрокаМассива =СтрокаМассива +" "+ ПредставлениеИмени;
    СтрокаМассива1 = Символы.Таб+СтрокаМассива1+Символы.Таб +"-"+ПредставлениеДолжности + ":" + ПредоставлениеИмениИн+Символы.ПС;

    Иначе
    СтрокаМассива = СтрокаМассива +" "+ПредставлениеИмени;
    СтрокаМассива1 = СтрокаМассива1+Символы.Таб +"-"+ ПредставлениеДолжности + ":" + ПредоставлениеИмениИн +Символы.ПС;

    КонецЕслИ;

    Отбор = Новый Структура;
    Отбор.Вставить("Сотрудник" , СтрокаСотр.Сотрудник);
    НайденныеСтроки = ТЗДат.НайтиСтроки(Отбор);

    Первый = Ложь;

    КонецЦикла;
    ДанныеОбъекта.МассивСотрудников.Добавить(" " + СтрокаМассива);
    ДанныеОбъекта.МассивСотрудников.Добавить(" " + СтрокаМассива1);
    ДанныеОбъекта.Вставить("СтрокаСотрудников", СтрокаМассива);
    ДанныеОбъекта.Вставить("СотИнФИО", СтрокаМассива1);
```
---
необходимо обработать КадровыеДанные так, чтобы по должности получить список сотрудников, а дальше делайте что душе угодно.

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

    Для Каждого Должность Из СписокДолжностей Цикл

    Отбор = Новый Структура("Должность", Должность);
    МассивСотрудников = КадровыеДанные.НайтиСтроки(Отбор);

    Для Каждого СтрокаСотр Из МассивСотрудников Цикл

    //формируете строку из сотрудников

    КонецЦикла;

    //Выводите строку из сотрудников

    КонецЦикла;
    ............
```
---
необходимо обработать КадровыеДанные так, чтобы по должности получить список сотрудников, а дальше делайте что душе угодно.

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

    Для Каждого Должность Из СписокДолжностей Цикл

    Отбор = Новый Структура("Должность", Должность);
    МассивСотрудников = КадровыеДанные.НайтиСтроки(Отбор);

    Для Каждого СтрокаСотр Из МассивСотрудников Цикл

    //формируете строку из сотрудников

    КонецЦикла;

    //Выводите строку из сотрудников

    КонецЦикла;
    ............
```
---
мог бы помочь дальше вывести с моим кодом?
---
"Вы что же, и кушать за меня будете?" (С)
---
у меня сам вывод не получается сделать
---
был бы благодарен, если бы смогли помочь с этим
---
А что непонятного в (2) ???
---
всё понятно, но не получается сделать вывод так, чтобы сотрудники разбивались по профессии, т.е

"-Продавец: Павелов П.П, Антонов А.А
-Администратор: Админ.А.А"
---
Если нужно именно так

-Продавец: Павелов П.П, Антонов А.А
-Администратор: Админ.А.А"

То:

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

    Для Каждого Должность Из СписокДолжностей Цикл

    СтрокаДляВывода = ";

    Отбор = Новый Структура("Должность", Должность);
    МассивСотрудников = КадровыеДанные.НайтиСтроки(Отбор);

    СотрудникиСтрока = ";
    Сч = 1;
    Для Каждого СтрокаСотр Из МассивСотрудников Цикл

    //Неизвестно какие есть поля в ТЗ КадровыеДанные
    СотрудникиСтрока = СотрудникиСтрока + СтрокаСотр.ФамилияИОСотрудника + ?(Сч = МассивСотрудников.Количество(), ", ", "));
    Сч = Сч + 1;
    КонецЦикла;

    СтрокаДляВывода = Строка(Должность) + ": " + СотрудникиСтрока;

    //дальше используйте СтрокаДляВывода где угодно.
    КонецЦикла;
    ............
```
---
спасибо большое, работает, но как сделать так, чтобы оно каждую профессию переносило на новую строку?
---
В первом приближении:

```1c
    СтрокаДляВывода = Строка(Должность) + ": " + СотрудникиСтрока + Символы.ПС + Символы.ВК;
```

Можно поступить так же как с СотрудникиСтрока:

```1c
    СтрокаДляВывода = СтрокаДляВывода + Строка(Должность) + ": " + СотрудникиСтрока + ?(СчетчикДолжностей = СписокДолжностей.Количество(), ", Символы.ПС);
```
---
СтрокаДляВывода = Строка(Должность) + ": " + СотрудникиСтрока + Символы.ПС + Символы.ВК;

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

    Отбор = Новый Структура("ТекущаяДолжность", Должность);
    МассивСотрудников = КадровыеДанные.НайтиСтроки(Отбор);

    СотрудникиСтрока = ";
    Сч = 1;
    СчетчикДолжностей = 1;
    Для Каждого СтрокаСотр Из МассивСотрудников Цикл

    СЭ_ТабНомер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СтрокаСотр.Сотрудник.Код, Истина, Истина);
    Если ПустаяСтрока(СЭ_ТабНомер) Тогда
    СЭ_ТабНомер = СокрЛП(СтрокаСотр.Сотрудник.Код);
    СЭ_ТабНомер = СЭ_УправлениеПечатьюСервер.УбратьНечисловые(СЭ_ТабНомер);
    КонецЕсли;
    СтрДолжность = НРег(СокрЛП(СтрокаСотр.ТекущаяДолжность));
    ПредставлениеПодразделения = СЭ_УправлениеПечатьюСервер.СЭ_ПолучитьСклонение(СтрокаСотр.ТекущееПодразделение, "ПД=Родительный";);
    ПредставлениеДолжности = СтрокаСотр.ТекущаяДолжность;
    //ПредставлениеИмени = СЭ_УправлениеПечатьюСервер.СЭ_ПолучитьСклонение(СтрокаСотр.Сотрудник,"ПД=Дательный";);
    ПредставлениеИмени = СтрокаСотр.Сотрудник;
    ФизЛицо = СтрокаСотр.ФизическоеЛицо;
    ПредоставлениеИмениИн = СЭ_УправлениеПечатьюСервер.СЭ_ФамилияИнициалы(СтрокаСотр.Сотрудник);
    СотИнА = ФизическиеЛицаКлиентСервер.ФамилияИнициалы (СтрокаСотр.Сотрудник.Наименование);
    Если СтрНайти(ПредставлениеДолжности, ПредставлениеПодразделения) <> 0 Тогда
    ПредставлениеПодразделения = ";
    КонецЕслИ;
    СотрудникКатегория = ПолучитьРазрядКатегориюСотрудника(СтрокаСотр.Сотрудник, Объект.Дата);
    СотрудникКатегория = Сред(СотрудникКатегория, 1, СтрДлина(СотрудникКатегория) - 1);
    СотрудникиСтрока = СотрудникиСтрока + ПредоставлениеИмениИн + ?(Сч = МассивСотрудников.Количество(), ", ", ";);
    Сч = Сч + 1;

    КонецЦикла;
    СтрокаДляВывода = СтрокаДляВывода + Строка(Должность) + ": " + СотрудникиСтрока + ?(СчетчикДолжностей = СписокДолжностей.Количество(), ", Символы.ПС);
    СчетчикДолжностей = СчетчикДолжностей + 1;
    КонецЦикла;
```

я правильно сделал?
---
Лучше бы вы сделали пример, чтобы было видно/понятно, какой конкретно результат вам нужен.
---
вот такой пример
"-Продавец: Павелов П.П, Антонов А.А
-Администратор: Админ.А.А"

сейчас СтрокаДляВывода каждый раз перезаписывается
---
В первом приближении - да.
---
но всё равно не работает
---
написал вот так

```1c
    КЛ = СотрудникиФормы.КлючиСтруктурыТекущихКадровыхДанныхСотрудника();
    КадровыеДанные = КадровыйУчет.КадровыеДанныеСотрудников(Истина, МассивСотрудниковТЗ, КЛ, Объект.Дата,,Ложь);

    МассивСотрудников = Новый Массив;
    ДанныеОбъекта.Вставить("МассивСотрудников", МассивСотрудников);

    Если Тип(Объект.Сотрудники) = Тип("ДокументТабличнаяЧасть.ДоговорМОЛ_Коллективный.Сотрудники") Тогда
    ТЗДат = Объект.Сотрудники.Выгрузить(,"Сотрудник");
    Иначе
    Возврат Ложь;
    КонецЕсли;

    СтрокаМассива = ";
    СтрокаМассива1 = ";

    СписокДолжностей = КадровыеДанные.Скопировать(, "ТекущаяДолжность");
    СписокДолжностей.Свернуть("ТекущаяДолжность");
    СписокДолжностей = СписокДолжностей.ВыгрузитьКолонку("ТекущаяДолжность");

    Для Каждого Должность Из СписокДолжностей Цикл

    Отбор = Новый Структура("ТекущаяДолжность", Должность);
    МассивСотрудников = КадровыеДанные.НайтиСтроки(Отбор);
    Первый = Истина;
    Для Каждого СтрокаСотр Из МассивСотрудников Цикл

    //формируете строку из сотрудников
    //собираем представление сотрудника
    Если НЕ Первый Тогда
    СтрокаМассива = СтрокаМассива + ",";
    КонецЕсли;
    СЭ_ТабНомер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(СтрокаСотр.Сотрудник.Код, Истина, Истина);
    Если ПустаяСтрока(СЭ_ТабНомер) Тогда
    СЭ_ТабНомер = СокрЛП(СтрокаСотр.Сотрудник.Код);
    СЭ_ТабНомер = СЭ_УправлениеПечатьюСервер.УбратьНечисловые(СЭ_ТабНомер);
    КонецЕсли;
    СтрДолжность = НРег(СокрЛП(СтрокаСотр.ТекущаяДолжность));

    ПредставлениеПодразделения = СЭ_УправлениеПечатьюСервер.СЭ_ПолучитьСклонение(СтрокаСотр.ТекущееПодразделение, "ПД=Родительный");
    ПредставлениеДолжности = СтрокаСотр.ТекущаяДолжность;
    //ПредставлениеИмени = СЭ_УправлениеПечатьюСервер.СЭ_ПолучитьСклонение(СтрокаСотр.Сотрудник,"ПД=Дательный");
    ПредставлениеИмени = СтрокаСотр.Сотрудник;
    ФизЛицо = СтрокаСотр.ФизическоеЛицо;
    ПредоставлениеИмениИн = СЭ_УправлениеПечатьюСервер.СЭ_ФамилияИнициалы(СтрокаСотр.Сотрудник);
    СотИнА = ФизическиеЛицаКлиентСервер.ФамилияИнициалы (СтрокаСотр.Сотрудник.Наименование);
    Если СтрНайти(ПредставлениеДолжности, ПредставлениеПодразделения) <> 0 Тогда
    ПредставлениеПодразделения = ";
    КонецЕслИ;

    СотрудникКатегория = ПолучитьРазрядКатегориюСотрудника(СтрокаСотр.Сотрудник, Объект.Дата);
    СотрудникКатегория = Сред(СотрудникКатегория, 1, СтрДлина(СотрудникКатегория) - 1);

    Если ПредставлениеПодразделения = " Тогда
    СтрокаМассива =СтрокаМассива +" "+ ПредставлениеИмени;
    СтрокаМассива1 = Символы.Таб+СтрокаМассива1+Символы.Таб +"-"+ПредставлениеДолжности + ":" + ПредоставлениеИмениИн+Символы.ПС;
    //СтрокаМассива2 = СтрокаМассива2 + ПредоставлениеИмениИн;

    Иначе
    СтрокаМассива = СтрокаМассива +" "+ПредставлениеИмени;

    КонецЕсли;
    КонецЦикла;
    СтрокаМассива1 = СтрокаМассива1+Символы.Таб +"-"+ ПредставлениеДолжности + ":" + ПредоставлениеИмениИн +Символы.ПС;

    Отбор = Новый Структура;
    Отбор.Вставить("Сотрудник" , СтрокаСотр.Сотрудник);
    НайденныеСтроки = ТЗДат.НайтиСтроки(Отбор);

    Первый = Ложь;

    КонецЦикла;
```
---
А тебе зачем помощь, если ты упорно её игнорируешь, и продолжаешь писать свою фигню?
---
я добавил

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

    Для Каждого Должность Из СписокДолжностей Цикл

    Отбор = Новый Структура("Должность", Должность);
    МассивСотрудников = КадровыеДанные.НайтиСтроки(Отбор);

    Для Каждого СтрокаСотр Из МассивСотрудников Цикл

    //формируете строку из сотрудников

    КонецЦикла;

    //Выводите строку из сотрудников

    КонецЦикла;
```
---
могли бы объяснить тогда алгоритм формирования и вывода?