Имя: Пароль:
1C
1С v8
Длина строки запроса в серверной базе данных
0 sakiselev
 
25.11.13
14:42
Существует ли ограничение на длину строки и как его обойти?

База серверная, на sql
Пытаюсь динамически сформировать запрос. Выбираю все поля из таблицы значений (а их там около 880 колонок в ТЗ)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.Текст = "ВЫБРАТЬ  *   ПОМЕСТИТЬ ВременнаяТаблица   ИЗ  &ДанныеИзТЗ КАК ДанныеИзТЗ ";
ЗАпрос.УстановитьПараметр("ДанныеИзТЗ",Свод);
Результат = Запрос.Выполнить().Выбрать();

и в этот момент выдает ошибку:
"Ошибка СУБД:
microsoft OLE DB Provider for SQL server: ошибка создания или изменения таблицы "#tt#461" , так как минимальный размер строки равен 8076, включая 117 байт внутренней дополнительной памяти. Это превышает максимально допустимый размер строки таблицы, 8060 байт"

если сделаю чуть меньше колонок, то временная таблица формируется.

Есть какие нибудь мысли как это обойти?
1 shuhard
 
25.11.13
14:43
(0)[Выбираю все поля из таблицы значений (а их там около 880 колонок в ТЗ) ]
отменная трава
2 Rie
 
25.11.13
14:46
(0) Но интересный вопрос - а зачем в таблице значений аж 880 колонок?
Соорудить такую бяку - немало трудов ведь было положено...
3 Рэйв
 
25.11.13
14:48
Наверное это регистр сведений. На каждую дату добавляют колонку со значением:-)
4 Rie
 
25.11.13
14:51
Наверное, автор не догадался, что таблица
        чегото1   чегото2
чтото1     12        10
чтото2      1         3

представляется в виде

чтото1 чегото1 12
чтото1 чегото2 10
чтото2 чегото1  1
чтото2 чегото2  3
5 oleg_km
 
25.11.13
14:55
(3) Я сталкивался с таким решением, зато у разработчика всегда есть работа: на новый год добавить еще 12 колонок
6 sakiselev
 
25.11.13
14:56
умных много смотрю, если знаете - подскажите, если нет то не нужно тролить.
7 Rie
 
25.11.13
14:57
(5) А имена ресурсов - стоились динамически, путём сложных манипуляций с датой?
Вот как простое решение обеспечивает 1Сника стабильной и непыльной работой на долгие-долгие годы... Это - талант.
8 Rie
 
25.11.13
14:58
(6) А без утюга и паяльника - ты не сам догадаешься рассказать, что это за 880 колонок?
9 sakiselev
 
25.11.13
14:58
то rie: в самой таб.части - в строке всего 5 реквизитов
10 sakiselev
 
25.11.13
14:59
какая разница что в этих колонках. Вопрос в том - есть ограничение или нет ? и как его  обойти.
11 Rie
 
25.11.13
15:00
(9) Так а 880 _колонок_ - сами сконденсировались из жидкого вакуума?
12 sakiselev
 
25.11.13
15:00
то что  ограничение есть, уже сам нашел. Ограничение скуля 8060. И вопрос был для тех кто сталкивался
13 Rie
 
модератор
25.11.13
15:01
(10) Вот разница как раз - очень существенная.
Тебе нужна помощь? Тогда выкладывай информацию.
Не нужна? Ну что ж, не нужна так не нужна, ветку прикрою, делов-то.
14 sakiselev
 
25.11.13
15:02
уух,  мне нужно на форму вывести сводную таблицу, в которой количество колонок может быть разное (т.е динамически из раза в раз меняется). В таблице сводные данные на год планирования и т.д

Переводим формирование некоторых документов из экселя в 1с
15 sakiselev
 
25.11.13
15:04
в зависимости от данных в этих 5 реквизитах строки таб части и появляются новые колонки
16 МихаилМ
 
25.11.13
15:04
(0)
разбейте тз и временные таблицы на 2
и соедините


в случае роста числа колонок - на большее кол-во

проверьте формирование временной таблицы с 880 полями
в субд

если создасться - анализируте текст запроса 1с


скорее всего 880 полей говорит о неверном решении задачи, тк  880 параметров человек проконтролировать не способен.
17 sakiselev
 
25.11.13
15:04
скажем так, каждая колонка соответстует складу в определенный период
18 МойКодУныл
 
25.11.13
15:04
(16) Зато строка, небось, одна:)
19 Rie
 
25.11.13
15:05
(14) Насчёт сводной таблицы - см. (4).
20 Rie
 
25.11.13
15:05
(15) Вот и сделай поля "Склад" и "Период".
21 sakiselev
 
25.11.13
15:05
(16) я согласен что столько колонок это бред. но задача стоит - и мы ее делаем
22 Рэйв
 
25.11.13
15:06
(17)Разворачивай периоды вниз, а склады вбок. Увидишь как сразу все станет компактнее
23 МихаилМ
 
25.11.13
15:07
(17)

налицо признак болезни одинэсника - путать данные и их представление.
24 МойКодУныл
 
25.11.13
15:07
+1. Проще создать новую правильную структуру хранения и запустить обработку, которая ее заполнит. Это будет и правильнее и быстрее в итоге.
25 sakiselev
 
25.11.13
15:08
(22) вниз разворачивается номенклатура
26 Rie
 
25.11.13
15:09
(25) У табя реляционная таблица. Что куда разворачивается - неважно. Это оно при отображении - "верх", "лево". А так - лишь множество полей.
27 sakiselev
 
25.11.13
15:10
нужна сводная таблица по месяцам, в каждом месяце вывести данные по 50 складам и по всей номенкатуре. Ваши предложения?
28 sakiselev
 
25.11.13
15:10
все это на одной форме
29 МихаилМ
 
25.11.13
15:13
на всякий случай, это ошибка мс скл 1701
30 ОдинСерый
 
25.11.13
15:13
мать моя женщина :)))
31 Rie
 
25.11.13
15:14
(27) Раздели две фазы этого процесса:
1) получение таблицы;
2) вывод таблицы;

Тебе никто не мешает, _получив обычныю таблицу_, выводить первое поле - по вертикали, второе - по горизонтали, а в пересечения вписывать третье поле.
32 sakiselev
 
25.11.13
15:14
(4) именно так и выполнено, я же написал что в таб части всего 5 колонок (реквизитов)
33 МойКодУныл
 
25.11.13
15:15
самое удобное выводить в строках группировку по складу, под ним номенклатуру, а в колонках месяца.
34 МойКодУныл
 
25.11.13
15:15
этож отчет по остаткам на складах с группировкой колонок по месяцу.
35 Rie
 
25.11.13
15:15
(32) Так откуда у тебя в запросе 880 колонок и до хрена символов?
36 sakiselev
 
25.11.13
15:15
(33)
задача как раз наоборот
37 ОдинСерый
 
25.11.13
15:16
(27)
как так программить то не зная основ программирования.
месяц
склад
номенклатура
значение1....
значение10. не надо 880колонок
38 Rie
 
25.11.13
15:17
(36) Ты в курсе, что в 1С _есть_ сводные таблицы. Сами всё разместят - было бы что размещать.
39 sakiselev
 
25.11.13
15:17
(35)
ну там получается не 50 складов а больше штук 65-70, эт я округлил
40 sakiselev
 
25.11.13
15:21
(38) вкурсе, но работать не приходилось с ними
41 Жан Пердежон
 
25.11.13
15:26
ТС, читай, что тебе умные люди в (31) пишут
42 sakiselev
 
25.11.13
15:30
(31) не совсем понятно.
Я и так сначало получаю обычную ТЗ, формируемую по куче условий.(в которой гора колонок). Из нее я уже пытаюсь выбрать все поля(колонки) и вывести на форму деревом.
По сути мне и запрос то нужн только для того чтобы деревом вывести данные из полученной ТЗ
43 sakiselev
 
25.11.13
15:32
(31) или вы имеете ввиду получить сначала тз с 3 колонками и потом выводить?
44 vde69
 
модератор
25.11.13
15:32
любой вывод информации должен быть адекватным для воспиятия его человеком.

таблица в 10 тыс строк и 600 колонок средним человеком не может восприниматся адекватно...

Задача не имеет итоговых форм, скорее всего задача свелась к диалогу
- ты сделай а я потом в екселе фильтры буду накладывать....

такие задачи нельзя решать так как хочет тупой юзер, такие задачи нужно дробить, например для каждого месяца делаем отдельный лист в екселе, или для склада...
45 sakiselev
 
25.11.13
15:34
(44) не я же задачу придумал, задача поставлена свыше. и о плохом восприятии выведенных данных высказывалось постановщику
46 vde69
 
модератор
25.11.13
15:35
(44)+

для тебя скорее всего нужно так

отчет 1
месяц - 144.00
  Склад1 - 123.00
  Склад1 - 21.00

и делаешь расшифровку "номенклатура" по клику
47 vde69
 
модератор
25.11.13
15:36
(45) откажись от задачи... понимаешь при таких обьемах следующий вопрос будет "а почему 1с зависает при сохранении в ексель... ", а 1с действительно будет зависать...
48 sakiselev
 
25.11.13
15:37
(47) мы в эксель не сохраняем. пытаемся сделать документы подобные тем, которые были в экселе раньше
49 sakiselev
 
25.11.13
15:38
(46) так не получится. им нужно в одну сроку видеть план поставок номенклатуры во все магазины на год
50 ОдинСерый
 
25.11.13
15:38
(42) почитай что такое СКД или схема компоновки данных и посмотри как делается шахматка тогда поймешь что все что ты сделал это бред.
51 vde69
 
модератор
25.11.13
15:38
(48) не надо пытатся из 1с сделать ексель....

иначе вопрос - зачем переходите?

1с - это совсем другой идеологически продукт. Ломайте заказчиков или отказывайтесь.
52 sakiselev
 
25.11.13
15:41
(47) то что отказаться можно  - это уже другой вопрос. Вопрос изначально стоял в другом. Столкнулся с ошибкой длины строки запроса - хотел услышать что это такое и можно ли обойти. (настроить sql или еще чего-то). Если нет - то само собой придется уменьшать длину запроса, а каким путем - это другой вопрос
53 sakiselev
 
25.11.13
15:42
(50) - это не отчет
54 МихаилМ
 
25.11.13
15:48
(52)

id складов (16 байт) запакуйте в числа (1 байт)

тоже самое с периодами.
55 МихаилМ
 
25.11.13
15:50
+(54)
если хотите фильторовать данные в тз
то с этим прекрасно справится построитель запроса.