Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
Доброго времени суток. Пытаюсь с клиента на сервер передать данные текущей строки докуменат, из процедуры КоличествоПриИзменении(Элемент). Вылезает ошибка : ошибка отображения типов: Отсутствует отображение для типа "ДанныеФормыЭлементКоллекции" ...... по причине: ошибка передачи данных между клиентом и сервером. Сначала данные отправлял через ТекущиеДанные.КодТовара, потом попробовал эти данные в массив закинуть, и передать элементы массива, но без результата. Подскажите, пожалуйста, что не так делаю?
МассивПроверяемыхДанных = Новый Массив;
ТекущиеДанные = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные;
КодТовара= ТекущиеДанные.КодТовара;
НомерДокументаПоступления = ТекущиеДанные.ДокументОснование.Код;
МассивПроверяемыхДанных.Добавить(КодТовара);
МассивПроверяемыхДанных.Добавить(НомерДокументаПоступления );
ПроверкаНаличияНоменклатуры = ПроверитьТекущиеДанныеПоПоступлениямНаСервере(МассивПроверяемыхДанных[0], МассивПроверяемыхДанных[1]);
МассивПроверяемыхДанных.Очистить();
ПоказатьПо теме из базы знаний
- Ошибка преобразования данных XDTO: Текст XML содержит недопустимый символ
- После обновления Бухгалтерии предприятия 3.0 возникает ошибка "Ошибка преобразования данных XDTO:"
- Программное копирование узла/строки дерева значений на управляемой форме (УФ, ДанныеФормыДерево, ДанныеФормыЭлементДерева) в вариантах на клиенте и на сервере
- 1C: EDT: фиксим баги доработанной и устаревшей конфигурации УТ
Найденные решения
(9) да нет, дело оказалось почему то в этой конструкции . Там массив строк возвращался , и из за него почему то ошибка , хотя на клиенте массив вроде бы как доступен. Сделе так и ошибка пропала.
СтруктураВозврата.Вставить("КодВозврата", Истина);
СтруктураВозврата.Вставить("ДанныеВозврата", ИскомыеСтроки);
СтруктураВозврата.Вставить("КодВозврата", Истина);
СтруктураВозврата.Вставить("ДанныеВозврата", Неопределено);
(8)
А зачем вот это вот все?
В чем проблема просто параметры передать?
Ошибка у вас потому что вы на клиент возвращаете массив строк.
А зачем вот это вот все?
МассивПроверяемыхДанных.Добавить(КодНоменклатуры);
МассивПроверяемыхДанных.Добавить(НомерПроизвЗадания);
СтруктураВозврата = Новый Структура;
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(МассивПроверяемыхДанных[0], МассивПроверяемыхДанных[1]);
МассивПроверяемыхДанных.Добавить(НомерПроизвЗадания);
СтруктураВозврата = Новый Структура;
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(МассивПроверяемыхДанных[0], МассивПроверяемыхДанных[1]);
В чем проблема просто параметры передать?
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(КодНоменклатуры, НомерПроизвЗадания);
Ошибка у вас потому что вы на клиент возвращаете массив строк.
ИскомыеСтроки = СписокНоменклатурыПроизвЗадания.НайтиСтроки(ПараметрыОтбора);
Если Не ИскомыеСтроки.Количество() = 0 Тогда
СтруктураВозврата.Вставить("КодВозврата", Истина);
СтруктураВозврата.Вставить("ДанныеВозврата", ИскомыеСтроки);
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
ошибка вылезает в момент вызова функции или возврата из неё?
если возврата, то иногда помогает поставить перед параметрами "Знач" в
PS НомерДокументаПоступления = ТекущиеДанные.ДокументОснование.Код;
предоставленный код выполняется на клиенте?
Вылезает ошибка : ошибка отображения типов: Отсутствует отображение для типа "ДанныеФормыЭлементКоллекции"
ошибка вылезает в момент вызова функции или возврата из неё?
если возврата, то иногда помогает поставить перед параметрами "Знач" в
PS НомерДокументаПоступления = ТекущиеДанные.ДокументОснование.Код;
предоставленный код выполняется на клиенте?
(7)
&НаКлиенте
Процедура КоличествоПриИзменении(Элемент)
МассивПроверяемыхДанных = Новый Массив;
ТекущиеДанные = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные;
КодНоменклатуры = ТекущиеДанные.Артикул;
НомерПроизвЗадания = ТекущиеДанные.НомерПроизводственногоЗадания;
МассивПроверяемыхДанных.Добавить(КодНоменклатуры);
МассивПроверяемыхДанных.Добавить(НомерПроизвЗадания);
СтруктураВозврата = Новый Структура;
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(МассивПроверяемыхДанных[0], МассивПроверяемыхДанных[1]);
Если ПроверкаДанныхПЗ.КодВозврата = Ложь Тогда
Предупреждение(ПроверкаДанныхПЗ.ДанныеВозврата);
Возврат;
Иначе
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПроверитьТекущиеДанныеПоПЗНаСервере(КодНоменклатуры, НомерПроизвЗадания)
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("НомКод", КодНоменклатуры);
ПараметрыОтбора.Вставить("НПЗ", НомерПроизвЗадания);
СтруктураВозврата = Новый Структура;
ИскомыеСтроки = СписокНоменклатурыПроизвЗадания.НайтиСтроки(ПараметрыОтбора);
Если Не ИскомыеСтроки.Количество() = 0 Тогда
СтруктураВозврата.Вставить("КодВозврата", Истина);
СтруктураВозврата.Вставить("ДанныеВозврата", ИскомыеСтроки);
Иначе
СтруктураВозврата.Вставить("КодВозврата", Ложь);
СтруктураВозврата.Вставить("ДанныеВозврата", "По текущей номенклатуре нет доступного количества в производственном задании № " + НомерПроизвЗадания);
КонецЕсли;
Возврат СтруктураВозврата;
КонецФункции
Показать
(8)
А зачем вот это вот все?
В чем проблема просто параметры передать?
Ошибка у вас потому что вы на клиент возвращаете массив строк.
А зачем вот это вот все?
МассивПроверяемыхДанных.Добавить(КодНоменклатуры);
МассивПроверяемыхДанных.Добавить(НомерПроизвЗадания);
СтруктураВозврата = Новый Структура;
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(МассивПроверяемыхДанных[0], МассивПроверяемыхДанных[1]);
МассивПроверяемыхДанных.Добавить(НомерПроизвЗадания);
СтруктураВозврата = Новый Структура;
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(МассивПроверяемыхДанных[0], МассивПроверяемыхДанных[1]);
В чем проблема просто параметры передать?
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(КодНоменклатуры, НомерПроизвЗадания);
Ошибка у вас потому что вы на клиент возвращаете массив строк.
ИскомыеСтроки = СписокНоменклатурыПроизвЗадания.НайтиСтроки(ПараметрыОтбора);
Если Не ИскомыеСтроки.Количество() = 0 Тогда
СтруктураВозврата.Вставить("КодВозврата", Истина);
СтруктураВозврата.Вставить("ДанныеВозврата", ИскомыеСтроки);
(8)
1) зачем нужен серверный вызов?
2) не надо передавать результат НайтиСтроки(),
из СП:
Замечание! Массив хранит ссылки на строки коллекции.
т.е. в массивах ссылка на область памяти, где хранится данные формы,
что вы предлагаете делать с этой ссылкой на клиенте? - там эта инфа лежит в другом месте...
Способ обхода:
сделайте с результатом поиска что хотите на сервере.
либо вызывайте поиск строк на клиенте, и обрабатывайте данные на клиенте...
ИскомыеСтроки = СписокНоменклатурыПроизвЗадания.НайтиСтроки(ПараметрыОтбора);
1) зачем нужен серверный вызов?
2) не надо передавать результат НайтиСтроки(),
из СП:
Замечание! Массив хранит ссылки на строки коллекции.
т.е. в массивах ссылка на область памяти, где хранится данные формы,
что вы предлагаете делать с этой ссылкой на клиенте? - там эта инфа лежит в другом месте...
Способ обхода:
сделайте с результатом поиска что хотите на сервере.
либо вызывайте поиск строк на клиенте, и обрабатывайте данные на клиенте...
(9) да нет, дело оказалось почему то в этой конструкции . Там массив строк возвращался , и из за него почему то ошибка , хотя на клиенте массив вроде бы как доступен. Сделе так и ошибка пропала.
СтруктураВозврата.Вставить("КодВозврата", Истина);
СтруктураВозврата.Вставить("ДанныеВозврата", ИскомыеСтроки);
СтруктураВозврата.Вставить("КодВозврата", Истина);
СтруктураВозврата.Вставить("ДанныеВозврата", Неопределено);
ТекущиеДанные = ЭтаФорма.ТекущийЭлемент.ТекущиеДанные;
КодНоменклатуры = ТекущиеДанные.Артикул;
НомерПроизвЗадания = ТекущиеДанные.НомерПроизводственногоЗадания;
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(КодНоменклатуры , НомерПроизвЗадания);
(12) Да, я уже это понял, написал в (11) . А это
МассивПроверяемыхДанных.Добавить(КодНоменклатуры);
МассивПроверяемыхДанных.Добавить(НомерПроизвЗадания);
СтруктураВозврата = Новый Структура;
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(МассивПроверяемыхДанных[0], МассивПроверяемыхДанных[1]);
была попытка, я думал что ошибка из за ПроверитьТекущиеДанныеПоПЗНаСервере(ТекущиеДанные.Артикул, ТекущиеДанные.НомерПроизводственногоЗадания). Спасибо.
МассивПроверяемыхДанных.Добавить(НомерПроизвЗадания);
СтруктураВозврата = Новый Структура;
ПроверкаДанныхПЗ = ПроверитьТекущиеДанныеПоПЗНаСервере(МассивПроверяемыхДанных[0], МассивПроверяемыхДанных[1]);
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот