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

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

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

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

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

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

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

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

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

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

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

Вопросы

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

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

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

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

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

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

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

  1. Олеся

    еще одну ошибку не могу добить: перенос новых данных с сервера на клиент происходит нормально, а обратно (на клиенте создана одна новая номенклатура и один товар) вылетает ошибка:

    • Олеся

      один раз вылезала подобная, когда тестировала перенос новых элементов с сервера, помогла перепубликация с перезапуском аппача, сейчас перезапуск аппача не помогает(

    • Олеся

      нет, с параметрами было все ок, сегодня попробовала… все перегрузилось без ошибок. правда я перед сегодняшней попыткой еще на всякий пожарный заново на клиенте для WS-ссылки сделала импорт WSDL, может это помогло, может просто перезагрузка в новый день.

  2. Олеся

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

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

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

    не знаю, как у остальных, но после всего прохождения видео-урока, нажал на первую кнопку «Подключиться через статическую ссылку» — сервер вываливается с ошибкой на строке Если ЗначениеЗаполнено(СтруктураДанных):

    Функция ПолучитьСреднее(СтруктураДанных, СериализованнаяСтруктураДанных)

    Если ЗначениеЗаполнено(СтруктураДанных) Тогда

    поменял условие на:
    Если СтруктураДанных Неопределено Тогда

    заработало — почему сломалось?

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

      ошибка:
      «Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис. ФункцияДляРасчета.Модуль(4)}. Ошибка при вызове метода контекста (ЗначениеЗаполнено)…

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

      до сериализации в строку и из строки — работало.

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

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

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

        На сервере, в процедуре ФункцияДляРасчета в режиме отладки проверьте — какое значение у Вас приходит в качестве параметра.

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

          Свойство: СтруктураДанных.
          Значение: ОбъектXDTO.
          Тип: ОбъектXDTO.

          Содержит в себе:
          КоличествоЭлеменнтовВМассив = 2;
          Комментарий = «Test»;\
          МассивЧисел — список XDTO, в котором два значения 6 и 3.

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

        Вначале смотрим видео.

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

          а может не правильно анализировать на ЗначениеЗаполнено() если передаем в качестве параметра Структуру? и лучше всё-таки сравнивать на Неопределено?

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

            в данном случае, не структура, а объект XDTO.

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

      Конфигурация — дается как конечный результат видео. Для копирования кода и т.д.
      Так как идет наращивание функционала, то сарый, что бы не удалять — остается для копирования слушателям видео курса.
      Так что возможно все. Если посмотрите видео — узнаете, почему так работало там, и почему не отработало у вас.

    • Andrey.S.MSK

      попробуйте сделать так

      Если не(СтруктураДанных = Неопределено) тогда
      СтруктураДанных.Проверить();
      Структура = СтруктураДанных;
      Иначе
      Структура = ДесериализоватьXML(СерСтруктураДанных);
      КонецЕсли;

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

        да я так и написал: Если СтруктураДанных Неопределено Тогда
        просто выше знак пропустил :) — так работает и получаю ответ :)

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

          оказывается на форуме съедает два символа: знак меньше и знак больше если рядом поставлены — выше снова съелись…

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

            обрабатываются как html-тег?
            в смысле форум считает это началом тега и поэтому не выводит.

            Проведём эксперимент:
            Результат

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

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

  4. daosss

    Добрый вечер!
    При разборе примера из методички все получилось.
    При решении практической задачи при отладке, когда есть неуникальность кода справочника или документа, то при записи выдает ошибку на мобильном. затем зависает web сервис и не отвечает. приходится перепубликовывать web сервис и перезапускать апачи.
    После снятия контроля уникальности обмен получился в обе стороны

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

      получай по ссылке и проверяй заполненность поля, если пустой то новый — его создавай, если нет — то «синхронизируй».

    • arthur1089

      чтобы гарантированно избежать неуникальности кодов, надо использовать префиксы в обеих базах

  5. Serdgio

    Небольшое предложение по оптимизации.

    Вместо промежуточной таблицы значений
    Результат = Запрос.Выполнить().Выгрузить();
    и
    Для Каждого Кол Из Результат.Колонки Цикл

    использовать результат запроса, его колонки и выборку.

    Результат = Запрос.Выполнить();
    Колонки = Результат.Колонки;
    Выборка = Результат.Выбрать();

    Если такого рода предложения неуместны в рамках обсуждения данного курса — сообщите.

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

      Раз уж на то пошло, то можно еще оптимизировать:
      Функция СформироватьДокументы()
      Запрос = Новый запрос(«|ВЫБРАТЬ
      | ПоступлениеТоваровУслуг.Ссылка,
      | ПоступлениеТоваровУслуг.ПометкаУдаления,
      | ПоступлениеТоваровУслуг.Номер,
      | ПоступлениеТоваровУслуг.Дата,
      | ПоступлениеТоваровУслуг.Проведен,
      | ПоступлениеТоваровУслуг.Товары.(
      | Номенклатура,
      | Количество
      | )
      |ИЗ
      | Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг»);
      Возврат запрос.выполнить().выгрузить();
      КонецФункции
      (в качестве значения поля «товары» будет вложенная таблица)
      Но не думаю что такая оптимизация серверной части играет роль.

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

      Та без проблем. Только вы теперь людям, у которых опыта меньше объясните это все :)
      Вариантов — просто море, но нельзя забывать про читабельность кода, особенно в учебных материалах.
      Если вы с таким умеете работать — Отлично! Пишите, делитесь, это всегда хорошо.

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

  6. Dmitry K

    2-й модуль оказался намного сложнее первого. Перечитывал pdf с теорией раза 3 целиком и ещё частями. В голове никак не складывается цельная картина что для чего нужно и как оно работает.
    Очень нехватает какой-либо блок схемы взаимосвязи объектов (WS ссылок, web сервисов и xdto пакетов). C текста это воспринимается плохо.

    Первое практическое задание сделал скорее на интуиции и подглядывании в базу с примером.
    Сервис опубликовал, через браузер, xml доступен. В базе Клиент ссылку прописал. Понял что ссылка вписалась корректно когда увидел в ней созданный в другой базе web-сервис.

    Вторую часть так и не осилил сам. В голове нет цельной картины что и для чего нужно. Придется смотреть решение :(

    • L0z4

      веб-сервис можно сравнить с обычной процедурой или функцией, которую просто сделали доступной через обычную сеть. XDTO пакет это описание структур данных используемый в качестве параметров и/или возвращаемых значений этих процедур и функций. Помогает контролировать (типизровать, что ли) передаваемые данные, но не явялется обязательным. А WS-ссылка это своего рода «описатель» веб-сервиса, благодаря которому мы экономим время при разработке (т.к. нам не требуется каждый раз при вызове прописывать адрес к веб сервису, и мидитировать в поисках информации о структуре его параметров)
      Все просто :)

      • Dmitry K

        Спасибо, со ссылкой было понятно интуитивно. Прописал ссылку — увидел то-же что и создано в базе Сервер.

        Непонятно было как передавать данные между БД. Т.е. изложив по другому:
        1. В базе Клиент готовим структуру с данными для отправки.
        2. Заворачиваем её в xml
        3. Заворачиваем xml в строку.
        4. «Дергаем» за «ws ссылку — удаленную функцию». В неё передаем строку из п.3, а возвращает она тоже строку.
        5. Строку из. п.4 «разворачиваем» в обратном порядке, сначала в xml, затем в ТЗ с привычными объектами БД (справочники и документы).
        Так «картинка» складывается.

        Как я понимаю, инициатором обмена с помощью web-сервисов может быть только мобильное приложение. Т.е. если нам нужны актуальные данные, мы должны каким то образом регулярно выполнять команду обмена в мобильном приложении.

        • L0z4

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

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

            ставить события с указанным интервалом — это придем обратно к началу лекции с dbf-файлами — т.е. асинхронное выполнение, сервер будет работать в холостую и т.д… тоже вот этот момент интересен, + не все брать элементы справочника, документы и тупо перезаписывать их всех в мобильной конфигурации — а всё-таки отслеживать, какие изменились и только те обновлять/добавлять/удалять.

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

              это хорошо когда 1-2 элемента справочника, или документа — а если миллион…

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

              Не бегите вперед. Это на следующем уроке.

            • Makushimo

              Действительно интересно можно ли сэмулировтаь работу плана обмена с квитанциями о приеме сообщения на стороне мобильного приложения.

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

                Конечно можно. Можно и платформу переписать. Чего велосипедом пользоваться =)

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

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

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

              можно, просто разработаете механизм — повторяющий стандартные механизмы Планов обмена. Оно того стоит?
              (если не чисто в учебных целях)

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

      Вы теорию посмотрите вначале. А не читайте. Основной материал — видео.

      • Dmitry K

        Видео я попозже тоже посмотрел. Я в тексте лучше воспринимаю чем видео. Можно пробежать глазами вперед/назад/ по диагонали. Мне с этим в продвинутых курсах приходится мучиться. К концу 5-го часа видео про СКД, в голове полная каша и забываешь что было в начале главы. А перечитать возможности нет. Приходится пересматривать видео и искать главы которые помогут в решении ДЗ.

  7. nad_komarova

    После публикации http://127.0.0.1/server/ws/obmen.1cws в нем текст:

    soap:Client

    Операция не найдена: {obmen}:Obmen:ВыполнитьОбмен()

    Красным выделено soap:Client и Операция не найдена: {obmen}:Obmen:ВыполнитьОбмен(). Операция есть, функция в модуле тоже, конфигурация сохранена. В чем может быть проблема?

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

      После сохранения конфигурации — попробуйте обновить публикацию и перезапустить апач вручную ещё раз. Иногда помогает.

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

      В браузере пробовали посмотреть? Там схема выводится полностью или с ошибкой? (если с ошибкой — это сразу видно, общий текст короткий и описание ошибки есть на русском.)

      • nad_komarova

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

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

          Сделайте пожалуйста скриншот конфигурации, так, чтоб было видно всю структуру Web-сервиса, и откройте ещё модуль этого Web-сервиса.
          Складывается впечатление, что для Операции не назначен обработчик

      • nad_komarova

        Проблема разрешилась. Функция была без переданного параметра, после формирования новой функции все заработало. Т.е. сперва нужно создать параметр, потом функцию

  8. maldinitaly

    Добрый вечер. При запуске обновления(отправить/получить данные по справочнику и документам) на виртуальной машине выскакивает ошибка:»Ошибка работы с Интернет Connection to http:127.0.0.1 refused».

      • Олеся

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

        • olgavikt

          У меня такая ошибка вылезла, когда я с вирт.машины с Андроида пыталась коннектиться к веб-сервису. Вылечила прописыванием в конфе клиента адреса ws-ссылки не через локалхост (127.0.0.1), а через адрес хоста во внутренней сети (192.168.х.х)

  9. zhu4

    Прошу прощения, что не по теме, как на этом сайте найти свои комментарии? Задал вопрос, но не могу найти его и ответы соотвественно.

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

    • arthur1089

      актуальная задачка. Ведь при этом еще надо открывать доступ к серверу предприятия 1С во внешний мир ,чтобы апач мог подключиться, и с безопасностью могут быть вопросы. Хостер позволяет редактировать conf файлы? Веб-сервисы настраивается в этих файлах

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

        У тех, кто через интернет обновляет типовые конфигурации — как правило, доступ во внешний мир уже и так открыт :)
        (ну или кто встроенный почтовый клиент использует.)

        • zhu4

          Извините , пожалуйста. Не много не понял про что вы говорите. Тут удосужился все таки прочитать справку нажав по кнопке «справка» при публикации конфигурации. Насколько я понял без возможности перезагрузки Апач все это вообще не имеет смысла. Плюс посмотрел конфиг файл Апача , там идет подгрузка dll от 1С. Так что насколько я понял все таки на хост опубликовать сервис не получиться. Я правильно понял?

          Вопрос с разными машинами , с 1с и с вебсервером: там нужно какуюто утилиту webinst применять?

          • arthur1089

            да, нужно расширение веб-сервера устанавливать. Для линукса тоже бывает. А что, хостинг не позволяет расширения свои добавлять?

        • arthur1089

          не согласен, когда запускаешь обновление, то инициируешь соединение «изнутри». А я имел ввиду, что в случае веб-сервиса на внешнем хостинге соединение с 1С будет инициироваться от этого хостера «извне», для этого надо открывать порты на фаерволе, да еще и проброс настраивать.

          • L0z4

            проброс порта — дело 10 минут, а безопасность здесь это политика, а не техника. Кроме того, там ведь будет авторизация.
            И зачем пытаться смешивать понятия и приплетать 1с к сайтам на неком хостинге? Это имеет смысл только если вы и свои базы 1С держите удаленно и работаете с ними как веб-клиент.

            • arthur1089

              не имеет смысла. Проще публиковать со своего сервера.

          • zhu4

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

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

              тут как такова синхронизация: это взять все элементы справочника или все документы, сериализовать всё это в строку, потом обратно — в качестве примера веб-сервиса очень хорош, а для синхронизации — это не применимо.

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

      Попробуйте следующим образом: на странице с материалами, где публиковали свой комментарий нажмите Ctrl+F. Должно где-то появиться окошко для поиска (в FireFoxe — у меня внизу слева, в IE, кажется, вверху). В этом окошке наберите свой ник. Если вхождений на странице не найдено — переместитесь в самый низ комментариев и попробуйте «Предыдущие»/»Следующие» комментарии, на какой-то из страниц — должны найти :)

      • zhu4

        Спасибо за ответ. Потом догадался про старый русский добрый ctrl+C,ctrl+V, к которому уже добавил и ctrl+F ))), но вот может предложение разработчикам сайта: что бы может где в кабинете был список своих комментов

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

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

    • L0z4

      В любом случае серверу с апачем необходимо иметь установленную компоненту 1С которая так же прописываетсяв в конфиге апача (wsap). Плюс доступ к базам данных. Ну и лицензии так или иначе. Без всего этого ни как.

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

      Можно, но это лучше в админам за помощью

  10. arthur1089

    извините, забыл еще вопрос:
    у меня почему-то при попытке обратиться из моб.приложения на смартфоне НТС к веб-сервису выдавалась ошибка,
    «XML parsing error: [158,78] Error:xmlns:tns: «ОбменДанными» is not a valid URI

    пришлось изменить название веб-сервиса, метода и его параметра на латинские, после этого заработало. Не сталкивались?

    • DaNN

      многие столкнулись, в видео говорили, что лучше использовать латиницу

    • zhu4

      Изначально говорилось, что URI на кириллице ведется в академических целях. Вся адресация в интернете лучше делать на латинице.

      • arthur1089

        интересно, значит в домене «.рф» пока что не получится пользовать веб-сервисы))

        • zhu4

          честно , я не знаю как реализован механизм с доменами на кириллице, но чувствую что там с костылями. Например попрбуйте скопировать «русскую» ссылку и вставить например в скайп. У меня по крайней мере переводит в англозычную квакрозябру. Будет время поинтересуюсь этим вопросом.

    • Escander

      При использовании мобильной платформы — никакой кирилицы!!! Кстати при сборке пакетов apk для их установке на мобильные устройства не задействуя мобильную платформу (через кабель USBЗ или через PlayMarket) — то-же самое требование: никакой кирилицы!

  11. arthur1089

    Еще заметил два момента:
    1) т.к. сначала идет выгрузка из клиента на сервер, то получается что «коллизии» всегда решаются в пользу клиента
    2) в приведенном решении не передается пометка удаления и признак проведенности. Я делал универсальные функции преобразования справочников и документов, перебирая из метаданных все стандартные реквизиты, все обычные реквизиты и табличные части.

    У меня вопросы:
    1)В Вашем решении документ просто записывается (не проводится). Если реализовывать полноценный алгоритм с передачей движений документа, то мне видется 2 варианта: проводить сразу при записи, либо отложенным проведением — как в типовых конфигурациях 1С. Какой вариант предпочтительней?
    2)мне понравилась идея с сериализацией/десериализацией, потому что упрощает разработку обмена. Если не секрет, кто автор идеи? Используется ли такой подход в жизни, в каких-нибудь коммерческих решениях?

    • L0z4

      2) обработка «универсальный обмен данными xml» которую можно найти в любом углу построена на сериализации. Обмен между ЗУП и БП, на сколько я понял, тоже (иначе зачем еще в этих двух конфигурациях созданы «искусственные» документы имеющие полностью идентичную структуру?)

      • arthur1089

        наверное имеете ввиду ВыгрузкаЗагрузкаДанныхXML? вообще логично. Но про обмен ЗУП и БП не слышал такого, ведь там обмен на БСП должен быть, т.е по правилам обмена, а в правилах задается структура. Какие версии конфигураций имеете ввиду?

        • L0z4

          да, эта обработка.
          ЗУП 2.5. Да там есть правила, только они зашиты в обработке, а не выбираются при создании обмена. И сам обмен использует встроенную обработку УниверсальныйОбменДаннымиXML. А причем здесь БСП я не понял.

          • arthur1089

            я имел ввиду, что подсистема обмена взята из БСП

    • DaNN

      Колллизии как раз наоборот решаются в сторону сервера и это правильно.
      Вполне возможно что полноценно проводить документ не самая хорошая идея, т.к. чаще всего на клиенте будет не вся информация, логичнее сделать проведение при получении данных от клиента на сервере.
      Сериализация в 1с используется часто.

      • arthur1089

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

        • olgavikt

          Это зависит от того, что делается сначала — выгружаются в базу сервере полученные с клиента данные, или собирается из базы ответ клиенту

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

      1. Давайте еще раз — мы не показываем тут синхронизацию, а показываем обмен. Тут есть большая разница.
      Плюс — у каждого свои бизнес процессы, так что коллизии были, есть и будут всегда, вопрос только как их решать, а тут кроме вас никто не ответит.
      2. То вы теперь сами сможете это добавить? Если да, то значит мы достигли своей цели.

      1. Передавать движения — само по себе абсурдно. Это используется только в РИБ, а РИБ у нас нет. Так что проводить надо по любому. Отложенным не выйдет. Тут нет фоновых заданий (пока), так что если даже в ожидании поставите — интрфейс будет блокирован. Так что лучше при загрузке.
      2. На всех моих проектах, и не только при обмене.

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

    вторую часть разбираю — теорию, вот несколько замечаний:
    1. Страница 8 «Создание XDTO-пакета, заполнение, чтение» в первом абзаце «реализуем на практике…» здесь бы, конечно, лучше написать что реализовываем в новой созданной конфигурации… а то читаешь, читаешь 8 страниц, приступаем к практике и как-то автоматически думается, что должны продолжать правку конфигурации предыдущего урока…
    2.Соединение = WSСсылки.ФункцииДляРасчета.СоздатьWSПрокси(«ФункцияДляРасчета», «ФункцияДляРасчета», «ФункцияДляРасчетаSoap»);

    интересует второй параметр, откуда его взяли? Первый параметр показали, где он находится в дереве конфигурации, второй нет..

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

      и еще вопрос:
      3. Проверить() необходимо запускать и на мобильном приложении перед вызовом метода веб-сервиса или всё-таки можно обойтись одним вызовом в серверной базе в методе ПолучитьСреднее() веб-сервиса? Или где тогда лучше проверку делать: на сервере, на клиенте?

      • L0z4

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

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

          у меня вот первый параметр: функция пространства имен — называется «ФункцияДляРасчета», а в дереве конфигурации WS-Ссылки называется как «ФункцииДляРасчета», но передал в обоих параметрах как «ФункцияДляРасчета» — в итоге всё работает… где подвох?

          • L0z4

            >>»в дереве конфигурации WS-Ссылки»
            имя ВС сылки здесь не имеет значения. Важно имя Веб-сервиса (в конфигурации сервера).
            Специально проверил — левые имена в этих параметрах дают эксепшен

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

              ответ дали в третьем уроке, когда первый параметр изменили на латиницу, второй — оставили — сразу прояснилось :)

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

        И там и там. Ибо если ошибка заполнения — смысл вызывать сервер? Только нагрузка лишняя. А если безответственный программист не проверил на ошибки, тогда проверять на сервере. Хотя при использовании XDTO — еще в момент подключения может быть проверка, но это в случае веб сервиса.

    • L0z4

      2 Второй параметр это непосредственно имя веб сервиса — то, которое отображается в дереве конфигурации.

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

      1. Теория идет к видео, а не как самостоятельный материал для изучения.
      2. Можете найти в справке 1С.

  13. olgavikt

    Данные сериализуются и на сервер отправляются, но потом происходит ошибка, с которой не могу разобраться

    • L0z4

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

    • dunar

      В записи решения Тренера проскакивала подобная ошибка — на сколько помню там была попытка десериализовать пустую строку

      • olgavikt

        Я пыталась сделать ДЗ сама, прежде чем посмотреть решение преподавателя. Сейчас уже смотрю решение, вижу свою ошибку и понимаю, как исправить :)

  14. zhu4

    Господа. А в случае ситуации, когда серверную часть делает один человек, а клиентскую часть делает другой, то получается запросы здесь не очень уместны на сервере? Ведь получается что в действительности прогер(Сервер) совсем же не знает какие реквизиты нужно выгружать для прогера(клиент).
    Хотел бы уточнить вопрос в такоей ситуации только XDTO применяется?
    И где бы все таки посмотреть где разбирается практическое задание с решением с XDTO?

  15. DmitriyVa

    А еще у меня до сих пор не видны материалы для сегодняшнего дня :(

    • dunar

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

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

      Напишите в саппорт тогда, с приложенным скрином.

  16. dunar

    FTP это лишь транспорт, к тому же скорость взаимодействия с которым зависит от конкретной реализации ftp-сервера. Чтение, формирование файлов, промежуточные пересылки между каталогами обмена — в промышленных средах это не так то быстро работает.

  17. DmitriyVa

    Так, похоже картина проясняется :)
    Основной сервер — Windows 2008 x64,
    стоит 1C v8.2.19
    лицензии, серверная — программная, клиентские — аппаратная.
    Для учебы IT развернули VirtualBox 4.3.10 и поставили XP sp2.

    Apachе стоит на ХР, виден (смарт HТC его видит)

    на виртуалке лицензии видны, основные базы (те что на 8.2) запускаются и работают.

    Похоже у веб-сервера с лицензией проблема.
    Перенести Apache невозможно — работаю в терминале.
    P.S.
    Я в пролете?

    • L0z4

      так 8.2 работает, а 8.3? Она хотя бы в пользовательском режиме (не веб.сервисы) лицензии находит?

      • DmitriyVa

        Все таки не самый удобный формат переписки — предыдущие сообщения нечитабельны (их не читают).
        L0z4 — 8.3 не работает.

        • DmitriyVa

          это про Апач, а так — работает, как поставили (с 16-го числа).
          Мобильное приложение на Апаче — работает, смартфон обновляется.

      • DmitriyVa

        Похоже все таки проблемы с лицензией под веб-сервер на виртуалке, полезу ставить 8.3 и Apache на основной сервер.
        P.S.
        IT поймает — убъет. :)

    • DmitriyVa

      Пересмотрел первый вебинар — все так же выполняется в виртуальной машине! только там система Windows 7 (и возможно виртуальная машина VMWare, а мне VirtualBox поставили).
      Ключи видны!
      Есть какие идеи, а?

      • dunar

        А почему сделан вывод о лицензиях? У вас локально то нет способа развернуть инструментарий — так оно попроще бы было?
        У меня вообще все на маке — и виртуалка Windows 8.1 c 1c 8.3 и виртуалка Android, к тому же виртуалки на Parallels стоят и работают

        • DmitriyVa

          Потому что сейчас поставил поставил Апач на основной сервер — и все «взлетело».

          В моем случае (еще раз повторюсь: VirtualBox 4.3.10, OC WIndows XP sp2) получается следующее:
          — лицензии сервера видны;
          — базы на 8.2 локально и серверно запускаются;
          — базы на 8.3 локально запускаются;
          — apache, мобильное приложение регистрирует и запускает;
          — веб-сервер 1С работать отказывается.

          P.S.
          а еще dunar вы невнимательны, я выше писал — работаю в терминале, локально поставить могу, но лицензии взять негде. Лицензии все на сервере.

          P.P.S.
          Где лежит 8.3, версия для обучения? Я так понимаю для нее лицензии не нужны?

          • dunar

            Причем тут невнимательность :) — я предлагал уйти с терминала и поставить все у себя — тут уже не раз писали, если нет лицензий своих, пути решения. Версию для обучения можно получить на сайте 1с.

            • DmitriyVa

              «И снова здравствуйте» (с) :)
              чуть выше я спросил где она лежит, так как на users.v8 я ее не нашел среди списка дистрибутивов 8.3

    • 13jaguar

      Если клиентские лицензии раздаются сервером 1С, то клиенты моут работать только с этим сервером, в клиент-серверном режиме. В Вашем случае сервер версии 8.2, то есть платформу 8.3 на таких лицензиях в принципе не поднять. Нужно либо включать раздачу лицензий менеджером лицензий (отключив раздачу лицензий сервером), либо ставить аппаратные ключи в локальный компьютер. В общем, отвязать клиентские лицензии от сервера.

      • DmitriyVa

        8.3 локально получает лицензию, все выполняется в файловой версии — чего еще не хватает?

      • DmitriyVa

        Клиентские лицензии — аппаратный ключ.

  18. L0z4

    в большенстве случаев фтп не заменит веб сервисы. Да и «быстрее» то фтп с чего бы был? Или в плане «кодинга» с фтп быстрее?

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

      Тут нельзя путать синхронный обмен и асинхронный. Так что они решают абсолютно разные задачи.

      • L0z4

        Я это и имел ввиду. Да и о чем тут говорить, если в первых 10 минутах первой лекции все было сказано наилучшим образом.

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

          Рад что все получилось так хорошо объяснить, а то тема таки сложная.

  19. iyar

    Проблем не возникло.
    Сериализатор порадовал, так как до этого работал на уровне внешних обработок без изменения конфигурации…
    Тренинг классный!

    • L0z4

      Счастливый вы человек, обходиться без сериализатора тем более не имея доступ на изменение структуры базы данных. Обмены, выгрузки и хранение собственных настроек во внешних файлах как без xml то в наши дни? :)

  20. maximus314

    Очень понравился описанный в первой части метод обмена через XDTO пакеты с контролем содержимого данных на корректность.
    Поэтому для закрепления материала сначала сделал именно такой вариант обмена :-)
    С (де)сериализацией в строку тоже все получилось, но от такого подхода осталось впечатление некоторой «ненадежности» — нет практически никакого контроля передаваемого содержимого — если десериализовалось корректно — ок, а нет — сложно определить что не понравилось системе.
    Возможно это только первое впечатление.

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

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

  21. Soul

    Вебинар сегодня будет? На почту ничего не приходило. Где новости читать?

  22. jeezic

    в файле теории в теме по сериализации при вызове операции «ПолучитьСреднее» используется просто строка в качестве параметра сериализованной структуры данных. и это работает.
    В видео решения сериализованная строка приводится к типу XDTO.

    Оба варианта одинаково правильные или первый — это небрежность в коде, которая может привести к каким-то последствиям в будущем?

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

      Теория — освещает разные аспекты работы. А практика — конкретное решение конкретной задачи. В теории об этом всем говорится. Если вы соло программист — то можно и сериализацией. А если вы в команде и вы пишете сервер, а другой — клиент, то конечно лучше xdto, будет меньше проблем и меньше времени на объяснение.

  23. Soul

    Олеся, DmitriyVa запустите 1С с правами администратора (ПКМ по ярлыку)

    • Олеся

      В настройках ярлыка 1С стоит Запускать от администратора, не в этом дело

  24. Urgat

    у меня тут косяк с настройками/установками/или еще чем то

    как по решению публикую вебсервис. запускаю из хрома —
    {«#exception»:»{http://v8.1c.ru/8.1/data/core}Exception»,»exception»:{«clsid»:»9db1fa37-b455-4f3f-b8dd-7de0ea7d6da3″,»descr»:»Файл не обнаружен ‘v8res://mngsrv/111_ws_ОбменДанными.1cws'»,»data»:»77u/ew0KezlkYjFmYTM3LWI0NTUtNGYzZi1iOGRkLTdkZTBlYTdkNmRhMywi0KTQ\r\nsNC50Lsg0L3QtSDQvtCx0L3QsNGA0YPQttC10L0gJ3Y4cmVzOi8vbW5nc3J2LzEx\r\nMV93c1/QntCx0LzQtdC90JTQsNC90L3Ri9C80LguMWN3cycifSwxLA0KeyJ2OHJl\r\nczovL21uZ3Nydi8xMTFfd3Nf0J7QsdC80LXQvdCU0LDQvdC90YvQvNC4LjFjd3Mi\r\nLDB9LCJzcmNccmVzTmF0aXZlLmNwcCgxNDUpOiDQoNC10YHRg9GA0YEg0L3QtSDQ\r\nvdCw0LnQtNC10L0ifQ==»}}

    если запустить из експлорера то там ошибка проще
    Файл не обнаружен ‘v8res://mngsrv/111_ws_ОбменДанными.1cws’

    где смотреть и что с этим делать?

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

      Это вы так базу назвали «111»? Я надеюсь что я ошибаюсь.

      • Urgat

        это не имя базы это имя папки в корневом каталоге, т.е. в публикации на сервере каталог F:\www\111\

        • Urgat

          вопрос снимается.
          я думал что в строкеhttp://127.0.0.1/111/ws/ОбменДанными.1cws после айпи надо писать имя каталога, который мы указываем при публикации (www — корневая папка веб сервера, а 111 папка лежащая в ней), вместо этого указывается имя сервера публикации.

  25. Александр Владимирович Массон

    Коллеги не подскажете будет ли сегодня вебинар?Спасибо

  26. Олеся

    тоже аппач веб-сервис не публикует :(, его перезапуск не помог, перезагрузка компа в целом тоже тоже, пробовала разные браузеры и наименование латиницей например так: http://127.0.0.1/serv/ws/WebServiceFunctionForCounting.1cws — Not Found
    The requested URL /serv/ws/WebServiceFunctionForCounting.1cws was not found on this server.
    Что не так может быть?

    • Олеся

      платформа 1с 8.3 учебная версия — это может как-то повлиять?

      • DaNN

        при установке 1с веб сервисы добавили? по умолчанию не устанавливаются

        • DmitriyVa

          Я — да,
          в апаче:
          LoadModule _1cws_module «C:/Program Files/1cv8/8.3.4.465/bin/wsap22.dll»
          есть

        • Олеся

          да, при установки учебной вроде только пункта про тонкого клиента не было, остальное выбирала, что требовалось

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

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

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

      Скиньте скрин публикации базы

      • Олеся

        в папке serverpub такой default.vrd (а может влиять пробел в названии каталога баз 1с?):

        base=»/Server»
        ib=»File="C:\1C bases\8.3\Server";»

        • Олеся

          тогда смущает, что база для публикации для мобильного приложения в том же каталоге лежит с пробелами, и она нормально опубликовалась в первом задании и сейчас xmlоткрывается через http://127.0.0.1/order/

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

            Следите за именем публикации. Оно должно соответствовать 1 в 1 тому, что вы вбиваете в строку, с учетом регистра букв.
            Скиньте адрес, по которому вы подключаетесь сейчас

      • Олеся

        name=»WebServiceFunctionForCounting»
        alias=»WebServiceFunctionForCounting.1cws»
        enable=»true»/

          • Олеся

            спасибо! я в ссылке имя каталога вставляла serverpub, а не имя публикации Server, и в первый раз они были тоже различные serv и Server! да, работает! ура :)

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

              Поздравляю. Внимательней читайте методичку и слушайте видео. Я понимаю, что хочется всего и сразу. Но если что то не выходит — отлучитесь на пару минут, выпейте кофе. Откройте видео и методичку на таком же моменте и всмотритесь и вслушайтесь :)

            • Олеся

              есть такое. после дневного присмотра за мелкой вечером голова в ауте и все по быстрому, пока время свободное есть. спасибо за отклик, а то зависла и отстала уже от графика.
              XDTO очень интересно, никогда еще с этим не работала, всё с нуля, спасибо за проект! :)

          • Олеся

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

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

              Была раздача практического материала. Следите по сайту. Справа на ленте — вся новая инфа.

  27. melnikovg1c

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

  28. GVV

    Здравствуйте.
    В представленном решении есть очень серьезная ошибка. Если взять и удалить все данные с серверной части(элементы справочника и документы) о опять запустить обмен, то мы увидим, что элементы справочника синхронизировались, номер и дата документа тоже, а ссылки на номенклатуру в табличной части битые. Это происходит потому, что сначала синхронизировался документ, а потом справочник.
    Такая ошибка проявилась только у меня? Получается при выгрузке сериализовались данные в обратном порядке из структуры. Нужно обязательно в коде учитывать порядок загрузки данных, а именно сначала справочник, а потом документы.

    • dunar

      Хорошее замечание. Я обычно обмен через XDTO-пакеты делаю — здесь обработка идет в строгом соответствии со структурой пакета.

    • Maxim_Goncharov

      Я думаю о концепции схемы обмена будут ещё говорить: чем обмениваться какими объектами (не каждый же раз всё выгружать), как обрабатывать удаление очистку объектов из баз и т.п.

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

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

      • arthur1089

        странно, у меня этой ошибки нет. Сделал тоже самое: удалил непосредственно с сервера и заново запустил обмен. Битых ссылок нет. Что вполне логично, как мне кажется. Ведь в нашем случае передаются ВСЕ объекты гарантированно, и не важно в какой последовательности, все встанет «на свои места», и к окончанию сеанса обмена битых ссылок не будет.

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

          это если вы при создании напишите Объект.ЭтоОбмен = Истина.
          Иначе, если у вас есть родитель и он не заполнен, то будет ошибка.

  29. Bliz

    А на планшете все также должно отрабатывать?
    У меня на компьютере на клиенте все ок, а на планшете пишет «Connection to http://127.0.0.1 refused» и все. Хотя кнопки и другие элементы появились в интерфейсе на планшете.

    • dunar

      Для подключения с других устройств твоей сети нужно в URL источника в WS-ссылке указывать реальный IP или имя.

      • Bliz

        О теперь пошло дело, но уже другая ошибка: «Ошибка отображения типов: Отображение типа string (http://www.w3.org/2001/XMLSchema)date в тип «Дата». Ошибка преобразования данных XML»

        • dunar

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

          • Bliz

            Да, на ПК все норм и туда и обратно обмениваются.

          • Bliz

            Ошибки поборол. Была проблема с МоментовВремени, и не хотела Десереализовывать ДеревоЗначений (в ней собраны документы и их ТЧ) на планшете, пришлось переделать на ТаблицуЗначений.
            Теперь и на планшете все ок.

            • L0z4

              В справке 1С к каждому объекту прописывается сериализуется ли он. И, кстати, само посебе дерево значений сериализуется. Проблема могла быть только с данными в дереве.

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

      Пишите внешний IP адрес, а не внутренний. Внимательней видео просмотрите

    • dunar

      Выдает 1С какие-то ошибки при публикации? В httpd.conf появляется блок вида:
      # 1c publication
      Alias «/MyMobApp» «C:/www/MyMobApp/»

      AllowOverride All
      Options None
      Order allow,deny
      Allow from all
      DirectoryIndex 1cema.xml

      Конфигуратор от локального админа запускаете (как это в обучающих роликах показано)?

      • DmitriyVa

        содержимое default.vrd (путь к нему: c:\www\serv\)

        в httpd.conf каталог создался:

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

        модуль есть:
        LoadModule _1cws_module «C:/Program Files/1cv8/8.3.4.465/bin/wsap22.dll»

        # 1c publication
        Alias «/Serv» «C:/www/serv/»
        публикация тоже.

          • DmitriyVa

            Нет.
            мобильное приложение (мое — учебное, без сервисов), работает и обновляется.
            Для пробы развернул эталонные (сервер и клиент)
            с сервером то же самое — его невидно, клиента в браузере видно.
            На телефоне (HTC) при развертывании:
            «Ошибка разбора XML: -[158,78]
            Ошибка: xmlns:tns: ‘ОбменДанными’ is not a valid»

            • DaNN

              в файлах вроде все верно, попробуйте перевести все на латиницу: URI, название сервисов

            • DmitriyVa

              Есть подозрение, что все таки default.vrd не овсем правильный.
              Помнится в самом начале появления веб-сервера на Apache была закорвырка с написание путей к файловой базе, я про эту строку: { ib=»File="C:\Documents\dBase\Эталон\Сервер";}
              что-то с кавычками и &quot,за давностью не помню в чем засада была

            • DmitriyVa

              8.2 к Apache в серверном варианте прицепился.
              в default.vrd строка такого вида: {ib=»Srvr="xp1";Ref="poligon";»}

        • Олеся

          аналогично, только для учебной версии так:
          LoadModule _1cws_module «C:/Program Files (x86)/1cv8t/8.3.4.465/bin/wsap22t.dll»

          # 1c publication
          Alias «/Server» «C:/wwwserver/serverpub/»

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

          serverpub — это уже удалила каталог serv, завела с этим именем и пыталась с нуля опубликовать

          • Олеся

            у меня всё на латинице сразу было, кроме названия веб-сервиса, потом сменила на латиницу и его — ничего не заработало(

        • dunar

          А у вас на компе на 80 только апач проверяли? И нет ли специфичных настроек для localhost в системном файле hosts на компе?

          • Олеся

            никаких настроек параметров локальной сети через прокси нет, т.е. там галочки, что используется прокси, и для него порт 80 тоже нет

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

      Вы его перезапустить после публикации пробовали?

  30. Виталий

    «Решение 2-го задания будет выложено 19.04.2014 в 11:00 (время московское).» — хоть убейте, но не вижу ссылки на решение! Подскажите, пожалуйста, подскажите, где можно посмотреть.

    • dunar

      В новостях первой ссылкой разве не отображается?

    • Виталий

      ой. сорри. справа в новостях )
      извините

  31. dunar

    Спасибо! Все на простом уровне, но поучительно — как раз для обучения. После реализации клиента и сервера залил клиента на телефон — обмен пошел :).

  32. nodalt

    Добрый день!
    Скажите пожалуйста, сегодня планируется вебинар или раздача записи? Может быть мне одному материал показался непростым — останавливал запись и пересматривал несколько раз … В рамках вебинара будет сложно уловить все моменты.

    • dsdred

      я тоже некоторые моменты пересматривал. Не представляю как переварить это в формате вебинара.

    • dunar

      Однако, в рамках вебинара, если непонятно — можно записать, задать вопрос ведущему и разобрать вопрос на примере — что невозможно при работе оффлайн :(.

      • DaNN

        Почему невозможно, здесь в комментариях вполне оперативно отвечают, как ведущий, так и остальные участники, а возможность посмотреть нужное количество раз в нужной тебе скорости очень помогает, я например очевидные вещи и написание кода смотрю со скоростью 2х, новые объяснения с нормальной. Формат с записью намного удобнее по моему мнению

        • dunar

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

          • GVV

            ИМХО Я думаю, что при участии такого большого количества людей вебинар будет затягиваться на длительный период. Пока все зададут вопросы, на них ответят, кто-то вопрос пропустит и задаст опять, его пока отфильтрует ну и т.д. Я бы наверно такой вебинар проводил в формате первый день видео с вебинаром(уроком), а второй день вопросы и ответы на них.

            • dunar

              А кто говорит что все одновременно надо — как обычно формировать группы и учить людей.

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

                И никакой личной жизни у автора? :) 3500 человек, это не 50 человек. Эффективная группа — максимум 100 человек :) Вот и считайте. Это на год затянется.

            • DaNN

              Ну тогда опять проще теорию в записи, а вебинар — ответы на вопросы. 3000 чел вебинар…брр

            • dunar

              На группы — я имел ввиду не на 3000 тыс человек, а последовательно или параллельно разные учебные группы набирать :) (тут такая практика обычно вроде и была — я не понимаю почему при заведомо большом количестве участников так не поступили с данным обучением, качество материалов и проведения то снизилось при таком количестве).

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

                Мы на такой поток не рассчитывали :)

            • dunar

              Ну по поводу личной жизнии… :) я понимаю что все заработать хотят, но кто говорит что это все надо вешать на одного автора — распределение задач для сокращения сроков еще никто не отменял

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

                Та я же шучу. И заработок тут совсем ни при чем, тренинг то бесплатный :) Тут желание донести до людей информацию. Просто на конференции инфостарта я видел, как люди очень сильно интересовались этой темой, и на сколько был глубок информационный вакуум.
                Вот мы и решили его заполнить информацией. А теперь ждите на всех форумах рунета кучу вопросов и ответов по всем проблемам :) Это лучше, чем разделять людей на группы.

            • dunar

              Не думаю что лучше, но это мое личное мнение. Вы молодцы что заполняете вакуум, хотя он не только по этой тематике есть и будет :).
              «Бесплатный» — вопрос наверно только в том кто чем платит, но не думаю что по этому нужно продолжать дискуссию — она растянется на несколько страниц. Тренинг все равно классный и за него не жалко заплатить ни деньгами ни рекламой — так держать!

  33. Urgat

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

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

      Ответ будет дальше на ваш вопрос.

  34. ZaytsevStepan

    А отчитываться надо по 2 дню?
    Читаю в графмке 4 дня «Решение предыдущего задания.
    Будет доступно только для тех, кто отчитался по данному заданию.»
    НО решение уже выложено, получается отчитываться не надо, только вопросы задавать?

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

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

  35. a.perminov

    Подскажите насчет лицензирования вэб сервисов со стороны 1С.
    Если на мобильном устройстве установлена конфигурация из apk файла и обмен происходит только через web-сервис.

    Сколько лицензий 1С нужно в следующих случаях:
    — доступ к web сервису под одним пользоватем
    — доступ к web сервисам под разными пользователями (один пользователь — одна мобильная база)

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

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

      • ZaytsevStepan

        А разве 1С не разрешила до 50 пользователей(смартфонов) использовать без лицензии.
        http://www.1c.ru/news/info.jsp?id=16733
        Цитата — «Мобильные приложения, разработанные пользователями и партнерами на платформе «1С:Предприятие 8.3», в настоящее время разрешается распространять без оплаты фирме «1С», если количество распространяемых копий не превышает 50. Для распространения большего числа копий требуется согласование с фирмой «1С».»

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

          Это про мобильную платформу. А мы говорим про центральную базу и веб сервисы. Хотите использовать ее автономно — не вопрос. А вот если к ЦБ хотите — то тут уже нюансы.

  36. MariyaKrylova

    Добрый день, подскажите что делать с такой ошибкой

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

      Действительно: попробуйте на локальной машине в браузере открыть адрес с базой, как в теоретических материалах прописано, у меня там было видно — что не выгружается в XML схема обмена нормально, и было написано — в какую сторону смотреть.

  37. Maxim_Goncharov

    Посмотрел решение, сам всё не сделал, но на бумаге решение было такое же.
    Соображения:

    1.) Наверное нужны универсальная функции по сериализации и десериализации справочников и документов, чтобы при добавлении новых справочников и документов не прописывать новые функции. Может быть уже где-нибудь в БСП есть.

    2.) Метод определения наличия объекта в базе по заполненности кода не понравилось, наверное можно придумать что-то другое, т.е. тот же запрос к базе делать условию на равенство ссылке.

    • MrBoo

      Согласен с п2.
      Я сделал вот так:

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

    • zhu4

      Ну насколько я успел прочитать комментарии , то универсальные функции по сериализации десериалиции будут рассмотрены позже через XDTO

      Про второй пункт тоже соглашусь, ориентироваться на Код не очень хорошая идея, не раз сталкивался на практике когда коды в базе летели, и пару раз по моей вине. Летели всмысле вообще удалялись.

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

        Ясное дело, что такой подход не всегда пройдет. У справочника вообще кода может не быть.
        Но суть урока была не в том :)
        Можно вообще не проверять, а сделать через попытку, это будет самый надежный вариант :)

    • arthur1089

      1) у меня тоже такая мысль возникла, поэтому сделал универсальную функцию для любого документа или справочника с любыми табличными частями и реквизитами, чтобы при изменении метаданных объекта не пришлось менять программный код
      2)то же на это обратил внимание, ведь теоретически номер существующего документа может быть тоже не заполнен, и тогда будет попытка заново создать документ с таким же ГУИД

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

        1. Это хорошо
        2. 1С не даст. Это вам не код или номер. Объект однозначно определяется по гуид. Так что не выйдет, вы будете работать в любом случае с одной и той же сущностью

  38. Александр Ратников

    Вопрос возник по 2 модулю- сделал серверную и мобильную конфигурацию, на компьютере локально все заработало, при попытке перенести на телефон конфигурация на телефоне не обновляется.

    Ошибка разбора XML Ошибка: xmlns:tns ‘ФункцииДляРассчета’ is not a valid URI
    строка 157, 83.

    вот эта строка:

    Что может быть не так? (IP адрес прописал не локальный, а реальный 198.168……… и т.д)

    • DaNN

      Была такая же ошибка, вот только не помню как решил, вроде перевел все на латиницу, но сначала проверьте что везде URI правильный указан

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

      URI пакета на латинице сделайте

  39. DaNN

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

    • Sieg Heil

      Ну вот честно ни один ответ не навел на мысль о способе решения, а про подход с «эмулированием» структуры реквизитов объектов я бы в последнюю очередь подумал. Да, метод знаком по КД, но не думал что и тут только так можно это реализовать.

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

        Не бегите вперед. Все будет.

  40. Sieg Heil

    Нде, решение оказалось «проще», чем я пытался реализовать. Вместо «хитрой» сериализации объектов все сделано через сериализацию структуры реквизитов этих объектов.
    Я же в своем решении пытался все сделать через XDTO-пакеты, но до конца так и не смог «победить».
    Можно было где-нибудь оставить мааааленькую подсказку: я несколько часов честно потратил на попытку реализовать свою идею, но в итоге так и лег спать в расстроенных чувствах не получив никакого результата ;-(

    • Sieg Heil

      Кстати, подскажите, а возможно было вообще сделать через XDTO-пакеты?
      На стороне мобильного клиента они недоступны, но если клиент будет отправлять и принимать только в своем «формате», а сервер формировать ответ в «формате» клиента, а принимая переводить данные в собственный, то вроде все выглядит нормально.
      У меня как раз возникла проблема при попытке «перевести» на сервере данные клиента.

      • DaNN

        Можно было например сделать через xdto с одним параметром строкой, в которую помещать сериализованные объекты

        • iyar

          Но на сервере XDTO пакеты всё равно придется создавать. Иначе получится ошибка XDTO про «anytype». Я налетел недавно, когда реализовывал обмен с web-сервисом во внешней обработке…

        • Sieg Heil

          В изначальной «идее» — в объект, который бы нормально десериализовался или который можно было без заморочек обработать реализации задачи.

            • myshko

              Судя по описанию тренинга, в 5 уроке проблема с различиями в структурах объектов будет решаться через ПреобразованиеXSL. У меня же получилось решить задание через XDTO используя только «пройденную» теорию и гораздо меньший объем кода.
              Хочу проверить себя, потому вопрос:
              Поставленную задачу, вроде бы, можно решить создав простенький XDTO-пакет в котором описать массивы передаваемых\получаемых объектов (из http://v8.1c.ru/8.1/data/enterprise/current-config). На сервере (где реквизитов больше) тогда вообще можно передавать просто XDTO-значения, а на клиенте единственное что нужно сделать перед сериализацией XDTO-значений — это «сбросить»\»установить» недостающие на клиенте реквизиты (стандартными методами объекта XDTO).
              Собственно вопрос заключается в том, насколько нормальным является такое решение? Есть ли в нем подвохи, которые незаметны на первый взгляд\при такой простой структуре конфигурации?

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

                Есть, но на этот вопрос вы сможете ответить позже.
                Просто представьте себе, что вам надо синхронизировать базы данных, а не просто сделать обмен.
                Вы сами ответите на свой вопрос, но позже

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

                После просмотра 5 дня, все вопросы отпадут сами по себе.

  41. kdv170

    В решении обнаружил маленькую неприятность. Группы товаров становятся элементами и загружаются без учета иерархии. В своем варианте поправил. Все получилось. Спасибо.

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

      Вот и отлично :) А теперь еще проверьте работает ли ваша загрузка при загрузке справочника где иерархия только элементов стоит.

      • kdv170

        Естественно вывалились ошибке даже в запросе поскольку ЭтоГруппа отсутствует в таком варианте справочника.
        Но все быстренько подлечилось и заработало.

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

          Ну вот и отлично. Это и есть основная цель курса — не просто показать как делать, а научить. И где то подсказать про грабли :)

  42. Maxim_Goncharov

    2 вопроса:
    1.) Прозвучал про таймаут 5 минут при работе веб-сервисов. Это время за которой веб-сервис должен сработать? Но ведь за 5 минут даже мелкий обмен не сможет пройти между базами.

    2.) Веб-сервисы в итоге обмениваются в принципе xml — а это текст, передачи от сервера клиента эти данные сжимаются (архивируются)?

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

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

      • Maxim_Goncharov

        1.) Время 5 на трансфер. Т.е. как в пример если бы наш веб-сервис на сервере вычислял 10 минут среднее (это же не передача данных), то клиент в итоге получил бы значение среднего?

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

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

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

      1.Это время жизни одного соединения, если 1С не дождется ответа от веб-сервиса, то вывалится ошибка. Для этого при обмене данные можно передавать порциями, не превышая данный лимит. Это вообще плохой лимит. Пользователь с трудом поймет работает что-то или все зависло.
      Здесь рекомендации как и на обычных системах — использовать порции + отображение прогресса.
      2. Не подскажу, думаю что нет.

  43. L0z4

    Смотрю видео с решением и появился вопрос:
    Если бы структуры данных клиента и сервера были идентичными, на сколько оправдано при выгрузке использовать метод «ПолучитьОбъект()» все же он крайне замедляет процесс?
    И одна приятная мелочь: вместо кода вида
    спр.Код = стр.Код;
    спр.Наименование = стр.Наименование;
    Мне понравилось использовать метод ЗаполнитьЗначенияСвойств(…)
    ЗаполнитьЗначенияСвойств(спр,стр);
    При большом количестве реквизитов крайне облегчает работу, да и симпатичнее код становится.

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

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

      • L0z4

        хм.. с сылкой проблем не было, а в случае табличной части товаров (ее заполнить он не может) метод выглядит так:
        ЗаполнитьЗначенияСвойств(спр,стр,,»Товары»);
        можно конечно и
        ЗаполнитьЗначенияСвойств(спр,стр,,»Товары,Ссылка»);
        для надежности.

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

          Можно все, тут от стиля зависит. Просто потом начинаются проблемы при таком подходе.
          Вот вы не учли еще реквизит ЭтоГруппа. Его тоже добавлять туда? Вобщем в итоге получится больше кода и менее понятного. чем те две строки.

  44. zhavoronkov.vlad

    УРА !!!, собрал мобильное приложение и инсталлировал на Андроид, правда через флешку. Очень полезные статьи в разделе «новые статьи по мобильной платформе 1С:Предприятие».

    Вопрос Авторам, а есть/будет статья «как выложить приложение на андроид маркет» ?

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

      а еще лучше: в аппаче удалить index.html, выложить туда всё что хочешь и не только запускай apk на планшете, но даже курсы смотри и pdf читай! :)

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

      Думаю да, но пока еще рано.

  45. Pavel-Vadimovich

    Люди добрые, я отстаю уже на два дня, потому что не могу скачать клиент 1С по ссылке. Клиенты из других источников не работают как надо. Я уже несколько раз писал комментарий по поводу этой проблемы, но, к сожалению, безответно! Уважаемые модераторы (или кто там этим занимается), обновите пожалуйста ссылки или сделайте уже хоть что-нибудь!! на комментарий хоть ответье

    • DaNN

      Я может неправильно понял о чем вы, но мобильный клиент доступен либо по подписке ИТС, либо после покупки книги

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

      Увы, мы ничего не можем вам ответить. Внимательно читайте форму первого дня, там четко люди писали — где, что и как.
      Кроме этого — можете купить книгу, только откройте ее в формате epub и там будет ссылка на материалы.

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

      У Вас есть подписка на ИТС и доступ к обновлениям ПП 1С?
      Если да, то все можно скачать в Вашем личном кабинете. Качаете последние версии платформы 8.3 и мобильной платформы – вот и все.

      Если ИТС нет, то ссылка приведена в самом конце теоретического материала первого дня: можете купить электронную версию книги
      http://1c.ru/news/info.jsp?id=17891
      “В этой книге откройте 2 страницу и там будет ссылка на раздаточные материалы (~500Мб). Скачайте их, и там будет учебная стационарная платформа 8.3.4 и мобильная платформа.”

  46. AUsov

    Добрый день! По ссылке “Решение 2-го задания тренинга “Разработка мобильного приложения с нуля – за 7 вечеров!” нельзя оставлять комментарии, и не рабочая ссылка на материалы – выдает ошибку 404 и карту сайта.

    • zhu4

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

      • Евгений Гилев (Мастер-тренер)

        Добрый день!

        Исправлено, заходите на страницу.

    • zhu4

      Кстати господа, по поводу логического рассуждения , а какие там могут быть материалы по решению ДЗ, если в самой статье «часть 1» было выложено решение в виде файла выгрузки

      • L0z4

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

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

        А задачи то там разные :)

  47. zhu4

    Господа, прошу прощения что пишу сюда. В новости «Решение 2-го задания тренинга “Разработка мобильного приложения с нуля – за 7 вечеров!” нельзя оставлять комменты, (хотел там написать) и не рабочая ссылка на материалы — выдает ошибку 404 и карту сайта (что то вроде этого)

  48. Astafan

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

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

      Нет запросов — используйте объектную модель чтения, она как раз поддерживается.
      ВыборкаОбъектов = Справочники.ИмяСправочника.Выбрать();

      По аналогии и для других объектов системы.

    • DaNN

      Выборку можно не только запросом делать, но и объектной моделью

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

      Это самое веселое в мобильной платформе :)

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