|
Загрузка из Exel | ☑ | ||
---|---|---|---|---|
0
Falanger
23.08.17
✎
16:05
|
Здравствуйте.
Самая заезжанная тема из всех возможных. Но вот встал вопрос и можно переписать слегка по другому, но хочется понять почему ей так не нравится. вот код: &НаКлиенте Процедура ПутьКФайлуНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выбор файла"; Диалог.Фильтр = "Excel файлы(*.xls;*.xlsx)|*.xls;*.xlsx"; Диалог.ИндексФильтра = 0; Диалог.ПредварительныйПросмотр = Ложь; Диалог.ПроверятьСуществованиеФайла = Истина; Диалог.МножественныйВыбор = Ложь; Диалог.ПолноеИмяФайла = ПутьКФайлу; Элемент.Значение = Диалог.ПолноеИмяФайла; Если Диалог.Выбрать() Тогда ПутьКФайлу = Диалог.ПолноеИмяФайла; КонецЕсли; КонецПроцедуры Элемент.Значение не хочет понимать, или это только для обычного приложения? |
|||
1
Lexey_
23.08.17
✎
16:12
|
(0) да
|
|||
2
Falanger
23.08.17
✎
16:13
|
))) заездили тему, что не вызывает интереса
|
|||
3
Falanger
23.08.17
✎
16:14
|
никак не найду что поправить для управляемой формы, хочется что бы откликалась
|
|||
4
Lexey_
23.08.17
✎
16:17
|
(3) устанавливай значение реквизита формы, а не элемента формы
|
|||
5
Falanger
23.08.17
✎
16:25
|
так пробовал, говорит что поле объекта не обнаружено.
не пойму это связано с тем что тип реквизита - любая ссылка? надо на строку переделывать и писать команду? так не хотел, хотел по проще. Просто до этого писал на обычных приложениях, а тут чёта к вечеру заработался) |
|||
6
Lexey_
23.08.17
✎
16:27
|
(5) значит, не так делал
|
|||
7
Falanger
23.08.17
✎
16:34
|
(6) ну об этом я догадался, вряд ли стал бы тревожить если смог справится сам.
|
|||
8
Falanger
23.08.17
✎
16:35
|
не соображу как установить значение реквизите, всё вроде стандартно делаю
|
|||
9
Lexey_
23.08.17
✎
16:36
|
(8) что значит стандартно?
|
|||
10
Wirtuozzz
23.08.17
✎
16:37
|
(8) Реквизит доступен через отладчик? он на форму то выведен?
|
|||
11
Falanger
23.08.17
✎
16:43
|
на форме реквизит да есть, ПутьКФайлу (тип любая ссылка), что-то не верно?
|
|||
12
Falanger
23.08.17
✎
16:44
|
(9) стандартно - это код пред вами (0), как мне кажется (конечно ошибаюсь раз не работает), что так и должно быть, только элемент надо заменить, а как не соображу
|
|||
13
Numerus Mikhail
23.08.17
✎
16:45
|
(11) ПутьКФайлу должен быть строкой, по моим подсчетам.
А в коде замени Элемент.Значение на ПутьКФайлу |
|||
14
Numerus Mikhail
23.08.17
✎
16:45
|
Или я уже заработался и не понимаю что происходит
|
|||
15
Falanger
23.08.17
✎
16:46
|
(10) через отладчик он его видит как поле формы
|
|||
16
Falanger
23.08.17
✎
16:47
|
сам заработался, но (13) если должен быть строкой, тогда надо команду добавлять иначе как выбрать файл(ПутьКФайлу)
|
|||
17
Wirtuozzz
23.08.17
✎
16:47
|
(11) тип не тот. должна быть строка неограниченной длины.
|
|||
18
Numerus Mikhail
23.08.17
✎
16:49
|
(16) Вот рабочий код
Режим = РежимДиалогаВыбораФайла.Открытие; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим); ДиалогОткрытияФайла.Заголовок = "Выберите файл"; Если ДиалогОткрытияФайла.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла; КонецЕсли; Я вообще не очень понимаю, зачем у вас строки Диалог.ПолноеИмяФайла = ПутьКФайлу; Элемент.Значение = Диалог.ПолноеИмяФайла; |
|||
19
Falanger
23.08.17
✎
16:51
|
(18) верхняя согласен, лишняя)
|
|||
20
Numerus Mikhail
23.08.17
✎
16:52
|
(19) И нижняя тоже)
обе строчки убрать и всё будет работать |
|||
21
Falanger
23.08.17
✎
16:55
|
а чем же вызвать файл? xls-который. Если тип реквизита -
строка |
|||
22
Falanger
23.08.17
✎
16:57
|
в команде писать?
|
|||
23
Numerus Mikhail
23.08.17
✎
16:59
|
(21) Как понять чем вызвать?
Что должно происходить после того, как выбран файл? |
|||
24
dezss
23.08.17
✎
17:02
|
(21) Диалог нужен только для того, чтобы получить ПутьКФайлу. Он не получит сам файл. Сам файл потом получай и обрабатывай по тому пути, который вернет диалог.
|
|||
25
Falanger
23.08.17
✎
17:13
|
сорри не верно выразился. Имел ввиду при коде (18) и реквизите формы ПутьКФайлу (тип Строка), как Диалог поймёт какой файл. Файл нужно выбрать
А как выбрать его можно ссылкой? |
|||
26
dezss
23.08.17
✎
17:19
|
(25) Диалог, это окошко выбора файла, которое нужно только для того, чтобы пользователь показал где этот файл лежит.
Диалог ничего не понимает, понимать должен именно пользователь, который его использует. А если ты уже знаешь где этот файл, то нафиг тебе диалог вообще? Блин, вроде ж не пятница. Народ заработался, новогодние праздники нужны уже))) |
|||
27
Numerus Mikhail
23.08.17
✎
17:20
|
(25) Что значит выбрать файл ссылкой?
На строчке Если ДиалогОткрытияФайла.Выбрать() Тогда появится диалог выбора файла. Там ты выберешь нужный и запишешь путь к этому файлу затем уже будешь работать с файлом, путь которого тебе известен XLS = Новый COMОбъект("Excel.Application"); FileXLS = XLS.WorkBooks.Open(ПутьКФайлу); ну или чего там тебе надо |
|||
28
Falanger
23.08.17
✎
17:28
|
Да уж даже не четверг))
какой тип должен быть у реквизита формы ПутьК Файлу? |
|||
29
Numerus Mikhail
23.08.17
✎
17:33
|
(28) СТРОКА
|
|||
30
Вафель
23.08.17
✎
17:33
|
(28) Ты же сам написал в (25)
|
|||
31
Falanger
23.08.17
✎
17:54
|
Ох, совсем запутался. Вод код, но я никак не пойму как указать путь к файлу xls который у меня на диске лежит.
&НаКлиенте Процедура ПутьКФайлуНачалоВыбора(ПутьКФайлу, ДанныеВыбора, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); ДиалогОткрытияФайла.Заголовок = "Выберите файл"; ДиалогОткрытияФайла.Фильтр = "Exel файлы (*.xls;*.xlsx)|*.xls;*.xlsx"; ДиалогОткрытияФайла.ИндексФильтра = 0; Если ДиалогОткрытияФайла.Выбрать() Тогда ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла; КонецЕсли; Объект.Свойство(ПутьКФайлу); КонецПроцедуры &НаСервереБезКонтекста Функция ПутьКФайлуНачалоВыбораНаСервере1(ТЗ = Неопределено, ПутьКФайлу = Неопределено, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт //Если ЛистЭксель = Неопределено Тогда ЛистЭксель = ПолучитьCOMОбъект("Excel.Application"); Книга = ЛистЭксель.WorkBooks.Open(ПутьКФайлу); //КонецЕсли; Если ВсегоСтрок = 0 Тогда ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row; КонецЕсли; Если ВсегоКолонок = 0 Тогда ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column; КонецЕсли; Если ТЗ = Неопределено Тогда ТЗ = Новый ТаблицаЗначений; Для Счетчик = 1 По ВсегоКолонок Цикл ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка")); КонецЦикла; КонецЕсли; Для Счетчик = НомерПервойСтроки По ВсегоСтрок Цикл НоваяСтрока = ТЗ.Добавить(); КонецЦикла; Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок)); Данные = Область.Value.Выгрузить(); Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик); КонецЦикла; ЛистЭксель = Неопределено; Возврат ТЗ; КонецФункции |
|||
32
Falanger
23.08.17
✎
17:55
|
Объект.Свойство(ПутьКФайлу); - не обращаем внимание, случайно попало))
|
|||
33
Falanger
23.08.17
✎
17:56
|
Жёстко привязываться к файлу не вариант, он может перемещаться.
|
|||
34
Numerus Mikhail
23.08.17
✎
18:00
|
(33) Если он может перемещаться, то никак
Придумывай другую реалиацию храни его в хранилище значений в самой базе тогда |
|||
35
Falanger
23.08.17
✎
18:05
|
Неужели в управляемой форме нельзя сделать реквизит с кнопкой выбора, чтобы можно было указать месторасположения файла и далее с ним работать?
В простой форме я так и делал. Был реквизит с кнопкой выбора, тыкал в его местонахождение и далее по цепочке.. |
|||
36
Fram
23.08.17
✎
18:24
|
казалось бы, а причем тут Excel?
|
|||
37
Fram
23.08.17
✎
18:27
|
(35) можно. делай. я, например, так и не понял в чем проблема?
|
|||
38
Fram
23.08.17
✎
18:38
|
(31) подразумевается что ПутьКФайлуНачалоВыбораНаСервере1 будет вызываться с клиента?.. не будет работать
|
|||
39
Tateossian
23.08.17
✎
19:23
|
(19) Не лишняя. Это чтоб диалог выбора спозиционировался на ранее выбранном файле, если путь к нему заполнен.
|
|||
40
dezss
24.08.17
✎
10:03
|
(31) теперь все понятно. Ты наткнулся на те же грабли, на какие тыкаются почти все, когда переходят на УФ. У тебя ПутьКФайлу - это путь на клиенте, т.е. на самом клиентсом компе, а ты пытаешься этот путь открыть на сервере (да-да, на физическом сервере), а там его тупо нет, так как это путь на клиенте!!!
Про делай все на клиенте, не пихай в ТЗ, а пихай в массив структур и все будет гут. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |