Классика: Ошибка отображения типов: Отсутствует отображение для типа |
Я |
26.02.22 — 00:00
Пытаюсь открыть одну форму из другой, передавая туда параметры. В параметрах только ссылки и простые типы, никакие таблицы значений не передаю:
https://disk.yandex.ru/i/bTk0282HaaGC2Q
https://disk.yandex.ru/i/Y2undFzJ11HVSQ
Получаю ошибку:
Ошибка отображения типов:
Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’
Не могу понять, что не так?
Причем процедура ПриСозданииНаСервере() открываемой формы отрабатывает без ошибок. Ошибка возникает, когда вызов возвращается в ОткрытьФорму().
Подскажите, что делаю не так, в чем ошибка?
1 — 26.02.22 — 00:12
А 1ска говорит, что передаешь
2 — 26.02.22 — 00:15
(0) Почитайте раздел рекомендации правил форума.
3 — 26.02.22 — 00:34
(1) Поэтому и не понимаю, где ошибка. Вижу, что говорит, но так же вижу и в отладке, что я передаю — см. 2 скриншот, там ТЗ нет, только ссылки и простые типы.
(2) Если вы про поиск, то, естественно, им пользовался, ответа на свой вопрос не нашел.
4 — 26.02.22 — 00:50
(0) Ты ТаблицуЗначений в каком то из параметров возвращаешь с сервера. Скинь конфигу
5 — 26.02.22 — 01:14
(4) По завершению процедуры ПриСозданииНаСервере, когда вызов возвращается обратно на клиент, в параметрах так же нет никакой ТЗ, так же только ссылки и простые типы:
https://disk.yandex.ru/i/qezDhmDrPg1Mjg
6 — 26.02.22 — 02:33
(5) Скинь Cf на liveups@yandex.ru
7 — 26.02.22 — 07:30
Тз это не реквизит формы?
8 — 26.02.22 — 07:59
Вместо ТЗ надо передавать массив.
9 — 26.02.22 — 09:11
>> Причем процедура ПриСозданииНаСервере() открываемой формы отрабатывает без ошибок. Ошибка возникает, когда вызов возвращается в ОткрытьФорму()
Значит скрины не актуальны. Вы нас в заблуждение ими вводите.
«Курите» код по всем событиям в открываемой форме , начина с ПриСозданииНаСервере()
10 — 26.02.22 — 09:12
Вы с сервера на клиент в уже откываемой форме что-то универсальное передаете.
11 — 26.02.22 — 09:31
Всем спасибо, разобрался, проблема оказалась в другом. (5) Вот тут на скрине полностью не видно, но в открываемой форме я создаю ТЗ и пытаюсь передать ее в качестве параметра в динамический список, чего, оказывается делать нельзя.
Ввело в заблуждение то, что исключение вызывалось после вызова ОткрытьФорму(), а само создание формы (ПриСозданииНаСервере) отрабатывало без ошибок.
12 — 26.02.22 — 14:24
ТаблицуЗначений передать с сервера на клиента нельзя.
Как ни странно,но создать ТЗ можно в толстом клиенте и с ухищрениями в тонком,а передать нельзя,так как ограничение искуственное.
13 — 26.02.22 — 16:07
(12) > и с ухищрениями в тонком
Веб клиент — достаточно тонкий?
ДедМорроз
14 — 26.02.22 — 19:56
Есть несколько видов клиентов:
Толстый клиент,
Тонкий клиент,
Web-клиент,
Мобильный клиент.
В последних двух никакого намека на таблицу значений,так как ее там никогда не было.
Классика: Ошибка отображения типов: Отсутствует отображение для типа |
Я |
TrueBuild
26.02.22 — 00:00
Пытаюсь открыть одну форму из другой, передавая туда параметры. В параметрах только ссылки и простые типы, никакие таблицы значений не передаю:
https://disk.yandex.ru/i/bTk0282HaaGC2Q
https://disk.yandex.ru/i/Y2undFzJ11HVSQ
Получаю ошибку:
Ошибка отображения типов:
Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/core}ValueTable’
Не могу понять, что не так?
Причем процедура ПриСозданииНаСервере() открываемой формы отрабатывает без ошибок. Ошибка возникает, когда вызов возвращается в ОткрытьФорму().
Подскажите, что делаю не так, в чем ошибка?
vicof
1 — 26.02.22 — 00:12
А 1ска говорит, что передаешь
МихаилМ
2 — 26.02.22 — 00:15
(0) Почитайте раздел рекомендации правил форума.
TrueBuild
3 — 26.02.22 — 00:34
(1) Поэтому и не понимаю, где ошибка. Вижу, что говорит, но так же вижу и в отладке, что я передаю — см. 2 скриншот, там ТЗ нет, только ссылки и простые типы.
(2) Если вы про поиск, то, естественно, им пользовался, ответа на свой вопрос не нашел.
H A D G E H O G s
4 — 26.02.22 — 00:50
(0) Ты ТаблицуЗначений в каком то из параметров возвращаешь с сервера. Скинь конфигу
TrueBuild
5 — 26.02.22 — 01:14
(4) По завершению процедуры ПриСозданииНаСервере, когда вызов возвращается обратно на клиент, в параметрах так же нет никакой ТЗ, так же только ссылки и простые типы:
https://disk.yandex.ru/i/qezDhmDrPg1Mjg
H A D G E H O G s
6 — 26.02.22 — 02:33
(5) Скинь Cf на liveups@yandex.ru
pechkin
7 — 26.02.22 — 07:30
Тз это не реквизит формы?
МимохожийОднако
8 — 26.02.22 — 07:59
Вместо ТЗ надо передавать массив.
SuperMario
9 — 26.02.22 — 09:11
>> Причем процедура ПриСозданииНаСервере() открываемой формы отрабатывает без ошибок. Ошибка возникает, когда вызов возвращается в ОткрытьФорму()
Значит скрины не актуальны. Вы нас в заблуждение ими вводите.
«Курите» код по всем событиям в открываемой форме , начина с ПриСозданииНаСервере()
SuperMario
10 — 26.02.22 — 09:12
Вы с сервера на клиент в уже откываемой форме что-то универсальное передаете.
TrueBuild
11 — 26.02.22 — 09:31
Всем спасибо, разобрался, проблема оказалась в другом. (5) Вот тут на скрине полностью не видно, но в открываемой форме я создаю ТЗ и пытаюсь передать ее в качестве параметра в динамический список, чего, оказывается делать нельзя.
Ввело в заблуждение то, что исключение вызывалось после вызова ОткрытьФорму(), а само создание формы (ПриСозданииНаСервере) отрабатывало без ошибок.
ДедМорроз
12 — 26.02.22 — 14:24
ТаблицуЗначений передать с сервера на клиента нельзя.
Как ни странно,но создать ТЗ можно в толстом клиенте и с ухищрениями в тонком,а передать нельзя,так как ограничение искуственное.
acht
13 — 26.02.22 — 16:07
(12) > и с ухищрениями в тонком
Веб клиент — достаточно тонкий?
ДедМорроз
14 — 26.02.22 — 19:56
Есть несколько видов клиентов:
Толстый клиент,
Тонкий клиент,
Web-клиент,
Мобильный клиент.
В последних двух никакого намека на таблицу значений,так как ее там никогда не было.
Ошибка отображения типов: Отсутствует отображение для типа ‘ЭлементСпискаЗначений’
Описание ошибки:
Ошибка при программировании, конфигурировании кода в 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)
Добрый день. Сегодня наступил на интересные грабли:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных 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
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = РаботаСоСпискамиДокументовКлиент.ПолучитьДанныеТекущейСтрокиСписка(
Элементы.Список, Элементы.Список.ТекущаяСтрока);
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Поле = Элементы.Файлы Тогда
ОткрыватьЗакладкуФайлы=ПроверкаОткрытияЗаклФайлы(ЭтаФорма)
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуФайлы», ТекущиеДанные.Ссылка, ОткрыватьЗакладкуФайлы);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.ПодписанЭП Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуЭП», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.Задачи Тогда
ОткрытьФорму(«ОбщаяФорма.ПроцессыИЗадачи»,
Новый Структура(«Предмет», ТекущиеДанные.Ссылка),
ЭтаФорма);
Возврат;
КонецЕсли;
Если Поле = Элементы.ЕстьКатегории Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуКатегории», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.СостояниеКонтроля Тогда
КонтрольКлиент.ОбработкаКомандыКонтроль(ТекущиеДанные.Ссылка, ЭтаФорма);
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура(«Ключ», ТекущиеДанные.Ссылка);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
КонецПроцедуры
Данная ошибка возникает в тот момент, когда Вы пытаетесь вызвать серверный метод и передаете ему в качестве параметра управляемую форму.
Рассмотрим следующий модуль управляемой формы:
&НаСервере Функция ТестВызоваСервера(Форма) Форма.ТолькоПросмотр = Истина; КонецФункции // ТестВызоваСервера() &НаКлиенте Процедура ПокупательПриИзменении(Элемент) //попытка передачи переменной локального контекста на сервер ТестВызоваСервера(ЭтаФорма); КонецПроцедуры
Дело в том, что в контексте модуля управляемой формы переменная ЭтаФорма
доступна всегда (как на клиенте, так и на сервере) и дополнительно ее передавать не требуется (если только вы не вызываете процедуру или функцию, перед которой указана директива &НаСервереБезКонтекста
). Правильным будет следующий код:
&НаСервере Функция ТестВызоваСервера() ЭтаФорма.ТолькоПросмотр = Истина; КонецФункции // ТестВызоваСервера() &НаКлиенте Процедура ПокупательПриИзменении(Элемент) //вызов контекстной серверной функции ТестВызоваСервера(); КонецПроцедуры
Аналогичное замечание относится к серверным вызовам. Вы не можете передать содержимое переменной ЭтаФорма
на сервер. Вы можете только запросить необходимую информацию на сервере и изменить форму в контексте клиента, либо реализовать это через серверный метод самой формы. Например, такой код работать не будет:
&НаКлиенте Процедура ПокупательПриИзменении(Элемент) //попытка передачи переменной локального контекста на сервер ОбщийМодульСервер.Тест(ЭтаФорма); КонецПроцедуры
Подумайте сами, чем можно заменить такой вызов
Возникает при открытии консоли после обновления типовой конфигурации, если открывается сохраненное дерево запросов
Ошибка отображения типов:
Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/enterprise/current-config}DocumentRef.ПоступлениеВЛизинг’
{УниверсальныеИнструменты Обработка.УИ_КонсольЗапросов.Форма.Форма.Форма(1683)}: стЗагруженныеДанные = СериализаторXDTO.ПрочитатьXML(Чтение);
{УниверсальныеИнструменты Обработка.УИ_КонсольЗапросов.Форма.Форма.Форма(1697)}: стЗагруженныеДанные = ПакетЗапросов_ЗагрузитьНаСервере(стрЗагруженныеДанные);
{УниверсальныеИнструменты Обработка.УИ_КонсольЗапросов.Форма.Форма.Форма(2166)}: ПакетЗапросов_Загрузить(ИмяФайлаЗапросов);
{(1)}:ПриОткрытииПродолжение(ДополнительныеПараметры);
{УниверсальныеИнструменты Обработка.УИ_КонсольЗапросов.Форма.Форма.Форма(2065)}: Выполнить (ДополнительныеПараметры.Продолжение + «(ДополнительныеПараметры);»);
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: {http://v8.1c.ru/8.1/data/core}Structure Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/core}Structure
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: Value Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: value Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType
по причине:
Ошибка преобразования данных XDTO:
НачалоСвойства: Type Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}QName
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа ‘{http://v8.1c.ru/8.1/data/enterprise/current-config}DocumentRef.ПоступлениеВЛизинг’
-
Вот программа обработчик
&НаКлиенте
Процедура ТабличнаяЧасть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].ПолучитьИдентификатор();
без «ЭтотОбъект»
В управляемых формах может появиться следующая ошибка:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: НачалоСвойства: param Форма: Элемент Тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Ошибка отображения типов: Отсутствует отображение для типа '{http://v8.1c.ru/8.1/data/core}ValueTable'
С данной ошибкой я столкнулся, когда пытался в управляемой форме на стороне сервера выполнить следующую команду:
ОбъектФормы = РеквизитФормыВЗначение("Объект"); ТЗВывода = ОбъектФормы.Бонусы.Выгрузить().Скопировать(); ЗначениеВРеквизитФормы(ОбъектФормы, "Объект");
Решением данной проблемы было обнулить переменную с таблицей данных:
ТЗВывода = Неопределено;
-
При передаче результата запроса функции через Возврат в Клиент, выходит ошибка «Отсутствует отображение для типа ‘ВыборкаИзРезультатаЗапроса‘».
При совершении таких же манипуляций с кодом, ошибок не возникало. На ошибки все проверил.
Какой тут может быть подводный камень?На клиенте:
Процедура РаскладкаПКОтПриИзменении(Элемент) СтрокаТабличнойЧасти = Элементы.Раскладка.ТекущиеДанные; ПКДо = СтрокаТабличнойЧасти.ПКОт + СтрокаТабличнойЧасти.Длина; Результат = РаскладкаТрубы.ПересеченияРаскладки(СтрокаТабличнойЧасти.ПКОт, ПКДо); КонецПроцедуры
НаСервере
Функция ПересеченияРаскладки(От,До)Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТрубаРаскладка.ПКОт, | ТрубаРаскладка.ПКДо, | ТрубаРаскладка.ТрубаНом, | ТрубаРаскладка.ТрубаНом.Длина КАК Длина |ИЗ | РегистрСведений.ТрубаРаскладка КАК ТрубаРаскладка |ГДЕ | ТрубаРаскладка.ПКОт <= &ПКОт И ТрубаРаскладка.ПКДо >= &ПКОт |УПОРЯДОЧИТЬ ПО ТрубаРаскладка.ПКОт |"; Запрос.УстановитьПараметр("ПКОт", От); Запрос.УстановитьПараметр("ПКДо", До); Результат = Запрос.Выполнить().Выбрать(); Возврат Результат; КонецФункции
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Почитайте про Выбрать() и про его область видимости — На клиенте, На сервере…
-
А почему точно в таких же запросах из клиента в сервер все работает? Разница только в другой таблице.
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Потому что:
РезультатЗапроса (QueryResult)
Выбрать (Select)
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер).ВыборкаИзРезультатаЗапроса (QueryResultSelection)
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение(сервер). -
Одинаковая ошибка как из Тонкого клиента, так из Толстого.
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
А где вы параметры запросу задаете ? Вернее их значения ?
— Объединение сообщений, 2 июн 2016 —
А, увидел
— Объединение сообщений, 2 июн 2016 —
Отладчиком проходились по серверной функции ? Попадает туда ?
-
По серверной ходил. Ответ по запросу есть. Но при передаче в клиент путем Возврат, выходит ошибка.
Перед этим киврялся и пытался передать значения на другую форму. Начала выходить ошибка. Потом эту Другую форму удалил……но результат с ошибкой сохранился.
Могло это как-то повлиять? -
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Вроде как результат запроса на клиента нельзя передать, обрабатывайте на сервере все.

Сергей
Местный
Сообщений: 8
Баллов: 15
Регистрация: 26.06.2022
#10
0
28.06.2022 13:36:40
&НаКлиенте
Процедура СписокВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекущиеДанные = РаботаСоСпискамиДокументовКлиент.ПолучитьДанныеТекущейСтрокиСписка(
Элементы.Список, Элементы.Список.ТекущаяСтрока);
Если ТекущиеДанные = Неопределено Тогда
Возврат;
КонецЕсли;
Если Поле = Элементы.Файлы Тогда
ОткрыватьЗакладкуФайлы=ПроверкаОткрытияЗаклФайлы(ЭтаФорма)
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуФайлы», ТекущиеДанные.Ссылка, ОткрыватьЗакладкуФайлы);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.ПодписанЭП Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуЭП», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.Задачи Тогда
ОткрытьФорму(«ОбщаяФорма.ПроцессыИЗадачи»,
Новый Структура(«Предмет», ТекущиеДанные.Ссылка),
ЭтаФорма);
Возврат;
КонецЕсли;
Если Поле = Элементы.ЕстьКатегории Тогда
ПараметрыОткрытия = Новый Структура(«Ключ, ОткрытьЗакладкуКатегории», ТекущиеДанные.Ссылка, Истина);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
Возврат;
КонецЕсли;
Если Поле = Элементы.СостояниеКонтроля Тогда
КонтрольКлиент.ОбработкаКомандыКонтроль(ТекущиеДанные.Ссылка, ЭтаФорма);
Возврат;
КонецЕсли;
ПараметрыОткрытия = Новый Структура(«Ключ», ТекущиеДанные.Ссылка);
ОткрытьФорму(«Справочник.ВнутренниеДокументы.ФормаОбъекта», ПараметрыОткрытия, Элементы.Список);
КонецПроцедуры