Ошибка отображения типов отсутствует отображение для типа файл

Передать пачку файлов на клиент

Я
   John83

29.10.19 — 09:55

На сервере создаю несколько csv-файлов, нужно их сохранить на клиенте.

Попробовал вернуть массив файлов, но ругается

Ошибка отображения типов:

Отсутствует отображение для типа ‘Файл’

Вроде как файл доступен и на клиенте.

Делаю так

МассивФайлов = Новый Массив;

ТекстовыйФайлЗапись = Новый ЗаписьТекста(«c:TempобменОстаткиИЦены» + (Цел(сч/300)+1) + «.csv», КодировкаТекста.UTF8);

ТекстовыйФайлЗапись.ЗаписатьСтроку(ТекстЦСВ);

ТекстовыйФайлЗапись.Закрыть();

МассивФайлов.Добавить(НайтиФайлы(«c:TempобменОстаткиИЦены» + (Цел(сч/300)+1) + «.csv»)[0]);

Возврат МассивФайлов;

   John83

1 — 29.10.19 — 09:55

Ошибка отображения типов:

Отсутствует отображение для типа ‘Файл’

{ВнешняяОбработка.ВыгрузитьОстаткиИЦены.Форма.Форма.Форма(147)}:    МассивФайлов = ВыгрузитьНаСервере();

по причине:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.

по причине:

Ошибка преобразования данных XDTO:

Запись значения свойства ‘ret’:

    форма: Элемент

    имя: {http://v8.1c.ru/8.2/managed-application/modules}ret

по причине:

Ошибка преобразования данных XDTO:

Запись значения свойства ‘Value’:

    форма: Элемент

    имя: {http://v8.1c.ru/8.1/data/core}Value

по причине:

Ошибка отображения типов:

Отсутствует отображение для типа ‘Файл’

   ДенисЧ

2 — 29.10.19 — 09:56

Странно, да? )))

В ХЗ их помещай и отдавай это Хз

   John83

3 — 29.10.19 — 09:58

(2) очень странно :)

массив ведь тоже доступен и там и там

спасибо, попробую

PS опыта работы с тонким клиентом очень мало

   ДенисЧ

4 — 29.10.19 — 10:00

(3) Массив-то доступен. Но оно ругается на «Отсутствует отображение для типа ‘Файл'». Про массив ни слова…

«опыта работы с тонким клиентом очень мало» А меня тут гнобят за то, что я не переношу УФ )))

   John83

5 — 29.10.19 — 10:06

(4) а что в ХЗ помещать?

массив не дает, типа не сериализуется

   unregistered

6 — 29.10.19 — 10:08

(0)(5) см. в синтакс-помощнике НачатьПомещениеФайлов и НачатьПолучениеФайлов.

   ДенисЧ

7 — 29.10.19 — 10:17

(5) У тебя там же текст. Вот его и помещай.

   ДенисЧ

8 — 29.10.19 — 10:17

Или (6)

   Cyberhawk

9 — 29.10.19 — 10:28

(5) Массив из ОписаниеПередаваемогоФайла

   Юрий Лазаренко

10 — 29.10.19 — 10:29

(0) Правильно ругается, у файлов на сервере есть путь, который на клиенте чаще всего недоступен.

(6) Оно же только на клиенте работает ЕМНИП, а ТС надо с сервера передать.

(0) А зачем именно файл передавать? Ты же судя по коду в (0) просто пишешь массив текстов в файлы и потом сразу передаешь на клиент. Сделай из этих нескольких текстов JSON или XML, передай на клиента как строку. Ну или читай каждый файл как двоичные данные и передавай на клиента массив двоичных данных.

   Cyberhawk

11 — 29.10.19 — 10:31

(10) «зачем именно файл передавать?» // Чтобы не упереться в максимальный размер порции, настроенный на веб-сервере.

«Оно же только на клиенте работает ЕМНИП» // НачатьПолучениеФайлов, Карл

   Юрий Лазаренко

12 — 29.10.19 — 10:34

(11) «Чтобы не упереться в максимальный размер порции,» Какая ему разница, будет это массив файлов, помещенных в ХЗ (которое суть строка) или массив ДД, или JSON?

«НачатьПолучениеФайлов, Карл» — ему сначала на сервере надо сделать НачатьПомещениеФайлов, а оно

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).

   Cyberhawk

13 — 29.10.19 — 10:46

(12) Тупишь

   Юрий Лазаренко

14 — 29.10.19 — 10:47

(13) Аргументируй

  

palsergeich

15 — 29.10.19 — 10:51

Самый простой вариант — упаковать на сервере средствами платформы в ЗИП и вернуть как результат функции на клиент и там средствами платформы распаковать.

Вариант 2 делаешь на сервере структуру ключ — как тебе удобно, значение — двоичные данные. Помешаешь ее во временное хранилище по адресу формы и на клиенте получаешь из вре енного хранилища

Передать пачку файлов на клиент

Я

  

John83

29.10.19 — 09:55

На сервере создаю несколько csv-файлов, нужно их сохранить на клиенте.

Попробовал вернуть массив файлов, но ругается

Ошибка отображения типов:

Отсутствует отображение для типа ‘Файл’

Вроде как файл доступен и на клиенте.

Делаю так

МассивФайлов = Новый Массив;

ТекстовыйФайлЗапись = Новый ЗаписьТекста(«c:TempобменОстаткиИЦены» + (Цел(сч/300)+1) + «.csv», КодировкаТекста.UTF8);

ТекстовыйФайлЗапись.ЗаписатьСтроку(ТекстЦСВ);

ТекстовыйФайлЗапись.Закрыть();

МассивФайлов.Добавить(НайтиФайлы(«c:TempобменОстаткиИЦены» + (Цел(сч/300)+1) + «.csv»)[0]);

Возврат МассивФайлов;

  

John83

1 — 29.10.19 — 09:55

Ошибка отображения типов:

Отсутствует отображение для типа ‘Файл’

{ВнешняяОбработка.ВыгрузитьОстаткиИЦены.Форма.Форма.Форма(147)}:    МассивФайлов = ВыгрузитьНаСервере();

по причине:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.

по причине:

Ошибка преобразования данных XDTO:

Запись значения свойства ‘ret’:

    форма: Элемент

    имя: {http://v8.1c.ru/8.2/managed-application/modules}ret

по причине:

Ошибка преобразования данных XDTO:

Запись значения свойства ‘Value’:

    форма: Элемент

    имя: {http://v8.1c.ru/8.1/data/core}Value

по причине:

Ошибка отображения типов:

Отсутствует отображение для типа ‘Файл’

  

ДенисЧ

2 — 29.10.19 — 09:56

Странно, да? )))

В ХЗ их помещай и отдавай это Хз

  

John83

3 — 29.10.19 — 09:58

(2) очень странно :)

массив ведь тоже доступен и там и там

спасибо, попробую

PS опыта работы с тонким клиентом очень мало

  

ДенисЧ

4 — 29.10.19 — 10:00

(3) Массив-то доступен. Но оно ругается на «Отсутствует отображение для типа ‘Файл’». Про массив ни слова…

«опыта работы с тонким клиентом очень мало» А меня тут гнобят за то, что я не переношу УФ )))

  

John83

5 — 29.10.19 — 10:06

(4) а что в ХЗ помещать?

массив не дает, типа не сериализуется

  

unregistered

6 — 29.10.19 — 10:08

(0)(5) см. в синтакс-помощнике НачатьПомещениеФайлов и НачатьПолучениеФайлов.

  

ДенисЧ

7 — 29.10.19 — 10:17

(5) У тебя там же текст. Вот его и помещай.

  

ДенисЧ

8 — 29.10.19 — 10:17

Или (6)

  

Cyberhawk

9 — 29.10.19 — 10:28

(5) Массив из ОписаниеПередаваемогоФайла

  

Юрий Лазаренко

10 — 29.10.19 — 10:29

(0) Правильно ругается, у файлов на сервере есть путь, который на клиенте чаще всего недоступен.

(6) Оно же только на клиенте работает ЕМНИП, а ТС надо с сервера передать.

(0) А зачем именно файл передавать? Ты же судя по коду в (0) просто пишешь массив текстов в файлы и потом сразу передаешь на клиент. Сделай из этих нескольких текстов JSON или XML, передай на клиента как строку. Ну или читай каждый файл как двоичные данные и передавай на клиента массив двоичных данных.

  

Cyberhawk

11 — 29.10.19 — 10:31

(10) «зачем именно файл передавать?» // Чтобы не упереться в максимальный размер порции, настроенный на веб-сервере.

«Оно же только на клиенте работает ЕМНИП» // НачатьПолучениеФайлов, Карл

  

Юрий Лазаренко

12 — 29.10.19 — 10:34

(11) «Чтобы не упереться в максимальный размер порции,» Какая ему разница, будет это массив файлов, помещенных в ХЗ (которое суть строка) или массив ДД, или JSON?

«НачатьПолучениеФайлов, Карл» — ему сначала на сервере надо сделать НачатьПомещениеФайлов, а оно

Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, толстый клиент, мобильное приложение(клиент).

  

Cyberhawk

13 — 29.10.19 — 10:46

(12) Тупишь

  

Юрий Лазаренко

14 — 29.10.19 — 10:47

(13) Аргументируй

  

palsergeich

15 — 29.10.19 — 10:51

Самый простой вариант — упаковать на сервере средствами платформы в ЗИП и вернуть как результат функции на клиент и там средствами платформы распаковать.

Вариант 2 делаешь на сервере структуру ключ — как тебе удобно, значение — двоичные данные. Помешаешь ее во временное хранилище по адресу формы и на клиенте получаешь из вре енного хранилища

Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’

Описание ошибки:
Ошибка при программировании, конфигурировании кода в 1С 8:

Ошибка отображения типов:
Отсутствует отображение для типа ‘ЭлементСпискаЗначений’
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘value’:
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value

Найденные решения:

1C 8 Ошибка отображения типов: Отсутствует отображение для типа ЭлементСпискаЗначений,

Нажатие на изображении увеличит его
1C 8, Отсутствует отображение для типа ЭлементСпискаЗначений, по причине, ошибка передачи данных между клиентом и сервером, значение недопустимого типа

Возникла при написании кода индивидуальной конфигурации. Но, как оказалось, может подстерегать программиста из-за его невнимательности и при конфигурировании в других конфигурациях. Итак, в чем же причина возникновения данной ошибки. В управляемой форме был создан реквизит типа «СписокЗначений». При открытии формы по коду срабатывает обработчик заполнения этого списка значений. Т.е. в коде создается переменная с помощью конструктора «Новый СписокЗначений», значение которой потом и устанавливается реквизиту формы. Но, перед тем как это происходит, в коде список значений изменяется — в частности выполняется его дополнительная сортировка. Конечно, ошибка «Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’» может возникнуть у Вас не только в такой ситуации. Сейчас разберемся в чем ее суть.

1С 8, Ошибка для типа ЭлементСпискаЗначений, передачи данных между клиентом и сервером, значение недопустимого типа, по причине, ошибка преобразования данных XDTO

Как было отмечено в этой частной задаче выполняется сортировка исходного заполненного списка значений. Но, т.к. в этой частной задаче не подходило использование метода «СортироватьПоЗначению(<Направление>)«, т.к. сортировка более сложная (по текстовым данным с разделителями порядка, содержащих разделитель «.», пример: 1.1, 2.2, 2.2.1, 2.2.2, 3.1, 3.2, 3.3.1, 3.3.2). Поэтому сортировка выполнялась программно с созданием новой переменной типа «СписокЗначений» и ее заполнением по данным исходного списка.

После сохранения кода и попытки проверки появилась ошибка, текст которой приведен в начале страницы. Анализ данных через предмет отладки неявно, но показал ошибку.

Нажатие на изображении увеличит его

1C 8, как устранить, исправить ошибку, ошибка преобразования данных XDTO, отсутствует отображение для типа ЭлементСпискаЗначений

Не смотря на то, что в методической информации «Синтакс-помощника» 1С 8 указано, что значение элемента списка значений может быть любым (произвольным), все-таки для случая использования в управляемой форме в качестве реквизита накладывается ограничение по типу. И нельзя в значение такого списка значений поместить «ЭлементСискаЗначений» другого списка значений.

1С 8, какие значения могут быть у списказначений, исключения для управляемой формы

Т.е. для моего случая использования списка значений в управляемой форме в качестве реквизита ошибка была в коде, где происходило заполнение значений нового списка по данным исходного при сортировке.

Нажатие на изображении увеличит его

Было выполнено исправление в коде для обращения к значениям и передачи их в качестве значений нового списка значений. 

Нажатие на изображении увеличит его
1С 8, в чем причина ошибки в форме, отсутствует отображение для типа Элемент списка значений, ошибка отображения типов

В данном случае значениями списка были значения примитивного тип «Строка», поэтому дальнейшая работа доработанного кода стала возможной. И это все-таки позволило реализовать задачу. Если у Вас будут другие типы, например ссылки, то продумывайте заранее, как будете упорядочить, возможно придется через другие универсальные объекты, например использование таблицы значений, и потом заполнять конечный список значений. Другие примитивные типы не проверялись, но предполагаю, что они так же подойдут для корректной работы в управляемой форме. в качестве значений списка. Поэтому учитывайте это, если столкнетесь с данной ошибкой при Вашем конфигурировании — подбирайте по возможности простой тип для значений списка.

Нажатие на изображении увеличит его
1С 8, в чем, причина ошибки, как устранить, Ошибка передачи данных между клиентом и сервером, отсутствует отображение для типа элемент списка значений

Таким образом на примере данной частной ситуации возникновения ошибки при конфигурировании в 1С 8 «Отсутствует отображение для типа ЭлементСпискаЗначений, по причине, ошибка передачи данных между клиентом и сервером, значение недопустимого типа» извлекаем вывод о том, что нужно быть внимательным и не заполнять значения объекта «Список значений» элементами другого списка значений. А передавать значения элемента списка значений, если одна переменная типа «СписокЗначений» заполняется за счет другой подобной.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

16-03-2022

Журавлев А.С.
(Сайт azhur-c.ru)

Добрый день. Сегодня наступил на интересные грабли:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: param Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’

Подобная ошибка возникает при попытке передать с клиента на сервер таблицу значений, и это мне давно известно, однако я получил эту ошибку без явной передачи таблицы. Вот часть кода с которым произошла ошибка:

&НаКлиенте
Процедура Заполнить(Команда)
тМассив = Новый Массив;
тМассив .Добавить(Объект.Организация);
ПоискНаСервере(тМассив);
КонецЕсли;
КонецПроцедуры

Процедура ПоискСсылокНаСервере(тМассив, тОсновнаяТаблица = Неопределено)

тДанныеВФорму = Ложь;

Если тОсновнаяТаблица = Неопределено Тогда

тОсновнаяТаблица = Новый ТаблицаЗначений;

тОсновнаяТаблица.Колонки.Добавить(«Ссылка»);

тДанныеВФорму = Истина;

КонецЕсли; 

<<<<>>>>>>

Если <<<<>>>>>> Тогда 

ПоискСсылокНаСервере(МассивСсылок,тОсновнаяТаблица);

КонецЕсли;

Если тДанныеВФорму Тогда

ЗначениеВРеквизитФормы(тОсновнаяТаблица,»ТаблицаСсылок»);

КонецЕсли;

КонецПроцедуры

В этом  коде процедура  с клиента вызывает выполнение кода на сервере, с одним единственным параметром, — массив ссылок. Хотя в процедуре есть два входящих параметра это массив и таблица значение — которая является не обязательным параметром и используется при рекурсивном вызове. И не смотря на то что при вызове с клиента на сервер мы не используем второй параметр, приложение пытается отправить данное значение на клиент и мы получаем вышеописанную ошибку. Выход из данной ситуации один перед возвратом на клиент убить таблицу написав код:

тОсновнаяТаблица = Неопределено

На сегодня все.

Данная ошибка возникает в тот момент, когда Вы пытаетесь вызвать серверный метод и передаете ему в качестве параметра управляемую форму.

Рассмотрим следующий модуль управляемой формы:

&НаСервере
Функция ТестВызоваСервера(Форма)

	Форма.ТолькоПросмотр = Истина;

КонецФункции // ТестВызоваСервера()

&НаКлиенте
Процедура ПокупательПриИзменении(Элемент)
	
	//попытка передачи переменной локального контекста на сервер
	ТестВызоваСервера(ЭтаФорма);
	
КонецПроцедуры

Дело в том, что в контексте модуля управляемой формы переменная ЭтаФорма доступна всегда (как на клиенте, так и на сервере) и дополнительно ее передавать не требуется (если только вы не вызываете процедуру или функцию, перед которой указана директива &НаСервереБезКонтекста). Правильным будет следующий код:

&НаСервере
Функция ТестВызоваСервера()

	ЭтаФорма.ТолькоПросмотр = Истина;	

КонецФункции // ТестВызоваСервера()

&НаКлиенте
Процедура ПокупательПриИзменении(Элемент)
	
	//вызов контекстной серверной функции
	ТестВызоваСервера();
	
КонецПроцедуры

Аналогичное замечание относится к серверным вызовам. Вы не можете передать содержимое переменной ЭтаФорма на сервер. Вы можете только запросить необходимую информацию на сервере и изменить форму в контексте клиента, либо реализовать это через серверный метод самой формы. Например, такой код работать не будет:

&НаКлиенте
Процедура ПокупательПриИзменении(Элемент)
	
	//попытка передачи переменной локального контекста на сервер
	ОбщийМодульСервер.Тест(ЭтаФорма);
	
КонецПроцедуры

Подумайте сами, чем можно заменить такой вызов

Сергей

Местный

Сообщений: 8
Баллов: 15
Регистрация: 26.06.2022

#10

0

28.06.2022 13:36:40

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = РаботаСоСпискамиДокументовКлиент.ПолучитьДанныеТекущейСтрокиСписка(
Элементы.Список, Элементы.Список.ТекущаяСтрока);

Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;

Если Поле = Элементы.Файлы Тогда
ОткрыватьЗакладкуФайлы=ПроверкаОткрытияЗаклФайлы(ЭтаФорма)
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуФайлы», ТекущиеДанные.Ссылка, ОткрыватьЗакладкуФайлы);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.ПодписанЭП Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуЭП», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.Задачи Тогда
ОткрытьФорму(«ОбщаяФорма.ПроцессыИЗадачи»,
Новый Структура(«Предмет», ТекущиеДанные.Ссылка),
ЭтаФорма);
Возврат;
КонецЕсли;

Если Поле = Элементы.ЕстьКатегории Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуКатегории», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.СостояниеКонтроля Тогда
КонтрольКлиент.ОбработкаКомандыКонтроль(ТекущиеДанные.Ссылка, ЭтаФорма);
Возврат;
КонецЕсли;

ПараметрыОткрытия = Новый Структура(«Ключ», ТекущиеДанные.Ссылка);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
КонецПроцедуры

Здравствуйте. В собственной конфигурации есть документ «ОбъектныйГрафик» с Тч «Задания». в которую входят реквизиты: ВыдающийОтдел — СправочникСсылка.Подразделения, Задание — СправочникСсылка.ЗаданияШаблон, ДеньВыдачи -целое число.
Справочник ЗаданияШаблон имеет структуру: Наименование содержит наименование задания, ДеньВыдачи(целое число) — порядковый номер рабочего дня выдачи задания. Хочу сделать, чтобы при добавлении строки в ТЧ при изменении реквизита «Задание» автоматически выводился День выдачи для этого задания. Делаю так:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
&НаСервере
Функция ПолучитьДеньВыдачи(Отдел, СсылкаЗадание) Экспорт
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |  ЗаданияШаблон.ДеньВыдачи
             |ИЗ
             |  Справочник.ЗаданияШаблон КАК ЗаданияШаблон
             |ГДЕ
             |  ЗаданияШаблон.ВыдающийОтдел = &Отдел
             |          И ЗаданияШаблон.Ссылка = &Задание";
Запрос.УстановитьПараметр("Отдел",Отдел);
Запрос.УстановитьПараметр("Задание",СсылкаЗадание);
 РезультатЗапроса = Запрос.Выполнить();
    
 Возврат РезультатЗапроса.Выгрузить();
 
КонецФункции    
&НаКлиенте
Процедура ЗаданияЗаданиеПриИзменении(Элемент)
ТекущаяСтрока=Элементы.Задания.ТекущиеДанные;
ТекущаяСтрока.ДеньВыдачи=ПолучитьДеньВыдачи(ТекущаяСтрока.ВыдающийОтдел,ТекущаяСтрока.Задание);
КонецПроцедуры

В режиме предприятия я при изменении задания вылетает ошибка:
{Документ.ОбъектныйГрафик.Форма.ФормаДокумента.Фор ма(140)}: Ошибка при вызове метода контекста (ПолучитьДеньВыдачи)
ТекущаяСтрока.ДеньВыдачи=ПолучитьДеньВыдачи(Текуща яСтрока.ВыдающийОтдел,ТекущаяСтрока.Задание);
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: ret Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’

Что делаю не так? помогите пожалуйста.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

В управляемых формах может появиться следующая ошибка:

Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: param Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'

С данной ошибкой я столкнулся, когда пытался в управляемой форме на стороне сервера выполнить следующую команду:

 ОбъектФормы = РеквизитФормыВЗначение("Объект");
 ТЗВывода = ОбъектФормы.Бонусы.Выгрузить().Скопировать();
 ЗначениеВРеквизитФормы(ОбъектФормы, "Объект");

Решением данной проблемы было обнулить переменную с таблицей данных:

ТЗВывода = Неопределено;

 

Сергей

Местный

Сообщений: 8
Баллов: 15
Регистрация: 26.06.2022

#10

0

28.06.2022 13:36:40

&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = РаботаСоСпискамиДокументовКлиент.ПолучитьДанныеТекущейСтрокиСписка(
Элементы.Список, Элементы.Список.ТекущаяСтрока);

Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;

Если Поле = Элементы.Файлы Тогда
ОткрыватьЗакладкуФайлы=ПроверкаОткрытияЗаклФайлы(ЭтаФорма)
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуФайлы», ТекущиеДанные.Ссылка, ОткрыватьЗакладкуФайлы);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.ПодписанЭП Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуЭП», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.Задачи Тогда
ОткрытьФорму(«ОбщаяФорма.ПроцессыИЗадачи»,
Новый Структура(«Предмет», ТекущиеДанные.Ссылка),
ЭтаФорма);
Возврат;
КонецЕсли;

Если Поле = Элементы.ЕстьКатегории Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуКатегории», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;

Если Поле = Элементы.СостояниеКонтроля Тогда
КонтрольКлиент.ОбработкаКомандыКонтроль(ТекущиеДанные.Ссылка, ЭтаФорма);
Возврат;
КонецЕсли;

ПараметрыОткрытия = Новый Структура(«Ключ», ТекущиеДанные.Ссылка);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
КонецПроцедуры

RUBYX

0 / 0 / 0

Регистрация: 13.02.2021

Сообщений: 41

1

Ошибка отображения типов

10.05.2022, 09:53. Показов 1863. Ответов 5

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Еще раз всем здравствуйте! Когда пытаюсь обменяться данными между мобильной и основной центральной базой, почему то выходит ошибка отображения типов: Отсутствует отображение для типа ‘ТаблицаЗначений'{Справочник.Пьесы.Форма.ФормаСписка.Форма}. Данные появляются в центральной базе после добавления данных в мобильной базе, но вот ошибка меня смущает

Сам код вот (Мобильная платформа)

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 &НаСервере
Процедура ПолучитьПьесы()
    Попытка
        HTTPСоединение=Новый HTTPСоединение("192.168.43.241",,,,,30);   
        HTTPЗапрос=Новый HTTPЗапрос("/CenterMaxServer/hs/HTTPEx");  
        HTTPЗапрос.Заголовки.Вставить("Content-Type","text/html; charset=utf-8;");
        ОтветСервера=HTTPСоединение.Получить(HTTPЗапрос);
        Если ОтветСервера.КодСостояния=200 Тогда
            ДанныеСервера=Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку("UTF8"));  
            Для Каждого СтрокаСервер Из ДанныеСервера Цикл 
                Пьеса=Справочники.Пьесы.НайтиПоНаименованию(СтрокаСервер.Наименование);
                Если Пьеса.Пустая() Тогда     
                Пьеса=Справочники.Пьесы.СоздатьЭлемент(); 
                Пьеса.Наименование=СтрокаСервер.Наименование;  
            Иначе                                              
                Пьеса=Пьеса.ПолучитьОбъект();
                            КонецЕсли; 
                Пьеса.Записать(); 
                            КонецЦикла;
        Иначе
            Попытка
                Сообщить(Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку("UTF8")));
            Исключение
                Сообщить(ОтветСервера.ПолучитьТелоКакСтроку("UTF8"));
                КонецПопытки;
            КонецЕсли;
    Исключение
            Сообщить("Возникла проблема с интернетом");
    КонецПопытки;
КонецПроцедуры
 
 &НаСервере
Функция Сериализовать(ТелоJSON)
    ЗаписьJSON=Новый ЗаписьJSON;
    ЗаписьJSON.УстановитьСтроку();
    СжатыйОбъект=Новый ХранилищеЗначения(ТелоJSON, Новый СжатиеДанных(9));
    СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, СжатыйОБъект);
    Возврат СтрЗаменить(ЗаписьJSON.Закрыть(),"#","_РЕШЕТКА_");
КОнецФункцИИ
 
 &НаСервере
Функция Десериализовать(СтрокаJSON)
    ЧтениеJSON=Новый ЧтениеJSON;
ЧтениеJSON.УстановитьСтроку(СтрЗаменить(СтрокаJSON,"_РЕШЕТКА_","#"));
СЖатыйОбъект=СериализаторXDTO.ПрочитатьJSON(ЧтениеJSON, Тип("ХранилищеЗначения"));
ЧтениеJSON.Закрыть();
Возврат СжатыйОбъект.Получить();
КОнецФУНКциИ
 
&НаКлиенте
Процедура Обновить(Команда)
    ПолучитьПьесы();
КонецПроцедуры
 
 &НаСервере
Функция ПолучитьРезультатВБазе()
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Пьесы.Наименование КАК Наименование
        |ИЗ
        |   Справочник.Пьесы КАК Пьесы";
    СтрТела = Запрос.Выполнить().Выгрузить();  
    Попытка
        HTTPСоединение=Новый HTTPСоединение("192.168.43.241",,,,,30);   
        HTTPЗапрос=Новый HTTPЗапрос("/CenterMaxServer/hs/HTTPEx/plays");  
        HTTPЗапрос.Заголовки.Вставить("Content-Type","text/html; charset=utf-8;");  
        HTTPЗапрос.УстановитьТелоИзСтроки(Сериализовать(СтрТела));
        ОтветСервера=HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);
        Если ОтветСервера.КодСостояния=200 Тогда
            Возврат Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку("UTF8"));  
            Иначе
            Попытка
                Сообщить(Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку("UTF8")));
            Исключение
                Сообщить(ОтветСервера.ПолучитьТелоКакСтроку("UTF8"));
                КонецПопытки;
            КонецЕсли;
    Исключение
            Сообщить("Возникла проблема с интернетом");
        КонецПопытки;  
        КонецФункции 
            
&НаКлиенте
        Процедура ОтправитьДанные(Команда)
            ПолучитьРезультатВБазе();
        КонецПроцедуры

Если нужна дополнительная информация могу потом прикрепить или выгрузку обеих баз дать. Заранее спасибо



0



264 / 219 / 95

Регистрация: 07.04.2011

Сообщений: 1,359

10.05.2022, 15:52

2

Лучший ответ Сообщение было отмечено RUBYX как решение

Решение

ПолучитьРезультатВБазе() почему это функция? Значение возврата то на клиенте нигде не используется
Если ОтветСервера.КодСостояния=200 Тогда
Возврат Десериализовать(ОтветСервера.ПолучитьТелоКакСтроку(«UTF8»));
Вот тут возможно летит мутабельное значение .



1



0 / 0 / 0

Регистрация: 13.02.2021

Сообщений: 41

10.05.2022, 18:29

 [ТС]

3

Вроде когда я писал «процедура», то мне ошибку выдавало, что нельзя использовать в процедуре или что-то типо такого, да и мы это по инструкционке делаем)

Добавлено через 17 минут
Кстати спасибо, я просто удалил эту строку и все работает как надо!)



0



264 / 219 / 95

Регистрация: 07.04.2011

Сообщений: 1,359

10.05.2022, 18:51

4

Цитата
Сообщение от RUBYX
Посмотреть сообщение

то мне ошибку выдавало, что нельзя использовать в процедуре

Верно.Процедура не может возвращать значение.

Цитата
Сообщение от RUBYX
Посмотреть сообщение

Кстати спасибо, я просто удалил эту строку и все работает как надо!)

Ну возможно оно где-то и должно использоваться.Тут вариант что результат должен возвращаться в процедуру с директивой «НаСервере» и обрабатываться,и предаваться на клиент в виде «простого типа».



1



0 / 0 / 0

Регистрация: 13.02.2021

Сообщений: 41

10.05.2022, 19:04

 [ТС]

6

Всем спасибо еще раз!



0



  • Ошибка отображения типов отсутствует отображение для типа таблицаформы
  • Ошибка отображения типов отсутствует отображение для типа результатзапроса
  • Ошибка отображения типов отсутствует отображение для типа параметрывыполнениякоманды
  • Ошибка отображения типов отсутствует отображение для типа описаниепомещенногофайла
  • Ошибка отображения типов отсутствует отображение для типа описаниеоповещения