Имя: Пароль:
1C
1C 7.7
v7: Таблица в режиме ввода данных v7
0 Lyopik
 
21.02.13
22:11
Вывожу строки, в которых каждая колонка имеет различный тип (строка, число, документ, справочник и т.д.)
Метод Таблица.Область("RxCy").НазначитьТип(...) работает, только если тип ячейки "Неопределенный", а он, к сожалению, имеет по умолчанию тип "Строка", и программно меняться никак не хочет. Назначать каждой ячейке неопределенный тип нереально, т.к. не известно сколько будет строк, а их может быть до 200 000. Как быть?
1 viktor_vv
 
21.02.13
22:41
Когда-то очень давно с этим сталкивался, кроме как назначить тип заведомо большой области ничего не нашел.
2 Lyopik
 
23.02.13
01:22
Вот и я попробовал задать тип на предполагаемую область, отчет вышел более 100 М. Если пользоваться как внешним - оно конечно по барабану сколько он весит, но мне нужно в распределенной базе периферийкам. Решил попробовать по другому, параллельно с заполнением таблицы заполнять ТЗ с синхронизацией по адресу ячейки, и по клику на ячейку находить нужные данные уже из ТЗ и обрабатывать их. Тогда возник другой вопрос: нафига тогда вообще нужна эта таблица в режиме ввода данных, если в таком варианте легче выводить саму ТЗ и работать с ней, правда при таких объемах это жуткий тормоз. Теперь у меня другой вопрос, риторический: чем думали разработчики 1С, когда по умолчанию присваивали тип ячейкам "Строка" вместо "Неопределенного", если её программно изменять нельзя??? Или сделали тогда уже бы, чтобы любой тип на любой другой можно было менять что-ли?
3 NS
 
23.02.13
01:56
(0) выдели столбец, и всему столбцу -
защита = 0
вид данных = неопределённый
кнопка выбора = 1
4 NS
 
23.02.13
01:59
Не области, а полностью столбцам.
5 Lyopik
 
23.02.13
01:59
Пробовал. Это применится ко всему столбцу активной области, т.е. по пунктирную линию, ниже - "строка".
6 NS
 
23.02.13
02:02
Тогда используй пустую таблицу.
И в ней "вывестисекцию"
7 Lyopik
 
23.02.13
02:09
Не, для данной задачи не подойдет. Это обработка, в которой интерактивно меняются данные в таблице, которые сразу же меняются в сообветствующих документах и справочниках, и сразу же обновляются и пересчитываются данные в этой таблице. В обычной таблице ты так данные в ней не обновишь, не буду же я каждый раз таблицу с нуля перерисовывать...
8 NS
 
23.02.13
02:13
(7) Почему не будешь, и почему не обновить?
9 NS
 
23.02.13
02:16
Легко обновляется, совсем недавно делал кому-то рабочее место на пустой таблице.
10 Lyopik
 
23.02.13
02:22
ну да, на 100-200 строк это даже и заметно почти не будет, а на 20000-200000 строк, как в данном случае?
11 NS
 
23.02.13
02:26
И "неопределено" - зло, связано с очень неприятным глюком при объекдинении конфигураций. Точно не помню как глюк выглядит, но вроде если в новой конфигурации "Справочник", то при получении вида - вылет программы. Проявлялся в типовом ЗиКе, в личной карточке.

(10) А если в режиме ввода данных то ячейки не изменяются?
Логики не вижу. Ты точно так-же можешь в пустой таблице менять значения в ячейках и оформление ячеек, не перерисовывая таблицу. Через область.
12 Lyopik
 
23.02.13
15:06
Если честно, никогда не пытался, т.к. думал, что нельзя. По-этому сказать однозначно не могу, надо попробовать. Спасибо за совет.
13 Lyopik
 
23.02.13
16:00
Та не, ты что-то не то говоришь. В пустой странице вывод происходит только через ВыводСекции, и эта сексия выведится только в конце таблицы, в самом низу. А в определенное место ты её ни как не вставишь.
14 NS
 
23.02.13
19:22
(13) см. метод область. После того как ты вывел таблицу, и пользователь изменил значение в ячейке - ты методом таблицы область можешь менять значения в произвольных местах таблицы.
15 Lyopik
 
23.02.13
20:22
ну указал я область, назначил ей цвет, рамку, значение, ориентацию и т.д... с самой таблицей ничего не происходит.  Какой командой я должен её вывести в таблицу?
16 Тьма
 
23.02.13
21:00
(15)Щелкни мышкой по таблице - она и обновится. Можно еще просмотр выключить/включить
   таблица.толькопросмотр(0);
   таблица.толькопросмотр(1);
с тем же результататом
17 Lyopik
 
23.02.13
23:15
Вообще-то, все то, что я писал перед этим я и делаю по клику на ячейке таблицы
18 NS
 
23.02.13
23:57
(15) Таблица.Показать("",,1);
19 NS
 
24.02.13
00:12
Вот пример:
Процедура Сформировать()
   таблица.вывестисекцию("строка");
   Таблица.Показать("");
   // Пустая Таблица выведена, а теперь нужно поменять что-то в отдельных ячейках
   таблица.область(1,1,1,1).текст="апва";
   Таблица.показать("",,1);
КонецПроцедуры

Тоже самое делаешь по клику на ячейках.
20 NS
 
24.02.13
00:17
На всякий случай, вдруг у тебя не работает клик - должен быть только просмотр, и не пустая расшифровка.
21 Lyopik
 
24.02.13
02:42
Да я понял, я проверю, спасибо
Программист всегда исправляет последнюю ошибку.