|
Как получить значение ячейки? | ☑ | ||
---|---|---|---|---|
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) Спасибо за информацию!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |