Объект "XBase" - 1С:Предприятие 8.3 (8.3.6.1999) #746672


#0 by TARPV
Создаю на клиенте объект "XBase", затем передаю его в качестве параметра  в процедуру выполняемую на сервере, в ответ получаю следующее сообщение о ошибке: {Форма.Форма.Форма}: Ошибка при вызове метода контекста (СформироватьНаСервере)         СформироватьНаСервере(ЭлементСпискаЗначений.Значение,xB); по причине: Ошибка передачи данных между клиентом и сервером. Значение недопустимого типа. по причине: Ошибка преобразования данных XDTO: Запись значения свойства 'param':     форма: Элемент     имя: { по причине: Ошибка отображения типов: Отсутствует отображение для типа 'XBase' Что я делаю не правильно???
#1 by itlikbez
Все логично. Подумай сам - в чем смысл передачи параметра на сервер? По-твоему, база тоже на сервер "поедет"?
#2 by Бубка Гоп
объект не сериализуется, так просто между клиент сервером его не попинаешь. если не критично, лучше создавай сразу на сервере.
#3 by KarpovDeniska
ПоместитьВоВременноеХранилище ?
#4 by TARPV
Заполнить данными объект "XBase" я могу только на сервере т.к. он заполнятся на основании данных из "Запроса", затем его нужно вернуть на клиент и сохранить в файловой системе клиентского PC.
#5 by ДенисЧ
Прочитай на клиенте, результат передай на сервер. И наоборот
#6 by Славен
а нафига ты его передаешь на сервер? ты с сервера получай результат запроса, а все заполняй на клиенте
#7 by Славен
заполнить ты его можешь и должен только на клиенте, а вот данные для заполнения получишь на сервере
#8 by TARPV
ВыборкаИзРезультатаЗапроса не доступна на тонком клиенте и соответственно ее нельзя передать на клиент и использовать для заполнения объект "XBase". Получается замкнутый круг. Передавать объект  "XBase" между клиентом и сервером нельзя, а как его тогда заполнить на клиенте по данным запроса не понятно!?
#9 by Славен
рукалицо
#10 by EvgeniuXP
Сначала базу заполняют на сервере, а потом клиент читает из нее и выводит на форму
#11 by TARPV
При чем тут форма? Вопрос про то, как объект "XBase" заполнить на сервере и вернуть на тонкий клиент, а там сохранить на жесткий диск.
#12 by Господин ПЖ
не. надо. этого. делать
#13 by Господин ПЖ
->
#14 by Провинциальный 1сник
Заполняй xbase на клиенте, а данные для заполнения доставай с сервера.
#15 by Бубка Гоп
вобщем, имхо проблема в том что товарищ не знает как получить данные с сервера на клиент
#16 by Провинциальный 1сник
Как-то так. &НаСервере
#17 by Бубка Гоп
плохой пример
#18 by Бубка Гоп
клиент не знает тз
#19 by Господин ПЖ
давно тз между клиентом и сервером ходить научили?
#20 by Провинциальный 1сник
Там ходит что-то урезанное, указанный пример - рабочий.
#21 by Провинциальный 1сник
Ой, извините, ошибся - проверил в толстом.
#22 by Провинциальный 1сник
Ну тогда лепить список из структур - они поддерживаются в тонком..
#23 by banco
а не проще все сформировать и сохранить в файл на сервере и передать этот файл на клиент?
#24 by Господин ПЖ
Запрос.Выполнить отдать на клиента и там уже издеваться над ним
#25 by Бубка Гоп
Поправлено
#26 by Бубка Гоп
Какой из методов РезультатаЗапроса доступен на клиенте?
#27 by DmitrO
вы что тут мозг человеку выносите 1.сразу вызываешь серверную функцию 2.на сервере создаешь дбф файл с именем временного файла (ПолучитьИмяВременогоФайла) 3.заполняешь его данными 4.закрываешь файл 5.создаешь объект ДвоичныеДанные, указываешь имя своего врем. файла, помещаешь его во временное хранилище 6.возвращаешь из функции адрес в хранилище 7.на клиенте функцией ПолучитьФайл размещаешь файл в ФС клиента
#28 by DmitrO
правильно
#29 by mTema32
Так это структура... Может ошибаюсь, но вроде можно ТЗ пульнуть в реквизит формы и оттуда прочитать клиентом. Не?
#30 by Бубка Гоп
Нет
#31 by hhhh
да, просто создать реквизит формы ТЗ типа таблица значений. И он прекрасно виден и на клиенте и на сервере. М не надо никаких структурок.
#32 by Бубка Гоп
Вру, можно
#33 by DmitrO
можно, но только зачем? если проще все сделать на сервере и просто вернуть файл. структуру дбф еще в реквизит формы закладывать придется.
#34 by mTema32
Да, на счет структуры дбф - согласен. Если там 100500 колонок то через файл может и проще.
#35 by Бубка Гоп
ТС притих чего то
#36 by TARPV
5.создаешь объект ДвоичныеДанные, указываешь имя своего врем. файла, помещаешь его во временное хранилище А обязательно создавать объект ДвоичныеДанные? Без него временный файл нельзя поместить во временное хранилище?
#37 by EvgeniuXP
зачем клиенту твой дбф-файл? Че он сним делать будет?
#38 by EvgeniuXP
Смотреть? Редактировать? Или он хочет знать где лежит? Или его трясет что лежиь на сервере - а это секретные данные и только у него? Так сохрани ему на комп, упакуй и пароль поставь
#39 by etc
на дискетку запишет :)
#40 by DmitrO
нельзя. тебя это пугает? =)
#41 by Бубка Гоп
Кстати адрес в хранилище необязателен, можно тупо вернуть на клиента ДвоичныеДанные
#42 by DmitrO
Швадратные Ктаны (не удержался :)) по документации ДвоичныеДанные не доступны в тонком
#43 by Бубка Гоп
ДвоичныеДанные (BinaryData) Методы: Записать (Write) Конструкторы: На основании файла Описание: Значение содержит двоичные данные, которые считываются из файла. Значение может быть сохранено в ХранилищеЗначения. Хранимые данные могут быть записаны в файл. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {}. Имя типа XDTO: может быть любым из перечисленных: base64Binary, hexBinary
#44 by Бубка Гоп
чтобы не быть голословным вот рабочий пример &НаСервере
#45 by DmitrO
я знаю
#46 by Бубка Гоп
тогда почему ?
#47 by DmitrO
а вот из 8.3 ДвоичныеДанные (BinaryData) Методы: Конструкторы: На основании файла Описание: Значение содержит двоичные данные, которые считываются из файла. Значение может быть сохранено в ХранилищеЗначения. Хранимые данные могут быть записаны в файл. Доступность: Сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Сериализуется. Данный объект может быть сериализован в/из XML. Может использоваться в реквизитах управляемой формы. Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {}. Имя типа XDTO: может быть любым из перечисленных: base64Binary, hexBinary.
#48 by Бубка Гоп
эва как, тогда мои пардоны, я безнадежно устарел, загнил так сказать на своей 8.2, которая так умеет
#49 by Бубка Гоп
кстати, ...Сериализуется. интересненько
#50 by DmitrO
конечно, иначе бы хрен бы мы его засунули во временное хранилище но сериализовать его в текст и передавать строкой конечно же менее эффективно чем ПолучитьФайл. Получить файл это простое двоичное копирование с сервера на клиент.
#51 by DmitrO
не забудь еще временный файл зачистить (УдалитьФайлы)
#52 by Бубка Гоп
Интересно, почему в 8.3 у клиента отпилили ДД? Утоньшение тонкого клиента?
#53 by DmitrO
+на шаге 5 помещать во временное хранилище надо без указания идентификатора формы (2 параметр ПоместитьВоВременноеХранилище), это обеспечит удаление объекта из временного хранилища при следующем серверном вызове.
#54 by DmitrO
да херней занимаются, проповедуют идею: чтобы эти 1сники не писали не эффективный код (они ж тупые) мы их ограничим так чтобы написать его было нельзя.
#55 by Бубка Гоп
Годная политика
#56 by TARPV
функция ПолучитьИмяВременногоФайла("dbf") возвращает что то вроде: C:Usersi907_1c_serviceAppDataLocalTempv8_CE67_f6dd.dbf А метод СоздатьФайл объект "XBase" требует имени файла не более 8 символов. Соответственно эта функция для этой задачи не подходит :(
#57 by Бубка Гоп
дык переименуй прежде чем создавать xbase
#58 by DmitrO
ну значит получай имя каталога временных файлов, а имя файла придумай сам. Тут проблема будет только в том что имя может совпасть с другим файлом из другого сеанса. Например другой юзер в тот же момент будет выполнять ту же функцию. Можно сделать каталоги и менем из идентификатора сеанса например, чтобы гарантированно изолировать их друг от друга.
#59 by TARPV
Всем спасибо за советы!!! Вообщем -то получилось, как описано , но на клиент я передаю объект ДвоичныеДанные и там его сохраняю т.е. временное хранилище не использую.
#60 by DmitrO
добро пожаловать в настоящую клиент-серверную среду =)
#61 by Бубка Гоп
В 8.3 ДД нет на клиенте, но использовать его можно?
#62 by TARPV
1С:Предприятие 8.3 (8.3.6.1999) Синтаксис: Записать(<ИмяФайла>) Параметры: Тип: Строка. Имя файла, в который необходимо записать двоичные данные. Если файл существует, он будет перезаписан, иначе - создан. Описание: Записывает двоичные данные в файл. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
#63 by Бубка Гоп
Класс. Объект не доступен, его метод - доступен. 1С такая 1С
#64 by DmitrO
не это похоже в документации 8.3.5 ошибка, проверил - работает вроде =) но смотрите: только в тонком, в веб-клиенте (хз теперь уже, проверять надо) Ну и чрез ПолучитьФайл, конечно меньше будет информации передаваться т.к. не будет сериализации параметров в текст.
#65 by Провинциальный 1сник
А как тогда поступать, если надо наоборот с клиента передать файл на сервер?
#66 by Бубка Гоп
Также, вроде разобрались что у клиента таки есть ДД
#67 by DmitrO
правильно: это использовать функцию ПоместитьФайл Это обеспечит работу и в веб-клиенте.
#68 by DmitrO
ДвоичныеДанные (BinaryData) На основании файла Синтаксис: Новый ДвоичныеДанные(<ИмяФайла>) Параметры: Тип: Строка. Имя файла, из которого будет загружено значение в виде двоичных данных. Описание: Создает объект и помещает в него двоичные данные, взятые из файла. В режиме веб-клиента недоступен.
#69 by DmitrO
но доверять СП надо осторожно :)
#70 by Провинциальный 1сник
Это от какой версии? У меня в 8.3.6.1977 написано что поддерживается и на тонком клиенте, и на веб-клиенте.
#71 by DmitrO
8.3.5.1517
#72 by mTema32
8.3.6.2041 - тут тоже доступно.
#73 by Провинциальный 1сник
Странно, да.. Похоже у 1с поменялись планы - хотели сначала отказаться от ДД на клиенте, а передумали)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С