Имя: Пароль:
1C
1С v8
Группировка в запросе по строке без последних 4 символов
,
0 Буковка
 
13.06.23
11:32
Добрый день!
Нужно получить дубли документов (дублями считаются документы, у которых совпадает шифр(строка, 35) без последних 4 символов).
Вот так не работает, ошибка -  Недопустимое поле для группировки:

ВЫБРАТЬ
    КОЛИЧЕСТВО(РеестрЗаданийОтделаПроектирования.Ссылка) КАК КоличествоДублей,
Лев(РеестрЗаданийОтделаПроектирования.ШифрДокумента,длинастроки(РеестрЗаданийОтделаПроектирования.ШифрДокумента)-4) как ШифрДокументаБезВерсии

ИЗ
    Документ.РеестрЗаданийОтделаПроектирования КАК РеестрЗаданийОтделаПроектирования
ГДЕ
    РеестрЗаданийОтделаПроектирования.Актуальность <> 1
    И НЕ РеестрЗаданийОтделаПроектирования.ПометкаУдаления

СГРУППИРОВАТЬ ПО
Лев(РеестрЗаданийОтделаПроектирования.ШифрДокумента,длинастроки(РеестрЗаданийОтделаПроектирования.ШифрДокумента)-4)
ИМЕЮЩИЕ КОЛИЧЕСТВО(РеестрЗаданийОтделаПроектирования.Ссылка) > 1
1 ViSo76
 
13.06.23
11:37
Лев нет в запросе. Если шифр документа всегда имеет одну длину, тогда делай сокращение длины через выразить(... Как строка(10) ) - 10 замени на нужную длину строки. Построить запрос с разными длинами строк не получится.
2 DJ Anthon
 
13.06.23
11:38
а разве подстрока не работает?
3 РусКомп
 
13.06.23
11:39
(1) есть подстрока - тот же самый лев если с первого символа.
4 Буковка
 
13.06.23
11:42
(1) спасибо! Сделала через выразить, всё заработало

(2), (3) так тоже работает, спасибо!!!
5 ViSo76
 
13.06.23
11:42
(3) Есть, но я про строку с переменной длиной в конце строки имею ввиду и тут явно у него берется вся строка от начала. По этому подстрока не нужна, так как приведение работает сильно быстрее
6 Гипервизор
 
13.06.23
11:57
(1) В 8.3.20 уже есть и Лев() и многое другое.
7 ViSo76
 
13.06.23
12:05
(6) Лучше бы что бы 1с вместо лев, которое нафиг не нужна в запросе сделали бы функцию АБС, а то приходится через Макс выкручиваться...
8 Гипервизор
 
13.06.23
12:45
(7) В СКД есть КлассификацияABC().
9 ViSo76
 
13.06.23
12:52
(8) Зачем скд, в коде иногда нужно. Приходится делать пОтброситьЗнак = Макс( пЧисло, -пЧисло );
10 ViSo76
 
13.06.23
12:52
(9) Вместо того что бы бит знака погасить средствами 1С.
11 Гипервизор
 
13.06.23
13:04
(10) А, вы про модуль числа, я неправильно понял. Неужели так часто используете? Тогда имеет смысл шаблон сделать. Или вы про эстетическую сторону и экономию символов?
Напишите пожелание в 1С, вон в Телеграме регулярно собирают всякие хотелки.
12 ViSo76
 
13.06.23
13:08
(11) Да не часто, но если передирать BASIC, то уж полностью, чего стесняться.
13 ViSo76
 
13.06.23
13:16
(11) Да и вообще пора делать 1С v9 с ООП как у BASIC с наследованием и переопределением, а то сама концепция расширений это такое извращение...
Я считаю что сложность конфигураций уже превысила плюсы линейного кода.
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс