Имя: Пароль:
1C
1С v8
Как получить значение ячейки?
0 happysan
 
17.06.20
13:23
Как можно получить значение или текст определенной ячейки при подобной конструкции:

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

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

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

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