Как Свернуть ТАблицуЗначений, где колонка неограниченной длины

1. Tatyana_012345 24 02.08.24 19:12 Сейчас в теме
Есть Таблица Значений , в ней колонка тип Строка - 3000 знаков

Подскажите пож-ста , Как свернуть Таблицу Значений по всем колонкам?

	Запрос.Текст = "ВЫБРАТЬ
		|    *
		|ПОМЕСТИТЬ ВТ_ТЗ
		|ИЗ
		|    &ТЗ КАК ТЗ
		|;
		|
		|//////////////////
		|ВЫБРАТЬ РАЗЛИЧНЫЕ
		|    ВТ_ТЗ.*
		|ИЗ
		|    ВТ_ТЗ КАК ВТ_ТЗ
		|";
Показать



Это не работает
Найденные решения
9. Sashares 35 02.08.24 19:34 Сейчас в теме
(1) Создать новую таблицу значений с такими же колонками - Т2.
В цикле обходить таблицу Т1, искать есть ли такая строка в Т2, если нет - добавлять в Т2.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2033930 02.08.24 19:15 Сейчас в теме
(1) А почему ЭТО должно работать?
3. Tatyana_012345 24 02.08.24 19:18 Сейчас в теме
(2) дык и не работает, поэтому и вопрос
4. user2033930 02.08.24 19:20 Сейчас в теме
(3) Ну значит не различные. Или "Мамой клянусь, да!"?
5. Tatyana_012345 24 02.08.24 19:25 Сейчас в теме
(4) ошибка выходит что неогранич длина колонки, Строка - 3000 знаков - запрос принимает за строку неогр длины
6. user2033930 02.08.24 19:26 Сейчас в теме
(5) Значит надо ограничить.
7. Tatyana_012345 24 02.08.24 19:26 Сейчас в теме
(6) там 3000 знаков в колонке , но запрос более 1000 символов принимает как за строку неогр длины
8. user2033930 02.08.24 19:33 Сейчас в теме
(7) В строке может не быть вообще символов. Но если её длина не ограничена - никакой свертки СУБД делать не будет. И правильно.
10. user2033930 02.08.24 19:35 Сейчас в теме
9. Sashares 35 02.08.24 19:34 Сейчас в теме
(1) Создать новую таблицу значений с такими же колонками - Т2.
В цикле обходить таблицу Т1, искать есть ли такая строка в Т2, если нет - добавлять в Т2.
11. polax 02.08.24 19:53 Сейчас в теме
Запрос не принимает поле длиннее 1024 знака. Точка! Сокращайте длину поля в запросе через ВЫРАЗИТЬ.
12. Tatyana_012345 24 02.08.24 20:41 Сейчас в теме
(11) невозможно сократить , там 3000 символов
13. Zevzm 02.08.24 21:08 Сейчас в теме
(12) А стандартная свертка ТЗ почему не подходит?
user1619761; user1880116; SlavaKron; +3 Ответить
14. Fox_65 1 04.08.24 10:26 Сейчас в теме
Вообще непонятно, зачем таблицу значений обрабатывать запросом? Для работы с таблицей есть свои методы и для них длина 3000 символов не проблема. Метод Таблицы значений Свернуть чем не подходит?
ТаблицаЗначений (ValueTable)
Свернуть (GroupBy)
Синтаксис:
Свернуть(<КолонкиГруппировок>, <КолонкиСуммирования>)
Параметры:
<КолонкиГруппировок> (обязательный)
Тип: Строка.
Имена колонок, разделенные запятыми, по которым необходимо группировать строки таблицы значений.
<КолонкиСуммирования> (необязательный)
Тип: Строка.
Имена колонок, разделенные запятыми, по которым необходимо суммировать значения в строках таблицы значений.
Описание:
Осуществляет свертку таблицы значений по указанным колонкам группировки. Строки, у которых совпадают значения в колонках, указанных в первом параметре, сворачиваются в одну строку. Значения этих строк, хранящиеся в колонках, указанных во втором параметре, накапливаются.
Важно! Списки колонок не должны пересекаться. Колонки, не вошедшие ни в один из списков колонок, после выполнения метода удаляются из таблицы значений.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Примечание:
Если в колонке установлен тип и он единственный, то при суммировании будет предприниматься попытка преобразования значения к типу Число.
Если колонке не присвоены типы, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них есть тип Число, то в процессе суммирования будут принимать участие только значения, имеющие тип Число, значения других типов будут игнорироваться.
Если в колонке несколько типов и среди них нет типа Число, то результат суммирования будет 0, который будет присвоен в соответствующую колонку, где будет преобразован к значению по умолчанию для типа, установленного в колонке.
Пример:
ТаблицаЦен.Свернуть("Товар, Валюта", "Цена");
Использование в версии:
Доступен, начиная с версии 8.0.
Показать
21. Tatyana_012345 24 06.08.24 09:34 Сейчас в теме
22. spacecraft 06.08.24 09:40 Сейчас в теме
(21) обход в цикле колонок и получить имена, которые подсунуть в метод Свернуть.
Zevzm; independ; +2 Ответить
24. Fox_65 1 06.08.24 20:03 Сейчас в теме
(21) Колонки можно обойти в цикле. Для каждого колонка Из тз.Колонки. Получить имя колонки Колонка.Имя собрать всё в строку разделяя запятыми и подставить эту строку в свернуть.
Посмотрите в синтакс-помошнике там много еще чего, что можно с таблицей значений сделать.
15. user1880116 04.08.24 14:27 Сейчас в теме
Давайте поможем девочке погрузиться в сладостный мир извращений!
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Поле1", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 0)));
ТЗ.Колонки.Добавить("Поле2", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(3000, ДопустимаяДлина.Фиксированная)));

ТЗ.Добавить();
ТЗ.Добавить();
Сообщить("До:" + ТЗ.Количество());

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
    |    Поле1,
    |    ПОДСТРОКА(Поле2, 1, 1000) КАК Поле21,
    |    ПОДСТРОКА(Поле2, 1000, 1000) КАК Поле22,
    |    ПОДСТРОКА(Поле2, 2000, 1000) КАК Поле23
    |ПОМЕСТИТЬ ВТ_ТЗ
    |ИЗ
    |    &ТЗ КАК ТЗ
    |;
    |
    |//////////////////
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    Поле1,
    |    Поле21 + Поле22 + Поле23 КАК Поле2
    |ИЗ
    |    ВТ_ТЗ КАК ВТ_ТЗ
    |";
Запрос.УстановитьПараметр("ТЗ", ТЗ);

СвернутаяТЗ = Запрос.Выполнить().Выгрузить();
Сообщить("После:" + СвернутаяТЗ.Количество());
Показать
Kilka_v_Kepke; +1 Ответить
16. Sashares 35 04.08.24 15:12 Сейчас в теме
(15)
ПОДСТРОКА(Поле2, 1001, 1000) КАК Поле22,
| ПОДСТРОКА(Поле2, 2001, 1000) КАК Поле23
17. user1880116 04.08.24 19:03 Сейчас в теме
(16)
1001
Спасибо!
Людей, принимающих извращения, все больше и больше!
Tatyana_012345; +1 Ответить
18. DJ_Codebase 05.08.24 23:21 Сейчас в теме
и что Вы хотите по этому полю, длинной в 3000 знаков? группировать или суммировать?))
Кстати, Ваш запрос и не свернул бы ТЗ, а выбрал бы различные...
Если не секрет, что за задачу решаете? может быть нужно изменить алгоритм?
23. Sashares 35 06.08.24 09:59 Сейчас в теме
(18)
Кстати, Ваш запрос и не свернул бы ТЗ, а выбрал бы различные...

ТС надо было свернуть таблицу по всем колонкам. То есть оставить только различные записи.
Запрос из (15) именно это и делает.
19. user2033930 05.08.24 23:27 Сейчас в теме
Че-то про хэш никто не предложил... ))))))))))))))))
20. Tatyana_012345 24 06.08.24 09:34 Сейчас в теме
всем добрый вечер , вопрос решен , но всем спасибо ...эти идеи я буду использовать в дальнейшем =)))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот