По теме из базы знаний
- Всякие полезности
- Нетривиальные подходы в решении всем известных проблем: ускорение «больших» документов в 1С и ускорение поиска по подстроке. Как добиться эффекта в разы?
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- Новые возможности языка запросов в платформе 8.3.20
- Рекурсия с недостачей, или Краткая теория графов
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Старое, но все же оставлю тут след.
Один из извратов:
Один из извратов:
ВЫБРАТЬ
aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК НомерСимвола
ПОМЕСТИТЬ ВТ_НомераСимволов
ИЗ
(ВЫБРАТЬ
0 КАК a
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9) КАК aa
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК b
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9) КАК bb
ПО (ИСТИНА)
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК c
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9) КАК cc
ПО (ИСТИНА)
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
0 КАК d
ОБЪЕДИНИТЬ
ВЫБРАТЬ
1
ОБЪЕДИНИТЬ
ВЫБРАТЬ
2
ОБЪЕДИНИТЬ
ВЫБРАТЬ
3
ОБЪЕДИНИТЬ
ВЫБРАТЬ
4
ОБЪЕДИНИТЬ
ВЫБРАТЬ
5
ОБЪЕДИНИТЬ
ВЫБРАТЬ
6
ОБЪЕДИНИТЬ
ВЫБРАТЬ
7
ОБЪЕДИНИТЬ
ВЫБРАТЬ
8
ОБЪЕДИНИТЬ
ВЫБРАТЬ
9) КАК dd
ПО (ИСТИНА)
ГДЕ
aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= 10000
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
МАКСИМУМ(ВТ_НомераСимволов.НомерСимвола) КАК НомерСимвола,
&ДлинаСтроки КАК ДлинаСтроки
ИЗ
ВТ_НомераСимволов КАК ВТ_НомераСимволов
ГДЕ
НЕ ПОДСТРОКА(&ДлинаСтроки, ВТ_НомераСимволов.НомерСимвола, 1) = ""
ПоказатьВыбор
Когда ПОДСТРОКА(Наименование, 0,1) = "" Тогда
0
Когда ПОДСТРОКА(Наименование, 0,1) <> "" И ПОДСТРОКА(Наименование, 1,1) = "" Тогда
1
Когда ПОДСТРОКА(Наименование, 1,1) <> "" И ПОДСТРОКА(Наименование, 2,1) = "" Тогда
2
Когда ПОДСТРОКА(Наименование, 2,1) <> "" И ПОДСТРОКА(Наименование, 3,1) = "" Тогда
3
Конец
ПоказатьРазмер этой портянки на ваше усмотрение...
(5)
Можно, кстати, и аналогичную конструкцию применять с использованием выражения в строку:
.....
Можно, кстати, и аналогичную конструкцию применять с использованием выражения в строку:
Выбор
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(0)) = Наименование Тогда
0
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(1)) = Наименование Тогда
1
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(2)) = Наименование Тогда
2
Когда ВЫРАЗИТЬ(Наименование КАК СТРОКА(3)) = Наименование Тогда
3
Конец
Показать.....
Для полей с неограниченной длиной можно сделать так в запросе в условии насчёт сравнения длин строк:
ГДЕ ПОДСТРОКА(ВЫРАЗИТЬ(Наименование КАК СТРОКА(999)), 0, 3) <> ПОДСТРОКА(ВЫРАЗИТЬ(Наименование КАК СТРОКА(1)), 0, 1)
В виде колонки запроса длину строки некоторого поля можно получить специальным запросом, который опубликован в последнем пункте этой статьи:
https://infostart.ru/1c/articles/306536/
(9) https://wonderland.v8.1c.ru/blog/novye-funktsii-yazyka-zaprosov-i-sistemy-komponovki-dannykh/
С 8.3.20 можно проще ДлинаСтроки(StringLength) – вычисляет длину строки.
С 8.3.20 можно проще ДлинаСтроки(StringLength) – вычисляет длину строки.
ВЫБРАТЬ
Номенклатура.Ссылка,
ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК СТРОКА(75)) КАК Огр75,
ВЫРАЗИТЬ(Номенклатура.НаименованиеПолное КАК СТРОКА(100)) КАК Огр100
ПОМЕСТИТЬ вт
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
НЕ Номенклатура.ПометкаУдаления
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
вт.Ссылка,
вт.Огр75,
вт.Огр100
ИЗ
вт КАК вт
ГДЕ
вт.Огр75<> вт.Огр100
Показать
(18)
Прикольно, спасибо, получилось таким способом быстро узнать максимальную длину строки в довольно большой таблице!
Разработчики платформы 1С известные садисты над программистами. :-)
Десяток лет не давали основные функции со строкой. И продолжают часть обычного функционала SQL не давать.
Причина - это файловая версия.
Десяток лет не давали основные функции со строкой. И продолжают часть обычного функционала SQL не давать.
Причина - это файловая версия.
Прикольно, спасибо, получилось таким способом быстро узнать максимальную длину строки в довольно большой таблице!
Написать запрос с ключом* связи, в выборке посчитать количество символов и через менеджера временных таблиц соединить результат с нужным тебе запросом. Например
Номенклатура* | Наименование , обрабатываем запросом и получаем
Номенклатура* | Количество символов и связываем с нужным тебе запросом
Номенклатура* | Наименование , обрабатываем запросом и получаем
Номенклатура* | Количество символов и связываем с нужным тебе запросом
(20) Не совсем понял как, но ранее делали как в посте 4. По факту разбивали посимвольно строку и считали количество символов. В общем и сейчас поступают примерно так же. Либо в ТЗ выгружают, там считают и обратно в запрос. Извращаются в общем.
1С функции добавила в запросы, но режим совместимости в типовых может не позволять использовать эти "новшества". В 15 посту наверное с этим и столкнулись.
По факту на сейчас, что добавили, что нет. Пока этими новшествами не начнут в типовых активно пользоваться и/или изменят режим совместимости на более высокий. На сейчас только играться в пустых или своих базах.
Язык запросов активно 1С менять и развивать не будет. Они сосредоточились на бантиках. Файловая ставит преграду в развитии языка запросов, так как надо все эти новшества реализовывать на ней. А это сложно, долго и не хочется.
Если быстро, то это отказ от файловой. Взамен предложить PsgSQL с вариациями по количеству пользователей.
Но этого тоже не будет.
Поэтому продолжаем извращаться.
1С функции добавила в запросы, но режим совместимости в типовых может не позволять использовать эти "новшества". В 15 посту наверное с этим и столкнулись.
По факту на сейчас, что добавили, что нет. Пока этими новшествами не начнут в типовых активно пользоваться и/или изменят режим совместимости на более высокий. На сейчас только играться в пустых или своих базах.
Язык запросов активно 1С менять и развивать не будет. Они сосредоточились на бантиках. Файловая ставит преграду в развитии языка запросов, так как надо все эти новшества реализовывать на ней. А это сложно, долго и не хочется.
Если быстро, то это отказ от файловой. Взамен предложить PsgSQL с вариациями по количеству пользователей.
Но этого тоже не будет.
Поэтому продолжаем извращаться.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот