Имя: Пароль:
1C
1С v8
После перевода на УФ, на клиенте стали недоступны процедуры общего модуля
0 Vladal
 
02.03.16
11:06
Привет! Платформа 8.3.6.2332.

Есть самописка, которая работала в обычном приложении и её перевели на управляемое.
В конфе есть модуль ОбщегоНазначения, с установленными флажками "Клиент", "Сервер", "Внешнее соединение".

В отчете вызываю функцию этого модуля:
ВремТаблица = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(ТаблицаСФильтрами,
    Новый Структура("спр_ВидПретензии_Представление, Статус_Представление, ЮрФормаКлиента", "Возврат качественного товара(письмо)", "Закрыт", "Физ. лицо")).Выгрузить();            ВремТаблица.Свернуть("док_Претензия_Представление", "ПретензионнаяСумма");

Прежде, в обычном приложении, работал. Конфу перевели на управляемое приложение и вот сейчас этот отчет выстрелил ошибкой:
----------------------------- начало цитаты
Ошибка при вызове метода контекста (ОтобратьСтрокиПоКритериям)
ВремТаблица = ОбщегоНазначения.ОтобратьСтрокиПоКритериям(ТаблицаСФильтрами,
по причине:
Ошибка при вызове серверного метода.
по причине:
Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа.
по причине:
Ошибка преобразования данных XDTO:
Запись значения свойства 'ret':
    форма: Элемент
    имя: {http://v8.1c.ru/8.2/managed-application/modules}ret
по причине:
Ошибка отображения типов:
Отсутствует отображение для типа 'РезультатЗапроса'
----------------------------- конец цитаты

Что надо сделать, чтобы устранить эту ошибку?
Какие флажки установить у этого модуля, как правильно организовать вызов этой функции чтобы работало в тонком клиенте?
1 f_vadim
 
02.03.16
11:07
код переписывать, флажками тут не обойтись
2 Drac0
 
02.03.16
11:09
(0) Нету РезультатаЗапроса на клиенте и его нельзя, соответсвенно, передать. Переписывать логику.
3 f_vadim
 
02.03.16
11:09
ну и традиционно - как можно просидеть 8 лет на мисте и не знать про ограничения на передаваемые значения между клиентом и сервером?
4 Drac0
 
02.03.16
11:14
(3) человек только что открыл для себя УФ.
5 Vladal
 
02.03.16
11:19
(3) Вот так, сидим, на старых 8.1 и 8.2 в обычных приложениях. А что не так?
6 f_vadim
 
02.03.16
11:20
(5) не так то, что обсосано это уже миллион раз.
7 Vladal
 
02.03.16
11:22
(1) и *(2) Вот скажите примерную схему этого?
Как должно выглядеть?

Сейчас такая схема:

Процедура Сформировать()
    ...
    ОбщегоНазначения.ОтобратьСтрокиПоКриетериям()
    ...
КонецПроцедуры

а сделать так?
&НаСервере
Функция ВызватьНаСервере
   ОбщегоНазначения.ОтобратьСтрокиПоКриетериям()
КонецФункции

Процедура Сформировать()
    ...
    ВызватьНаСервере()
    ...
КонецПроцедуры
8 Vladal
 
02.03.16
11:22
(6) Хотелось бы конструктива.
9 hhhh
 
02.03.16
11:32
(8) ОбщегоНазначения - сейчас такого не бывает

должно быть разделено

ОбщегоНазначенияКлиент
ОбщегоНазначенияСервер
ОбщегоНазначенияВызовСервера и т.д.

ну и переписать процедуру эту ОтобратьСтрокиПоКритериям.

Вернее не переписать, а выкинуть и написать по-новой.
10 Vladal
 
02.03.16
11:34
(9) Понятно, что методика теперь другая, и уже не бывает.

Куда теперь поместить эту процедуру?
Там просто вызывается построитель, помещается таблица значений и критерии отбора.
11 Vladal
 
02.03.16
11:36
Тут бы вообще этот отчет переписать и как минимум, разделить что &НаКлиенте, а что &НаСервере. Но вот как сейчас решить эту проблему сейчас?
То, что теперь надо дальше обучаться современным технологиям УФ, это тоже ясно.
12 Vladal
 
02.03.16
11:38
Дописал в общем модуле &НаСервере

&НаСервере
Функция ОтобратьСтрокиПоКритериям(Источник, СтруктураКритериев, СтруктураСложныхКритериев = Неопределено) Экспорт

Не помогло. Кто знает, как исправить?
13 f_vadim
 
02.03.16
11:42
и фары протирал и колесо пинал...
конструктив - чтоб отчёт заработал, нужно не процедуры туда сюда дёргать, а переписывать отчёт.
объёмы переписывания по предоставленной информации оценить не возможно. так же как невозможно подсказать, что исправить.
скорее всего описанная ошибка это только начало и после решения этой проблемы вылезут новые.
14 Vladal
 
02.03.16
11:49
Скопипастил эту процедуру в форму отчета и нарисовал, что что она &НаСервере.
Заработало. Вот налого ли? Пока не попадется тонкий клиент...

Значит, в (7) интуитивно я догадывался и моя догадка была верна.

(13) Вот именно. И дверью хлопал, и капот открывал, и дворники включал - не работает. В (3) не надо было переходить на личности. Ты ведь можешь не знать каких-то других вещей, которые знаю я или другой человек. И тебе ведь никто неговорит "такой большой дядька, а этого не знаешь. фе".
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший