| 
    
            
         
         | 
    
  | 
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. | ☑ | ||
|---|---|---|---|---|
| 
    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) Я что то подобное и думал. Ну это так, для общего развития больше)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |