arefaste/1C_Forums huggingface dataset:
как получить все свойства по группе номенклатуры.
Что хочу - хочу выбрать группу номенклатуры. и заполнить таблицу значений в которой строками будет номенклатура а в столбцах свойства.
---
Я поняла мне нужны были где все эти настройки хранятся
В общем если в свойстве заполнено Назначение, то нужно смотреть РС. Назначения Свойств.
Если не заполнено, то он распространяется на весь справочник. В общем у меня примерно пополам, поэтому проверяем есть ли назначение и выкидываем если он не для нашей группы номенклатуры
---
Ппц. Общий модуль есть УправлениеСвойствами. Там есть все, чтобы работать со свойствами

Вам подойдет

```1c
    // Возвращает дополнительные реквизиты и сведения у указанного объекта.
    //
    // Параметры:
    // ВладелецСвойств - Ссылка - например, СправочникСсылка.Номенклатура, ДокументСсылка.ЗаказПокупателя, ...
    // - Объект - например, СправочникОбъект.Номенклатура, ДокументОбъект.ЗаказПокупателя, ...
    // - ДанныеФормыСтруктура - коллекция по типу объекта владельца свойств.
    // ПолучатьДопРеквизиты - Булево - в результат включать дополнительные реквизиты.
    // ПолучатьДопСведения - Булево - в результат включать дополнительные сведения.
    //
    // Возвращаемое значение:
    // Массив - значения
    // * ПланВидовХарактеристикСсылка.ДополнительныеРеквизитыИСведения - если есть.
    //
    Функция СвойстваОбъекта(ВладелецСвойств, ПолучатьДопРеквизиты = Истина, ПолучатьДопСведения = Истина) Экспорт

    ..................

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

```1c
    ОбластьМакета = МакетОбработки.ПолучитьОбласть("ИтогоВес");

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЗаказКлиентаТовары.Характеристика.битВес КАК ХарактеристикабитВес,
    | ЗаказКлиентаТовары.Характеристика.битОбъем КАК ХарактеристикабитОбъем,
    | ЗаказКлиентаТовары.Характеристика.битВес * ЗаказКлиентаТовары.Количество КАК ВесВИтоге
    |ИЗ
    | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
    |ГДЕ
    | ЗаказКлиентаТовары.Ссылка = &СсылкаНаДокумент
    |ИТОГИ
    | СУММА(ВесВИтоге)
    |ПО
    | ОБЩИЕ";

    Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

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

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

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьМакета.Параметры.ИтогоВес1 = ВыборкаДетальныеЗаписи.ВесВИтоге;

    КонецЦикла;

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

В консоли запрос работает но на печать не выводит.
---
У меня есть сомнения что
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
действительно получает детальные записи.
Тут сделать через СГРУППИРОВАТЬ либо ещё один вложенный цикл выборки.
---
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если итоги получаете то нужно

```1c
    ВыборкаВес = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаВес.Следующий() Цикл
    ОбластьМакета.Параметры.ИтогоВес1 = ВыборкаВес.ВесВИтоге;
    ВыборкаДетЗаписи = ВыборкаВес.Выбрать();
    Пока ВыборкаДетЗаписи.Следующий() Цикл
    //Заполняем детальными записями
    КонецЦикла;
    КонецЦикла;
```

Эх молодежь :)
---
У меня есть сомнения что
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
действительно получает детальные записи.
Тут сделать через СГРУППИРОВАТЬ либо ещё один вложенный цикл выборки.
---
Спасибо. Так завелось.

```1c
    ОбластьМакета = МакетОбработки.ПолучитьОбласть("ИтогоВес");

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | ЗаказКлиентаТовары.Характеристика.битВес КАК ХарактеристикабитВес,
    | ЗаказКлиентаТовары.Характеристика.битОбъем КАК ХарактеристикабитОбъем,
    | ЗаказКлиентаТовары.Характеристика.битВес * ЗаказКлиентаТовары.Количество КАК ВесВИтоге
    |ПОМЕСТИТЬ ВтВес
    |ИЗ
    | Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
    |ГДЕ
    | ЗаказКлиентаТовары.Ссылка = &СсылкаНаДокумент
    |;
    |
    |////////////////////////////////////////////////////////////­////////////////////
    |ВЫБРАТЬ
    | СУММА(ВтВес.ВесВИтоге) КАК ВесВИтоге
    |ИЗ
    | ВтВес КАК ВтВес";

    Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);

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

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

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    ОбластьМакета.Параметры.ИтогоВес1 = ВыборкаДетальныеЗаписи.ВесВИтоге;

    КонецЦикла;

    ТабличныйДокумент.Вывести(ОбластьМакета);
```
Коллеги приветствую! Прошу помощи,

вот из такой таблицы

Контрагент ДатаНачала
ООО Ромашка 01.05.2018
ООО Ромашка 03.08.2018
ООО Ромашка 05.11.2018

нужно получить вот такую

Контрагент ДатаНачала ДатаОнокнчания
ООО Ромашка 01.05.2018 03.08.2018
ООО Ромашка 03.08.2018 05.11.2018
ООО Ромашка 05.11.2018 -//-
---
ну это-же элементарно ,Ватсон!
два левых соединения и все готово

```1c
    Выбрать "ООО Ромашка" как Контрагент, ДатаВремя(2018,5,1) как ДатаНачала поместить Таб
    Объединить все Выбрать "ООО Ромашка", ДатаВремя(2018,8,3)
    Объединить все Выбрать "ООО Ромашка", ДатаВремя(2018,11,5)
    ;
    Выбрать
    т0.*,
    т1.ДатаНачала как ДатаКонца
    из Таб т0
    левое соединение Таб т1
    по т0.Контрагент = т1.Контрагент
    и т0.ДатаНачала < т1.ДатаНачала

    левое соединение Таб т2
    по т0.Контрагент = т2.Контрагент
    и т0.ДатаНачала < т2.ДатаНачала
    и т2.ДатаНачала < т1.ДатаНачала

    где
    т2.ДатаНачала есть Null
```
---
ну это-же элементарно ,Ватсон!
два левых соединения и все готово

```1c
    Выбрать "ООО Ромашка" как Контрагент, ДатаВремя(2018,5,1) как ДатаНачала поместить Таб
    Объединить все Выбрать "ООО Ромашка", ДатаВремя(2018,8,3)
    Объединить все Выбрать "ООО Ромашка", ДатаВремя(2018,11,5)
    ;
    Выбрать
    т0.*,
    т1.ДатаНачала как ДатаКонца
    из Таб т0
    левое соединение Таб т1
    по т0.Контрагент = т1.Контрагент
    и т0.ДатаНачала < т1.ДатаНачала

    левое соединение Таб т2
    по т0.Контрагент = т2.Контрагент
    и т0.ДатаНачала < т2.ДатаНачала
    и т2.ДатаНачала < т1.ДатаНачала

    где
    т2.ДатаНачала есть Null
```
---
Спасибо большое!)
При изменении настроек для консоли отчетов, приходится каждый раз заново их загружать каждому пользователю. Можно ли их как-то в базе сохранять чтобы при обновлении конфигурации новые настройки уже были на месте?
---
Дорабатываешь консоль как внешнюю обработку:

```1c
    СохраняемоеЗначение = Новый Структура;
    СохраняемоеЗначение.Вставить("Файл", ДвоичныеДанные);

    ДополнительнаяОбработкаОбъект = ОбъектСсылка.ПолучитьОбъект();
    ДополнительнаяОбработкаОбъект.ХранилищеНастроек = Новый ХранилищеЗначения(СохраняемоеЗначение);
    ДополнительнаяОбработкаОбъект.Записать();
```
---
это?
---
Нет. В консоль отчетов загружается файл *.dcf в котором находятся все отчеты. Вот его можно как-то в базе сохранить, чтобы обновил конфигурацию, а эти настройки уже там? А то получается что после каждого изменения в этом файле, каждому пользователю нужно каждый раз его заново загружать в консоль.
---
Дорабатываешь консоль как внешнюю обработку:

```1c
    СохраняемоеЗначение = Новый Структура;
    СохраняемоеЗначение.Вставить("Файл", ДвоичныеДанные);

    ДополнительнаяОбработкаОбъект = ОбъектСсылка.ПолучитьОбъект();
    ДополнительнаяОбработкаОбъект.ХранилищеНастроек = Новый ХранилищеЗначения(СохраняемоеЗначение);
    ДополнительнаяОбработкаОбъект.Записать();
```
---
У вас пользователи консолью отчетов формируют отчеты?
---
Да
---
Сообщение было скрыто модератором.
---
почитай http://1clancer.ru/article/kak_sokhranit_nastrojku_otcheta_179
---
почитай (2) и (5)
Добрый день!
Кто сталкивался с утилитой webinst, скажите какой параметр указать при публикации базы, чтоб прописать в команде пункт "Адрес перехода при окончании работы веб-клиента"?
На its нашел только основные параметры.
---
да нет там такого параметра. Все параметры можно посмотреть, запустив webinst без параметров.
Но можно в самом default.vrd указать. exiturl
---
да нет там такого параметра. Все параметры можно посмотреть, запустив webinst без параметров.
Но можно в самом default.vrd указать. exiturl
---
exiturl понятно что вручную можно. Это я знаю.
Значит 1с все ещё ее дорабатывает раз нет полной поддержки функций из меню администрирование публикация иб
Добрый день. Управляемый интерфейс. Создан реквизит формы с типом ТаблицаЗначений. Программно заполнила и добавила колонки, на форму так же разместила программно. Есть реквизит тч Счет и субконто.Необходимо, чтобы после размещения на форме и при изменении реквизита счет ограничить тип субконто. В событие при изменении отладка не приходит.
---
Если создали реквизит программно, то и обработчики добавляете программно

НазваниеРеквизитаТаблицаЗначений.УстановитьДействие("ПриИзменении ",Новый Действие("ВашаТаблицаПриИзменении "));
---
Можно было и код привести
---
Если создали реквизит программно, то и обработчики добавляете программно

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

Подскажите как реализовать.
---
В общем нужно не в "Параметрах выбора" мудрить, а в "Связи параметров выбора", там в Параметре Поле выбираем Параметры Данных -Организация. И тогда СКД передает выбранную организацию!
---
Попробуйте так:

В левой колонке - "что":

Отбор.Владелец

В правой колонке - "чему равно":

Организация
---
В правой колонке тип только Дата,Строка, Число и предопределенные значений. Если написать Организация - то и в форму приходит параметр строковый "Организация"
Ну и Организация не владелец для справочника подразделения. Это не типовая конфа.
---
В общем нужно не в "Параметрах выбора" мудрить, а в "Связи параметров выбора", там в Параметре Поле выбираем Параметры Данных -Организация. И тогда СКД передает выбранную организацию!
Необходимо сделать перерасчет количества дней по всем отпускам сотрудников организаций. Запросом я получил необходимые для меня отпуска. У меня есть даты с и по при изменении который происходит расчет количества дней, при перевыборе той же даты. Можно ли как то обратиться к форме где происходит событие РаботникиОрганизацииДатаПоПриИзменении(Элемент)
или как то по другому можно сделать?

```1c
    ДатаКонца=Дата('2018.08.11 01:00:00');
    ДатаНачала = Дата('2018.08.01 00:00:00');
    //ТЗ = Новый ТаблицаЗначений;
    //ТЗ.Колонки.Добавить("Ссылка");
    //ТЗ.Колонки.Добавить("Дата");
    //ТЗ.Очистить(); // привычка
    // Для каждого ОбъектМД Из Метаданные.Документы Цикл
    // Проведение = ОбъектМД.Проведение;
    // Если Проведение=Метаданные.СвойстваОбъектов.Проведение.Разрешить Тогда
    // Имя=ОбъектМД.Имя;
    // //выборка документов

    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
    | ОтпускаОрганизаций.Ссылка,
    | ОтпускаОрганизаций.Дата
    |ИЗ
    | Документ.ОтпускаОрганизаций КАК ОтпускаОрганизаций
    |ГДЕ
    | ОтпускаОрганизаций.Дата МЕЖДУ &Дата1 И &Дата2
    | И ОтпускаОрганизаций.Проведен = ИСТИНА
    | И ОтпускаОрганизаций.ПометкаУдаления = ЛОЖЬ";
    //"ВЫБРАТЬ
    // |" + Имя + ".Ссылка,
    // |" + Имя + ".Дата
    // |ИЗ
    // | Документ." + Имя + " КАК " +Имя+
    // " ГДЕ
    // | (" + Имя + ".Дата МЕЖДУ &ДатаНачала И &ДатаКонца) и (" + Имя + ".Проведен=Истина) и (" + Имя + ".ПометкаУдаления=Ложь)";
    //
    Запрос.УстановитьПараметр("Дата1", ДатаНачала);
    Запрос.УстановитьПараметр("Дата2", ДатаКонца);

    Выборка=Запрос.Выполнить().Выбрать();
    // Готовим таблицу значений и сортируем дату по возростанию

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

    Объект = выборка.ссылка.ПолучитьОбъект();

    // Док = Документы.ОтпускаОрганизаций.СоздатьДокумент();
    //Док.ПолучитьФорму("ФормаДокумента").Открыть();
    //Док.РаботникиОрганизацииКоличествоДнейПриИзменении();

    Попытка
    Объект.Записать(РежимЗаписиДокумента.Запись);
    Сообщить("Запись "+Выборка.Ссылка);

    Исключение
    Сообщить("Не получилось провести документ "+Выборка.Ссылка+" из-за "+ОписаниеОшибки());
    КонецПопытки;
    //НоваяСтрока = ТЗ.Добавить();
    //НоваяСтрока.Ссылка = Выборка.Ссылка;
    //НоваяСтрока.Дата = Выборка.Дата;
    КонецЦикла;
    //ТЗ.Сортировать("Дата Возр");
    //
    // КонецЕсли;
    //КонецЦикла;
    // Для Каждого элемент из ТЗ Цикл
    //// Объект = элемент.ссылка.ПолучитьОбъект();
    ////
    //// Попытка
    //// Объект.Записать(РежимЗаписиДокумента.Запись);
    //// Сообщить("Запись "+Выборка.Ссылка);
    ////
    //// Исключение
    //// Сообщить("Не получилось провести документ "+Выборка.Ссылка+" из-за "+ОписаниеОшибки());
    //// КонецПопытки;
    // КонецЦикла;

    КонецПроцедуры
```
---
РаботникиОрганизацииДатаПоПриИзменении(Элемент) -
внутри этой функции есть же вызов экспортной процедуры из модуля не проще ее вызывать?
---
РаботникиОрганизацииДатаПоПриИзменении(Элемент) -
внутри этой функции есть же вызов экспортной процедуры из модуля не проще ее вызывать?
---
там есть она, но какие параметры я туда передавать должен?
---
Разобрался.
Здравствуйте!
Может кто сталкивался с такой задачей, мне перед тем как отправить из 1С документ на печать необходимо проверять наличие в лотке бумаги.
Пробовал через Новый COMОбъект("WScript.Network"), там такого свойства/метода у объекта не нашёл. Использую принтер "Kyocera ECOSYS P2035d KX"
---
ServiceSet=GetCOMObject("winmgmts:{impersonationLevel=impersonate}!\\" + ИмяКомпьютера() + "\root\cimv2");
 PrinterSet=ServiceSet.Get("Win32_Printer");

 Попытка
  PrintersItems = ServiceSet.ExecQuery("Sel ect * fr om Win32_Printer");
 Исключение
  Сообщить(ОписаниеОшибки());
 КонецПопытки;

 для каждого Item из PrintersItems Цикл

  Элемент = Принтеры.Добавить();

  Элемент.Значение = Item.Name;
  Элемент.Пометка = Item.Default;
                Элемент.НетБумаги = (Item.DetectedErrorState = 4);

 КонецЦикла;
---
ServiceSet=GetCOMObject("winmgmts:{impersonationLevel=impersonate}!\\" + ИмяКомпьютера() + "\root\cimv2");
 PrinterSet=ServiceSet.Get("Win32_Printer");

 Попытка
  PrintersItems = ServiceSet.ExecQuery("Sel ect * fr om Win32_Printer");
 Исключение
  Сообщить(ОписаниеОшибки());
 КонецПопытки;

 для каждого Item из PrintersItems Цикл

  Элемент = Принтеры.Добавить();

  Элемент.Значение = Item.Name;
  Элемент.Пометка = Item.Default;
                Элемент.НетБумаги = (Item.DetectedErrorState = 4);

 КонецЦикла;
В БГУ 1 есть стандартная печатная форма (Инвентаризационная опись 0504087). Нужно на ее основе создать внешнюю печатную форму, в ней всего лишь нужно добавить пару строк в конце каждой страницы. Начал перетаскивать весь код во внешнюю печатную форму.. А нужно ли это, там столько всего понакручено, тащить вообще весь код и из общих модулей в том числе, только для того чтобы добавить пару строк? Какие есть другие варианты?
---
тащить вообще весь код и из общих модулей а зачем тащить весь код, вытащите код по формированию печатной формы и подправьте пару строк с вызовом процедуры ВывестиКомиссию.
Из какого модуля и какой процедуры вы пытаетесь вытащить код?

ps: возможно конечно в Вашей версии БГУ формирование печатной формы изменено, но не думаю, что прям сильно.
---
тащить вообще весь код и из общих модулей а зачем тащить весь код, вытащите код по формированию печатной формы и подправьте пару строк с вызовом процедуры ВывестиКомиссию.
Из какого модуля и какой процедуры вы пытаетесь вытащить код?

ps: возможно конечно в Вашей версии БГУ формирование печатной формы изменено, но не думаю, что прям сильно.
---
Администрирование - Печатные формы - Макеты печатных форм - есть там ваша форма?
если есть, тогда можно не делать внешнюю печатную форму.
---
Администрирование в режиме предприятия? Нет такого в меню. Через отладчик по кнопке Печать нашел макет этой формы в Общих макетах
---
Кажется БГУ 1 - это конфигурация не на управляемых формах, а на обычных.
Тогда да, нужно создавать свою внешнюю печатную форму.

У меня нет этой конфигурации.
---
Да БГУ 1 это обычные формы. И вообще весь код туда тащить? А нельзя во внешней форме только макет поменять, а все остальное оставить где оно и было?
---
а заполнятся то оно как будет? либо полноценную ВПФ со всеми функциями, либо макет стандартный редактировать(последнего как я понял в вашей конфе нет)
---
, пользуйтесь готовой обработкой. ссылка https://infostart.ru/public/162019/
---
Ну... Я делал иначе - искал внешнюю печатную форму, оригинальную. А уже после через конфигуратор правил и добавлял то что мне нужно.
Но это было для ЗУП 3.1. Хотя думаю суть та же.
---
Во внешней печатной форме можно получить ТабДок, сформированный стандартной функцией Печати из модуля объекта, а потом отредактировать этот ТабДок как угодно.
---
Можно и не создавать внешнюю печатную форму, надо идти в ногу с прогрессом, почему бы не использовать "расширения конфигурации", пример тут https://infostart.ru/public/594348/
---
Поддерживаю: быстродействие печатной формы в расширении конфигурации выше, чем во внешних. И отлаживать проще. Самый быстрый вариант, конечно, встроить в конфу, и лучше так и сделать, если есть возможность.
---
..в общем, надо понимать, что важнее: удобство отладки и внесения изменений или быстродействие.
---
С этими расширениями больше проблем, чем пользы, особенно, если использовать аннотацию &Вместо при переносе процедур в расширение.
---
Это да, багов ворох, поскольку этот функционал активно разрабатывается, а баги являются неотъемлемой частью модели бизнеса 1С, купленной у microsoft.
---
спасибо! очень интересная статья
1С 8.3. В отчете на СКД по товарам поставщиков параметром отбора является Поставщик - выбирается из иерархического справочника поставщиков.
Структура выглядит примерно:
Поставщик1
  - Товар1 поставщика 1
  - Товар2 поставщика 1
  -...
Поставщик2
  - Товар1 поставщика 2
  - Товар2 поставщика 2
  -...

Можно ли как-то организовать сортировку группировки Поставщик так, чтобы он выводился именно в том порядке, в каком он задан в списке в отборе?
---
Могу предложить извращенный способ
При компоновке результата,
0.1 В запросе СКД добавляете поле &ПорядокПоставщиков КАК ПорядокПоставщиков
1 Получаете списокпоставщиков из настроек КД
2 Получаете запрос Из КД
3 Формируете для замены куска ПорядокПоставщиков свой кусок запроса, ну примерно так

```1c
    Замена = "ВЫБОР ";
    Индекс = 0;
    Для Каждого ЭлСписка Из СписокПоставщиков Цикл
    Замена = Замена + "КОГДА Выборка.Поставщик.Наименование = ЭлСписка.Значение.Наименование ТОГДА "+Индекс;
    Индекс = Индекс + 1;
    КонецЦикла
    Замена = Замена + "КОНЕЦ ";
```

ТекстЗапроса = СтрЗаменить(ТекстЗапроса,&ПорядокПоставщиков,Замена);
Вставляете обратно в СКД Запрос и и формируете все дальше как обычно
 в СКД Порядок по полю "ПорядокПоставщиков"
---
сортировка в данном случае не поможет...
---
а какие варианты? как-то вручную перебирать итоговую таблицу не хочется(
---
самое простое что приход на ум,

1.в справочник (Контрагенты/Поставщик) добавить новый реквизит ПорядокДляСКД
заполняете 1,2,3
в СКД добавляете сортировку по этому полю

2.если для разных пользователей нужна разная сортировка создаете РС.ПорядокЭлементовДляСКД (не переодический, независимый)
в нем поля
Сотрудкик, Поставщик, Порядок

в СКД запросе левым соединение цепляете этот регистр с соединением по Сотруднику и Поставщику
в отборе сортируете по полю РС.Порядок

наверно возможны еще варианты, стоит только задуматься
---
Могу предложить извращенный способ
При компоновке результата,
0.1 В запросе СКД добавляете поле &ПорядокПоставщиков КАК ПорядокПоставщиков
1 Получаете списокпоставщиков из настроек КД
2 Получаете запрос Из КД
3 Формируете для замены куска ПорядокПоставщиков свой кусок запроса, ну примерно так

```1c
    Замена = "ВЫБОР ";
    Индекс = 0;
    Для Каждого ЭлСписка Из СписокПоставщиков Цикл
    Замена = Замена + "КОГДА Выборка.Поставщик.Наименование = ЭлСписка.Значение.Наименование ТОГДА "+Индекс;
    Индекс = Индекс + 1;
    КонецЦикла
    Замена = Замена + "КОНЕЦ ";
```

ТекстЗапроса = СтрЗаменить(ТекстЗапроса,&ПорядокПоставщиков,Замена);
Вставляете обратно в СКД Запрос и и формируете все дальше как обычно
 в СКД Порядок по полю "ПорядокПоставщиков"