Бесплатный курс по Мобильной платформе 1C. Модуль 2
Модуль 2. Обмен данными с мобильным приложением через веб-сервисы
Изучив второй модуль, Вы научитесь:
- Создавать и публиковать веб-сервисы
- Сериализовать и десериализовать данные при передаче между клиентом и сервером
- Производить перенос справочников из одной базы в другую
Порядок обучения
Скачивайте теоретические материалы в PDF и видео-формате. Рекомендуем начинать именно с изучения теории.
Выполняйте практическое задание для закрепления полученных знаний.
Выполните самоконтроль, просмотрев видео-решение преподавателя.
Теоретические материалы
Итак, приступайте к изучению теоретического материала второго модуля курса.
Данный контент доступен только для зарегистрированных пользователей.
Пожалуйста, войдите на сайт (Войти), если Вы уже зарегистрированы или зарегистрируйтесь на сайте (Зарегистрироваться), чтобы получить доступ.
Регистрация занимает 1 минуту, но открывает доступ к материалам сайта.
Пожалуйста, войдите на сайт (Войти), если Вы уже зарегистрированы или зарегистрируйтесь на сайте (Зарегистрироваться), чтобы получить доступ.
Регистрация занимает 1 минуту, но открывает доступ к материалам сайта.
Вопросы
Если у Вас возникли вопросы, Вы можете просто просмотреть комментарии ниже, наверняка Вы найдете ответ.
Обратите внимание, для навигации по комментариям внизу страницы есть ссылки
Если же Вам необходима поддержка, мы с радостью ответим на Ваши вопросы в рамках Мастер-группы «Полного курса по разработке Мобильных приложений на платформе «1С:Предприятие 8».
Комментарии / обсуждение (873):
Комментарии закрыты
Еще была ошибка в процедуре веб сервиса на строке:
Если ЗначениеЗаполнено(СтруктураДанных) Тогда…
Видимо с мутабельными значениями проблема.
Заменил на: Если СтруктураДанныхНеопределено Тогда…
Если СтруктураДанныхНеопределено Тогда…
меньше больше (оператор неравенства) здесь не отображаются (((
Если НЕ СтруктураДанных=Неопределено Тогда…
У меня такие ошибки.
1. Набираю в хроме ссылку на веб сервис, но ничего вразумительного не получаю. Абракадабра. А виндовый эксплорер показывает нормально XML.
2. На Samsung Galaxy Note 2 при обновлении конфы пишет про ошибку разбора XML.
Решил проблему убрав из веб сервиса и пакета XDTO кириллицу. Т.е. все наименования объектов конфы сделал латиницей и заработало!
{ОбщаяКоманда.ВыполнитьОбмен.МодульКоманды(15)}: Ошибка при вызове метода контекста (ВыполнитьОбмен)
Ответ = Десериализовать(Соединение.ВыполнитьОбмен(СтрокаДанных));
по причине:
Ошибка вызова операции сервиса: {mExchange}:mExchange:ВыполнитьОбмен()
по причине:
Ошибка SOAP сервера: Неизвестная ошибка. Ошибка отображения типов:
Отображение типа ‘Соответствие’ в тип ‘{http://www.w3.org/2001/XMLSchema}string’
по причине:
Ошибка отображения типов:
Отображение типа ‘Соответствие’ в тип ‘{http://www.w3.org/2001/XMLSchema}string’
Была ошибка в функции СоздатьОтветКлиенту
Возврат Соответствие вместо Возврат Сериализовать(Соответствие)
Вопрос про серилазиацию/десириализацию XTDO.
Как сериализуется ссылочный тип?
Например, в базе сервере и в базе клиента есть один справочник Номенклатура, реквизиты одинаковые. Достаточно ли в этом случае , что НАЗВАНИЕ справочника Номенклатура будет одинаковым в обоих базах и создавались этот справочник в конфигурациях вручную, а не через копи/паст, чтобы ссылка десериазовалась?
сериализуется в ссылку. Если в базе ссылки таклгл типа и с таким УИДом нет то будет написано “объект не найден…”
Не понял сразу вопрос. Можно переносить двумя способами. Сериализовать объект и после десериализации выполнить метод записать(). Если имя типа совпадает то либо подхватится элемент с таким УИДом или создастся новый. Дибо переносить структуру с реквизитами и УИДом. Тогда надо у менеджера нужного типа выполнить метод ПолучитьСсылку(УИД) и получать объект потом.
Ошибка при обращении по ссылке http://127.0.0.1:8080/DemoModule3/ws/ОбменДанными.1cws.
в httpd.conf нужный модуль подгружается
LoadModule _1cws_module “C:/Program Files (x86)/1cv8/8.3.4.465/bin/wsap22.dll”
Куда смотреть?
Проблема была в том, что файловая база размещалась на смапированном диске D:. После переНастройки на C: – картинка ожила.
Помогите пожалуйста возникает ошибка при отладке
{ОбщаяФорма.Форма.Форма(34)}: Ошибка при вызове метода контекста (ПолучитьСреднее)
Ответ = Соединение.ПолучитьСреднее(Неопределено,Сериализовать(СтруктураДанных));
по причине:
Ошибка вызова операции сервиса: {ФункцииДляРассчета}:ФункцииДляРассчета:ПолучитьСреднее()
по причине:
Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис.ФункцииДляРассчета.Модуль(14)}: Значение не является значением объектного типа (КоличествоЭлементовВМассиве)
по причине:
{WebСервис.ФункцииДляРассчета.Модуль(14)}: Значение не является значением объектного типа (КоличествоЭлементовВМассиве)
разобрался.
Попробовал воспользоваться хранилищем значения, выяснилось, что конструкция вида:
…
ХрЗнч = Новый ХранилищеЗначения(Соответствие,Новый СжатиеДанных(9));
Возврат Сериализовать(ХрЗнч);
приводит к тому, что все ссылки на принимающей стороне “слетают”.
Работающим оказался вариант с двойной сериализацией, когда в хранилище значения добавляется уже сериализованный объект, и затем оно ещё раз сериализуется, например, так:
…
ХрЗнч = Новый ХранилищеЗначения(Сериализовать(Соответствие),Новый СжатиеДанных(9));
Возврат Сериализовать(ХрЗнч);
…
На принимающей стороне при этом код выглядит так:
Функция Синхронизация(стрДанные)
ХрЗнч = Десериализовать(стрДанные);
Соответствие = Десериализовать(ХрЗнч.Получить());
…
Экономия на размере пакета получается примерно десятикратная.
Вопрос: это единственно правильный способ работы с хранилищем значений с целью упаковки пакета передачи данных?
Когда в мобильной платформе будет механизм FastInfoset (он пока только в стационарной доступен), то можно будет не использоват хранилище, а обмениваться бинарными данными, но в принципе – разница в коде будет не большая, а вот в сжатии – не знаю.
У меня при выполнении команды обмена в клиенте вылезла такая ошибка. С чем может быть связана?
{ОбщаяКоманда.ВыполнитьОбмен.МодульКоманды(14)}: Ошибка при вызове метода контекста (ВыполнитьОбмен)
Ответ = Десериализовать(Соединение.ВыполнитьОбмен(СтрокаДанных));
по причине:
Ошибка вызова операции сервиса: {DataTransfer}:DataTransfer:ВыполнитьОбмен()
по причине:
Ошибка SOAP сервера: Обязательное возвращаемое значение не задано: DataTransfer}:DataTransferSoapBinding:ВыполнитьОбмен()
поставьте галочку упараметра – возможно пустое значение
Чтобы увидеть материал текущего курса, нужно регистрировать токен с 20.04.2014? Если с сегодняшнего дня, то ничего не увижу уже? А если с 20.04.2014, то доступ прекратиться 30.04.2014 или у меня всегда будет доступ к материалам, выложенным за этот период?
Добрый вечер.
Перехожу по опубликованной ссылке, а у меня вот так выглядит
This XML file does not appear to have any style information associated with it. The document tree is shown below.
soap:Client
Операция не найдена: {ОбменДанными}:ОбменДанными:ВыполнитьОбмен()
Ругается на операцию , а потом не подключается WS ссылка
Ошибка разбора XML: [-1,1]
Фатальная ошибка
Вопрос по видеоуроку.
После добавления второго параметра (“СериализованнаяСтруктураДанных”) в функцию Web-сервиса “ПолучитьСреднее”
тренер резонно добавляет первый параметр (“Неопределено”) в строчке
Ответ = Соединение.ПолучитьСреднее(Неопределено, Сериализовать(СтруктураДанных));
(Процедура ПередатьСериализациюНаСервере() модуля ОбщейФормы)
НО не добавляет второй параметр в строчке:
Ответ = Соединение.ПолучитьСреднее(СтруктураДанных);
(Процедура ПодключитьсяЧерезСтатическуюСсылкуНаСервере()).
что приводит к ошибке: “Недостаточно фактических параметров”.
Если же в этой строчке в качестве второго параметра указать “Неопределено”, то получим не менее загадочное сообщение об ошибке “Ошибка SOAP сервера …по причине: Проверка мутабельных значений на заполненность не поддерживается”
Каким должен быть 2-й параметр?
Я тоже получил эту ошибку. Заменил на: Если СтруктураДанных Неопределено Тогда…
меньше больше (оператор неравенства) здесь не отображаются (((
Если НЕ СтруктураДанных=Неопределено Тогда…
Если база Сервер запущена в режиме предприятия, то обмен из базы Клиент не выполняется, пишет “Ошибка разбора Soap сообщения: неверная версия сообщения.” Как только выключаю 1С предприятие база Сервер, всё отрабатывает нормально. Почему?
У вас случайно не учебная версия? Если учебная, то в неё прошито ограничение не количество одновременных коннектов к базе, а запущенное приложение-Сервер – это ещё 1 коннект
У меня тоже самое. Заменил все наименования метаданных на латиницу и заработало.
На компе все получилось, а вот когда попробовал на телефоне подключить базу – пишет “Не правильный формат конфигурации”. Что за чудо?
Видимо, проблема с настройками сети, потому что залив базу Клиент на “вчерашнюю” (на другом компе), заработало. Правда, не могу вывести команду. Добавил ее на основную форму, которая открывается на начальной странице, на компе проверяю – есть, обновляю (сто раз) конфу базы – а на телефоне не обновляется, команда не появляется (жму кнопку “Мобильное приложение – Запустить”).
Кнопку то жмете, мобильная 1С то при этом обновляется(появляется сообщение Обновление и прогресс бар)?
А отладка на мобильном клиенте работает?
Если запустить на мобильном устройстве (или из под эмулятора) – нет
Настроил обмен на мобильном устройстве. Но есть один ньюанс, когда захожу первый раз, нажимаю “Выполнить обмен”, обмен происходит, а потом если нажимать “Выполнить обмен”, то ничего не происходит. Что это может быть ?
Если потом выйти из конфигурации и зайти снова, то опять первыйраз обмен идёт, а дальше нет
Вопрос снимается. После обмена надо зайти или в справочник Номенклатура или в Поступление, потом если перейти обратно на панель функций то обмен запускается
Доброго времени суток!
В ходе вебинара тренер создает XDTO-пакет (“СтруктураДляПолученияСреднего”) и сразу же меняет URI-пространство имен (также на “СтруктураДляПолученияСреднего”). Правда, не объясняет “почему”.
Вопрос в том, как поступать в будущем, создавая собственные XDTO-пакеты? Также переименовывать пространство имен?
Здравствуйте!
Я попытался подключить базу к мобильному устройству. Платформу установил без проблем. На эмуляторе все подключается. На мобильном ошибка “Ошибка HTTP при обращении к серверу: http//192.168.9.53 connection to http:/192.168.9.53 refused “, а перед этим писал что “…connection http:/192.168.9.53:80 timed out” в чем может быть проблема?
опять-таки, в браузере телефона по этому пути доступ есть?
как подключен телефон, есть ли фаерволы/брендмауэры
Здравствуйте! Пытаюсь запустить по кнопке «ОтправитьНаСервер».
Выдает:
{ОбщаяФорма.Форма.Форма(46)}: Недостаточно фактических параметров
Ответ = Соединение.ПолучитьСреднее(СтруктураДанных);
Что делаю не так? Делал, так как написано. Может, что пропустил?
Свойства параметров “Возможно пустое значение” настроили? Ощущение что у вас у обоих параметров флаг снят, и операция ожидает 2 параметра – а у вас 1
Спасибо за ответ. «Возможно пустое значение» настроил не было у параметра: «СериализованнаяСтруктураДанных». Теперь новая ошибка:
{ОбщаяФорма.Форма.Форма(38)}: Ошибка при вызове метода контекста (СоздатьWSПрокси)
Соединение = WSСсылки.ФункцииДляРассчета.СоздатьWSПрокси(“ФункцииДляРассчета”,”ФункцииДляРассчета”,”ФункцииДляРассчетаSoap”);
по причине:
Сервис не найден. {ФункцииДляРассчета}:ФункцииДляРассчета
Все заработало. Пришлось удалить веб-сервис и ws-ссылку и создать все заново. Спасибо.
К сожалению, поздно начал изучать (только с 22-го). С первым модулем разобрался! Во втором начались непонятности! При попытке публикации на сервере выдает ошибку: “Невозможно записать C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf\httpd.conf” Не подскажете, в чем может быть дело?
Перезапустите 1с из-под админа.
Что касается имен. При использовании кириллицы в именах Типов данных, элементов структуры данных и WS-ссылок, мой Google Chrome выдал ошибку (см. вложение). При переименовании всего на латиницу, все пошло по сценарию.
А вообще все очень интересно. Материал подготовлен превосходно. Спасибо вам большое.
про Chrom вроде это уже писали, попробуйте открыть из под FireFox
К сожалению, все приходится делать с опозданием… Вчера проделал все из первого урока – все ок, сегодня приступил к работе по второму уроку, столкнулся с проблемой: после публикации на веб-сервер создается файл default.vrd, в котором прописано:
Но при попытке открыть http://127.0.0.1/Serv/ws/WebServiceFunctionForCounting.1cws появляется ошибка “Ошибка HTTP 500.21 – Internal Server Error
Обработчик “1C Web-service Extension” содержит поврежденный модуль “IsapiModule” в списке модулей”. Что я делаю не так? Помогите, пожалуйста.
Вот содержимое default.vrd
не видел такого раньше… может попробовать переопубликовать повторно?
Если не переустановить веб-сервисы 1с, странно правда
Я последние 3 часа сижу и переопубликовываю ))). Уже и имя сменил на латинницу, и ISS перезапускал.
У вас видимо 64 битная система?
В диспетчере IIS на корневом узле (имя компа) в правом окне выберите пункт Ограничения ISAPI.
Скопируйте сюда путь библиотеки который там указан.
Ну и вдогонку сразу. Если система х64. То здесьже в диспетчере IIS слевы выбираете “Пулы приложений” справа в действиях жмете “Определить значения по умолчанию для пула” и там свойство “Разрешена 32 разрядные приложения” установите True
Да, система х64. В “Пулы приложений” установил значение в True. А вот Ограничение не вижу.
Я обычно прописывал путь к wsisapi.dll для узла добавленного 1с в сопоставлении сценария. Справа будет при выборе узла “добавить сопоставление сценария”
и вроде еще узел в приложение преобразовывал, только после этого начинало работать
Вот :)
Игорь, я написал, что пулы сделал. )))
Я не вижу “Ограничения ISAPI”
Упс. Примелькалось значит. исапи появляется когда в левом дереве выбираете либо корень (общая настройка) либо конкретный сайт(приложение)
В левом окне выбрал корень – “Ограничения” не появились (((
Эх, не успею сдать 4 задание, не получу продолжение тренинга….
А вы компоненту “Расширения ISAPI” при установке IISа не забыли указать?
Надо было начинать с того что вы на IIS:) Там надо путь к библиотеке указать
может быстрее будет установить и опубликовать через апач?
А где спортивный интерес? Только IIS x64, только хардкор:)
да что-то утомляют меня мелкомягкие последнее время… хватит с них того, что у нас в конторе весь софт лицензионно чист (ну и бабла-же ввалили…)
Сегодня был на тренинге по Windows 8.1… Блин… мне понравились плиточки ))))))))
Нормально все у мелких ))))
Я давно на мак убежал, только 1С на винде держит, вертится в виртуальной коробочке, жрет ресурсы))
DaNN, ну и как оно на MACе? :) Я вот пока не сбежал, т.к. не понимаю экосистему, хотя на руках и есть iPad ))
IIS совсем не страшный, мне нравится :)
Всегда им пользовался, все отлично :)
Вообще супер, экосистема работает действительно хорошо, начал на компе, продолжил на планшете, закончил в постельке на телефоне. Хотя неудобства тоже есть, но вернуться у меня не получилось, два раза пробовал, через неделю возвращался на мак. Самая большая проблема это нацеленность экосистемы только на себя, не любит она сторонних производителей. Сложно объяснить, но у нас кто попробовал назад уже не вернулся:)
А что по финансам – все за денюжку? Или “обходные” пути используете? :)
Пока испытываю огромный дискомфорт из-за различия устройств – десктоп винда, планшет iOS
Сколько занял переход с винды? Просто… не знакомый софт… на винде все знакомо, а на иосе искать надо альтернативы и т.д. и т.п. Напрягает маленько )
Перед тренингом как раз поставил 8.1 в виртуалку, как она бесит со своими плиточками и отсутствием нормального пуска, а уж эти недоприложения плиточные…
А что не так? Мне понравились плитки :)
И отсутствие пуска нисколько не напрягает когда показали “как это есть” :)
ноут, тел и планшет от эппл, а вот на десктопе проснулась жаба и начала больно пинаться, поэтому собрал хакинтош в 25р с ссд обошелся, операционка встала без проблем, все летает уже почти два года
а как оно есть это как? :) заниматься сортировкой плиточек, по сути замена рабочего стола с ярлыками.
Да нормально есть. Основной “напряг” от 8ки был в отсутствии пуска. В принципе он нормально заменяется плиточным интерфейсом, главное что ничего не потеряли – все стандартные элементы обычного пуска там тоже есть. Так что у меня на втором ПК сейчас Вин8, и я рад плиткам. на основном вин7 – ужасно не хватает виджетов, а 8ка это дает
будущее за строенными системами и линукс скорее всего там откусит неслабый кусок (может под личиной андроида, а может и по другому)
Дело не в хардкоре ))) Просто из-за нехватки времени, изучать материалы тренинга приходится на работе. А у нас тут админы суровые, категорически против использования в офисе Apache ))
К сожалению, все приходится делать с опозданием… Вчера проделал все из первого урока – все ок, сегодня приступил к работе по второму уроку, столкнулся с проблемой: после публикации на веб-сервер создается файл default.vrd, в котором прописано:
Но при попытке открыть http://127.0.0.1/Serv/ws/WebServiceFunctionForCounting.1cws появляется ошибка “Ошибка HTTP 500.21 – Internal Server Error
Обработчик “1C Web-service Extension” содержит поврежденный модуль “IsapiModule” в списке модулей”. Что я делаю не так? Помогите, пожалуйста.
Переустановить 1С и/или Apachе
Так 1С 8.3 поставил перед началом тренинга. Используется не Apache, а ISS.
Исходное сообщение почему-то продублировалось дважды. Проблема обсуждается чуть выше.
Не могу добавить XDTO объект
есть только меню экспорт XML схемы
а добавить не активная ;(
Он не нужен, нужен объект ФабрикаXDTO “получаемый@ из WS-ссылки.
ну я как в методичке делаю ;)
там добавить на первом рисунке
Смотрите видео. Добавлять XDTO-объект нужно не в клиентской базе, которую создали на первом уроке, а в новой.
ок ща посмотрю
та у меня в ней тоже самое
нашел
нужно назначение использования что бы было перс компьютер
что я делаю не так
ws-ссылку надо добавлять в клиентской базе
DaNN имел ввиду XDTO пакет :)
В общем судя по дереву у вас это мобильная база.
А XDTO пакет и веб сервис создаются на стороне сервера – обычной полноценной базы.
На стороне клиента создают именно WS ссылку позже
Подскажите, пожалуйста, не очень понятно про обмен данными, т.е. получается так, что те данные которые добавлены на “Клиенте”, я могу увидеть на сервере только после того как я перезапущу конфигурацию?
Нет, для того, чтоб увидеть на Сервере данные добавленные на Клиенте – нужно на Клиенте запустить синхронизацию и после успешного выполнения – просто открыть нужное окошко на Сервере. Если окошко уже было открыто – достаточно нажать F5.
Обмен запускается по команде. После обмена без каких-либо перезапусков уже видно изменения как на сервере, так и на клиенте.
Почему у Вас возникло предположение о необходимости перезапуска конфигурации?
Проделав второе занятие, увидеть добавленные данные могу только после перезапуска, причем такое происходит как со стороны “Клиента”, так и “Сервера”.
звучит просто невероятно. В мобильном приложении на общую форму под кнопку вызова синхронизации добавил динамический список документов. В код самой команды кнопки после вызова серверного метода добавил ОбновитьОтображениеДанных. Все данные получаются сразу. Если вдруг у вас таким образом сказывается косяк мобильной платформы с подвисанием окон, то можно не выходить, а просто нажимать “назад”, пока он не предложит подтвердить выход, отказаться и продолжать работать.
да… мега тест мобильной платформы получился =) Ряд аппаратов можно сразу в черный список )))
При подключении базы на мобильном устройстве вылазит ошибка: Ошибка разбора XML – [405,78] Ошибка ‘ОбменДанными’ is not a valid URI. Подскажите что делаю не так ?
В ошибке прямым текстом написано ” is not a valid URI.”
URI пространства имен в параметрах веб сервиса проверьте – что у вас там? Если не дай бог кириллице – меняйте на латиницу.
И панель навигации не видна в окне мобильного клииента мы сделали область рабочего стола в одну колонку. Получается мы делаем синхронизацию на локальном компьютере.
Это вопрос или утверждение?
Это вопрос.
Я решил проверить как работает отладка, через F5 все в порядке. Когда делаю, “запустить мобильное приложение”. Жму на кнопку “получить статическую ссылку” в точке останова не фиксируется, код следующий:
ПодключитсяЧерезСтатическуюСсылкуНаСервере();
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ПодключитсяЧерезСтатическуюСсылкуНаСервере()
// Вставить содержимое обработчика.
Соединение = WSСсылки.ChangeData.СоздатьWSПрокси("ChangeData","ChangeData","ChangeDataSoap");
Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить("ChangeData");
КонецПроцедуры
Не понятно. Вы запускаете клиент на мобильном устройстве, жмете в нем Получить стат. ссылку. И ждете что именно в указанном Вами коде произойдет остановка?
Отлаживать мы можем только серверную часть – код самого веб сервиса. Или я Вас не понял? :)
в ролике, Дмитрий запускает клиент, по виду рабочего стола понятно что не на андроиде, на андроиде видна только одна кнопка “Подключиться через статическую ссылку”.
Справочник и документ не видны. Мы отлаживаем все в серверной части через F5?
если нажать кнопку в клиенте на мобильном устройстве в отладчик мы не попадаем?
Эм… мы можем отлаживать только серверный код. На сервере у нас исполняется именно код веб сервиса.
Отладить код, выполняющийся на мобильном клиенте – мы не можем.
Если код не касается объектов, которые характерны только для мобильного клиента, то можно сперва отладить код используя тонкий клиент 1С, как только на нем все успешно отрабатывает, переносим конфигурацию на мобильное устройство.
Отлаживать на мобильном устройстве можно используя какие-то примитивные средства типа Сообщить() промежуточное значение какой-то переменной, создав панельку для вывода отладочной информации и т.п.
Если ссылаетесь на видео, упоминайте время – открыл бы глянул, смог бы однозначно ответить, а не гадать :)
Если правильно помню, в видео в конфигурации и серверная и клиентская часть совмещена в одной конфигурации, если запускать на ПК, то все можно отладить.
Важно понимать что если вы работаете на мобильном устройстве, то тот код который выполняется НА НЕМ – к нему отладчиком не подключиться.
приведенный код не вызывает веб-сервис, а лишь получает информацию о нем. Если вы запускаете этот код не на ПК, а на андройде, то точка останова не сработает. В видео, все остановы что срабатывали после запуска операций на андройде происходили в коде веб-сервиса (на серверной базе данных).
Вообще, вопрос не очень понятен.
Ответ = Десериализовать(Соединение.ВыполнитьОбмен(СтрокаДанных))
Почему при вызове вот этой строки, возвращается НЕОПРЕДЕЛЕНО?
На стороне сервера , функция возвращает XML
Это на клиенте? Вы посмотрите внимательно – что у Вас сервер отправляет в ответ.
Сервер отправляет XML
В клиенте, в функции Десериализовать ,XML превращается в соответствие и это по отладчику видно.
Но не понятно, почему Ответ Неопределено, не понятно
Все разобрался
Функция не то возвращала
Натолкнулся на ошибка с таким содержимым:”soap:Client
Неверный аргумент.
Неверный аргумент. ” – она произошла после того как я изменил наименование XDTO пакета, а так же URI имен, по инету перевыбирал типы, проверял имена – ничего не помогает. Наверно придется с нуля снова серверную часть делать.
Это для статичной ссылки появляется ошибка, или для динамической?
Аналогичная проблема для статичной ссылки, после того как переделала имена на латиницу
Такое впечатление – что где-то что-то пропустили…
Попробуйте просмотреть опубликованный сервис на локальном ПК. И внимательно к переделанным местам (в т.ч. – ближе к концу файла, там – где описание soap).
Была, надо было внимательно всё проверить. Сейчас работает.
Хорошо, что разобрались :)
Нашел, в одном из параметров не были изменены названия xdto
В решении не учитывается передача каталогов справочника.
Переписал несколько строк:
1. В Процедуре ЗагрузитьСправочники
Если Спр.ЭтоГруппа Тогда
НовСпр = Справочники.Номенклатура.СоздатьГруппу();
Иначе
НовСпр = Справочники.Номенклатура.СоздатьЭлемент();
КонецЕсли;
2. В Функции СформироватьДанныеДляСервера
ТЗ.Колонки.Добавить(“ЭтоГруппа”);
и
НовСтр.ЭтоГруппа = Спр.ЭтоГруппа;
В решениях бывает, что некоторые моменты “упущены”. Это часть тренинга.
Верно. Этот момент не однократно всплывал в комментариях. Суть тренинга – работа с мобильной платформой. Здесь легко могуть быть неточности и ошибки в “стандартном” коде – но не в этом суть
Только сейчас начал заниматься по курсу. Дошел до второго занятия. Практическая работа необязательна, но получить доступ к теории третьего занятия я не могу. Скажите, что нужно сделать?
Чтоб получить доступ к материалам начиная с 3-го дня – необходимо активировать токен доступа. Для доступа к материалам после 4-го дня – необходимо так же выполнить обязательное задание.
Создал необходимые объекты конфигурации на клиенте и сервере.
На сервере создал веб сервис “ОбменДанными”. На клиенте создал ws-ссылку для подключения к сервису.
На клиенте вызываю процедуру ВыполнитьОбменНаСервере() в которой сначала обхожу все элементы справочника затем все документы сериализую их и передю в качестве параметра веб сервиса. На сервере десериализую и произвожу необходимые мне действия. Затем сериализую и отправляю в качестве возвращаемого значения на клиент. Там десериализую и записываю объект. Но уже на этапе попытки десериализовать на сервере получил такое сообщение.
Проверьте справочник “Номенклатура” – он должен иметь одинаковое имя в обоих базах
Такая ошибка может возникнуть в случае, если в передаваемых объектах не совпадает внутренняя структура. После чтения выполняется попытка преобразовать полученное значение в объект текущей базы, и если, предположим, не хватает реквизита, или он лишний – будет вызвано исключение.
Вроде осилил. С подглядыванием в ответы ;)
Но даже так огромные трудности вызвали русские буквы в названиях сервисов и т.п., очень много времени убил, пока всё заработало на смарте (в эмуляторе на удивление проблем это не вызывает).
Это специально так сделано, чтобы своими мозгами шевелили, или такое огромное упущение авторов курса?
Это технический тренинг. Здесь очень полезно набивать шишки. Думаю умышленно)
когда начнётся реальная работа – узнаете, что шишек ещё набивать и набивать… тонкостей при разработке всплывает очень много
Еще проблема, выполнил публикацию веб-сервиса, решил изменить имя функции, поменял и получил в описании wsdl
soap:ClientОперация не найдена: {DataExchenge}:DataExchenge:ClientDataExchenge()
Удалял веб-сервис, отменял регистрацию – ошибка остается (((
Разобрался, ошибка была в том, что у созданной функции не оказалось параметра, видимо его я добавил позже создания функции
Почему при публикации сервиса не создается файл wsdl=схемы?
Что значит не создается? В каталоге публикации подобного файла и не будет. Размещается только файл default.vrd, в котором прописывается работа с базой 1С.
Удалил метод операции “Выполнить обмен”, удалил функцию. Выбрал по – умолчанию “лупа” функция по английскии. Ws-ccылка открылась.
Едем дальше, надеюсь кому-то поможет.
У меня Win7 64, apach 2.2
Переименовал Веб-сервис в английский:
soap:Client
Operation not found: {ChangeData}:ChangeData:ВыполнитьОбмен()
Кроме самого web-сервиса так же стоит переименовать и Операции и Параметры. (и не забыть про URI-пространство имён)
Здравствуйте. Ошибка при попытке обратиться к web-сервису из браузера
Уже много много раз отвечали в комментариях – это проблема в Хроме. Связана она с тем, что вы указали у веб сервиса URI кириллицей. Замените на латиницу – все будет ок
Чистка кэш в папках Local и Roaming не помогла, та же ошибка:
“Extra content at the end of document”
ДОбрый день! Делаю WS- ссылку, пишет в Кофигураторе модальное окно:
ошибка разбора XML, фатальная ошибка. Файл xml подозрительно мал, а google chrome не заругался (((
http://127.0.0.1/day2p/ws/%D0%9E%D0%B1%D0%BC%D0%B5%D0%BD%D0%94%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8.1cws?wsdl
ссылка вот такая
Прикрепите скрин вроде такого
http://курсы-по-1с.рф/wp-content/uploads/2014/04/64434/629c7cad3cf77c9b949f24ab7b2ef1c0.jpg
Очень поможет, чтобы не писать вам 20 простых вопросов.
Подскажите, пожалуйста, как прикрепить скрин, я помню где-то читал и забыл. (((
Да вроде когда комментарий добавляешь, сверху есть кнопка прикрепления файлов
При проверке XDTO пакета получил
Ошибка проверки модели XDTO: xdto-valueType-5.1.3 тип: ОграниченнаяСтрока пакет: СтруктураДля ПолученияСреднего
Тип ‘{СтруктураДля ПолученияСреднего}ОграниченнаяСтрока’ не может иметь фасет ‘totalDigits’
сам не смог найти ответ ,спасибо
какие данные у Вас передаются в реквизите с типом данных Ограниченная строка? Он откуда вообще возник?