Бесплатный курс по Мобильной платформе 1C. Модуль 2

Модуль 2. Обмен данными с мобильным приложением через веб-сервисы

Изучив второй модуль, Вы научитесь:

  • Создавать и публиковать веб-сервисы
  • Сериализовать и десериализовать данные при передаче между клиентом и сервером
  • Производить перенос справочников из одной базы в другую

Порядок обучения

329696678Скачивайте теоретические материалы в PDF и видео-формате. Рекомендуем начинать именно с изучения теории.

home-security-systems-installation-costs Выполняйте практическое задание для закрепления полученных знаний.

загруженное (5)Выполните самоконтроль, просмотрев видео-решение преподавателя.

Теоретические материалы

Итак, приступайте к изучению теоретического материала второго модуля курса.

Данный контент доступен только для зарегистрированных пользователей.
Пожалуйста, войдите на сайт (Войти), если Вы уже зарегистрированы или зарегистрируйтесь на сайте (Зарегистрироваться), чтобы получить доступ.
Регистрация занимает 1 минуту, но открывает доступ к материалам сайта.

Вопросы

Если у Вас возникли вопросы, Вы можете просто просмотреть комментарии ниже, наверняка Вы найдете ответ.

Обратите внимание, для навигации по комментариям внизу страницы есть ссылки

предыдущие-комментарии

Следующие-комментарии

Если же Вам необходима поддержка, мы с радостью ответим на Ваши вопросы в рамках Мастер-группы «Полного курса по разработке Мобильных приложений на платформе «1С:Предприятие 8».

<< Перейти к Модулю 1

Комментарии / обсуждение (873):

  1. Валерий Воробьев

    Соединение = WSСсылки.FancForCalcClient.СоздатьWSПрокси(«F_f_C»,»F_f_C»,»F_f_CSoap»);
    Операция = Соединение.ТочкаПодключения.Интерфейс.Операции.Получить(«PS»);
    СтруктураДанных = Соединение.ФабрикаXDTO.Создать(Операция.Параметры.Получить(«SD»).Тип);

    СтруктураДанных.KolElMass = 2;

    СтруктураДанных = Неопределено

    НЕ могу понять: в чем причина?

    Получаю {ОбщаяФорма.Форма.Форма(14)}: Значение не является значением объектного типа (KolElMass)
    СтруктураДанных.KolElMass = 2;

    • Игорь Сапрыгин

      СтруктураДанных = Неопределено
      Это у вас в коде прописано или имеете ввиду что структура не стала Значением XDTO?

    • Игорь Сапрыгин

      В отладчике составные кода смотрели? Операция успешно была получена? Тип параметра который вы передаете фабрике — тоже успешно определился?

      • Валерий Воробьев

        Структура не стала Значением XDTO. Была строка. Переписал всё кирилицей — заработало. Спасибо.

  2. Mikecool

    Попытался воспользоваться сериализатором(хоть так бы успеть, без пакетов хдто), пробую загрузить ПТиУ на сервер — ругается на ТЧ Товары, подумал что это оттого, что в выгрузке нет номенклатуры(ибо только ссылка), добавил выгрузку на сервер номенклатуры — ошибка осталась аналогичной:
    {ОбщаяФорма.РабочийСтол.Форма(18)}: Ошибка при вызове метода контекста (LoadFromClient)
    Соединение.LoadFromClient(СтрокаНоменклатура);
    по причине:
    Ошибка вызова операции сервиса: {MPTest_Packet}:WSTest:LoadFromClient()
    по причине:
    Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис.WSTest.Модуль(24)}: Ошибка при вызове метода контекста (ПрочитатьXML)
    по причине:
    {WebСервис.WSTest.Модуль(24)}: Ошибка при вызове метода контекста (ПрочитатьXML)
    по причине:

    по причине:
    Ошибка преобразования данных XDTO:
    НачалоСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.Номенклатура Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.Номенклатура
    по причине:
    Ошибка преобразования данных XDTO:
    КонецСвойства: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.Номенклатура Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/enterprise/current-config}CatalogObject.Номенклатура

    сами функции:
    Функция LoadFromClient(InputData)

    Объект = Десериализовать(InputData);
    Если ТипЗнч(Объект) = Тип(«СправочникОбъект.Номенклатура») Тогда
    Объект.Записать();
    ИначеЕсли ТипЗнч(Объект) = Тип(«ДокументОбъект.ПоступлениеТоваровУслуг») Тогда
    Объект.Комментарий = ТекущаяДата();
    Объект.Записать();
    КонецЕсли;

    КонецФункции

    Функция Десериализовать(ОбъектСтрока)
    ХМЛ = Новый ЧтениеXML;
    ХМЛ.УстановитьСтроку(ОбъектСтрока);
    Объект = СериализаторXDTO.ПрочитатьXML(ХМЛ);
    ХМЛ.Закрыть();
    Возврат Объект;
    КонецФункции

    где я напортачил?

    • Поддержка курса по EDT

      а вы объект сериализуете? или ссылку?

      • Mikecool

        объекты
        что то посчитал это правильным

      • Mikecool

        Сериализую ссылки — вроде пошло дальше, спасибо

    • Денис Глазырин

      такая ошибка может возникнуть, если структура баз не совпадают, когда из XML производится чтение — сразу делается попытка привести прочитанное к структуре базы-приемника, если не хватает какого-либо свойства, или наоборот — есть лишнее, то вываливается ошибка чтения XML.
      Я обмен делал сериализуя Объекты — это позволяет после чтения сразу записывать Объект в базу. Недастающие/Лишние теги вырезал банально через СтрЗаменить(). (ну вот сейчас с 5-м блоком разберёмся — и будет всё проще.)
      По своей сути — такой подход не сильно отличается от эталонного решения, и тут и там — много ручной работы при добавлении в базу новых объектов.

  3. naditomilina

    Не дает прохода ошибка:
    {ОбщаяФорма.Форма.Форма(17)}: Ошибка при вызове метода контекста (ПолучитьСреднее)
    Ответ = Соединение.ПолучитьСреднее(СтруктураДанных);
    по причине:
    Ошибка вызова операции сервиса: {ФункцииДляРассчета}:ФункцииДляРассчета:ПолучитьСреднее()
    по причине:
    Ошибка SOAP сервера: Обязательное возвращаемое значение не задано: ФункцииДляРассчета}:ФункцииДляРассчетаSoapBinding:ПолучитьСреднее()

    Перезапуски Apache не помогают…

    • L0z4

      >>»Обязательное возвращаемое значение не задано»
      в функции обработки веб-сервиса не возвращается значение. Либо возвращаемое значение не заполнено.
      Если уверены в своем коде, то измените описание веб сервиса, установив атрибут «Возможно пустое значение» у свойства веб-сервиса (и не забудьте обновить ws-ссылку). Хотя уверен что ошибка в коде.

      • naditomilina

        Код очень маленький… Ошибок не замечено.

        • Талов Александр

          У функции ПолучитьСреднее проверьте тип возвращаемого значения в свойствах, должно быть decimal

            • Талов Александр

              перезагрузите ссылку на мобильное приложение. Если не поможет то включайте отладку на сервере, может что отваливается или кэш, или конфа не применена…

            • naditomilina

              Прошлась отладкой на сервере… 1-й раз ошибка. Второй раз получила результат, причина ошибки осталась тайной, но главное она исчезла. :) спасибо всем за помощь.

        • L0z4

          Что такое Ответ? и куда он передается?
          Это должна быть не процедура, а функция
          и в конце должно быть
          Возврат Ответ;
          Мне просто интересно. Это так хитро наши преподаватели выкладывают конфигурации? :)

          • L0z4

            извините.. я затупил.. мой предыдущий коммент бессмысленен и пуст

  4. temsan

    Решил немного изменить пример в видео.
    Изменил тип параметра «СериализованнаяСтруктураДанных» со String на Structure (http://v8.1c.ru/8.1/data/core), не забыл подключить пакет http://v8.1c.ru/8.1/data/core (Основные типы данных в 1С) в настройках Веб-сервиса.

    Структуру в коде получаю с помощью все того-же СериализаторXDTO
    В итоге заработало)))

  5. BuZZZard

    Правильно ли я понимаю, что если структура метаданных на мобильном приложении и персональном компьютере отличаются, то простого обмена без расписывания каждого реквизита не получить?

    • Игорь Сапрыгин

      Смотря что для Вас являетя простым :)
      Но стандартная сериализация и планы обмена не будут работать — это да.

    • Игорь Сапрыгин

      Во. Теория модуля 5го дает еще одно средство :)

  6. Mixan4ick

    Опять что-то не то делаю…

    {ОбщаяКоманда.ВыполнитьОбмен.МодульКоманды(14)}: Ошибка при вызове метода контекста (СоздатьWSПрокси)
    Соединение = WSСсылки.ОбменДанными.СоздатьWSПрокси(«ОбменДанными»,»ОбменДанными»,»ОбменДаннымиSoap»);
    по причине:
    Сервис не найден. {ОбменДанными}:ОбменДанными

    • Игорь Сапрыгин

      Вы же выше сами сервис переименовали из ОбменДанными в changedata.
      Код не хотите поправить? :)

      У вас уже как минимум будет
      Соединение = WSСсылки.ОбменДанными.СоздатьWSПрокси(“ОбменДанными”,”changedata”,”ОбменДаннымиSoap”);

      а если еще и URI поменяли, то первый параметр также перепишет. В общем проверьте все…

  7. Mixan4ick

    При добавлении web-ссылки в базе “клиент” выскакивает ошибка: Ошибка разбора XML: – [1,1]
    Фатальная ошибка:
    Extra content at the end of the document
    Подскажите, пожалуйста, как исправить.

    Вопрос уже был. Ошибку осправить не удалось :( Есть еще какие нибудь варианты?

    • Mixan4ick

      Если просто заходить по ссылке, все нормально. Теги везде закрыты

    • DaNN

      А какие варианты вы пробовали? На латиницу перевели все названия?

  8. nnomelchuk

    На компе обмен идет а
    На эмуляторе Андроида во время выполнения «Выполнить обмен» появилась ошибка «1C предприятие
    Ошибка разбора XML: -[1,1]
    Фатальная ошибка:
    Extra contetnt at the end of the document

    Подскажите куда смотреть?

    доп инфа:
    пространство имен URI в латинице
    версия 1с 8.3.4.465
    мобильная 8.3.4.21

    • DaNN

      Смотрите настройки плана обмена на эмуляторе. Возможно узел не завели для эмулятора или с кодом ошиблись.

    • Поддержка курса по EDT

      В хроме открывается все? Через браузер на мобильном — видно xml схему?

  9. DaNN

    Дмитрий Шерстобитов, может в следующий раз в записи сразу веб-сервисы назвать латиницей, у многих бы проблем меньше было при повторении.

    • Поддержка курса по EDT

      Тогда как бы люди научились? :)

      • Денис Глазырин

        Так бы и научились: «люминий!», кто сделал по-другому = наступил на грабли. Пару раз так получил — внимательно посмотрел как надо = научился.

  10. hjkl

    Доброго времени суток возникли вопросы:
    1) xdto. Можно ли при помощи пакета хdto описать скажем объект конфигурации. Например справочник «Контрагенты».
    Допустим такой структуры:
    id — соответствует уникальному идентификатору аля ссылка.ПолучитьУникальныйИдентификатор.
    Строковые реквизиты определенной длины код, наименование, БИН/ИИН.
    Числовой реквизит «Рейтинг».
    ЮрФиз.Лицо — соответсвует ссылке на перечисления по виду контрагентов — юридические лица или физические лица.
    Физ.Лицо — ссылка на справочник физических лиц.
    При этом чтобы в реквизите по физ.лицу была «вложенная информация» уникальный идентификатор БИН/ИИН код, наименование, дата рождения. и фио.
    Что то по аналогии файлов обмена на конвертации — когда например выгружается договор контрагента и еще захватывается владелец договора контрагент.
    2) У объектов есть дополнительные свойства (тип структура) — при сериализации объекта эта структура тоже сериализуется?

    3) Например из одной базы в другой пришел сериализованный объект при его десериализации он всегда новый или если он раньше приходил то опредилится как уже существующий?

    • L0z4

      с помощью xdto все это можно сделать. можно описать структуру равнозначную сериализованному xml объекту. В сущности, Xdto это и есть xml структура для конкретного объетка созданная с целью его передачи (это, собственно, я расшифровал аббревиатуру). Но в итоге вы же получите тот же самый xml обмен только потратите кучу сил на описание пакетов.
      2) Какие объекты сериализуются описано в справке. Структура есть среди них.
      3) Определение был ли маль.. объект есть в самом задании (уникальный идентификатор для того и нужен).
      Да собственно ответ на все ваши вопросы был в вэбинаре.

    • Поддержка курса по EDT

      Смотрите решение 2 дня

  11. pesveka

    На планшете появилось предупреждение «Ошибка работы с Интернет.Connection to http://127.0.0.1 refused».

    На персональном компьютере все работает. Не пойму в чем проблема…

    • Касинский Петр

      Так, думаю, что на клиенте те то надо настоящий адрес писать! Все, спасибо!

    • Игорь Сапрыгин

      замените адрес 127.0.0.1 на ip адрес компьютера. Вы пытаетесь с планшета к самому планшету и подключиться

      • wladimir90

        Добрый день. Если написать ip адрес машины в локальной сети (192.168…) — все работает. Но внешний ip — refused.
        Учитывая что апач работает, а с другими программами работающими с 80 (тим, скайп) проблем не было, думаю дело не в порте.
        Боюсь при переходе на реальное устройство с этим могут быть проблемы.

        • Escander

          а на этот внешний IP снаружи пинг есть? Если попробовать зайти на этот сервер (из браузера) — он показывает то-же что и для 127.0.0.1? Если нет — не обеспечен требуемый доступ, или если у вас прокси — «не проброшены порты».

  12. Валерий Воробьев

    Добрый день. Споткнулся на публикации. В предыдущих вопросах не нашел ответа.

    • Sonyc

      Добрый день! У меня была такая же ошибка в хроме, связана она видимо с кодировкой, но времени разобраться не было, поэтому открыла все нормально в IE

      • Валерий Воробьев

        Спасибо. Понятно, где искать.

    • Игорь Сапрыгин

      Отвечали уже неоднократно. Проблема в кириллице. Замените URI пространства имен на латинское, избавит от многих проблем в дальнейшем.
      Имя сервиса, имя операции, URI, имена команд, параметров и т.п. от греха подальше — все лучше писать латиницей.

      • Валерий Воробьев

        Спасибо. Понятно, где искать.

    • MarinaG

      Тоже в Chrome выдало такое же сообщение, а в Explorer все отлично!

  13. SantaMarina

    При запуске обмена на клиенте вот такая ошибка: {ОбщаяКоманда.ВыполнитьОбмен.МодульКоманды(11)}: Ошибка при вызове метода контекста (ВыполнитьОбмен)
    Ответ = Десериализовать(Соединение.ВыполнитьОбмен(СтрокаДанных));
    по причине:
    Ошибка вызова операции сервиса: {ОбменДанными}:ОбменДанными:ВыполнитьОбмен()
    по причине:
    Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис.ОбменДанными.Модуль(73)}: Поле объекта не обнаружено (Ссылка)
    по причине:
    {WebСервис.ОбменДанными.Модуль(73)}: Поле объекта не обнаружено (Ссылка)
    Не могу понять, что это.

  14. Navigator

    Не могу получить ссылку на WSDL. Что сделал не так? Спасибо.

    • Денис Глазырин

      Вы апач после публикации вручную перезапускали?

      • Navigator

        Apache/2.4.4 (Win64), инсталляция проходила без ошибок.
        Служба перезапускается вручную неоднократно, без проблем.

        После публикации на веб-сервере 1С, нажимаю «ДА» на автоматический перезапуск службы. Перезапуск не выдает сообщений. Монитор Apache зеленый.

        При ручном перезапуске сервиса Apache появляется ошибка.
        «The requested operation has failed!»

        служба не активна и не перезапускается.

        Повторная инсталляция Apache выдает ошибку.
        Удаляю компонент «модули расширения веб-сервера» платформы 1С 8.3.4.465 либо восстанавливаю httpd.conf, тогда Apache стартует.
        На что еще можно обратить внимание?

        P.S.
        Новые строки в файле httpd.conf после публикации на веб-сервере 1С

        LoadModule _1cws_module «C:/Program Files (x86)/1cv8/8.3.4.465/bin/wsap22.dll»

        # 1c publication
        Alias «/serv» «c:/www/serv/»

        AllowOverride All
        Options None
        Order allow,deny
        Allow from all
        SetHandler 1c-application
        ManagedApplicationDescriptor «c:/www/serv/default.vrd»


        Спасибо.

        • Navigator

          Развернул VW Windows XP, Apache 2.2.
          Описанная ранее ситуация не изменилась.
          Нужна помощь. Не могу идти дальше :(

  15. sserejkin

    Коллеги, кто подскажет, чтот я подтупил. У меня попытка запуска мобильного приложения на Ведроиде материться при загрузке. Ему схема не нравится и ругается на :

    • DaNN

      На что ругается не присоединилось, попробуйте латиницей все связанное с веб-сервисами переименовать

      • sserejkin

        Пишет, что Пространство «ОбменДанными» не есть корректно

        • DaNN

          переименовывайте в латиницу, такое бывает с кириллицей, начните с URI

          • sserejkin

            Таки ДА. Изменил все на Инглиш и заработало.

      • sserejkin

        При этом. Обычным клиентом, браузерами открывается и все механизмы работают

        • Escander

          а браузер это не среда андроида! Для разработки под мобильную платформу правило №1 — никакой кириллицы! Если будете не публиковать базы а собирать пакеты (*.apk) то там и имя конфигурации и синоним её и ещё много чего строго без кириллицы!

  16. D1mD1my4

    Задание сделал, разделив функции Получения и передачи объектов.
    В мобильном клиенте сформировал список разрешенных реквизитов по которым и происходит обмен.
    Обмен делал через сериализацию и десериализацию, без формирования пакетов XDTO.
    Наглядно и поучительно спасибо авторам курса.

  17. Maxim_Goncharov

    Если не работает точка остановке при вызове веб-сервиса (всё сделал как в инструкции опубликовал адрес сервере отладки и автоматически подключаться к веб-сервисам, перезагрузил apache). Что ещё попробовать?

    • Денис Глазырин

      Проверьте ещё раз адрес 127.0.0.1
      Туда могли запятыет вместо точек затесаться

      • Maxim_Goncharov

        Вот это у меня в файле публикации, порт у меня 3030

    • Денис Глазырин

      При этом все процедуры выполняются, но остановка не срабатывает, или просто происходит ошибка?

        • Денис Глазырин

          Попробуйте перезапустить апач, говорят, что он иногда в этом плане подглюкивает.
          Если не поможет — попробуйте перезагрузить ПК.

          • Игорь Сапрыгин

            А «Все работает» не значит что «Все получилось, спасибо»? О_о

            • Денис Глазырин

              Возможно — значит :)
              Но в момент написания комментария — я мог воспринять это как ответ на вопрос — все ли процедуры выполняются.

  18. NICKATE

    Ошибка SOAP сервера: Обязательное возвращаемое значение не задано: ФункцииДляРасчета}:ФункцииДляРасчетаSoapBinding:ПолучитьСреднее()
    Доходит до оператора
    Ответ=Соединение.ПолучитьСреднее(СтруктураДанных);

    Все проверила, так и не пойму, где засада

    • L0z4

      Откройте модуль веб-сервиса и посмотрите что возвращает процедура обработчик ПолучитьСреднее.

      • NICKATE

        Так я туда и не попадаю («галку» разрешить отладку и 127.0.0.1 на закладке Прочее поставила)

        • L0z4

          отладчик иногда загибается, нужно перезапустить апач чтобы он опять заработал. Но в этом первом задании код достаточно простой чтобы в большинстве случаев увидеть все без отладки.

    • Поддержка курса по EDT

      Стоит условие обязательного возврата значений, а возврата то и нет, значит ничего ваш веб сервис не возвращает, или возвращает пустую строку/неопределено и т.д.
      На счет точки останова — перезагрузите апач , просто на нем нажмите внизу и нажмите рестарт. Такой глюк — частое явление.

      • NICKATE

        Спасибо, все получилось, хотя вроде все это же делала (что-то из серии «черт-черт, поиграй, да отдай»)

  19. dimas103

    При просмотре Модуля 2 на момент добавления СериализованнаяСтруктураДанных при обновлении WSСсылки ошибка
    Ошибка при выполнении файловой операции ‘http://127.0.0.1/serv/ws/ФункцииДляРасчета.1cws?wsdl’
    по причине:
    Ошибка работы с Интернет: внутренняя ошибка сервера (500).

    soap:Client
    Операция не найдена: {ФункцииДляРасчета}:ФункцииДляРасчета:ПолучитьСреднее()

    по причине:
    Ошибка работы с Интернет: внутренняя ошибка сервера (500)

    Если убрать СериализованнаяСтруктураДанных то файл http://127.0.0.1/serv/ws/ФункцииДляРасcчета.1cws?wsdl просматривается.
    В чем может быть ошибка?

    • Поддержка курса по EDT

      А в функции параметр добавили?

      • dimas103

        Сейчас добавил. Теперь выдает ошибку
        Ошибка при выполнении файловой операции ‘http://127.0.0.1/serv/ws/ФункцииДляРасcчета.1cws?wsdl’
        по причине:
        Ошибка работы с Интернет: внутренняя ошибка сервера (500).
        A server error occurred.
        Сервис не найден.

        An error occurred processing this request.
        по причине:
        Ошибка работы с Интернет: внутренняя ошибка сервера (500)

  20. Aliennn

    А еще существует проблема со статической wsСсылкой, работа выходить тока через динамическое добавление

    • Игорь Сапрыгин

      Вы бы хоть упомянули что за проблема :)

      • Aliennn

        Веб-сервисы написаны и зпущены на 8.3 поледней версии, а клиентская сторона на 8.2. Если клиентскую часть поменять на 8.3 этот баг исчезнит?

  21. Юрий

    После публикации на сервере, у меня почему то создается только один файл default.vrd, и при заходе на ip, запускается web приложение 1с. Что я сделал не так?

    • L0z4

      меню «Конфигурация — Мобильное Приложение — Публиковать»
      и меню «Администрирование — Публикация на веб-сервере» это разные вещи. Нужно и то и другое, и пути у них разные лучше сделать.

      • Юрий

        Но я это меню “Конфигурация – Мобильное Приложение – Публиковать” и не делал. И в решении преподавателя этого не делается.

        • L0z4

          на сколько я помню, не проговорено устно, но отчетливо видно на экране.

          • Юрий

            Все получилось, но, почему в каталоге публикации, я не вижу не подкаталога ws, ни файла ОбменДанными.1cws?

            • Игорь Сапрыгин

              Их там и не будет, пути к ним прописаны в default.vrd — откройте, увидите

            • L0z4

              веб сервис работает?
              Файла и каталога там быть и не должно, как я помню.

    • Игорь Сапрыгин

      На стороне сервера выполняете публикацию базы с веб сервисами: Администрирование – Публикация на веб-сервере — это нужно для того, что бы опубликовался веб сервис обмена, и ка краз в этом случае при переходе по адресу базы в браузере будет открываться сама база 1С.
      На стороне клиента выполняете публикацию Мобильного приложения: Конфигурация – Мобильное Приложение – Публиковать. Это нужно для того, что бы из этой публикации можно было загрузить приложение в платформу разработчика на мобильном устройстве.
      Чего-то расписать решил ))

  22. Aliennn

    1)А будет в дальнейшем показана работа на веб-сервере IIS
    2)Ко мне тки не пришел токен к 3 модулю.

    • Игорь Сапрыгин

      Если вы не получили никаких писем с токеном доступа (он один на весь тренинг), то обратитесь на саппорт

    • DaNN

      На IIS работает также, а настройки веб серверов в курс не входит. В интернете полно описаний. В 32битной версии как я понял проблем никаких, с 64битной частно бывают сложности в настройке, но после их решения тоже все четко работает

    • Поддержка курса по EDT

      1. Нет, так как это специфика работы с 1С, в контексте мобильной платформы — без разницы на чем сервер крутится. Так что ищите на профильных форумах. А то если начнем еще и про ИИС, то никогда не закончим этот курс :)
      2. Напишите в саппорт

      • Денис Глазырин

        На счёт «никогда не закончим» — возможно оно того стоит… Добавить рассмотрение IIS, потом ещё установку/настройку/компиляцию/публикацию готового apk-файла с конфигурацией, растянуть курс на полгода и в последующем — предлагать его пал соответствующей стоимости.
        А вообще — замечательный курс, отличный материал, лично для меня — много новой информации. Большое спасибо! (я ещё не прощались:)

  23. Maxim_Goncharov

    Если делаем обмен без привязке к структуре конфигурации, то обмен через сериализацию, то есть ли разница какой выбрать способ сериализации (передаем ХранилищеЗначений) ? . К примеру

    1.) СериализаторXDTO
    2.) функция XMLСтрока,XMLЗначение
    3.) ЗначениеВСтрокуВнутр, ЗначениеИзСтрокиВнутр
    4.) Можно создать свою сериализацию..
    Наверное ещё есть способы сериализации

    • Поддержка курса по EDT

      1. Это мы разобрали
      2. На сколько я помню — далеко не все можно таким образом сериализовать
      3. 1С рекомендует это использовать только в связке с 7.7, т.е не использовать в 8.х. Там вроде так в справке и написано. + тут выходит вроде аналог json, а с ним в 1С работать совсем не удобно, хотя он и меньше весит.
      4. Можно, а смысл?

      Вариантов огромное количество, стоит всегда только один вопрос — что быстрее, универсальней и «удобочитаемей»:)

      • Maxim_Goncharov

        >>4. Можно, а смысл?
        Если мы не делаем промежуточную базу обмена, с конфигурацией идентичной мобильными приложением, то придётся всегда придумывать свою сериализацию, то ли через пакеты XTDO, то ли свой стандарт как к примеру делали во 2-ом дне.

        • Поддержка курса по EDT

          5 модуль ответит на ваш вопрос.

  24. igordynets

    Доброе утро!
    В решении синхронизация выполняется по уникальному идентификатору, сам делал также. Вопрос в том, насколько это безопасно? Ведь базы разные, и есть вероятность (пусть и маленькая), что УИДы совпадут. Например, в центральной базе создали номенклатуру «Товар 1» с определенными значениями реквизитов. В клиентской базе создали «Товар 2» с абсолютно другими значениями реквизитов. Получается при обмене кто первый принимает данные (клиент или центральная база), тот и затрёт свой элемент. К примеру, сначала изменения принимает центральная база, тогда «Товар 1» затрётся входящим «Товар 2» и значения реквизитов будут изменены. Возможно ли как-то обработать такую ситуацию?

    • L0z4

      обычно на этот вопрос отвечают «вероятность есть, но она мала, и ей можно пренебречь»

    • Поддержка курса по EDT

      Ну у меня на практике в 30 распределенных базах за два года работы в несколько миллионов документов — был только один раз такой глюк, что ИД документов совпал. И то, 100% доказать не смог это.

    • Игорь Сапрыгин

      Посмотрите как сделаны стандартные обмены между типовыми конфигурациями (подсистема обмена из БСП) — что-то подобное можно реализовать и в связке с мобильной платформой. Но просто не будет — это точно :)
      В типовых во-первых определяют приоритет данных по умолчанию, во-вторых при возникновении коллизии в отдельный регистр записываются обе версии объекта — и старая, и новая. Далее в базе применяется и записывается версия в соответствии с приоритетом по умолчанию. Но также предусмотрен механизм, позволяющий пользователю изменить решение системы, и принять другую версию объекта.

    • DaNN

      Такое если и случится, то один раз за жизнь базы, а написать для корректной обработки такой ситуации придется ой как много.

      • Игорь Сапрыгин

        А почему бы и нет!? Вдруг соорудят БСП для мобильных приложений? Вполне вполне. Во «взрослой» БСП механизмы разрешения конфликтов уже есть. А вдруг? )

        • Поддержка курса по EDT

          А смысл? Если понять суть данного курса, то это реально сделать в течении нескольких часов. И даже с откатом на ранние версии и т.д.
          Я на проектах так и делаю. Тогда если возникает ситуация, когда изменили документ и на телефоне и в ЦБ, то я могу две версии сравнить и даже объединить, например, если в телефоне поменяли таблицу товаров, а менеджер в ЦБ поменял договор.

          • Игорь Сапрыгин

            А я разве против? :) Я только за!
            Хочу Библиотеку мобильных подсистем! ))

            • igordynets

              А что, звучать будет грозно: «…при реализации подобного механизма, использовал БМП…»=)

    • Dmitry K

      Поддержу, в решении которое применяется на моей работе есть регистр сведений с одним из измерений типа «строка». В измерение пишется сгенерированный УИД. На тек момент в регистре более 25000 уникальных стро к- уид-ов.

  25. Kubovtsov

    коллеги , добрый день !
    подскажите, тема новая для меня и тяжела сразу для понимания .

    с ДЗ справился только в части номенклатуры , и то частично .
    с документами не смог разобраться , буду смотреть пример от преподавателя.

    можно ли было использовать такой метод для создания номенклатуры получаемой с сервера ?

    ТЗ=Десериализировать(Ответ);

    Если ЗначениеЗаполнено(ТЗ) Тогда

    Для Каждого Стр из ТЗ Цикл

    Если Стр.ЭтоГруппа Тогда

    Если Справочники.Номенклатура.ПолучитьСсылку(Стр.Ссылка.УникальныйИдентификатор()).ПолучитьОбъект() = Неопределено Тогда

    НовыйОбъект = Справочники[«Номенклатура»].СоздатьГруппу();
    НовыйОбъект.Наименование = Стр.Наименование;
    НовыйОбъект.Код =Стр.Код ;

    НовыйОбъект.УстановитьСсылкуНового(Стр.Ссылка);
    НовыйОбъект.Записать();
    КонецЕсли;

    ИначеЕсли не Стр.ЭтоГруппа Тогда
    Если Справочники.Номенклатура.ПолучитьСсылку(Стр.Ссылка.УникальныйИдентификатор()).ПолучитьОбъект() = Неопределено Тогда

    НовыйОбъект = Справочники[«Номенклатура»].СоздатьЭлемент();
    НовыйОбъект.Наименование = Стр.Наименование;
    НовыйОбъект.Код = Стр.Код ;

    буду признателен , если дадите комментарии .
    в итоге все равно сделаю , как по курсу идет.

    • L0z4

      все логично, кроме того что происходит только запись новых. А обновление существующих игнорируется.

      • Kubovtsov

        L0z4
        с обновлением сущесвующих не знал как определить, изменился ли объект или нет

        • Игорь Сапрыгин

          Ну самый простой вариант — безусловно перезаписывать поступающие данные. О контроле изменений — в модуле 3.

        • L0z4

          как я понимаю на данном этапе этому просто не стоит придавать значение. Просто переписывать реквизиты существующих объектов и все.

          • Kubovtsov

            L0z4
            Игорь Сапрыгин

            смотрел с прогнозом на будущее , если кол — во объектов номенклатуры будет очень много, не зависнет ли 1с при безусловной записи ?

            • L0z4

              может, но к счастью, в будущем этим методом пользоваться не придется (это эдакий спойлер к модулю 3)

    • Денис Глазырин

      Добрый день.
      Просто представьте, что будет, когда Вы доберетесь до документов, у которых нет свойства ЭтоГруппа?
      И ещё: для документов Вы делаете проверку — есть такой элемент в справочнике или нет, а для групп?

      • Kubovtsov

        Денис Глазырин
        =====
        Если Стр.ЭтоГруппа Тогда
        Если Справочники.Номенклатура.ПолучитьСсылку(Стр.Ссылка.УникальныйИдентификатор()).ПолучитьОбъект() = Неопределено Тогда

        тестировал на обмене сервер — клиент

        у группы свой «УИ», если не нашли, то создаем группу.

    • Игорь Сапрыгин

      Справочники.Номенклатура.ПолучитьСсылку(Стр.Ссылка.УникальныйИдентификатор()).ПолучитьОбъект()
      А почему не просто Стр.Ссылка.ПолучитьОбъект() ?
      И разное обращение к справочнику Справочники.Номенклатура и Справочники[«Номенклатура»] — экспериментируете?

      Вложенность условий поменял бы местами. Код стал бы проще.
      Отличий в создании группы или элемента не так много что бы дублировать весь код.

      Вот Ваш же пример, но в другом виде

      Если Стр.Ссылка.ПолучитьОбъект() = Неопределено Тогда
              Если Стр.ЭтоГруппа Тогда
                  НовыйОбъект = Справочники.Номенклатура.СоздатьГруппу();
              Иначе
                  НовыйОбъект = Справочники.Номенклатура.СоздатьЭлемент();
              КонецЕсли;
             
              НовыйОбъект.Наименование = Стр.Наименование;
              НовыйОбъект.Код =Стр.Код ;
              НовыйОбъект.УстановитьСсылкуНового(Стр.Ссылка);
              НовыйОбъект.Записать();
             
          КонецЕсли

      Плюс не заполняете родителя — все элементы и группы будут в корне.

      • Kubovtsov

        Игорь Сапрыгин
        ============
        1.
        Справочники.Номенклатура.ПолучитьСсылку(Стр.Ссылка.УникальныйИдентификатор()).ПолучитьОбъект()
        А почему не просто Стр.Ссылка.ПолучитьОбъект() ?

        методом ПолучитьОбъект() пользовался ранее только по существующим объектам в ИБ, не знал как правильно описать , предположил, что нужно сначала получить ссылку по УИ, а потом получить объект

        2. Родителя для элемента заполнял ,а вот для группы нет
        забыл .

        3.И разное обращение к справочнику Справочники.Номенклатура и Справочники[«Номенклатура»] – экспериментируете?

        синтаксис читал, решил попробовать.
        ранее не пользовался обращением к объекту через скобки

        спасибо за помощь

  26. Валентина Галанова

    Все получилось, но вот только закончила. На чтение методички с пониманием и прощелкиванием уходит часа 3. Плюс час вебинар. Моменты, которые не дублируются в методичке приходится останавливать и пересматривать — в прямом эфире не восприняла бы, хорошо что вебинары в записи, особенного с учетом того что живу не по московскому времени. К ночи мозг уже работает ели-ели. Задание делала 4 часа чистого времени за два подхода.
    Обмен номенклатурой сделала сама полностью, что сериализуете соответствие, а документ в структуре — подсмотрела, ради экономии времени.
    Тренинг — супер, но очень плотно приходится заниматься. Надеюсь осилить весь.

  27. Misha

    всем, привет. Appach работает, публикацию сделал, но сервис не доступен пишет. где может быть ошибка?

    • Игорь Сапрыгин

      Самое простое — попробуйте перезапустить апач.
      Дополнительно посмотрите что у Вас в файле default.vrd в каталоге публикации, гляньте все ли там хорошо.

      • Misha

        все также, перезапустил апач, проверил файлик default.vrd

        в нем:

        где «C:\MobilePl\BaseServer» путь к моей базе «сервера»

        но в строке браузера когда набираю
        http://127.0.0.1/BaseServ/ws/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B8%D0%94%D0%BB%D1%8F%D0%A0%D0%B0%D1%81%D1%87%D0%B5%D1%82%D0%B0.1cws?wsdl
        также пишет Сервис не найден. … в чем может быть причина?

        • Misha

          сам файлик, почему то не скопировалось сюда содержимое

          • Поддержка курса по EDT

            заархивируйте его и прикрепите

            • mea46

              добрый день!
              Проблема аналогичная.
              смущает содержание файла default.vrd :

            • Misha

              прикрепил, надеюсь архив прикрепится к сообщению.

            • Игорь Сапрыгин

              Misha, у вас ошибка в слове Рассчета. В 1С две буквы «с», а в браузере вы пишете одну.

            • Misha

              Игорь, спасибо большое, помогли!! пол дня убил :) научите быть таким же внимательным! :)

              • Игорь Сапрыгин

                Годы усердных тренировок в преодолении таких же «мегаграблей» )))

  28. Евгений Хавов

    Решение детально рассмотрел, воспроизвел, если, конечно, не учитывать многих тонкостей, которые в реальной жизни встречаются и пренебречь этим — сделать можно (но если учитывать, за один день не справится, при чем тема абсолютно новая и сложная — три дня разбирался до костей мусолил)… но в задании это не сказано: что универсальных вещей делать не надо, сериализовать в одну строку списки объектов сразу догадался, т.к. была подсказка в теории, и на практике до этого делал (эксперименты проводил с ТЗ и переносом таким образом из одной базы в другую), затруднения были в определении нового объекта — подсмотрел в решении… фу… взмок весь :) урок интересный очень! жаль мало времени на проработку всех тонкостей дают…

    • Евгений Хавов

      семь дней мало :-\ остальные бы успеть…

      • Поддержка курса по EDT

        Ну у вас же материалы потом никто не отбирает :)

  29. Евгений Хавов

    Подход не универсальный, можно было вытащить структуру реквизитов с сервера, потом на клиенте по этой структуре занести значения какие совпали и перенести обратно на сервер все справочники/документы? или это плохо?

    • Денис Глазырин

      Тут скорее рассказывают о принципах работы с Мобильным приложением, чем выполняют поиск оптимального решения для всех типов задач. Можно конечно оптимизировать код и разрабатывать универсальные решения, но это уже наверное за рамками курса.

  30. Евгений Хавов

    У веб-сервиса мы описываем процедуру, для процедуры потом описываем параметр, а у параметра есть три свойства:
    «Входной»
    «Выходной»
    «Входной-Выходной»
    как используют «Выходной» и «Входной-Выходной»?

  31. Евгений Хавов

    Почему на клиентской базе в процедуре ВыполнитьОбменДанными() передают второй параметр ПолучившуюсяСериализованнуюСтроку в Соединение.ФабрикаXDTO.Создать, а не в Ответ = Соединение.ВыполнитьОбмен(ПолучившаясяСериализованнаяСтрока)?

    • Евгений Хавов

      т.е. пишут вот так:

      СтрокаДанных = Соединение.ФабрикаXDTO.Создать(Операция.Параметры.Получить(«Данные»).Тип, СформироватьДанныеДляСервера());
      Ответ = Соединение.ВыполнитьОбмен(СтрокаДанных);

      а скажем, не так:
      СтрокаДанных??? = Соединение.ФабрикаXDTO.Создать(Операция.Параметры.Получить(«Данные»).Тип);
      Ответ = Соединение.ВыполнитьОбмен(СформироватьДанныеДляСервера());

      • Евгений Хавов

        в принципе, получается тоже самое, на сервер уходит XML…

      • Евгений Хавов

        и при таком раскладе:
        СтрокаДанных = Соединение.ФабрикаXDTO.Создать(Операция.Параметры.Получить(«Данные»).Тип);

        возвращается Неопределено, вместо типа XDTO — почему? потому что в XDTO не создали такой «тип»?

      • Поддержка курса по EDT

        Смотрите видео, там есть про это

        • Евгений Хавов

          оба параметра обязательные

          Описание варианта метода:
          Создаёт значение XDTO, указанного типа.

          в теории возвращает XDTO (второй параметр не указан), в решении ДЗ, если второй параметр убрать — возвращает неопределено — ошибка платформы, что ли… должно вернуть строку, хотя б пустую… про неопределено в справке ничего не написано

          • L0z4

            он же возвращает не строку, а типизированное значение на заполненное на основании введенных данных. Он не должен преобразовывать «неопределено» в пустую строку. А вот почему исключение не вызывается действительно вопрос к разработчику.

            • Евгений Хавов

              ну да, типизированный :) про пустую строку я загнул :)

  32. Jestery

    При добавлении web-ссылки в базе «клиент» выскакивает ошибка: Ошибка разбора XML: — [1,1]
    Фатальная ошибка:
    Extra content at the end of the document
    Подскажите, пожалуйста, как исправить.

    • Денис Глазырин

      Если это происходит при экспериментах со скаченной базой из материалов 3-го дня, то попробуйте создать новую базу и перенести в неё конфигурацию. (пользователи smetа и PaNaCeA сообщали, что им помогло.)

      • Jestery

        Нет, это на моей базе происходит, которую по видео делаю.

    • Денис Глазырин

      Судя по содержанию ошибки — у Вас xml-файл «потерял» закрывающие теги в конце документа.
      Попробуйте посмотреть содержимое файла перед началом процедуры чтения, обратив внимание — как этот файл заканчивается.

    • Поддержка курса по EDT

      Значит есть пользователи в базе. Есть такой глюк в 1С. Или удалите пользователей, или используйте динамическую ссылку.

      • reborn

        Такая же ошибка.Пользователей на сервере удалить? А если база рабочая, и в ней работают сотню человек (как у меня)? удалить пользователей точно не получится. Заметил что это ошибка появляется когда идет передача именно XML Данных, т.е. если передавать просто строку без тэгов то все работает нормально. НО, можно передавать и с тегами, но в процедуре на сервере не должно быть обращения к метаданным сервера а только работа над простыми типами (сложение, вычитание и т.д.). Платформы мобильного клиента перепробовал штук 5 точно. разницы ни какой. попробовал на планшете. (леново) на смартах самсунги s2 и ace. тоже самое. пока что в процессе решения проблемы.

  33. Natali

    Еще одна шибка появилась
    «Неизвестная ошибка. Достигнуто ограничение учебной версии Достигнуто предельное количество подключений к ИБ по причине: Достигнуто ограничение учебной версии Достигнуто предельное количество подключений к ИБ»
    Я всего пару часов работаю, запускала только со своего телефона и с виртуального андроила
    Обидно(

    • Игорь Сапрыгин

      Чего-то где-то не так. Попробуйте перезагрузить компьютер, что бы все сеансы гарантированно сбросились.

        • Игорь Сапрыгин

          Работаю с полнофункциональной платформой, поэтому ограничений таких не встречается.
          Учебная она такая… учебная =))

        • L0z4

          Вроде бы достаточно перезапускать апач (он сессии на себе подвешивает, а у учебки их количество ограничено).

    • Денис Глазырин

      Дмитрий об этом говорит в видео (примерно 40:20), он рекомендует перезапустить сначала Апач.

      • Natali

        перезапуск апача не помогает, помогает перезагрузка компьютера.

    • Поддержка курса по EDT

      Это проблема с учебной версией.
      Или снесите учебную поставьте нормальную, если есть возможность. Или перезагружайте апач. Если не помогает, то весь комп. Такой глюк есть.

  34. Natali

    Добрый день.
    Подскажите, плиз,
    при выполнении примера на странице 22 «использование ws-ссылки»
    у меня возникает ошибка
    «{ОбщаяФорма.Форма.Форма(15)}: Ошибка при вызове метода контекста (avr)
    Ответ = Соединение.avr(СтруктураДанных);
    по причине:
    Ошибка вызова операции сервиса: {forAvr}:forAvr:avr()
    по причине:
    Ошибка разбора SOAP сообщения: неверная версия сообщения. »
    Вначале были все методы на кирилице и была такая же ошибка,
    переименовала все — не помогло.
    Из-за чего такое может быть?

    • Денис Глазырин

      В соседней ветке Дмитрий рекомендовал в первую очередь проверить как прописаны параметры в функции веб-сервиса.
      Кроме того, он рекомендовал, при наличии реальной 1С — удалить учебную.

      • Natali

        Прописано все на латинице, всего один параметр, перепроверила несколько раз
        Реальная 1С не установлена, стоит только тестовая.

        • Денис Глазырин

          я Вам процитирую сообщение Dmitri, у которого была схожая проблема:

          «…
          Выяснилось, что у меня непонятная проблема с апачем.
          В конфигурациооном файле httpd.conf есть строка

          LoadModule _1cws_module “D:/1c_83/8_3_Install/8.3.4.465/bin/wsap22t.dll”

          после каждой публикации сервиса на вебсервере эта строка
          меняет текущий путь к базе 1с на старый

          LoadModule _1cws_module “D:/1c_83/8_3_Учебная/8.3.4.465/bin/wsap22t.dll”

          В результате сервис перестает работать и апач не стартует. Приходится руками менять файл после каждой публикации, чтобы увидеть результат работы сервиса.
          …»

          может чем-то поможет.
          (но видимо дело в том, что база учебная.)

          • Natali

            проверила конфигурационный файл апача
            httpd.conf
            в нем корректно указан путь к библиотеки 1С.
            короче, я снесла эту учебную версию, в ней невозможно работать, каждые 5 минут ошибка «превышено количество подключений»
            и еще этот баг «Ошибка разбора SOAP сообщения» (проверила на реальной 1С 100% все работает)

            • Natali

              и динамические ссылки тоже не создаются в учебной версии

    • Поддержка курса по EDT

      Сложный вопрос.
      А что у вас на веб сервисе?
      Если вы взяли базу учебную, то там два параметра, а мы тут указали только один. Добавьте еще один параметр, или у второго поставьте, что он может быть пустым.

  35. YuliyaP

    А у меня при загрузке на реальное мобильное устройство вылезла ошибка разбора xml «Недопустимое URI ОбменДанными». Пришлось менять имя Web-сервиса на DataChange и в коде на клиенте при установке соединения, соответственно. Название операций оставила по-русски.

    Также была описанная выше ошибка работы с Internet при выполнении обмена «connection to http://127.0.0.1 refused» …

    Вобщем, всё заработало :)

  36. AnnaBel

    При создании ws-ссылки в базе «клиент» возникает ошибка «Ошибка доступа к файлу ‘http://127.0.0.1/day2p/ws/day2p.1cws?wsdl’
    по причине:
    Ошибка работы с Интернет: Server returned nothing (no headers, no data)»
    В браузере ссылка http://127.0.0.1/day2p/ws/day2p.1cws не открывается — «не удается отобразить страницу».
    При публикации базы «сервер» ошибок не было, апач перезапускала — не помогло. С чем может быть связана эта ошибка?

    • Денис Глазырин

      Попробуйте Публикацию ещё раз (или два) выполнить, у Вас файл не опубликовался. (после этого — Апач перезапустите вручную.)
      Конфигуратор под Администратором был при этом запущен?

      • AnnaBel

        Запускала под администратором, публикацию выполняла много раз, апач перезапускала, не помогло

        • Денис Глазырин

          Выложите пожалуйста скриншот с основными настройками Публикации.

          • AnnaBel

            Нашла ошибку — в ип-адресе для отладки пропустила одну точку)))))) Исправила и все заработало

  37. Andrey.S.MSK

    Добрый день с чем может быть связана ошибка.

    {ОбщаяФорма.Форма.Форма(22)}: Ошибка при вызове метода контекста (ПолучитьСреднее)
    Ответ = Соединение.ПолучитьСреднее(СтруктураДанных);
    по причине:
    Ошибка вызова операции сервиса: {ФункцияДляРсчета}:ФункцияДляРассчета:ПолучитьСреднее()
    по причине:
    Ошибка SOAP сервера: Неизвестная ошибка. Ошибка проверки данных XDTO:
    Значение: ‘4.5’ не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}positiveInteger
    Несоответствие фасету FractionDigits = ‘0’
    по причине:
    Ошибка проверки данных XDTO:
    Значение: ‘4.5’ не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}positiveInteger
    Несоответствие фасету FractionDigits = ‘0’

    Если на сервере возвратить целое, то работает без ошибок.

    В чём ошибка?

    • Денис Глазырин

      «Значение: ’4.5′ не соответствует простому типу: {http://www.w3.org/2001/XMLSchema}positiveInteger»

      данный тип данных не позволяет использовать дробные числа, в материалах курса была табличка с описанием.
      Страница 12-я материалов за второй день.

    • Andrey.S.MSK

      Разобрался.

      Тип возвращаемого значения для сервиса на сервере был positiveInteger.

      После изменения типа на сервере, придётся заново создавать ссылку, так как статическая ссылка, данные не обновляет.

  38. CeHbKA

    Вот это взрыв мозга! :)
    Нигде в сети не встречал более толковой информации по веб-сервисам. Теперь не возникает вопросов, что это за XDTO или WS-ссылка, или как делать сложные обмены с помощью веб-сервисов.

    Честно говоря, на апач забил. т.к. 80 порт занят «каким-то» kernel процессом — поэтому всё делаю на IIS. На мой взгляд с ним работать всяко проще.

    Вобщем, наконец-то появилось понимание что это такое и как оно работает. Но было жёстко, до сих пор мозг ахреневает)))

    • Денис Глазырин

      у Вас IIS до установки Апача уже был?
      Если так, возможно он и занимает 80-й порт?

      • CeHbKA

        и правда…был…
        А я как-то об этом даже не подумал)))

        • Денис Глазырин

          В сети есть информация, что при наличии ISS служба Apache2.2 не стартует.

  39. Meson

    Как я понял сериализовать можно разными способами, например так:
    ОбХДТО = СериализаторXDTO.ЗаписатьXDTO(Данные);
    МойХМЛ = Новый ЗаписьXML;
    МойХМЛ.УстановитьСтроку();
    ФабрикаXDTO.ЗаписатьXML(МойХМЛ, ОбХДТО);
    Или так:
    МойХМЛ = Новый ЗаписьXML;
    МойХМЛ.УстановитьСтроку();
    СериализаторXDTO.ЗаписатьXML(МойХМЛ, Данные);
    Есть ли в этих способах различие и каким предпочтительнее пользоваться?

    • Escander

      СериализаторXDTO.ЗаписатьXML согласно СП: «Записывает значения в формате XML без указания имени элемента. В качестве имени элемента будет использован тип значения. » т.е. если есть 2 разных элемента одного типа то это вызовет проблему, да и с обратным разворотом и получением оригинального имени тоже проблема.

  40. blackclimber

    Добрый день. Вопрос по вебинару второго тренинга. Создал WS XDTO, опубликовал как полагается. Начинаю прописывать в браузерной строке 127.0.0.1/serv/ws/ФункцииДляРасчета.1cws вылетает ошибка 404 не найдено. Пробовал и по латинице написать /FunctionForCalculation.1cws. Что может быть? Но вот 127.0.0.1/fm работает

    • Денис Глазырин

      Вы после публикации Апач вручную пробовали перезапустить?

      • blackclimber

        Да пробовал. Ничего не получается.. Уже и другой каталог создавал

        • Денис Глазырин

          В папке serv (или какая там новая?) появился файл default.vrd после публикации?
          Приложите пожалуйста скриншоты а) окошка с настройкой публикации; б) адресной строки в браузере — где пытаетесь посмотреть результат публикации; и на всякий случай ещё — скриншот конфигурации с развёрнутой веткой web-сервисов.

          • mrPeter

            Здравствуйте, у меня такая же проблема была.
            там просто ошибка в методичке на странице 20.
            Адрес на рисунке один а ссылка ниже для перехода в браузер другая.
            вот так попробуйте 127.0.0.1/serv/ws/СтруктураДляПолученияСреднего.1cws

    • Игорь Сапрыгин

      Вы адрес этот прописываете в браузере компьютера на котором запущен веб сервер? ip адрес корректный?

    • blackclimber

      Иногда все бывает столь очевидно. Проблема была в том, что при написании в браузерной строке я по своей невнимательности неучел регистр букв и в Serv при опубликации написал с большой буквы соответственно, при подключении 127.0.0.1/serv/… у меня ничего не сработало. Благодарю за помощь.

      • Игорь Сапрыгин

        Да… Очевидных граблей здесь насобирали несчетное количество =)

  41. OlgaSh

    Здравствуйте, пришлите, пожалуйста ссылки на модуль3. Я сначала подумала — выходной, но по плану-графику есть занятия. Может Вебинар был, а я пропустила? Ничего в новостях не вижу. Спасибо заранее.

  42. Meson

    Добрый день.
    Создал веб-сервис, опубликовал, захожу через браузер по адресу:
    http://127.0.0.1/Obmen2/ws/ws1Obmen.1cws?wsdl
    Выдает такую ошибку:
    soap:ClientОперация не найдена: {wsObmen}:wsObmen:opRunObmen()
    В чем может быть причина?

    • Денис Глазырин

      Для операции в модуле web-сервиса создана процедура?

      • Meson

        Точно. Когда переименовывал все на английские названия, удалил процедуру из модуля. Сейчас добавил, все заработало. Спасибо.

        • Денис Глазырин

          хорошо что получилось :)
          Пожалуйста.

    • Денис Глазырин

      Windows 32 или 64? Реальная или в виртуальной среде?

    • Денис Глазырин

      По симптомам — всё-таки похоже на занятый 80-й порт. Проверьте его пожалуйста ещё раз.

      • venvlad

        Среда реальная, windows 64, порт перепроверил — не занят.

        • Денис Глазырин

          а Internet Information Services у Вас случаем не работает? из-за этого бывает Апач тоже не стартует (не могут они параллельно работать).

        • Денис Глазырин

          Может у Вас антивирус так хорошо работает? Есть что-то подобное в системе?

        • Талов Александр

          наберите для верности в командной строке «net stop iisadmin» (без кавычек), была такая же проблема — iis работал а netstat показывал что порт не занят

        • Escander

          прям точно так, как показывал автор курсов проверили? А что в «Журнале системных сообщений»?

  43. venvlad

    При публикации на сервере вылетает ошибка. Апач переустанавливал, перезапускал и Апач, и компьютер.

    • L0z4

      необходим запуск 1С с административными правами, как в видео

    • venvlad

      Запустил под админом. Опубликовал. Открываю в браузере вылезает ошибка. Апач вообще не запускается.

      • L0z4

        в каталоге logs (там где установлен апач) в логах можно найти более подробную информацию о том почему апач не смог стартовать с новым конфигом.

        • venvlad

          Смотреть в файле error, если да то на что обратить внимание?

          • L0z4

            да, error. В строке после даты, в скобках указан тип сообщения. notice не интересны. error и т.п. нужно смотреть

          • Денис Глазырин

            «…
            Пуск — все программы — Apache HTTP Server — Configure Apache Server — Test Configuration… появится чёрное окно, в котором он напишет, что именно ему не нравится в конфиге. Если это окно только мелькнёт и сразу исчезнет, значит в конфиге он проблем не видит. Тогда в error.log должна быть какая-то запись.
            …»

      • Денис Глазырин

        На компьютере, при просмотре в браузере адреса 127.0.0.1 сообщение появляется?

          • Денис Глазырин

            Проверяли 80-й порт, может о занят какой нибудь программой?

          • Евгений Хавов

            попробуй поменять порт, как ниже писали, установить не 80, а другой — возможно какая-то другая программа заняла этот порт и не дает запустить. Через командную строку можешь посмотреть какая программа его заняла — в лекции это рассматривается.

          • venvlad

            Мышку навожу на иконку Апач, пишет: running none of 1 apache services

            • Денис Глазырин

              На иконке Апача нажмите правой кнопкой мыши и выберите второй пункт — «Open Services». В открывшемся окне найдите службу Apache2.2
              Какое у неё состояние?

            • venvlad

              80 свободен, на прошлом занятии смотрел. В httpd.conf прописал Listen 81. не помогло

            • Евгений Хавов

              аналогичная проблема была: служба не запускалась, пока не удалил программу, которая занимала 80 порт, в моем случае это NetPolice, правда в командной строке писал как «Неизвестный источник» :)

            • Денис Глазырин

              Конечно запускайте, и Тип запуска проверьте на всякий случай, чтоб было значение «Автоматически».

  44. Nata4ik

    У меня выпадала ошибка при обмене:
    «Ошибка SOAP сервера: Внутренняя ошибка. Ошибка инициализации библиотеки модулей». Оказалось, что в модуле сервера при формировании структуры ответа клиенту в конце одной строки не стояла «;» из-за этого выпадала ошибка.

    • zhu4

      а в каком месте не стояла «;»? Интересно просто, может по невнимательности тоже такое сделаю. Или просто в 1Сном коде не поставили?

    • dunar

      Такая ошибка вознимкает при разных ошибках синтаксиса в процедурах веб-сервиса. Например, если вместо КонецЦикла поставить КонецЕсли — причем проверка не выявляет такие несоответствия.

  45. zhu4

    не разобрался как посмотреть файлы выложеные по ссылкам .1cd. Возможно просто не умею )))). Как бы догадался что можно создать пустую конфигурацию, и в ней заменить этот файлик. Но у меня получилась проблема, дело в том что версия моей 1с 8.3.3, и соответственно возникла ошибка что нужно повысить версию платформы для работы с этой конфигурацией. Подскажите как нибудь понизить версию в этих файликах можно?

    • L0z4

      нет. Проще и правильнее обновить свою платформу

    • Escander

      Для просмотра этого курса нужна платформа 1С-Предприятие версии 8.3.4.*. Вообще есть универсальное требование: у платформы и мобильной платформы 3 первых числа номера версии должны совпадать

  46. DmiVo

    Спасибо за науку. Все отрабатывает. Единственное долго доходило, что при работе клиентской части на реальном телефоне IP в статической ws-ссылке надо указывать не 127.0.0.1, а машины на которой расположен Apache. Хотя на прошлом занятии Вы на это специально обратили внимание.

    • Олеся

      хотела избавиться от ошибки:
      планшете пишет “Connection to http://127.0.0.1 refused”.
      при смене 127.0.0.1 на IP ПК с веб-сервером (192.168.*.*) выдается тут же ошибка без конца — 1с-ка не реагирует ни на что, можно закрыть только аварийно:
      Ошибка доступа к файлу ‘http://192.168.*.*/server/ws/WebServiceFunctionForCounting.1cws?wsdl’
      по причине:
      Ошибка работы с Интернет: Server returned nothing (no headers, no data)

      • Олеся

        это WS-ссылка в клиентской конфе (ситуация: на ПК по кнопке в конфе все отрабатывается, на мобильнике — ошибка про refuse). по советам, надо было IP поменять в WS-ссылке клиентской конфы с 127… на свой, но я смысл не очень поняла почему так.

        • Игорь Сапрыгин

          127.0.0.1 — это стандартный адрес ТЕКУЩЕГО компьютера. На ПК все отрабатывает, т.к. и сервис сервера и клиент размещены на текущем ПК, и клиент обращаясь к сервису по адресу 127.0.0.1 успешно его находит.

          Запуская клиент на планшете с тем же адресом 127.0.0.1, клиент пытается обратиться к самому планшету и искать опубликованный сервис там. Конечно же его там нет.

          Вот как-то так :)

          • Олеся

            Почему тогда при замене 127.0.0.1 на свой IP перестает все работать, конфигуратор 1С не дает ее даже вбить и сохранить, а в браузере не отображается по новой ссылке с замененным IP xml?
            сейчас смотрю третий модуль, там в процедуре работают с динамической ссылкой:
            ВСОпределение = Новый WSОпределения(«http://192.168.*.*/paycontrolws/ws/WebServiceExchangeDataPayControl.1cws?wsdl»);
            У меня в этом случае выдается при запуске:
            Ошибка при вызове конструктора(WSОпределения).При содании описания сервиса произошла ошибка и эта ссыль

            • Денис Глазырин

              а у Вас точно от планшета до ПК есть связь?
              на ПК попробуйте в браузере открыть с 192.168итд. — должна открыться схема.
              Если на ПК по такому адресу открывается, а с планшета нет — значит у планшета нет доступа по сети (роутер/брандмауэр и т.п.). Если не откроется, значит с публикацией что-то не так (тогда попробуйте просто IP адрес набрать 192итд — апач должен показать It works!).

            • Олеся

              Источник проблем найден — Брандмауер. Сегодня снова повторилось, после нескольких перепубликаций и перезапуске апача. вылечилось после обезвреживания брандмауера, перепубликаций из конфигуратора заново, тогда ссылки в браузере снова заработали

          • Олеся

            первый вопрос решен, в браузере ссыль не отображалась вчера и в конфигуратор 1с не хотела вписываться с вылетом ошибки, сегодня чудным образом все отображается и вводится, хотя конфигурацию не трогала — вопрос снят. осталась только проблема по третьему модулю, там ссыль в браузере отображается с IP компа, но xml какой-то подозрительный…

  47. 13jaguar

    При создании двустороннего обмена столкнулся с неожиданной проблемой. При загрузке с клиента на сервер не происходит десериализации загружаемой строки. Она так и остается строкой XML. При этом, загрузка с сервера на клиент проходит совершенно нормально. Алгоритмы выгрузки и загрузки абсолютно одинаковые и на клиенте, и на сервере. Кто-нибудь сталкивался? С чем это может быть связано?

    • L0z4

      функция ПрочитатьXML не может вернуть строку xml вместо данных (если, конечно, в xml не записали строку содержащую xml). Она может выдать ошибку, но ни как не вернуть исходный текст. Наверняка ошибка в коде.

      • 13jaguar

        Ага. Только что сам разобрался. Оказывается я дважды сериализовал данные. Определенно, по ночам следует спать! Спасибо за помощь.

  48. DmitriyVa

    (поиском мои предыдущие сообшения не находятся)
    в общем печалька :(
    на VitrualBox 4.3.10, ОС Windows XP sp3,
    1С 8.3.4.465 (и учебная 8.3.4.389) работать с Апачем отказываются.
    полная отказываетя запускать веб-сервер (ошибка обнаружения лицензии), при этом мобильное приложение работает.

    учебная запускает, но выдает сообщение «неизвестная ошибка, достугнуто ограничение» (дословно непомню, устал)

    1С 8.2.19.83 работает во всех вариантах (файловая, серверная) для проверки использовал рабочую «Розница для Казахстана» 1.0.8.1

    Если ставить Апач на «железо» (сервер Dell, ОС Windows 8 x64) — 1C 8.3 работает без всяких нареканий (да и в ролике вединара использована винда 7-ка).

    Вот такой результат, может кому поможет сберечь время и нервы в будущем :)

    P.S.
    Желающим посоветовать: «Ставь винду 7-ку», у нас 38 (тридцать восемь) лицензий на ХР, ее вполне хватает для работы (офис 2003, 1С 8.2), и вот так — списать и купить 7-ки из-за 1С 8.3? А для учебы я и крякнутую 7-ку найду и поставлю, до вечера время есть :)

    • maximus314

      Как-то так сложилось, что изначально решил ставить «чистый эксперимент» — чтобы не бороться со всякими конфликтами ПО и занятыми портами — поставил на VMWare чистую WinXP SP3 и на нее установил все, что указано в методичке — все заработало сразу и без проблем. Когда для удобства захотел прикрутить Snegopat, возникла проблема, которую я попытался решить установив все актуальные обновления для XP, но проблема оказалась проще — Snegopat’у требовалось наличие в системе установленной 8.2, а была только 8.3
      Т.о. как оригинальная так и «полностью обновленная» WinXP справляется со всеми поставленными в данном курсе задачами.
      Однако переходом на Win7 (или Win8-Win81) все равно имеет смысл заняться с точки зрения безопасности — WinXP больше не обновляется…

    • Денис Глазырин

      «(поиском мои предыдущие сообшения не находятся)»

      Возможно, что комментарий просто «переместился» на другую страницу.
      Попробуйте внизу страницы нажать ссылку «Предыдущие комментарии» и повторить поиск, если комментариев много — таких страниц может быть несколько.

    • sp2801

      У меня отлично работает под VirtualBox 1С:Предприятие 8.3 (8.3.4.465) с Apachee 2.2 на Win XP SP 2 (брал тут: http://www.modern.ie/en-us)
      Обращайтесь — помогу!

  49. InShallah

    Вопрос:
    Собственнно делаю синхронизацию через сериализацию и, есчетественно, как только добавляю реквизит на сервере, а на клиенте его нет, то при разворачивании сериализованного XML выдается ошибка.
    Если передавать объекты — то ошибка сразу при развороте, если передавать ссылки — то в ТЗ «объект не найден». Что делаю не так?

    • Поддержка курса по EDT

      Все делаете так :)Можете посмотреть решение. Вы пошли верно, но не дошли до конца

Комментарии закрыты