Имя: Пароль:
1C
1С v8
Выборка в строку
0 ЛучшийПрограммер1С
 
04.03.16
14:14
В 1С нет агрегирующей функции для строки? Типа list в firebird? Чтоб не писать обработку запроса, а сразу из запроса получить строку    через запятую.


// Выборка всех текущих ответственных
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    Номенклатура.ОтветственныйМенеджерЗаПокупки
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |    Номенклатура.Ссылка В ИЕРАРХИИ(&Группа)
        |    И НЕ Номенклатура.Ссылка.ЭтоГруппа
        |    И Номенклатура.ОтветственныйМенеджерЗаПокупки <> ЗНАЧЕНИЕ(Справочник.Пользователи.ПустаяСсылка)";
    
    Запрос.УстановитьПараметр("Группа", Номенклатура);
    РезультатЗапроса = Запрос.Выполнить();
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        
    КоличествоТекущихОтветственных = ВыборкаДетальныеЗаписи.Количество();
    СписокТекущихОтветственных = "";
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если СписокТекущихОтветственных <> "" Тогда
            СписокТекущихОтветственных = СписокТекущихОтветственных + ",";
        КонецЕсли;
        СписокТекущихОтветственных = СписокТекущихОтветственных +
            ВыборкаДетальныеЗаписи.ОтветственныйМенеджерЗаПокупки.Наименование;
    КонецЦикла;
1 Cyberhawk
 
04.03.16
14:16
Не, нельзя
2 1Cancer
 
04.03.16
14:20
(0) ну если я понял, это типо split(String,",") такую можно написать быстренько.
3 alle68
 
04.03.16
15:08
(0) СтрСоединить
Наименование в запросе получают, а не через ссылку.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший