Имя: Пароль:
1C
 
Взять в запросе максимум от выбор когда: 2 случая, один - проблемный
0 Irkutsk
 
28.09.23
21:45
Вот это взрывается, а если максимум убрать, то в конструкторе не дает в суммируемое поле добавить строку с "выбор когда":

ВЫБРАТЬ ПЕРВЫЕ 20
    АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.ФизЛицо КАК ФизЛицо,
    Максимум(ВЫБОР
        КОГДА АнкетаАбитуриентаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АбитуриентАдресПроживания)
            ТОГДА АнкетаАбитуриентаКонтактнаяИнформация.Представление
        ИНАЧЕ ""
    КОНЕЦ) КАК АдресПроживания
ИЗ
    Документ.АнкетаАбитуриента.КонтактнаяИнформация КАК АнкетаАбитуриентаКонтактнаяИнформация


Ошибка:

Неверные параметры "МАКСИМУМ"
максимум(<<?>>ВЫБОР




А вот это работает:

ВЫБРАТЬ
    МАКСИМУМ(ВЫБОР
            КОГДА ФизическиеЛицаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресПроживания)
                ТОГДА ФизическиеЛицаКонтактнаяИнформация.Представление
            ИНАЧЕ ""
        КОНЕЦ) КАК АдресПроживания,
    МАКСИМУМ(ВЫБОР
            КОГДА ФизическиеЛицаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресПроживания)
                ТОГДА ФизическиеЛицаКонтактнаяИнформация.Представление
            ИНАЧЕ ""
        КОНЕЦ) КАК АдресПоПрописке,
    МАКСИМУМ(ВЫБОР
            КОГДА ФизическиеЛицаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.Телефон)
                ТОГДА ФизическиеЛицаКонтактнаяИнформация.Представление
            ИНАЧЕ ""
        КОНЕЦ) КАК Телефон,        
    ФизическиеЛицаКонтактнаяИнформация.Ссылка КАК Ссылка
ИЗ
    Справочник.ФизическиеЛица.КонтактнаяИнформация КАК ФизическиеЛицаКонтактнаяИнформация

СГРУППИРОВАТЬ ПО
    ФизическиеЛицаКонтактнаяИнформация.Ссылка



Скрин:

https://picshare.ru/image/NsvG0

Скажите, пожалуйста, что неправильно сделал в первом случае? И как все же мне сгруппировать строки. Это для задачи транспонирования таблицы контактной информации в строку.
1 Donkey_hot
 
28.09.23
23:18
(0) Для чего Вам эти танцы с ВЫБОРом? Выберите сначала во временную таблицу только контактную информацию интересующего Вас вида, а потом делайте с ней что хотите (как частный случай - можете снова соединить с основной таблицей документа).
2 Donkey_hot
 
28.09.23
23:24
(0) Если так уж хочется именно этим способом решить, попробуйте ВЫРАЗИТЬ(ТаблицаКИ.Представление КАК Строка(100)), но лучше сразу привыкать писать запросы с прицелом на то, что их кто-то потом будет дорабатывать. Даже если в конкретном случае этого не предполагается.
3 Staffa
 
29.09.23
08:18
(0) В первом случае забыли сгруппировать по ФизЛицо. Максимум() - группировочная функция.
4 НафНаф
 
29.09.23
08:26
Представление - свойство/поле, вычисляемое в 1С, а не в СУБД, поэтому с ним нельзя производить действия внутри запроса - получать максимумы, сравнивать, упорядочивать и т.п.
5 Irkutsk
 
29.09.23
09:11
(4) Представление в данном случае - это просто строка, насколько я понимаю.

Вот как она выглядит: https://picshare.ru/image/Nsw7l

Строка неограниченной длины.
6 Irkutsk
 
29.09.23
09:12
(3) Не забыл, просто сюда не привел. Я привел только имеющую отношение к делу часть запроса.

Ошибка-то вон как звучит - про максимум она.
7 Irkutsk
 
29.09.23
09:37
ВЫБРАТЬ
    АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.ФизЛицо КАК ФизЛицо,
    максимум(выразить(ВЫБОР
        КОГДА АнкетаАбитуриентаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АбитуриентАдресПроживания)
            ТОГДА Строка(АнкетаАбитуриентаКонтактнаяИнформация.Представление)
        ИНАЧЕ ""
    КОНЕЦ как строка(100))) КАК АдресПроживания,
    максимум(выразить(ВЫБОР
        КОГДА АнкетаАбитуриентаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АбитуриентАдресПоПрописке)
            ТОГДА Строка(АнкетаАбитуриентаКонтактнаяИнформация.Представление)
        ИНАЧЕ ""
    КОНЕЦ как строка(100))) КАК АдресПоПрописке,
    максимум(выразить(ВЫБОР
        КОГДА АнкетаАбитуриентаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АбитуриентТелефон)
            ТОГДА Строка(АнкетаАбитуриентаКонтактнаяИнформация.Представление)
        ИНАЧЕ ""
    КОНЕЦ как строка(100))) КАК Телефон
ИЗ
    Документ.АнкетаАбитуриента.КонтактнаяИнформация КАК АнкетаАбитуриентаКонтактнаяИнформация

    
сгруппировать по     
    АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.ФизЛицо


Вот так сработало. Но это похоже на почерк восьмиклассника.

Я не могу понять, что тут происходит.

Платформа 8.3.23.1739.

Тут еще должна быть функция Стрка.

Но она не работает.
8 Irkutsk
 
29.09.23
09:41
Иначе говоря, вот так не работает с той же ошибкой про максимум:

ВЫБРАТЬ
    АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.ФизЛицо КАК ФизЛицо,
    максимум(строка(ВЫБОР
        КОГДА АнкетаАбитуриентаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АбитуриентАдресПроживания)
            ТОГДА Строка(АнкетаАбитуриентаКонтактнаяИнформация.Представление)
        ИНАЧЕ ""
    КОНЕЦ)) КАК АдресПроживания,
    максимум(строка(ВЫБОР
        КОГДА АнкетаАбитуриентаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АбитуриентАдресПоПрописке)
            ТОГДА Строка(АнкетаАбитуриентаКонтактнаяИнформация.Представление)
        ИНАЧЕ ""
    КОНЕЦ)) КАК АдресПоПрописке,
    максимум(строка(ВЫБОР
        КОГДА АнкетаАбитуриентаКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АбитуриентТелефон)
            ТОГДА Строка(АнкетаАбитуриентаКонтактнаяИнформация.Представление)
        ИНАЧЕ ""
    КОНЕЦ)) КАК Телефон
ИЗ
    Документ.АнкетаАбитуриента.КонтактнаяИнформация КАК АнкетаАбитуриентаКонтактнаяИнформация

    
сгруппировать по     
    АнкетаАбитуриентаКонтактнаяИнформация.Ссылка.ФизЛицо
9 НафНаф
 
29.09.23
10:26
(5) ах это у вас собственный реквизит, зря назвали по аналогии с платформенным. Но да, у строк неограниченнной длины нельзя брать МАКСИМУМ
10 Irkutsk
 
29.09.23
10:52
Это типовая конфигурация 1С Колледж ПРОФ, редакция 2.1 (2.1.12.1).
Согласен, неудачное название реквизита.

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

Выразить как строка(100) - это как-то не комильфо.
11 Donkey_hot
 
29.09.23
11:09
(10) Поступить так, как написано в (1) - тоже не comme il faut?
12 НафНаф
 
29.09.23
12:24
(10) почему нет?
AdBlock убивает бесплатный контент. 1Сергей