09.09.16 — 05:58
Привет.
Создаю пакет обмена. Через ЗаписатьXML (глобальную) пишу в него СправочникОбъект.Кошелек В Объекте есть владелец СправочникСсылка.Пользователь. В другой базе, куда летит пакет (через wsПрокси) тоже есть Справочник.Кошелек, но независимый.
Вопрос.
Почему когда я пытаюсь прочитать этот объект в базе-получателе конструкцией wsПрокси.ФабрикаXDTO.ПрочитатьXDTO, то у меня происходит ругань вида: «ошибка отображения пространства имен отсутствует отображение для префикса: »», а когда пишу в базе-источнике в XML вот так: ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектДанных);
ФабрикаXDTO.ЗаписатьXML(ОбъектЗапись, ОбъектXDTO,,,,НазначениеТипаXML.Явное);, то всё ОК?
nickroblogger_
4 — 15.09.16 — 06:04
(3) Глобальный контекст (Global context)
ЗаписатьXML (WriteXML)
Вариант синтаксиса: Записать без имени
Синтаксис:
ЗаписатьXML(<ЗаписьXML>, <Значение>, <НазначениеТипа>)
Параметры:
<ЗаписьXML> (обязательный)
Тип: ЗаписьXML.
Объект, через который осуществляется запись XML.
<Значение> (обязательный)
Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация.
<НазначениеТипа> (необязательный)
Тип: НазначениеТипаXML.
Определяет необходимость назначения типа элементу XML.
Значение по умолчанию: Неявное.
Описание варианта метода:
В качестве имени элемента будет использован тип значения.
Вариант синтаксиса: Записать с полным именем
Синтаксис:
ЗаписатьXML(<ЗаписьXML>, <Значение>, <ПолноеИмя>, <НазначениеТипа>)
Параметры:
<ЗаписьXML> (обязательный)
Тип: ЗаписьXML.
Объект, через который осуществляется запись XML.
<Значение> (обязательный)
Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация.
<ПолноеИмя> (обязательный)
Тип: Строка.
Полное имя элемента XML, в который будет записано значение.
<НазначениеТипа> (необязательный)
Тип: НазначениеТипаXML.
Определяет необходимость назначения типа элементу XML.
Значение по умолчанию: Неявное.
Описание варианта метода:
Выполняет запись значения с указанием полного имени элемента.
Вариант синтаксиса: Записать с локальным именем и пространством имен
Синтаксис:
ЗаписатьXML(<ЗаписьXML>, <Значение>, <ЛокальноеИмя>, <URIПространстваИмен>, <НазначениеТипа>)
Параметры:
<ЗаписьXML> (обязательный)
Тип: ЗаписьXML.
Объект, через который осуществляется запись XML.
<Значение> (обязательный)
Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация.
<ЛокальноеИмя> (обязательный)
Тип: Строка.
Локальное имя элемента XML, в который будет записано значение.
<URIПространстваИмен> (обязательный)
Тип: Строка.
URI пространства имен, к которому принадлежит указанное ЛокальноеИмя.
<НазначениеТипа> (необязательный)
Тип: НазначениеТипаXML.
Определяет необходимость назначения типа элементу XML.
Значение по умолчанию: Неявное.
Описание варианта метода:
Выполняет запись значения с указанием локального имени элемента и пространства имен, к которому принадлежит локальное имя.
Описание:
Выполняет сериализацию значения в формат XML.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:
Значения не всех типов могут быть записаны в формате XML данным методом.
В XML могут быть записаны значения следующих типов: Неопределено, Null, Булево, Число, Строка, Дата, Тип, УникальныйИдентификатор, ДвоичныеДанные, ХранилищеЗначения, ОписаниеТипов, а также ссылки объектов данных и сами объекты данных, наборы записей регистров, менеджер значения константы. В дальнейшем список может пополняться.
При попытке записи значения неподходящего типа будет вызвано исключение.
nickroblogger_
09.09.16 — 05:58
Привет.
Создаю пакет обмена. Через ЗаписатьXML (глобальную) пишу в него СправочникОбъект.Кошелек В Объекте есть владелец СправочникСсылка.Пользователь. В другой базе, куда летит пакет (через wsПрокси) тоже есть Справочник.Кошелек, но независимый.
Вопрос.
Почему когда я пытаюсь прочитать этот объект в базе-получателе конструкцией wsПрокси.ФабрикаXDTO.ПрочитатьXDTO, то у меня происходит ругань вида: «ошибка отображения пространства имен отсутствует отображение для префикса: »», а когда пишу в базе-источнике в XML вот так: ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(ОбъектДанных);
ФабрикаXDTO.ЗаписатьXML(ОбъектЗапись, ОбъектXDTO,,,,НазначениеТипаXML.Явное);, то всё ОК?
nickroblogger_
4 — 15.09.16 — 06:04
(3) Глобальный контекст (Global context)
ЗаписатьXML (WriteXML)
Вариант синтаксиса: Записать без имени
Синтаксис:
ЗаписатьXML(<ЗаписьXML>, <Значение>, <НазначениеТипа>)
Параметры:
<ЗаписьXML> (обязательный)
Тип: ЗаписьXML.
Объект, через который осуществляется запись XML.
<Значение> (обязательный)
Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация.
<НазначениеТипа> (необязательный)
Тип: НазначениеТипаXML.
Определяет необходимость назначения типа элементу XML.
Значение по умолчанию: Неявное.
Описание варианта метода:
В качестве имени элемента будет использован тип значения.
Вариант синтаксиса: Записать с полным именем
Синтаксис:
ЗаписатьXML(<ЗаписьXML>, <Значение>, <ПолноеИмя>, <НазначениеТипа>)
Параметры:
<ЗаписьXML> (обязательный)
Тип: ЗаписьXML.
Объект, через который осуществляется запись XML.
<Значение> (обязательный)
Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация.
<ПолноеИмя> (обязательный)
Тип: Строка.
Полное имя элемента XML, в который будет записано значение.
<НазначениеТипа> (необязательный)
Тип: НазначениеТипаXML.
Определяет необходимость назначения типа элементу XML.
Значение по умолчанию: Неявное.
Описание варианта метода:
Выполняет запись значения с указанием полного имени элемента.
Вариант синтаксиса: Записать с локальным именем и пространством имен
Синтаксис:
ЗаписатьXML(<ЗаписьXML>, <Значение>, <ЛокальноеИмя>, <URIПространстваИмен>, <НазначениеТипа>)
Параметры:
<ЗаписьXML> (обязательный)
Тип: ЗаписьXML.
Объект, через который осуществляется запись XML.
<Значение> (обязательный)
Записываемое в поток XML значение. Тип параметра определяется совокупностью типов, для которых определена XML-сериализация.
<ЛокальноеИмя> (обязательный)
Тип: Строка.
Локальное имя элемента XML, в который будет записано значение.
<URIПространстваИмен> (обязательный)
Тип: Строка.
URI пространства имен, к которому принадлежит указанное ЛокальноеИмя.
<НазначениеТипа> (необязательный)
Тип: НазначениеТипаXML.
Определяет необходимость назначения типа элементу XML.
Значение по умолчанию: Неявное.
Описание варианта метода:
Выполняет запись значения с указанием локального имени элемента и пространства имен, к которому принадлежит локальное имя.
Описание:
Выполняет сериализацию значения в формат XML.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).
Примечание:
Значения не всех типов могут быть записаны в формате XML данным методом.
В XML могут быть записаны значения следующих типов: Неопределено, Null, Булево, Число, Строка, Дата, Тип, УникальныйИдентификатор, ДвоичныеДанные, ХранилищеЗначения, ОписаниеТипов, а также ссылки объектов данных и сами объекты данных, наборы записей регистров, менеджер значения константы. В дальнейшем список может пополняться.
При попытке записи значения неподходящего типа будет вызвано исключение.
Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’
Описание ошибки:
Ошибка при программировании, конфигурировании кода в 1С 8:
Ошибка отображения типов:
Отсутствует отображение для типа ‘ЭлементСпискаЗначений’
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘v’:
форма: Элемент
имя: {http://v8.1c.ru/8.2/uobjects}v
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства ‘value’:
форма: Элемент
имя: {http://v8.1c.ru/8.1/data/core}value
Найденные решения:
Нажатие на изображении увеличит его
Возникла при написании кода индивидуальной конфигурации. Но, как оказалось, может подстерегать программиста из-за его невнимательности и при конфигурировании в других конфигурациях. Итак, в чем же причина возникновения данной ошибки. В управляемой форме был создан реквизит типа «СписокЗначений». При открытии формы по коду срабатывает обработчик заполнения этого списка значений. Т.е. в коде создается переменная с помощью конструктора «Новый СписокЗначений», значение которой потом и устанавливается реквизиту формы. Но, перед тем как это происходит, в коде список значений изменяется — в частности выполняется его дополнительная сортировка. Конечно, ошибка «Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’» может возникнуть у Вас не только в такой ситуации. Сейчас разберемся в чем ее суть.
Как было отмечено в этой частной задаче выполняется сортировка исходного заполненного списка значений. Но, т.к. в этой частной задаче не подходило использование метода «СортироватьПоЗначению(<Направление>)«, т.к. сортировка более сложная (по текстовым данным с разделителями порядка, содержащих разделитель «.», пример: 1.1, 2.2, 2.2.1, 2.2.2, 3.1, 3.2, 3.3.1, 3.3.2). Поэтому сортировка выполнялась программно с созданием новой переменной типа «СписокЗначений» и ее заполнением по данным исходного списка.
После сохранения кода и попытки проверки появилась ошибка, текст которой приведен в начале страницы. Анализ данных через предмет отладки неявно, но показал ошибку.
Нажатие на изображении увеличит его
Не смотря на то, что в методической информации «Синтакс-помощника» 1С 8 указано, что значение элемента списка значений может быть любым (произвольным), все-таки для случая использования в управляемой форме в качестве реквизита накладывается ограничение по типу. И нельзя в значение такого списка значений поместить «ЭлементСискаЗначений» другого списка значений.
Т.е. для моего случая использования списка значений в управляемой форме в качестве реквизита ошибка была в коде, где происходило заполнение значений нового списка по данным исходного при сортировке.
Нажатие на изображении увеличит его
Было выполнено исправление в коде для обращения к значениям и передачи их в качестве значений нового списка значений.
Нажатие на изображении увеличит его
В данном случае значениями списка были значения примитивного тип «Строка», поэтому дальнейшая работа доработанного кода стала возможной. И это все-таки позволило реализовать задачу. Если у Вас будут другие типы, например ссылки, то продумывайте заранее, как будете упорядочить, возможно придется через другие универсальные объекты, например использование таблицы значений, и потом заполнять конечный список значений. Другие примитивные типы не проверялись, но предполагаю, что они так же подойдут для корректной работы в управляемой форме. в качестве значений списка. Поэтому учитывайте это, если столкнетесь с данной ошибкой при Вашем конфигурировании — подбирайте по возможности простой тип для значений списка.
Нажатие на изображении увеличит его
Таким образом на примере данной частной ситуации возникновения ошибки при конфигурировании в 1С 8 «Отсутствует отображение для типа ЭлементСпискаЗначений, по причине, ошибка передачи данных между клиентом и сервером, значение недопустимого типа» извлекаем вывод о том, что нужно быть внимательным и не заполнять значения объекта «Список значений» элементами другого списка значений. А передавать значения элемента списка значений, если одна переменная типа «СписокЗначений» заполняется за счет другой подобной.
Оцените, помогло ли Вам предоставленное описание решения ошибки?
© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.
16-03-2022
Журавлев А.С.
(Сайт azhur-c.ru)
Данная ошибка возникает в тот момент, когда Вы пытаетесь вызвать серверный метод и передаете ему в качестве параметра управляемую форму.
Рассмотрим следующий модуль управляемой формы:
&НаСервере Функция ТестВызоваСервера(Форма) Форма.ТолькоПросмотр = Истина; КонецФункции // ТестВызоваСервера() &НаКлиенте Процедура ПокупательПриИзменении(Элемент) //попытка передачи переменной локального контекста на сервер ТестВызоваСервера(ЭтаФорма); КонецПроцедуры
Дело в том, что в контексте модуля управляемой формы переменная ЭтаФорма
доступна всегда (как на клиенте, так и на сервере) и дополнительно ее передавать не требуется (если только вы не вызываете процедуру или функцию, перед которой указана директива &НаСервереБезКонтекста
). Правильным будет следующий код:
&НаСервере Функция ТестВызоваСервера() ЭтаФорма.ТолькоПросмотр = Истина; КонецФункции // ТестВызоваСервера() &НаКлиенте Процедура ПокупательПриИзменении(Элемент) //вызов контекстной серверной функции ТестВызоваСервера(); КонецПроцедуры
Аналогичное замечание относится к серверным вызовам. Вы не можете передать содержимое переменной ЭтаФорма
на сервер. Вы можете только запросить необходимую информацию на сервере и изменить форму в контексте клиента, либо реализовать это через серверный метод самой формы. Например, такой код работать не будет:
&НаКлиенте Процедура ПокупательПриИзменении(Элемент) //попытка передачи переменной локального контекста на сервер ОбщийМодульСервер.Тест(ЭтаФорма); КонецПроцедуры
Подумайте сами, чем можно заменить такой вызов
Добрый день всем! Уважаемые, кто подскажет отчего такая ошибка возникает при попытке прикрепить файл к документу в 1С Документооборот?: {ОбщийМодуль.ФайловыеФункцииСлужебный.Модуль(1349)}: Ошибка при вызове метода контекста (ОбщийМодуль) МодульРаботаСФайламиСлужебныйВызовСервера = ОбщегоНазначения.ОбщийМодуль(«РаботаСФайламиСлужебныйВызовСервера»); по причине: Ошибка при вызове серверного метода. по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства ‘ret’: форма: Элемент имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа ‘ОбщийМодуль’
Какой тут еще может быть тип если передается строка….
а он не на строку ругается
ОбщегоНазначения по всей видимости общий модуль серверный. Его функция ОбщийМодуль, по всей видимости в результате возвращает ОбщийМодуль, который, как видно из ошибки нельзя передавать с клиента на сервер… Как то так
что характерно, такая ошибка ведет себя непонятным образом: то есть то нет. при прочих равных условиях. закономерность пока не выявлена
Попробуй Переименовать «свою» функцию «Общий модуль» в другие сословие ОбщийМодуль (CommonModule) Методы: <Имя процедуры или функции> (<Name of a procedure or a function>) Описание: Предоставляет доступ к экспортным процедурам и функциям неглобального общего модуля (т.е. модуля для которого не установлен признак Глобальный при конфигурировании). Доступность: Сервер, толстый клиент, внешнее соединение. См. также: Глобальный контекст, свойство <Имя общего модуля>
+ Покажи лучше полный текст функции вызова, или хотя бы 10 строчек. Зачем такой изврат?
до чего же .удацки выглядит попытка реализации классов и описания интерфейсов в системе изначально на это не заточенной…
Вместо двух строчек: и ошибка ушла
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям
Тамика Котовчанин 942 / 482 / 200 Регистрация: 16.02.2010 Сообщений: 3,338 Записей в блоге: 37 |
||||
1 |
||||
Отсутствует отображение для типа ‘ДанныеФормыЭлементКоллекции’29.08.2017, 12:09. Показов 14526. Ответов 7 Метки нет (Все метки)
Что это за штука-то такая?
Может кто сталкивался? Буду благодарна за помощь Добавлено через 3 минуты 0 |
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
29.08.2017, 12:10 |
2 |
Не по теме:
Добавлено через 3 минуты Молодец) И быстро) А что было-то?) 0 |
Котовчанин 942 / 482 / 200 Регистрация: 16.02.2010 Сообщений: 3,338 Записей в блоге: 37 |
|
29.08.2017, 12:12 [ТС] |
3 |
А что было-то?) У меня тут была такая забавная строка в серверной процедуре: Если допилить Объект.Работы[0].ПолучитьИдентификатор() — то уже другая ошибка. 0 |
GreenkA 3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
||||||||
29.08.2017, 12:38 |
4 |
|||||||
Тамика,
Добавлено через 10 минут
Добавлено через 25 секунд 0 |
Котовчанин 942 / 482 / 200 Регистрация: 16.02.2010 Сообщений: 3,338 Записей в блоге: 37 |
|
29.08.2017, 12:39 [ТС] |
5 |
GreenkA, не, я имела в виду под «другой ошибкой» — ошибка, которая уже не касается этого. 0 |
GreenkA |
29.08.2017, 12:40 |
Не по теме:
ошибка, которая уже не касается этого. аа) ну ладно) будет новая тема?:D 0 |
Котовчанин 942 / 482 / 200 Регистрация: 16.02.2010 Сообщений: 3,338 Записей в блоге: 37 |
|
29.08.2017, 12:41 [ТС] |
7 |
аа) ну ладно) будет новая тема? Сейчас чуток покопаюсь и создам, если ничего не выйдет 0 |
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
29.08.2017, 12:42 |
8 |
Сейчас чуток покопаюсь и создам как показывает практика — выжди минимум 3 минуты) велика вероятность, что ты сама все решишь 0 |
-
Вот программа обработчик
&НаКлиенте
Процедура ТабличнаяЧасть1КоличествоПриИзменении(Элемент)
СтрокаТабличнойЧасти=Элементы.ТабличнаяЧасть1.ТекущиеДанные;
//при вызове этой функции появляется ошибка см.в.конце Элементы.ТабличнаяЧасть1.ТекущиеДанные.Сумма=РаботаСДокументами.ВычислениеСуммы(СтрокаТабличнойЧасти);
КонецПроцедурыСерверная часть
&НаСервере
Функция ВычислениеСуммы(Элемент) Экспорт
ЗначениеСуммы=Элемент.Количество*Элемент.Цена;
Сообщить(ЗначениеСуммы);
Возврат ЗначениеСуммы;
КонецФункцииТекст Ошибки:
Ошибка отображения типов:
Отсутствует отображение для типа «ДанныеФормыЭлементКоллекции»Кто знает, что не так пишите. Буду рад.
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
Дело в том, что ТекущуюСтроку из ТЗ нельзя передавать на сервер. (У типа «ДанныеФормыЭлементКоллекции» отсутствует свойство «Возможен обмен с сервером»). Для того чтобы передать строку на сервер ее надо выгрузить в структуру, передать на сервер эту структуру, с этой структурой сделать то что надо, и вернуть ее на клиент, и заполнить из нее ТЧ.
В вашем же конкретном примере — на сервер можно вообще ничего не передавать. Можно ведь все на клиенте выполнить.
-
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
{Обработка.медАРМПриёмкиТовара.Форма.Форма.Форма(1022)}: Ошибка при вызове метода контекста (ОткрытьФорму) ОткрытьФорму("Обработка.медАРМПриёмкиТовара.Форма.ВыборНоменклатуры",ПараметрыФормы,ЭтаФорма,,,, ОбработчикОповещения, Режим); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'cr': форма: Элемент имя: {http://v8.1c.ru/8.2/mngsrv/ws}cr по причине: Ошибка отображения типов: Отсутствует отображение для типа 'ДанныеФормыЭлементКоллекции'
Ребята всё понимаю, но не понимаю какую я ему коллекцию сую? Передаю Структуру.. На что может ругаться?
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
-
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
ПараметрыФормы Структура Структура
АдресТоваровВХранилище «e1cib/tempstorage/ed0e045f-6c9a-43b2-a363-086808153749» Строка
ТоварыДокумента «e1cib/tempstorage/61c0f15a-394e-4551-ab4a-4fffd87c3d74» Строка -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Ничего не понял. Попробуй тоже самое, только вместо своих параметров что-нибудь по-проще типа
«Новый структура(«пар1″,»пар1″)».
Если тут проблем не будет — смотри еще раз свой отбор, может там не просто строки?
Если проблема сохранится — возможно еще в обработчике оповещения что-то. -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
В ПараметрахФормы два значения, оба типа строка.. передаётся адрес на временное хранилище..
В ОбработкеОповещения передается структура в структуре, во внутренней структуре один параметр, тоже адрес типа строка. -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Ну поэкспериментируй:
1. Убери нафиг свои параметры =)
2. Убери нафиг свой обработчик оповещения =) -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
Самое интересное что падает при завершение процедуры создания.
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры"); ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище)); СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка; ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента)); Если Параметры.Свойство("ПередаватьШтрихкод") Тогда ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод; КонецЕсли; Если Параметры.Свойство("ОтображатьОстатки") Тогда Элементы.ТаблицаТоваровОстаток.Видимость = Истина; КонецЕсли; ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХарактеристикиДокумента.Характеристика |ПОМЕСТИТЬ ХарактеристикиДокумента |ИЗ | &ХарактеристикиДокумента КАК ХарактеристикиДокумента |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НайденныеХарактеристики.Характеристика |ПОМЕСТИТЬ НайденныеХарактеристики |ИЗ | &НайденныеХарактеристики КАК НайденныеХарактеристики |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХарактеристикиДокумента.Характеристика |ИЗ | ХарактеристикиДокумента КАК ХарактеристикиДокумента | ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики | ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика"; Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить()); Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить()); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество()>0 Тогда Выборка.Следующий(); Характеристика = Выборка.Характеристика; ПараметрыПоиска = Новый Структура; ПараметрыПоиска.Вставить("Характеристика",Характеристика); МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска); ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0]; КонецЕсли; КонецПроцедуры
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Это в каком случае?
Попробуй просто форму открыть без всего — может она вообще не откроется =) -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Неужели вот это работает:
ЭтотОбъект.Элементы.ТаблицаТоваров.Текущ1аяСтрока = МассивСтрок[0];
или «1» — это опечатка?
Оставь свои параметры, но убери обработчик оповещения, что будет? -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
Ошибка, уже исправил, сейчас попробую… Но параметр не мой, он был, я просто в него добавил еще одно значение, адрес временного хранилища.
— Объединение сообщений, 22 дек 2015 —
Переписал процедуру ПриСозданииНаСервере
// Пропускаем инициализацию, чтобы гарантировать получение формы при передаче параметра "АвтоТест". Если Параметры.Свойство("АвтоТест") Тогда Возврат; КонецЕсли; ДополнительныеКолонкиНоменклатуры = ЗначениеНастроекПовтИсп.ПолучитьЗначениеКонстанты("ДополнительнаяКолонкаПриОтображенииНоменклатуры"); ТаблицаТоваров.Загрузить(ПолучитьИзВременногоХранилища(Параметры.АдресТоваровВХранилище)); СкрытьКолонкуУпаковка = Параметры.СкрытьКолонкуУпаковка; Если Параметры.Свойство("ПередаватьШтрихкод") Тогда ПередаватьШтрихкод = Параметры.ПередаватьШтрихкод; КонецЕсли; Если Параметры.Свойство("ОтображатьОстатки") Тогда Элементы.ТаблицаТоваровОстаток.Видимость = Истина; КонецЕсли; ЭтотОбъект.ТекущийЭлемент = Элементы.ТаблицаТоваров; Если Параметры.Свойство("ТоварыДокумента") Тогда ТоварыДокументов.Загрузить(ПолучитьИзВременногоХранилища(Параметры.ТоварыДокумента)); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ХарактеристикиДокумента.Характеристика |ПОМЕСТИТЬ ХарактеристикиДокумента |ИЗ | &ХарактеристикиДокумента КАК ХарактеристикиДокумента |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НайденныеХарактеристики.Характеристика |ПОМЕСТИТЬ НайденныеХарактеристики |ИЗ | &НайденныеХарактеристики КАК НайденныеХарактеристики |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХарактеристикиДокумента.Характеристика |ИЗ | ХарактеристикиДокумента КАК ХарактеристикиДокумента | ПОЛНОЕ СОЕДИНЕНИЕ НайденныеХарактеристики КАК НайденныеХарактеристики | ПО ХарактеристикиДокумента.Характеристика = НайденныеХарактеристики.Характеристика"; Запрос.Параметры.Вставить("НайденныеХарактеристики",ТаблицаТоваров.Выгрузить()); Запрос.Параметры.Вставить("ХарактеристикиДокумента",ТоварыДокументов.Выгрузить()); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Количество()>0 Тогда Выборка.Следующий(); Характеристика = Выборка.Характеристика; ПараметрыПоиска = Новый Структура; ПараметрыПоиска.Вставить("Характеристика",Характеристика); МассивСтрок = ЭтотОбъект.ТаблицаТоваров.НайтиСтроки(ПараметрыПоиска); ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0]; КонецЕсли; КонецЕсли;
И закоментировал добавление в структуру ТоварыДокумента.. Работает.. т.е. проблема внутри условия получается?
Мне кажется ему всё таки вот это не нравится ка кто?
ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0];Последнее редактирование: 22 дек 2015
-
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Если у вас «Элементы.ТаблицаТоваров» — это дин.список, то в тек. строку нужно передать ссылку, а если таблица формы — тогда идентификатор строки.
У вас похоже массивСтрок[0]- это и есть то самое «ДанныеФормыЭлементКоллекции» на которое 1с и орет -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
Респект и уважуха.. да ТаблицаТоваров это таблица формы.. а МассивСтрок это данные коллекции.
Возникает вопрос как получить идентификатор…
Т.е. необходимо следующее.. ТаблицаТоваров это список номенклатуры с характеристиками и есть ТЗ основной формы, где есть характеристика из этой таблицы.. на ней нужно позиционировать при открытии. -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Значит нужно присвоить идентификатор.
Можно глянуть в синтакс-помощник — там должно быть «ПолучитьИдентификатор»
http://www.forum.mista.ru/topic.php?id=550120 -
Offline
TerANik
Профессионал в 1С- Регистрация:
- 19 ноя 2014
- Сообщения:
- 1.271
- Симпатии:
- 98
- Баллы:
- 54
ЭтотОбъект.Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
Вот «Огонь». -
Offline
Dem0lisher
Профессионал в 1С- Регистрация:
- 4 авг 2009
- Сообщения:
- 1.266
- Симпатии:
- 102
- Баллы:
- 104
Ага! Еще «Огонь» есть — ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.Вывести();
А у вас можно по-короче наверное: Элементы.ТаблицаТоваров.ТекущаяСтрока = МассивСтрок[0].ПолучитьИдентификатор();
без «ЭтотОбъект»
16.01.202013.05.2023Ошибки
Данная ошибка возникает в тот момент, когда Вы пытаетесь вызвать серверный метод и передаете ему в качестве параметра управляемую форму.
Рассмотрим следующий модуль управляемой формы:
&НаСервере Функция ТестВызоваСервера(Форма) Форма.ТолькоПросмотр = Истина; КонецФункции // ТестВызоваСервера() &НаКлиенте Процедура ПокупательПриИзменении(Элемент) //попытка передачи переменной локального контекста на сервер ТестВызоваСервера(ЭтаФорма); КонецПроцедуры
Дело в том, что в контексте модуля управляемой формы переменная ЭтаФорма
доступна всегда (как на клиенте, так и на сервере) и дополнительно ее передавать не требуется (если только вы не вызываете процедуру или функцию, перед которой указана директива &НаСервереБезКонтекста
). Правильным будет следующий код:
&НаСервере Функция ТестВызоваСервера() ЭтаФорма.ТолькоПросмотр = Истина; КонецФункции // ТестВызоваСервера() &НаКлиенте Процедура ПокупательПриИзменении(Элемент) //вызов контекстной серверной функции ТестВызоваСервера(); КонецПроцедуры
Аналогичное замечание относится к серверным вызовам. Вы не можете передать содержимое переменной ЭтаФорма
на сервер. Вы можете только запросить необходимую информацию на сервере и изменить форму в контексте клиента, либо реализовать это через серверный метод самой формы. Например, такой код работать не будет:
&НаКлиенте Процедура ПокупательПриИзменении(Элемент) //попытка передачи переменной локального контекста на сервер ОбщийМодульСервер.Тест(ЭтаФорма); КонецПроцедуры
Подумайте сами, чем можно заменить такой вызов
Поделиться страницей в соц.сетях
Метки: Метки Управляемые формы
В управляемых формах может появиться следующая ошибка:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: param Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
С данной ошибкой я столкнулся, когда пытался в управляемой форме на стороне сервера выполнить следующую команду:
ОбъектФормы = РеквизитФормыВЗначение("Объект"); ТЗВывода = ОбъектФормы.Бонусы.Выгрузить().Скопировать(); ЗначениеВРеквизитФормы(ОбъектФормы, "Объект");
Решением данной проблемы было обнулить переменную с таблицей данных:
ТЗВывода = Неопределено;
Добрый день всем! Уважаемые, кто подскажет отчего такая ошибка возникает при попытке прикрепить файл к документу в 1С Документооборот?: {ОбщийМодуль.ФайловыеФункцииСлужебный.Модуль(1349)}: Ошибка при вызове метода контекста (ОбщийМодуль) МодульРаботаСФайламиСлужебныйВызовСервера = ОбщегоНазначения.ОбщийМодуль(«РаботаСФайламиСлужебныйВызовСервера»); по причине: Ошибка при вызове серверного метода. по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства ‘ret’: форма: Элемент имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа ‘ОбщийМодуль’
Какой тут еще может быть тип если передается строка….
а он не на строку ругается
ОбщегоНазначения по всей видимости общий модуль серверный. Его функция ОбщийМодуль, по всей видимости в результате возвращает ОбщийМодуль, который, как видно из ошибки нельзя передавать с клиента на сервер… Как то так
что характерно, такая ошибка ведет себя непонятным образом: то есть то нет. при прочих равных условиях. закономерность пока не выявлена
Попробуй Переименовать «свою» функцию «Общий модуль» в другие сословие ОбщийМодуль (CommonModule) Методы: <Имя процедуры или функции> (<Name of a procedure or a function>) Описание: Предоставляет доступ к экспортным процедурам и функциям неглобального общего модуля (т.е. модуля для которого не установлен признак Глобальный при конфигурировании). Доступность: Сервер, толстый клиент, внешнее соединение. См. также: Глобальный контекст, свойство <Имя общего модуля>
+ Покажи лучше полный текст функции вызова, или хотя бы 10 строчек. Зачем такой изврат?
до чего же .удацки выглядит попытка реализации классов и описания интерфейсов в системе изначально на это не заточенной…
Вместо двух строчек: и ошибка ушла
Тэги: 1С 8
Комментарии доступны только авторизированным пользователям