Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как получить значение ячейки?

Как получить значение ячейки?
Я
   happysan
 
17.06.20 - 13:23
Как можно получить значение или текст определенной ячейки при подобной конструкции:

    ФайлПриемник = ПолучитьИмяВременногоФайла("xls");
    
    ДанныеХранилища = ПолучитьИзВременногоХранилища(АдресХранения);
    ДанныеХранилища.Записать(ФайлПриемник);
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ФайлПриемник);       
    
    ЛистПрограмма = ТабДок.Области.Программа;  - лист получен, но может ещё как-то можно сразу ячейку получить?
   happysan
 
1 - 17.06.20 - 13:28
Это попытка прочитать файл Excel.
   Franchiser
 
2 - 17.06.20 - 13:28
ТабДок.Область("C4:C5").Значение
   happysan
 
3 - 17.06.20 - 13:30
(2) А как позиционирование на листе предварительно?
   happysan
 
4 - 17.06.20 - 13:31
Лист "Программа".
   Franchiser
 
5 - 17.06.20 - 13:31
Метод табличного документа "Прочитать" читает все листы в 1 (один) табличный документ на платформах 8.3.6-8.3.9, а на платформе 8.3.10 можно считать отдельные листы файла EXCEL.
   Franchiser
 
6 - 17.06.20 - 13:32
Для 8.3.10
&НаСервере
Функция ПолучитьСписокЛистов_EXCEL1C(Знач ФайлEXCEL)
    Перем ТабличныйДокумент, ОбластьТД;
    Перем СписокЛистов;

    СписокЛистов = Новый СписокЗначений;
    
    ТабличныйДокумент = Новый ТабличныйДокумент;
    Попытка
        // Выполняется долго на больших файлах.

        ТабличныйДокумент.Прочитать(ФайлEXCEL);
    Исключение
        Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
        Возврат Новый СписокЗначений;
    КонецПопытки;
    
    Для Каждого ОбластьТД ИЗ ТабличныйДокумент.Области Цикл
        СписокЛистов.Добавить(ОбластьТД.Имя);
    КонецЦикла;
    
    Возврат СписокЛистов;
    
КонецФункции
   Franchiser
 
7 - 17.06.20 - 13:36
// Платформа 8.3.10 (Облать = Лист данных).

ОбластьФайла = ТабличныйДокумент.ПолучитьОбласть(ИмяЛиста);
Область = ОбластьФайла.ПолучитьОбласть("R"+нСтрока+"C"+нКолонка);
ТекущаяОбласть = Область.ТекущаяОбласть;
ЗначениеЯчейки = ТекущаяОбласть.Значение;
   Franchiser
 
8 - 17.06.20 - 13:39
ЛистПрограмма = ТабДок.ПолучитьОбласть("Программа");
Область = ОбластьФайла.ПолучитьОбласть("R1C1");
ТекущаяОбласть = Область.ТекущаяОбласть;
ЗначениеЯчейки = ТекущаяОбласть.Значение;
   happysan
 
9 - 17.06.20 - 13:52
(6) Сделал так:
&НаСервереБезКонтекста
Функция ВыполнитьЗагрузкуНаСервере(АдресХранения)

    ФайлПриемник = ПолучитьИмяВременногоФайла("xls");
    
    ДанныеХранилища = ПолучитьИзВременногоХранилища(АдресХранения);
    ДанныеХранилища.Записать(ФайлПриемник);
    
    ТабДок = Новый ТабличныйДокумент;
    ТабДок.Прочитать(ФайлПриемник, СпособЧтенияЗначенийТабличногоДокумента.Значение);       
    
    ЛистПрограмма = ТабДок.ПолучитьОбласть("Программа");
    Область = ЛистПрограмма.ПолучитьОбласть("R4C3");
    ТекущаяОбласть = Область.ТекущаяОбласть;
    ЗначениеЯчейки = ТекущаяОбласть.Значение;

Но "Поле объекта недоступно для чтения (Значение)", специально даже указал: ТабДок.Прочитать(ФайлПриемник, СпособЧтенияЗначенийТабличногоДокумента.Значение);   Хотя поле "Текст" выдаёт нужно, но если дату буду получать и присваивать реквизиту 1С?
   happysan
 
10 - 17.06.20 - 14:02
Читает только так: ЗначениеЯчейки = ТекущаяОбласть.Текст;
   happysan
 
11 - 17.06.20 - 14:03
А по каким причинам ЗначениеЯчейки = ТекущаяОбласть.Значение; - значение недоступно для чтения?
   happysan
 
12 - 17.06.20 - 14:33
Franchiser, спасибо!
   Franchiser
 
13 - 17.06.20 - 16:31
(11) при чтении файла можно считывать данные как текст , а можно как значения. Там есть параметр у Прочитать() м.б. с этим связано. Я читаю как текст обычно, т.к. иначе проблемы по значениям с плавающей точкой (нужно округлять).
   happysan
 
14 - 17.06.20 - 16:38
(13) Ну да, так и установил параметр у Прочитать(), сообщил в конце (9), но не помогает. Пока только одна проблема как перевести текст "29.02.2020г." в тип "Дата"? Начал строить выражение, но порядок цифр в дате другой: Формат(СтрЗаменить(Лев(ЛистПрограмма.ПолучитьОбласть("R6C10").ТекущаяОбласть.Текст, 10), ".", ""), "ДЛФ=Д")  - а на выходе всё равно строка, так как сначала должен идти год, месяц и число. Поэтому предполагал, что могу сразу значение типа "Дата" получить из табличного документа.
   happysan
 
15 - 17.06.20 - 16:39
Придётся перебрать эту строку с датой и превратить в нужный порядок цифр: ГГГГММДД.
   happysan
 
16 - 17.06.20 - 16:59
Сделал так: Дата(Лев(ЛистПрограмма.ПолучитьОбласть("R6C10").ТекущаяОбласть.Текст, 10)  +" 0:00:00");
   happysan
 
17 - 21.06.20 - 18:16
Кто в курсе, как пропускать при построчной загрузке из Excel объединенные ячейки с названиями групп номенклатуры?
   happysan
 
18 - 21.06.20 - 18:19
И как при вышеописанной конструкции загрузки лучше организовать построчную загрузку?
   Chameleon1980
 
19 - 21.06.20 - 18:30
(14) потому что формат строку возвращает
   happysan
 
20 - 21.06.20 - 18:50
(19) Нет, до формата проблема, но этот вопрос уже обойдён. Интересует (17),(18).
   hhhh
 
21 - 21.06.20 - 18:53
(17) в строке группы какие-то поля пустые. Проверять например, если НЕ ЗначениеЗаполнено(ЯчейкаАртикул)    то считаем, что это строка группы.
   Chameleon1980
 
22 - 21.06.20 - 18:55
для н=нужнаяперваястрока по тд.высотатаблицы
   happysan
 
23 - 21.06.20 - 19:50
(21), (22) Спасибо за информацию!


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.