Имя: Пароль:
1C
1С v8
Таблица значений. Изменение у колонки типа значений
,
0 Wefast
 
08.06.16
12:29
Есть таблица значений. И колонки имеют строковый тип данных.
Нужно у одной из колонок изменить тип данных на Число, чтобы можно было ее свернуть.

ТЧ.Колонки[1].ТипЗначения = ОписаниеТиповЧ; не работает, пишет что не доступно для записи.

А вообще у меня есть Табличное поле(Табличный документ), я вставляю туда строки, и мне нужно их свернуть и вывести.

Обработка у меня перебирает этот табличный документ и создает таблицу значений
1 Господин ПЖ
 
08.06.16
12:32
перекладывай в другую колонку
2 Pistol
 
08.06.16
12:33
Создавать сразу нужого типа? Да ну, ерунда какая-то...
3 Wefast
 
08.06.16
12:36
(2) не могу, обработка много табличных частей перебирает, универсальная можно сказать.
4 Wefast
 
08.06.16
12:37
(1) перебором строк что ли?
5 mistеr
 
08.06.16
12:38
(3) Слишком универсальная.
6 Pistol
 
08.06.16
12:42
(3) странно, что такая универсальная обработка не умеет содержать в колонке тз несколько типов. Справочники, небось, тоже к строке приводишь?
7 фобка
 
08.06.16
12:44
(4) выгрузитьколонку() загрузитьколонку()
8 Wefast
 
08.06.16
12:57
(6) Ну смотри я создаю колонку и не указываю тип, таким образом тип может быть любыми. Но числовое значение он почему то все равно поместить в виде строки
9 Pistol
 
08.06.16
13:02
(8) обработка настолько универсальная, что обрела свой разум? Поставь бряк, посмотри на левую сторону присваивания, на правую...
10 Pistol
 
08.06.16
13:04
Код присваивания покажи в конце концов
11 ptiz
 
08.06.16
13:05
(8) Покажи, как создаешь таблицу
12 mistеr
 
08.06.16
13:09
(8) А что еще ты хотел получить из таб. документа? Самому надо к числу приводить.
13 Wefast
 
09.06.16
21:42
Вот что то такое у меня сейчас:

    ТабДок = Файл;
    
    ТЗ=Новый ТаблицаЗначений();
    
    //Считываем колонки
    Для Стр=1 По ТабДок.ВысотаТаблицы Цикл

        Если Стр>1 Тогда
            ТекСтр=ТЗ.Добавить();
        КонецЕсли;
        ПустаяСтрока=истина;
        Для Кол=1 По ТабДок.ШиринаТаблицы Цикл
            Яч=ТабДок.Область(Стр, Кол);
            Если Яч.СодержитЗначение Тогда
                Зн=Яч.Значение;
            Иначе
                Зн=Яч.Текст;
            КонецЕсли;
            Если ТипЗнч(Зн)=Тип("Строка") И ПустаяСтрока(Зн) Тогда
                Зн=Неопределено;
            КонецЕсли;
            
            //Добавляем колонку
            Если Стр=1 Тогда
                Попытка
                    Если ТипЗнч(Число(ТабДок.Область(Стр+1,Кол).Текст)) = Тип("Число") Тогда
                        ТЗ.Колонки.Добавить(Зн,Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(10,2)));
                    КонецЕсли;
                Исключение
                    ТЗ.Колонки.Добавить(Зн,Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(30)));
                КонецПопытки;
            Иначе
                ТекСтр[Кол-1]=Зн;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
    
    Возврат ТЗ;
14 Wefast
 
09.06.16
21:46
В итоге я получаю сейчас таблицу значений ТЗ
Сотрудник7 | СУмма | Сотрудник8 | Сумма

Создаю таблицу

    Таб1 = Новый ТаблицаЗначений;    
    Таб1.Колонки.Добавить("Сотрудник",Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыЧисла(50)),"Сотрудник");
    Таб1.Колонки.Добавить("Сумма",Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(12,2)),"Сумма");

И пытаюсь выгрузить из моей таблицы колонку в новую таблицу

    Таб1.ЗагрузитьКолонку(ТЗ.ВыгрузитьКолонку("Сотрудник7"),"Сотрудник");

Отладкой если посмотреть то ТЗ.ВыгрузитьКолонку("Сотрудник7") является массивом с нужными мне данными.
Но в итоге Табл1 после этого всего равно пустая
15 Pistol
 
09.06.16
21:48
(13) если тип числа равен типу число... как это романтично... а если не равен?
16 Wefast
 
09.06.16
21:52
(15) Ну вызывается исключение и становится строкой
17 Wefast
 
09.06.16
21:53
(15) он Число(ТабДок.Область(Стр+1,Кол).Текст) тут вот не может к числу привести и уходит в исключение
18 Pistol
 
09.06.16
23:21
(14) использовать тип строки с квалификатором числа - бесценно...
Ты точно осознаешь, что делаешь?
Строки в таблицу Александр Сергеевич добавлять будет?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.