|
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. | ☑ | ||
---|---|---|---|---|
0
yyyuuu
29.10.18
✎
02:52
|
Здравствуйте, уже перепробовал все. Сделал все что можно, и через временное храненилище и через массив да через все что угодно. Не работает все ровно ошибка.
{ВнешняяОбработка.ЗагрузкаЭлектроныхАдресовИзЭксель.Форма.Форма.Форма(64)}: Ошибка при вызове метода контекста (ПрочитатьЛистExcel) ТЗ = ПрочитатьЛистExcel(Объект.Поле); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: param Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable' |
|||
1
yyyuuu
29.10.18
✎
02:53
|
Файловая база.
Сам код Функция ПрочитатьЛистExcel(Адрес, ТЗ = Неопределено, НомерЛиста = 1, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт ExcelApplication = Новый COMObject("Excel.Application"); ФайлЭксель = ExcelApplication.WorkBooks.Open(Адрес); ЛистЭксель = ФайлЭксель.Sheets(НомерЛиста); Если ВсегоСтрок = 0 Тогда ВсегоСтрок = ЛистЭксель.Cells.SpecialCells(11).Row; КонецЕсли; Если ВсегоКолонок = 0 Тогда ВсегоКолонок = ЛистЭксель.Cells.SpecialCells(11).Column; КонецЕсли; Если ТЗ = Неопределено Тогда ТЗ = Новый ТаблицаЗначений; Для Счетчик = 1 По ВсегоКолонок Цикл ТЗ.Колонки.Добавить("Колонка"+Счетчик, Новый ОписаниеТипов("Строка")); КонецЦикла; КонецЕсли; Для Счетчик = НомерПервойСтроки По ВсегоСтрок Цикл НоваяСтрока = ТЗ.Добавить(); КонецЦикла; Область = ЛистЭксель.Range(ЛистЭксель.Cells(НомерПервойСтроки,НомерПервойКолонки), ЛистЭксель.Cells(ВсегоСтрок,ВсегоКолонок)); Данные = Область.Value.Выгрузить(); Для Счетчик = 0 По ВсегоКолонок-1 Цикл ТЗ.ЗагрузитьКолонку(Данные[Счетчик], Счетчик); КонецЦикла; ExcelApplication.DisplayAlerts = 0; ExcelApplication.Quit(); ExcelApplication = Неопределено; //Возврат ТЗ; АдресХранилища = ПоместитьВоВременноеХранилище(ТЗ,УникальныйИдентификатор); ПротоколПереноса = ПолучитьИзВременногоХранилища(АдресХранилища); //Возврат ПротоколПереноса; // Адрес = ПоместитьВоВременноеХранилище(ТЗ ,Новый УникальныйИдентификатор); ЭтаФорма.Реквизит1 = Адрес; //Возврат ТекстТЗ = ЗначениеВСтрокуВнутр(ТЗ); ТаблицаЗначений = ЗначениеИзСтрокиВнутр(ТекстТЗ); // КонецФункции &НаКлиенте Процедура ВыборФайлаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка) // Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие); Диалог.Заголовок = "Выберете excel - файл"; Диалог.ПолноеИмяФайла = "C:\Users\Nikita.Vasilev\Documents\Эксель электронная почта"; Диалог.Фильтр = "Таблицы (*.xls,*.xlsx)|*.xls;*.xlsx;|Microsoft Excel 97/2000/XP/2003 (*.xls)|*.xls|Microsoft Excel 2007/2010 (*.xlsx)|*.xlsx"; // Если Диалог.Выбрать() Тогда // Объект.Поле = Диалог.ПолноеИмяФайла; // КонецЕсли; // ТЗ = ПрочитатьЛистExcel(Объект.Поле); // Данные = ПолучитьИзВременногоХранилища(ЭтаФорма.Реквизит1); Сообщить(ЭтаФорма.Реквизит1); КонецПроцедуры |
|||
2
H A D G E H O G s
29.10.18
✎
03:02
|
Функция ПрочитатьЛистExcel(Адрес, ТЗ = Неопределено, НомерЛиста = 1, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт
заменить на Функция ПрочитатьЛистExcel(Адрес, Знач ТЗ = Неопределено, НомерЛиста = 1, НомерПервойСтроки = 1, НомерПервойКолонки = 1, ВсегоСтрок = 0, ВсегоКолонок = 0) Экспорт |
|||
3
yyyuuu
29.10.18
✎
03:09
|
О, немного продвинулся дальше. Спасибо, помогло. Буду теперь дальше разбираться)
|
|||
4
yyyuuu
01.11.18
✎
03:07
|
Поменял на Знач и в Массив. Кому поможет забирайте работает на файловом варианте.
Массив = Новый Массив(); СтруктураСтрокой = ""; НужнаЗапятая = Ложь; // Для Каждого Колонка Из ТЗ.Колонки Цикл // Если НужнаЗапятая Тогда // СтруктураСтрокой = СтруктураСтрокой + ","; // КонецЕсли; // СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя; НужнаЗапятая = Истина; // КонецЦикла; // Для Каждого Строка Из ТЗ Цикл // НоваяСтрока = Новый Структура(СтруктураСтрокой); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); Массив.Добавить(НоваяСтрока); // КонецЦикла; // Возврат Массив; |
|||
5
H A D G E H O G s
01.11.18
✎
04:07
|
(4) Откройте для себя магию белого.
Блин. Магию общих модулей типовых конфигураций общего назначения. ТаблицаЗначенийВМассивСтруктур() вроде функция зовётся. |
|||
6
hhhh
01.11.18
✎
06:04
|
(5) Достаточно просто сделать реквизит формы типа ТЗ
Это будет массив структур А РеквизитФормыВЗначение("ТЗ") : это будет таблица значений |
|||
7
yyyuuu
02.11.18
✎
04:00
|
(5) у меня все пока костылями)))
|
|||
8
yyyuuu
02.11.18
✎
04:00
|
(6)
Ты предлагаешь на форме создать ТЗ и в нее все передать? |
|||
9
Chameleon1980
02.11.18
✎
04:58
|
(3) а смысл то понял?
|
|||
10
yyyuuu
02.11.18
✎
05:30
|
(9) Таблицу значений передать с сервака на клиент запрщенно. Понял(
|
|||
11
yyyuuu
02.11.18
✎
07:53
|
А почему такое интересное поведение нет)
|
|||
12
Cyberhawk
02.11.18
✎
07:58
|
Значит не понял
|
|||
13
yyyuuu
02.11.18
✎
08:07
|
Смотря что понять надо было). Я если честно запутался в вопросе.
Я понял что нельзя передавать таблицу значений, ну запрщенно 1с. Но можно передать массив. Почему (2). улучшило общую ситуацию не понял |
|||
14
hhhh
02.11.18
✎
08:13
|
(8) я предлагаю создать реквизит формы ТЗ и ничего никуда не передавать. С этим реквизитом можно спокойно работать и на клиенте и на сервере.
|
|||
15
Cyberhawk
02.11.18
✎
09:35
|
"Почему (2). улучшило общую ситуацию не понял" // Ну так визуально отличия видишь?
|
|||
16
yyyuuu
02.11.18
✎
10:07
|
(14) что создал просто реквизит и он сам понял, что туда тз мою надо пихать)?
|
|||
17
yyyuuu
02.11.18
✎
10:10
|
(15)
Выгружая ТЗ в массив и возращая или массив или строку, да что угодно. Выдавало ошибку, бла бла бла XTDO сервер клиент, шайтан машина отказывалась делать то что ей приказано. Поставил знач, пошло поехало. И строка возращалась и массив и все шо угодно. На серверном варианте все работает без присваиваниея "знач". Почему, если какие то обьяснения будут, Я вообще послушаю их с интересом. |
|||
18
yyyuuu
08.11.18
✎
03:43
|
Если кто нибудь когда нибудь будет читать мои темы и появятся вопросы пишите
https://t.me/Nikitaje |
|||
19
H A D G E H O G s
08.11.18
✎
03:58
|
(17) Без ЗНАЧ функция возвращает на Клиент ТаблицуЗначений, созданную тобой на сервере через параметр ТЗ. Если указываем ЗНАЧ - на сервере создается копия переменной ТЗ, с которой работает код на сервере и которая не возвращается на Клиент.
|
|||
20
yyyuuu
08.11.18
✎
04:27
|
(19) Я что то подобное и думал. Ну это так, для общего развития больше)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |