Имя: Пароль:
1C
 
таблицаЗначение перевод строки в числовой тип
,
0 Enot_tut
 
16.04.18
08:51
Доброе утро всем, есть в таблице значения колонка количество, с типом строка как его перевести в строку и получить итог?
1 1Сергей
 
16.04.18
08:52
Добавить новую колонку и перебором заполнить
2 Вася Теркин
 
16.04.18
08:58
при заполнении таблицы сразу сделай число. и сабжа не будет.
3 Enot_tut
 
16.04.18
09:38
(2) загрузка идет туда с помощью ПостроительОтчета
4 Cool_Profi
 
16.04.18
09:41
(3) А в построителе откуда строка?
5 Enot_tut
 
16.04.18
09:44
(4) через ексель,
6 Enot_tut
 
16.04.18
09:45
Попытка
        лкЕксель = Новый COMОбъект("Excel.Application");
    Исключение
        лкСообщение = "Невозможно загрузить MS EXCEL !!!" + Символы.ПС + ОписаниеОшибки();
        Сообщить(лкСообщение);
        Возврат ОписаниеОшибки();
    КонецПопытки;
    
    лкЭксельКниги = лкЕксель.Workbooks;
    Попытка
        КнигаИзФайла = лкЭксельКниги.Open(прПутьКФайлу,,True);
        лкЕксель.Visible = 0;
    Исключение
        лкСообщение = "Невозможно открыть файл " + прПутьКФайлу + " !!!" + Символы.ПС + ОписаниеОшибки();
        Сообщить(лкСообщение);
        Возврат ОписаниеОшибки();
    КонецПопытки;
    
    Попытка
        лкЛист= КнигаИзФайла.Sheets(Лист);    
    Исключение
        лкОшибка = ОписаниеОшибки();
        Сообщить(лкОшибка);
        
    КонецПопытки;
    
    Попытка
        лкМассивы = лкЛист.UsedRange.Value.Выгрузить();
    Исключение
        лкОшибка = ОписаниеОшибки();
        Сообщить(лкОшибка);
        лкМассивы = Новый Массив;
    КонецПопытки;
    
    //закрываем excel
    Попытка
        КнигаИзФайла.Close();
    Исключение
        лкОшибка = ОписаниеОшибки();
        Сообщить(лкОшибка + Символы.ПС + "При необходимости, закройте Ексель самостоятельно.");
    КонецПопытки;
    
    лкЭксельКниги = Неопределено;
    лкЕксель = Неопределено;
    //лкЕксель.quit(0);
    
    //отфильтровка пустых строк - отключено
    //ПроверитьМассивыДанных(лкМассивы);
    
    лкКоличество = лкМассивы[0].Количество();
    Если Не (лкМассивы.Количество() > 0 и лкКоличество > 0) Тогда
        //Нет данных, может лист не тот указали? Сообщаем выходим
        Сообщить("Книга: " + прПутьКФайлу + " , Лист: + " + Лист + " - Нет данных!");
        Возврат ОписаниеОшибки();
    КонецЕсли;
    //сама загрузка    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    лкСтрока  = 1;
    лкТекСтрока = 1;
    текСтрока = 0;  
    
    Для лкИндекс = 0 По лкКоличество-1 Цикл
        лкКолонка = 0;
        Для каждого лкКол Из лкМассивы Цикл
            
            
            если лкСтрока = 3 тогда
                текСтрока = 1;
            КонецЕсли;    
            
            если текСтрока = 1 тогда
                лкКолонка = лкКолонка + 1;
                лкЗначение = лкКол[лкИндекс];
                ТабличныйДокумент.Область(лкТекСтрока, лкКолонка).Текст = лкЗначение;
                Если  лкТекСтрока = 1 Тогда
                    Запрос = Новый Запрос;
                    Запрос.Текст =
                    "ВЫБРАТЬ
                    |    Данные.Наименование КАК Наименование,
                    |    Данные.Кафе КАК Кафе,
                    |    Данные.Склад КАК Склад
                    |ИЗ
                    |    Справочник.Данные КАК Данные
                    |ГДЕ
                    |    Данные.ЭтоГруппа = &ЭтоГруппа";
                    
                    Запрос.УстановитьПараметр("ЭтоГруппа", Ложь);
                    
                    РезультатЗапроса = Запрос.Выполнить();
                    
                    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
                    
                    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                        Если ВыборкаДетальныеЗаписи.Склад = лкЗначение тогда
                            ТабличныйДокумент.Область(лкТекСтрока, лкКолонка).Текст = ВыборкаДетальныеЗаписи.Наименование;                            
                        КонецЕсли;    
                    КонецЦикла;                
                иначе
                    ТабличныйДокумент.Область(лкТекСтрока, лкКолонка).Текст = лкЗначение;
                КонецЕсли;
            КонецЕсли;    
            
        КонецЦикла;
        если текСтрока = 1 тогда
            лкТекСтрока = лкТекСтрока+1;
        КонецЕсли;
        лкСтрока  = лкСтрока + 1;
    КонецЦикла;
    ТабличныйДокумент.ФиксацияСверху = 1;
    ПоследняяСтрока = ТабличныйДокумент.ВысотаТаблицы;
    ПоследняяКолонка = ТабличныйДокумент.ШиринаТаблицы;
    ОбластьЯчеек = ТабличныйДокумент.Область(1, 1, ПоследняяСтрока, ПоследняяКолонка);
    
    // Создаем описание источника данных на основании области ячеек табличного документа.
    ИсточникДанных = Новый ОписаниеИсточникаДанных(ОбластьЯчеек);    
    // Создаем объект для интеллектуального построения отчетов,
    // указываем источник данных и выполняем построение отчета.
    ПостроительОтчета = Новый ПостроительОтчета;    
    ПостроительОтчета.ИсточникДанных = ИсточникДанных;
    ПостроительОтчета.Выполнить();
    
    ТабЗначенийОтчетОСкладах = ПостроительОтчета.Результат.Выгрузить();
    
    Возврат ТабЗначенийОтчетОСкладах;
7 Enot_tut
 
16.04.18
09:50
а есть у кого код как пробежать именно по колонке?  а не по всей таблице?
8 AlexeiIvan
 
16.04.18
09:53
(7) Чего??
9 Enot_tut
 
16.04.18
09:54
(8) есть колонка количество, и как тока по не пробежаться?
10 AlexeiIvan
 
16.04.18
09:55
(9) Еще раз и медленнее.
11 Lexey_
 
16.04.18
09:55
(9) у тебя колонка находится вне таблицы, отдельно?
12 AlexeiIvan
 
16.04.18
09:56
(11) Да, отдельно стоящая )
13 Enot_tut
 
16.04.18
09:58
(11) она находиться в таблице значения
14 Darych
 
16.04.18
09:58
понедельнично)
15 Lexey_
 
16.04.18
09:59
(13) ну и чем тогда тебя не устраивает пробег по всей таблице?
16 AlexeiIvan
 
16.04.18
09:59
(13) Ну, и?
17 Сияющий в темноте
 
16.04.18
09:59
Отдельно стоящая колонка,это массив,получается через ВыгрузитьКолонку,но зачем?
18 AlexeiIvan
 
16.04.18
09:59
(15) Сложно это.
19 Lexey_
 
16.04.18
10:04
(6) это гениально, что в базе данных есть справочник, который называется "Данные"
20 Enot_tut
 
16.04.18
10:04
(17) связана тем что количество колонок всегда разная, могут быть 3 колонки а могут и 16
21 Darych
 
16.04.18
10:05
(20) да хоть 100... обращаться тебе все равно к одной
22 AlexeiIvan
 
16.04.18
10:05
(20) И?
23 Enot_tut
 
16.04.18
10:09
(21) а у него постоянно название меняется  количество(аркады_55а) или количество(винокурово_7б)
24 Lexey_
 
16.04.18
10:11
(23) а как же ты тогда собрался по одной колонке бежать, если не знаешь ее названия?
25 Darych
 
16.04.18
10:15
(23) партизанщина... может еще о чем умолчал? Имя колонки то знаешь?
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.