Бесплатный курс по Мобильной платформе 1C. Модуль 3
Модуль 3. Использование планов обмена для мобильных баз данных
В ходе третьего модуля Вы изучите:
- Создание и настройку планов обмена
- Создание узлов плана обмена
- Регистрацию изменений по условию
Порядок обучения
Скачивайте теоретические материалы в PDF и видео-формате. Рекомендуем начинать именно с изучения теории.
Выполняйте практическое задание для закрепления полученных знаний.
Выполните самоконтроль, просмотрев видео-решение преподавателя.
Теоретические материалы
Итак, приступайте к изучению теоретического материала третьего модуля курса.
Данный контент доступен только для зарегистрированных пользователей.
Пожалуйста, войдите на сайт (Войти), если Вы уже зарегистрированы или зарегистрируйтесь на сайте (Зарегистрироваться), чтобы получить доступ.
Регистрация занимает 1 минуту, но открывает доступ к материалам сайта.
Пожалуйста, войдите на сайт (Войти), если Вы уже зарегистрированы или зарегистрируйтесь на сайте (Зарегистрироваться), чтобы получить доступ.
Регистрация занимает 1 минуту, но открывает доступ к материалам сайта.
Вопросы
Если Вам необходима поддержка, мы с радостью ответим на Ваши вопросы в рамках Мастер-группы «Полного курса по разработке Мобильных приложений на платформе «1С:Предприятие 8».
Комментарии / обсуждение (491):
Комментарии закрыты
blackclimber 22.04.2014
Что мне делать? Пытаюсь подключиться через статическую ссылку.
Попытка
Соединение = WSСсылки.DataTransfer.СоздатьWSПрокси(“DataTransfer”,”DataTransfer”,”DataTransferSoap”);
ВСОперация = Соединение.ТочкаПодключения.интерфейс.Операции.Получить(“Синхронизация”);
ХранилищеЗначения= Новый ХранилищеЗначения(“НекиеДанные”,Новый СжатиеДанных(9));
ДанныеXDTO = Соединение.ФабрикаXDTO.Создать(ВСОперация.Параметры.Получить(“Данные”).Тип,ХранилищеЗначения);
Ответ = Соединение.Синхронизация(ДанныеXDTO);
Возврат Истина;
Исключение
Сообщить(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
Но при передаче данных в функцию Синхронизация у меня возникает ошибка “Ошибка разбора SOAP сообщения, не верная версия сообщения”
Сервер и клиент обмениваются все замечательно, но только на ПК.
При переходе на андроид, та же конфа начинает при обмене выдавать ошибку
Ошибка разбора XML: -[1,1]
Фатальная ошибка:
Extra contetnt at the end of the document
Все сервисы и ссылки в латинице, браузер на адроиде видно xml схему
Подскажите плиз, что не так?
Попробуйте обнулить номера сообщений в узлах обмена…
Сами узлы обмена тоже проверьте, нужное их количество и правильность кодов
У меня такое было, когда я на сервере забыле включить в состав плана обмена регистр.
Была такая проблема, решил перезагрузкой мобильного и рестартом апача.
А вот теперь самое интересное. Коллеги, кто делал блок 2 с правками или может полностью по Видео. Описанная ошибка (а я закончил с этим заданием только что) не уходила у меня при пересоздании баз, переустановке Апача и т.д. пока, 5 минут назад, меня не осенило пройти обмены по каждому ТИПУ объектов системы. И вот оно… документы. смотрю, чтож такого в документах и понимаю, что Реквизит и ОБЩИЙ реквизит (не смотря на одноименность) совершенно разные вещи. После мелкой косметической правки все заработало и без каких-то ошибок. ВОТ. Ушел в блок 4
Это не “мелкая косметическая правка” – это совершенно разные объекты системы. И все это попадает под ситуацию – разная структура объектов обмена.
Тренер вроде упоминал про общие реквизиты.
Коллеги, такая проблемка: Из 3 задания взял конфигурации, перенес клиентскую часть на телефон. После входа в меню справочника или документа потом не могу закрыть открытую форму и выйти в главное меню. При нажатии на кнопку “назад” появляется пустой экран и приложение висит. Сделал кнопку “Закрыть” , проверил на клиентской части на компе-форму закрывает. На телефоне кнопко нажимается, но форма не закрывается. Код кнопки такой:
&НаКлиенте
Процедура ЗакрытьФорму(Команда)
ЭтаФорма.Закрыть();
КонецПроцедуры
В чем может быть проблема?
Видимо.. в мобильной платформе… (
Тоже с этим помучился )) работою на телефоне, надо нажать на левую кнопку которая меню вызывает вернетесь в главное меню. На сколько я понял форма списка кнопкой возврата не закрывается с нее надо просто переключиться в главное меню.
жми левую кнопку “настройки” у меня на самсунге с4 так же
Спасибо всем! Нужно действительно нажимать ЛЕВУЮ кнопку на телефоне, чтобы выйти обратно в меню. (телефон только купил под эти курсы, еще не освоил.)
Несколько раз нажать назад. В теории об этом рассказывали
Ужасно! Никаких ошибок ни серверная ни клиентская не выдает, но обмена данными не происходит. Что это за глюк?
Глюка нет. Планы обмена надо было обновить :)
Скопировал базу 3-го дня. Ничего не менял. Только опубликовал web-сервис. При попытке синхронизироваться на сервере выдается ошибка:
“{ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(24)}: Ошибка при вызове метода контекста (Синхронизация): Ошибка вызова операции сервиса: {DataTransfer}:ОбменДанными:Синхронизация(): Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис.ОбменДанными.Модуль(12)}: Ошибка при вызове метода контекста (НачатьЧтение)
по причине:
{WebСервис.ОбменДанными.Модуль(12)}: Ошибка при вызове метода контекста (НачатьЧтение)
по причине:
по причине:
Неизвестный получатель”
Не могу понять в чем причина?
Читайте ветку. Для начала – обнулите номера сообщений
Хорошо допустим, обнулил номера сообщений – обмен со стороны мобильного проходит. Но все же почему на сервере спотыкается на строке “ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ);” в модуле веб-сервиса?
Не известный получатель – проверьте коды узлов
У меня вопрос по заданию, что-то я его плохо поняла : обмен нужно организовать между 2-мя базами (сервер-моб.клиент), или 3-мя (сервер-тон.клиент-моб.клиент) ?
“тон.клиент” – видимо имеете ввиду прообраз мобильной конфигурации на стационарном компьютере?
Вроде в задании довольно четко прописано – между Сервером и Клиентом – это 2 базы.
Тренинг по мобильной платформе, а значит обмен между Сервером на ПК и Клиентом на мобильном устройстве.
“Тонкий клиент” (база Клиент, запущенная на ПК) тоже может обмениваться с базой Сервером, но вся соль именно в работе на мобильном устройстве.
Т.е., исходя из Вашего ответа – нужно сделать обмен между базой Сервер и Моб.клиентом.
Благодарю за ответ !
Совершенно верно )
Организуете с 2-мя, будет работать и с большим количеством, только узлов дополнительно добавить надо будет и все
ещё одна мобильная база (узел в справочнике узлов обмена) создана только для демонстрации, что обмен может быть не только с одним мобильным клиентом
Все получилось – обмены работают
Вот такая вот ошибка при попытке выполнить обмен
{ОбщаяКоманда.ВыполнитьОбмен.МодульКоманды(11)}: Ошибка при вызове метода контекста (ВыполнитьОбмен)
Ответ = Соединение.ВыполнитьОбмен(СтрокаДанных);
по причине:
Ошибка вызова операции сервиса: {DataTrasfer}:ОбменДанными:ВыполнитьОбмен()
по причине:
Ошибка HTTP: Document Error: Access Denied
Access Error: Access Denied
Invalid or corrupted session detected. Please close your browser and login again
(405).
Перезагрузите компьютер
Если б все было так просто.
На вашем решении – то же.
Пользователь – локальный админ.
Эмулятор андроида. При выполнении оператора:Соединение.Exchange(Данные);
вдруг стала появляться ошибка:Ошибка работы с интернет: connection to http://127.0.0.1 refused
Тот же код на компе выполняется.
Куда рыть?
ip должен быть указан сетевой компьютера где запущен веб-сервис 1С.
Именно так. Конфа на андроиде даже обновляется.
описание wsdl обновите, с учетом внешнего IP
Спасибо, я не прав. Одурел уже.
От клиента отправляется сообщение (не было изменений на клиенте)
ПолныйОбменМП
ЦБ
МП1
1
0
На сервере читаю его кодом:
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.УстановитьСтроку(СообщениеXML);
ЧтениеСообщений = ПланыОбмена.СоздатьЧтениеСообщения();
ЧтениеСообщений.НачатьЧтение(ЧтениеXML);
При этом ЧтениеСообщений.Отправитель = Неопределено.
Это у меня ошибка где-то или так и должно быть?
Вопрос возник из-за того что потом надо выгружать с сервера для определенного узла, а он не определен.
Сообщение, которое сформировано на клиенте
Значит не создали узлы, или у них коды отличаются
Коды совпадают и узлы созданы. Какие еще версии могут быть?
Убедитесь, что имена планов обмена совпадают, и что на мобильном устройстве в коне нет в конце пробелов, а то такое бывает.
Спасибо. Проблема решена: тупо пересоздал план обмена и все заработало…ох уж эти грабли на ровном месте
Хм… А коды узлов корректны в обеих базах?
При выполнении синхронизации на планшете выпадет ошибка.
{ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(39)}
Ошибка при вызове метода контекста (Начать Чтение): Ошибка разбора XML:-[1.1]
Фатальная ошибка:
Document is empty
Процедуру скопировала с базы
Процедура ПринятьИзменениеПоПлану(СтрокаСообщения);
Отладка не происходит, не понятно что не нравится. Базу несколько раз публиковала, апач перезапускала.
на мобильном устройстве базу пересоздайте заново, и перед первым обменом – в этой базе (после того как зададите имена для узлов обмена) создайте что-нибудь – чтоб было чем обмениваться.
Вам приходит сообщение, что документ обмена пуст. Я сталкивался, что тэги при синхронизации из пустой базы закрывались не корректно.
Добрый день.
Из за чего м.б. ошибка – приложена?
Проверьте в отладчик что у вас в переменной ВСервис. Обычно такая ошибка выдается при попытке обратиться к свойству/методу объекта, а объект почему-то Неопределено
Именно так, но почему оно м.б. не определено?
откройте в браузере wsdl
у меня – решилось заменой “ТочкиПодключения” на “образец” из синтакс-помощника. Интуитивно – похоже на опечатку, внешне – не заметно. Но вот так вот – помогло.
Может не в ту ветку..
Когда работал с обменами вдруг возник вопрос.
Где исполняются серверные процедуры/функции.
Например в модуле команды “ВыполнитьОбмен” готовим сообщение для передачи через WS ссылку в конфигурацию Сервер, для этого в модуле команды вызываем функцию с инструкцией &НаСервере
Эта функция выполняется физически на телефоне или на ПК?
На телефоне так же есть разделение на контексты Сервер/Клиент?
Если на телефоне, значит в принципе может быть доступен запрос или это урезанный контекст Сервера?
Если например, для отображения данных на форме документа мне нужно выполнить небольшой запрос к базе, для этого мне нужно сделать вызов через WS ссылку в базу на ПК и для этого нужна постоянная связь с ПК. Так?
На телефоне так же есть разделение на контексты Сервер/Клиент?
– Верно
Если на телефоне, значит в принципе может быть доступен запрос или это урезанный контекст Сервера?
– Урезано много чего. В тч запросы.
Если например, для отображения данных на форме документа мне нужно выполнить небольшой запрос к базе, для этого мне нужно сделать вызов через WS ссылку в базу на ПК и для этого нужна постоянная связь с ПК.
– Нажали “обновить”. Подключились к серверу, получили данные, вернули в xml, прочитали, обновили на форме телефона.
Эта функция выполняется физически на телефоне или на ПК?
На телефоне
Если например, для отображения данных на форме документа мне нужно выполнить небольшой запрос к базе, для этого мне нужно сделать вызов через WS ссылку в базу на ПК и для этого нужна постоянная связь с ПК. Так?
И много Вы так будете центральную базу “дергать”? А если мобильных клиентов будет много?
Почему не обеспечить в мобильном приложении наличие нужных данных и обходится средствами самого мобильного приложения? В этом и суть – постоянная связь НЕ нужна, только для сеансов обмена.
Почему не обеспечить в мобильном приложении наличие нужных данных и обходится средствами самого мобильного приложения?
Прямо так жестко? Бывает людям на моб устройстве нужна актуальная информация. Можно кучу вариантов придумать, когда нельзя обеспечить на мобильном устройстве всех нужных данных. Так что да, придется дергать сервер.
Почему жестко? О_о Отнюдь. По возможности. Думаю нет смысла обсуждать здесь золотую середину и прочее. Вопрос у человека был явно не о том. Там принципиальное понимание идет.
Принципиальное понимание пришло. Спасибо.
Однако либо мне придется менять концепцию приложения либо делать так:
1.Документ1 делает движения
2.Документ2 должен видеть остаток ресурса (например, денег в кошельке по разрезам), для этого
2.1 программно запускаем синхронизацию, в которой отдаем серверу данные документа 1 и получаем обратно результат исполнения запроса на сервере
2.2. отображаем остаток на форме документа2
В моем случае не будет пользователей больше 2.
Однако для адекватной работы приложения критичным будет налоичие интернета.
Вот тут кстати возникает проблема:
Док2 получил остатки, но пока пользователь дозаполняет его, другой пользователь, уже ввел Док3, которые эти остатки уменьшил. В результате Док2 уведет остатки в минус.
При синхронизации выдает ошибку
Сначало стандартное, перевидете веб-сервис на латиницу
В примере перевели только URI пространства имен – DataTransfer и все.
Надо и остальное переводить на латиницу и имя файла пуликации и Операции (Синхронизация и Данные) ?
Лучше все перевести, каждый девайс по-своему отрабатывает. Так что полумеры могут не прокатить.
Все перевел на латиницу. Через браузер на “http://127.0.0.1/day3/ws/Obmen.1cws?wsdl” выдает
Not Found
The requested URL /day3/ws/Obmen.1cws was not found on this server.
Строка в модуле ВСОпределение = Новый WSОпределения(“http://192.168.36.100/day3/ws/Obmen.1cws?wsdl”);
ОШИБКА
Вот нужно добиться что бы в браузере все таки всдл выдавался корректно.
Каталог публикации проверяли – что там, что в файле публикации? Переопубликовывать пробовали? Веб сервер перезапускали?
Прикрепите скрин вроде такого:
http://курсы-по-1с.рф/wp-content/uploads/2014/04/64434/629c7cad3cf77c9b949f24ab7b2ef1c0.jpg
сразу все становится понятно, а иначе приходится задавать тонну вопросов.
day3 – название правильное, вы под ним публиковали приложение на сервере?
в предыдущей ветке обсуждаем именно эту ошибку, но со стороны сервера!
пока не решено.
Проверьте названия узлов обмена!Или вообще они у Вас прописаны?Например в моб приложении один ЦБ, другой МП
точнее коды, т..к связь по кодам
1)На планшете когда пытаюсь выполнить синхронизацию, выпадает ошибка. Но прочитать её не удается, окно моментально закрывается. Какие есть варианты?
2)Что удалось прочитать”При создании описания сервиса произошла ошибка…” Ошибка работы с интернет. Connection to //http 127.0.0.1 refused.
На планшете указывайте адрес пк, т.е. например 192.168.0.1 а не 127.0.0.1
На планшете указан ip 192.168…
База, залита и обновляется. Проблема только с синхронизацией.
ошибка с синхронизацией повторяется и на планшете и на пк (судя по ошибки с 127.0.0.1)?
Если так то проще смотреть в отладке на ПК. Причин может быть много: не опубликован веб-сервис, проблемы с апачем, проблемы с авторизацией (если она создана), ошибка в синтаксисе.
Нет, на ПК синхронизация прошла успешно.
имена на латинице?
Да на латинице, но в видео явно другая ошибка. Текст моей совсем другой.
без кода не поймешь.. наверняка ведь ошибка в нем.
Как вариант. вы в базе пользователей не создавали?
Дмитрий, спасибо. Проблема действительно в этом.
А по первому вопросу, почему моментально закрываются сообщения на мобильной платформе? Синхронизация успешна! Появляется и сразу же исчезает.
А вы перегениерировали ws-ссылку? Там же стоит сейчас 127,0,0,1, а надо туда свой внешний IP написать. Правой кнопкой на ws=ссылке – импорт wsdl и укажите адрес с нужным ip
Дмитрий, спасибо. Проблема действительно в этом.
А по первому вопросу, почему моментально закрываются сообщения на мобильной платформе? Синхронизация успешна! Появляется и сразу же исчезает.
С этим вопросом разобралась сама.
помогите плиз, при нажатии на кнопку синхронизации в 1с на Пк вылазит такая ошибка
{ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(14)}: Ошибка при вызове конструктора (WSОпределения): При создании описания сервиса произошла ошибка. http://192.168.1.101/day3/ws/ОбменДанными.1cws?wsdl: При создании описания сервиса произошла ошибка. http://192.168.1.101/day3/ws/ОбменДанными.1cws?wsdl
при открытии через браузер :
soap:Client
Операция не найдена: {DataObmen}:ОбменДанными:Синхронизация()
Спасибо разобрался
оказывается прежде чем делать функцию синхронизации надо данные добавить иначе не публикуется сервис
теперь в браузере нормально отображается, но ошибка всё равно вылазит, где смотреть что делать?
&НаСервере
Функция ВыполнитьСинхронизациюНаСервере()
Попытка
ВСОпределение = Новый WSОпределения(“http://192.168.1.101/day3/ws/ОбменДанными.1cws?wsdl”);
ВСервис = ВСОпределение.Сервисы.Получить(“DataObmen”,”ОбменДанными”);
ВТочкаВхода = ВСервис.ТочкиПодключения.Получить(“ОбменДаннымиSoap”);
ВОперация = ВТочкаВхода.Интерфейс.Операции.Получить(“Синхронизация”);
Данные = Новый ХранилищеЗначения(“Некие данные”, Новый СжатиеДанных(9));
ДанныеXDTO = ВСОпределение.ФабрикаXDTO.Создать(ВОперация.Параметры.Получить(“Данные”).Тип, Данные);
ВСПрокси = Новый WSПрокси(ВСОпределение, “ОбменДанными”,”ОбменДанными”,”ОбменДаннымиSoap”) ;
Ответ = ВСПрокси.Синхронизация(ДанныеXDTO);
Возврат Истина
Исключение
Сообщить(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецФункции
Ошибка происходит при WSОпределении
Странно, может проблема учебной версии, но попробуйте перейти на латиницу
Статическая ссылка работает?
СПрокси = Новый WSПрокси(ВСОпределение, “ОбменДанными”,”ОбменДанными”,”ОбменДаннымиSoap”) ;
А кто тут URI будет менять?
толку-то в переименовании? у меня переименовано! не доходит дело до прокси! сразу же вылетает, на стадии определения!
толк в том, что кириллицы нет в словарике URI пространства имён
Я со вчерашнего дня на этом завис. До сих пор “висю”. :(
Все что мог сделал, всё перепроверил по несколько раз, уже голова пухнет
У вас случайно не учебная версия 8.3?
она самая. та, что рекомендована.
1С:Предприятие 8.3, учебная версия (8.3.4.389)
у меня тоже ум на раскоряку. тем паче, что 1С на свой комп осознанно я поставил дня четыре назад, как раз для этих курсов. и вот никак не вникну – то ли это у меня руки кривые, то ли глюк 1С?
судя по всему, эту ветку тренера покинули, потому как тишина уже часа два как минимум. все “нормальные” 4-й день осваивают. а “двоечники” учителям нафиг не нужны! :)
Пока ничего хорошего на ум не пришло. Раз даже WSОпределение не создается…
А статическую WS ссылку пробовали? Тоже брак?
Дмитрий кажется про ограничение на количество соединений говорил + апач лишнее соединение держит, попробуйте закрыть базу сервера и перезапустить апач
А при чем здесь количество соединений? Не уловлю…
1С считает количество подключенных мобильных платформ, но, вроде как, она не должна считать количество клиентов веб-сервисов
Что мне делать? Пытаюсь подключиться через статическую ссылку.
Попытка
Соединение = WSСсылки.DataTransfer.СоздатьWSПрокси(“DataTransfer”,”DataTransfer”,”DataTransferSoap”);
ВСОперация = Соединение.ТочкаПодключения.интерфейс.Операции.Получить(“Синхронизация”);
ХранилищеЗначения= Новый ХранилищеЗначения(“НекиеДанные”,Новый СжатиеДанных(9));
ДанныеXDTO = Соединение.ФабрикаXDTO.Создать(ВСОперация.Параметры.Получить(“Данные”).Тип,ХранилищеЗначения);
Ответ = Соединение.Синхронизация(ДанныеXDTO);
Возврат Истина;
Исключение
Сообщить(ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
Но при передаче данных в функцию Синхронизация у меня возникает ошибка “Ошибка разбора SOAP сообщения, не верная версия сообщения”
Ветку никто не покинул, просто иногда теряешься среди 20 страниц где везде надо всем ответить. Так что простите, если что.
У учебной ограничение на подключение, так что перезагрузите комп, и потом не заходя в режим предприятие – попробуйте обновить конфу.
Ошибка у нас с вами из-за учебной версии
у неё имеется ограничение на количество подключений к серверу где то около 3х
dragEugen
честно говоря, не понимаю, причём здесь кол-во подключений? у меня оно одно: мой комп – он же и сервер. и ещё я в него ем! (шутка!)
Дмитрий Шерстобитов (мастер-тренер)
только что очередной раз перегрузил комп (после обновлений). на компе даже офиса нет. ОС (Win7 x64), кодеки, Far, Google, 1с8. запускаю всегда через конфигуратор и только одну задачу. IP и 10… и 127… были написаны через точки. результат тот же самый, т.е. – ошибка.
Проблема в том, что апач иногда поднимает лишнее подключение, и не одно. Вот тут и проблемы в учебной появляются. Если есть возможность установить обычную – попробуйте поставить.Предварительно удалив учебную.
перепроверил, с работы взял ключ от 1с и запустил рабочую 1с8.3 всё запахало
у учебной версии 1С есть ограничения, возможно вы в них и упёрлись
Мужики я чертовски рад за вас!
А что делать тем, у кого нет на работе лишнего ключа?
Вот мне тоже интересно, а если нет лишнего ключа? Я честно. Сегодня часов 6 мучался, переписывал конфу, пробовал на разных компах. Все эта ошибка вылетает. Оказывается дело в нашем пригонючейшом апаче!!!!. Есть вариант другого куска кода?
Ха – 6 часов! Я уже сутки “висю”! Народ уже пятое задание решает, а тут с третьим засада. Причём, похоже, фатальная. Потому как учебная версия неработоспособна, а к рабочей ключей нет. И, как я понимаю, тутошним мастерам этот геморрой нафиг не нужен.
Ну зачем же Вы так. “Тутошние мастера”, порой тоже не всесильны.
Эти вопросы разумно решать с самой фирмой 1С. Да, это очень не быстро и т.п.
Но это явно не косяк разработчиков курса.
Тренинг ОЧЕНЬ СЛОЖЕН с технической точки зрения. Огромное количество участников, огромное разнообразие устройств, операционных систем, сочетания софта и прочее…
В Вашей ситуации пока, я так понимаю, никому не удалось подсказать решение… В общем не всесильны люди… Вот )
Вы хотите, что бы я прямо ответил, что 1С глючит? И что я, и все кого я спрашивал – не смогли дать мне четкий ответ? Если да, то не вопрос – так оно и есть.
Только вот теперь подумайте – будет ли кто то теперь думать о том, как вам помочь, если такое написал один из тренеров? Я думаю, что врядли.
Поэтому не мучайтесь. Не работает так – ну так выгружайте файл в хмл и читайте на сервере. Проблема изменить 5 строк кода?
Я же не просто так показывал как с гугл диском работать :)
Это тренинг, в нем будет куча проблем, он так построен. Но если вы его сможете пройти – считайте, что вы сможете сделать очень многое. Мы не даем шаблоны, которые можно скопировать, и все будет работать, иначе в чем смысл обучения? Это будет просто – повторение :)
Не нервничайте, ищите другие подходы. Люди отчитываются за 4 модуль, у некоторых проблемы – карта черная, либо провайдер в крит вылетает. Бывает, но мы видим их код в этом случае и понимаем что все будет работать на другом устройстве.
Так что не сдавайтесь, идите до конца. В мобильной платформе еще и не такое встретите, поверьте.
Но если вы сейчас сдались, то лучше вообще не занимайтесь мобильной платформой, она очень глючная. Во всяком случае пока.
Я надеюсь, что ответил более чем развернуто :)
Вот это скорость ответа!
Только непонятно, что вас обидело. В русском языке “тутошний” – это который тут. Если вас это обидело – прошу прощения, и в мыслях не было кого-нибудь обидеть!
Меня вот обидело другое, что я нарвался на очередное “кидалово”. Вот это обидно!
Как я понимаю, для меня курсы на этом закончились.
Присоединяюсь к проблеме. И если она действительно связана с ограничением учебной версии, то, думаю, с учетом отставания, данная проблема вылезет у многих. Нужно как-то её решать! Я тоже не могу дальше продвинуться из-за этого.
То Игорь Сапрыгин: может быть попробовать задействовать IIS вместо апач? Может он не держит лишней сессии? Я попробовал, но у меня сходу не получилось его настроить. И, к сожалению, не могу больше на это время тратить. Буду пока изучать 4ый урок и надеяться, что проблема как-то разрешится.
Или поднастроить конфиг апача? httpd.conf?
Дмитрий, поделитесь секретом – что за программу вы используете, чтобы видеть на экране компьютера экран своего мобильника?
Уже отвечали – MyMobiler. В теории 4го модуля будет четко видно :)
https://play.google.com/store/apps/details?id=com.mymobiler.android
От себя добавлю что успешно пользуюсь MyPhoneExplorer – тоже бесплатная программа.
спасибо
только вот она не работает показывает черный экран.
Может в телефоне что нибудь разрешить нужно.
облазил все настройки программы, но ничего не понял
Обе софтины попробовали? Я с MyPhoneExplorer работаю, мобайлер не ставил.
MyPhoneExplorer поставил тоже. но в упор не увидел там демонстрацию экрана мобильного или захват экрана илп чего то подобное.
В целом прога мощняк, оставлю себе
но вот с показом экрана телефона пролет.
http://mymobiler.com/android-setup-device.html
там есть раздел “Display: black sceen?”
Там надо установить спец софт на комп, потом поставить галочку – разрешить отладку, потом подключиться по юсб к кому, запустить прогу с компа, потом в настройках дисплея, в самой проге, выбрать режим, когда видна картинка.
HTC – у него надо нажать пару кнопок чтобы сделать снимок экрана
питание + “домой”
Почему в записи вебинара третьего модуля при удалении регистрации берется номер принятого не из пришедшего сообщения а из текущего значения номера принятого?
“ПланыОбмена.УдалитьРегистрациюИзменений(ЧтениеСообщения.Отправитель, ЧтениеСообщения.Отправитель.НомерПринятого);”
Видимо ошибка. Нужно удалять для ЧтениеСообщения.НомерПринятого.
ЧтениеСообщения.Отправитель – это ссылка на узел ЦБ в ТЕКУЩЕЙ базе, и у неё номер принятого – это старый номер, еще не обновленный. Номер обновится только после ЧтениеСообщения.ЗакончитьЧтение();
Отлично, мы потом на эту ошибку обратим внимание в 5 модуле :)
Но хорошо, раз вы уже ее тут заметили.
поменять (местоположение УдалитьРегистрациюИзменений) нужно в обоих модулях?
на 52 минуте 55 секунде говорят: “мы вставляем ЗагрегистрироватьВыгрузку”, в оригинале базы смотрю, там название другое и узлы переделаны, не “ЦБ”… блин… видео не соответствует базе… вот и смотрю, что выгрузка-загрузка косячит…
в ПринятииИзмененииПоПлану нет-у УдалитьРегистрациюИзменений() в модуле команды, а в видео на 56 минуте 15 секунде добавляют :(
похоже база не соответствует видео – если можно, перевыложите на нормальную, не могу сверить, почему у меня не идет синронизация…
всё работает, видео правильное – просто на андроиде на кнопку “Выполнить синхронизацию” не надо быстро нажимать, подождать некоторое время :)
а базу перевыложите, там нет кода по удалению изменений…
да, и в модуле команды все-таки поменял код узлы, на
Узлы = ПланыОбмена.ОбменСМобильнымиУстройствами.Выбрать();
Пока Узлы.Следующий() Цикл
Если Узлы.Ссылка ПланыОбмена.ОбменСМобильнымиУстройствами.ЭтотУзел() Тогда
Узел = Узлы.Ссылка;
КонецЕсли;
КонецЦикла;
в видео тоже, наверное, лучше это исправить…
Не совсем понятно что именно Вы исправили. В приведенном фрагменте вообще будет ошибка – в условии нет операции сравнения.
здесь не отображается знак неравенства, знак меньше и больше – текст пропадает.
Зачем? Вы же дошли до этого сами, обратили внимание. Значит и остальные дойдут.
Наш курс не нацелен на обучение вбиванию кода. Мы стараемся максимально осветить не только решение (их море), а и проблемы, которые могут возникнуть.
Так что не переживайте :)
Еще одна проблема, может это приколы учебной базы, когда запускаю сервер только в режиме Толстого клиента( без конфигуратора) , мобильное приложение выдает ошибку “the target server failed to respond” При этом создается четыре соединения ws-соединения.
Так же ошибка(наверное баг приложения) после того как обмен отработал, кнопка “обмен” на форме больше ничего не делает, пока не сменишь окошко
Все именно так и есть.
Очень странное явление. После выполнения всего процесса записи изменений между Возврат ЗаписьХМЛ.Закрыть() и следующим операндом Центральная база выдает сообщение “Узел неизвестен”, а мобильный клиент сообщение Ошибка параметров 1,-1
Забыл еще добавить: в этот же момент Апач виснет наглухо. поймать на каком месте не удается.
переименовал код центральной базы. Сейчас на мобильном и сама центральная база в момент НачатьЗапись:
Узел = ПланыОбмена.ПланОбменаСМобильнымУстройством.НайтиПоКоду(“БД”);
ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ, Узел);
Ругаются на НЕИЗВЕСТНОГО ПОЛУЧАТЕЛЯ. Хотя узел определен.
у меня еще хуже было, во втором ДЗ перебирая в цикле колонки – Для Каждого Кол Из ТЗ.Колонки Цикл – 1С вываливалась в ошибку, хотя в отладчике ТЗ.Колонки тип был коллекция колонок и в ней присутствовали колонки… помог полный перезапуск конфигуратора :)
Скорее всего у вас выбран текущий узел, првоерьте условие:
УзелПланыОбмена.[ИмяВашегоПлана].ТекущийУзел()
условие должно быть истинным
…угловые скобки скрылись, вобщем узел должен быть не равным узлу полученным с помощью УзелПланыОбмена.[ИмяВашегоПлана].ТекущийУзел()
Угловые скобки на форуме обрабатываются как обрамление html-тегов.
Дмитрий рекомендовал в подобных случаях обнулять номера сообщений.
Я действовал грубее – сносил на мобильном устройстве базу и переподключался снова.
а не может быть сохраненного сообщения для того узла которого нет в списке узлов (с другим кодом)?
Господа, у меня часто выскакивает ошибка на мобильном приложении “extra content at the end of the document” , причем не понятно как она срабатывает, т.е. раз выскакивает, а другой не очень. уже час бьюсь нашел что помогает полный перезапуск всего. Отладчик тоже не рабоатал.
У мненя такая ошибка вываливалась когда состав узлов плана обмена был некорректным, так же если ошибки через раз – проверьте типы данных на идентичность
Не понятно только одно: когда создали элемент справочника, документ и сведения в регистре – на мобильном устройстве они не появились – это получается что физически одна база (1CD), но в ней как бы две отдельные базы – одна для персонального компьютера, другая для мобильных устройств?
т.е. устанавливая две галочки в свойствах конфигурации “Персональный компьютер”, “Мобильное устройство” мы эту одну базу делим еще на две.
Установка свойства “Назначение использования” влияет на доступность объектов конфигурации (например регистров накопления), при этом ранее созданные объекты (даже тех типов, которые запрещены в мобильном клиенте) автоматически не будут удалены.
На самом деле баз будет столько, сколько будет мобильных клиентов + одна на ПК.
Каждый смартфон/планшет “несёт” на себе свои данные.
Иначе без постоянного интернет-соединения до “основной” базы работать было бы не возможно.
Спасибо, к 5-ому модулю уже прояснилось :)
У меня при реализации обмена при помощи плана обмена между клиентом и сервером, в случае, когда клиентом является мобильный телефон, в момент обмена появляется ошибка:
Ошибка разбора XML: -[1,1] Фатальная ошибка: Extra content at the end of the document
В том случае, когда клиент и сервер запускаются на ПК, данная ошибка не происходит.
Подскажите, в чем может быть дело?
Тут Вам скорее отладчик поможет понять.
Адрес сервиса обмена указан корректно?
Все предыдущие задания вы решили – все было успешно?
Кириллица в URI не забыли на латиницу поменять?
Эта ошибка связана с несовпадением номеров сообщений в 2-ух базах. Я бы очень хотел посмотреть на правильную автосинхронизацию их. Да, самому написать не проблема. Интересует чужой опыт ^^
Рассинхрон между принятыми и отправленными? Или общий рассинхрон – в клиенте №0, а на сервере №10?
Привык лечить перерегистрацией.
А что имеете ввиду под автосинхронизацией?
Адрес указан корректно – при обмене без использования плана обмена такой ошибки не возникало.
Предыдущие задания все успешно решил.
Кириллицу в URI заменил на латиницу.
Проверьте еще раз составы планов обмена и структуру объектов, входящих в обмен.
Решил проблему, решил отписаться:
ранее проблему описал Zasranec0 22.04.2014
“Эта ошибка связана с несовпадением номеров сообщений в 2-ух базах.”
Создал новые узлы обмена, на них заработало.
такая же ситуация. Адрес веб-сервиса указан верно. в отладчике Сообщения одинаковые. в ури – латиница
Попробуйте так сказать обнулить базы. То есть создать новые пустые базы и загрузить в них конфигурации из этих баз. Мне помогло.
Была такая же ошибка. Вызвана была отсутствием узла обмена для мобильного устройства. Я делал отладку и в серверной и в клиентской базе прописал пару узлов ЦБ+К1 (Центральная и Клиент). А мобильное устройство это же по сути третья база. Прописал на мобильном пару узлов A1+ЦБ и добавил в серверную ИБ третий узел: А1. И все пошло.
Смотрите настройку планов обмена, корректность кодов, состав
Обнулите номера сообщений и попробуйте снова.
Ну и скиньте именно строку, где ошибка. А то не ясно, при подключении или при чтении, на сервере или клиенте
Ошибка возникает в “ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(22)”
В строке кода Ответ = ВСПрокси.Синхронизация(ДанныеXDTO);
Починил. Возвращал Возврат(ЗаписьХМЛ); Вместо Возврат(ЗаписьХМЛ.Закрыть());
При открытии клиента из этой статьи на смартфоне выдается ошибка “Ошибка работы с Интернет: Ресурс не найден (400). Никто не в курсе что это значит?
Не понятно что где и как Вы открыли.
Вы взяли базу решения, опубликовали… Да? И чего куда далее? :)
Взял базу, опубликовал (конфигурация\мобильное приложение\публиковать). Подцепил на смартфоне, когда запускаю выскакивает такая ошибка, но при этом открывается конфа, но изменения туда не приходят при обновлении.
А вы во взятой базе поправили адреса сервисов? У Дмитрия свои адреса, у нас могут быть другие
Вопрос решился, было имя публикации мобильного приложения Klient, сократил его до Kl и переопубликовал, перестала такая ошибка появляться
Функция ВыполнитьСинхронизациюНаСервере()
Попытка
ВСОпределение = Новый WSОпределения(“http://10.10.10.37/day3/ws/ОбменДанными.1cws?wsdl”);
При запуске синхронизации вылетает ошибка:
{ОбщаяКоманда.ВыполнитьСинхронизацию.МодульКоманды(14)}: Ошибка при вызове конструктора (WSОпределения): При создании описания сервиса произошла ошибка. http://10.10.10.37/day3/ws/ОбменДанными.1cws?wsdl: При создании описания сервиса произошла ошибка. http://10.10.10.37/day3/ws/ОбменДанными.1cws?wsdl
Где подкрутить?
По указанному адресу в браузере ВСДЛ успешно открывается?
да, через браузер открываю. и по 10.10.10.37 и по 127.0.0.1
Вы так же не упомянули – на чем работаете, на чем обмен запускаете?
Попробуйте URI пространства имен веб сервиса указать на латиннице – или тут все ок?
если “на чём” про устройство – пока VM.
если “на чём” про браузер – Explorer.
ошибка вылетает, когда я запускаю отладку на сервере. так что до VM я ещё не дошёл.
ВСервис = ВСОпределение.Сервисы.Получить(“DataTransfer”,”ОбменДанными”);
Но это следующая команда кода. а исключение появляется на шаге создания нового ВСОпределение
а вы ip в отладке указали? Именно 127.0.0.1 (обратите внимание на точки, иногда ставят запятые, сам так грешу, с их шрифтом – их не разобрать)
Когда при удалении номенклатуры ссылка в документе не превратилась в “битую”, поначалу подумал, что дело в том, что форма документа была открыта на момент операции обмена. Создал документ, указал в нём номенклатуру “Шкаф”, удалил шкаф на клиенте, выполнил обмен – на сервере в справочнике элемента нет. Открываю документ – хоть бы хны, шкаф на месте. Воистину чуден 1С :)
Кстати, в Такси с включенной “Панелью открытых” удобнее.
Это балуются кэши 1С :)
Отчет по заданию:
1) добавил план обмена, указал в составе объекты для регистрации
2) добавил РС: Штрихкоды
3) перенес в мобильное приложение новые объекты, плюс недостающие реквизиты
4) добавил вебсервис, прописал двухсторонний обмен: выборка изменений, удаление изменений. При загрузке проставляю в качестве префикса номера и кода для документов,справочников, код из узла обмена.
Проверил на планшете обмен отработал нормально.
Отлично !
При добавлении нового приложения 1С на мобильном устройстве сообщение – Не правильный формат конфигурации. Как побороть?
проверьте путь к конфигурации. У меня была подобная ошибка когда я в качестве пути к конфигурации в моб приложении указывал путь к опубликованному на вебсервере приложению а не к опубликованной конфигурации(Конфигурация->МобПриложение -> Опубликовать).
Спасибо, именно так со мной и случилось вместо публикации мобильного приложения пользовал публикацию на веб-сервере
Таки не я один запутался в трех соснах :)
Не сразу пришло понимание что в случае конфигурации для мобильного приложения мы можем публиковать саму БД, а можем публиковать только конфигурацию для использования на мобильном устройстве. Как я понял на основе опубликованной конфигурации создается отдельная БД на устройстве (новая, чистая и не связанная с данными на ПК). В материалах курса явного указания на этот ньюанс нет (хотя может я проглядел сам).
Интересно где и как хранится конфигурация на мобильном устройстве? Нужно и можно ли её как-то бэкапить и переносить на другие устройства?
За предыдущие дни добавлялось нормально, или это “первый раз”?
Версия apk файла приложения точно правильная?
В браузере смотрели результат публикации? Там нормально всё видно?
Создал объекты в базе Сервер. “Перетащил” их в базу Клиент. “Перетащил” различающиеся объекты.
Создал план обмена “ПолныйОбмен”, включил авторегистрацию объектов.
Добавление префиксов реализовал в подписках на события “ПриУстановкеНовогоКода” и “ПриУстановкеНовогоНомера”, аналогично типовым механизмам 1с.
Префикс формирует код: “Префикс = ПланыОбмена.ПолныйОбмен.ЭтотУзел().Код”
Обмен сделал по образцу в теоретическом материале. Пришлось повозится отладчиком и тщательно перепроверять имена сервиров, пространств имен, операций сервисов и т.п.
Использование механизмов обмена с помощью вебсервисов очень похоже на задачки про рекурсию в курсах по программированию.
“Я запрашиваю изменения в центральной базе, отдавая туда свои изменения, а в ответ получая то что просил”.
Сначала проверял запуская клиентскую базу на ПК в режиме тонкого клиента. Обмен работал.
Потом опубликовал базу, подключил её к виртуалке с android, создал узлы и тестовые данные. Обмен не заработал. При запуске команды на обмен отладчик начинает работать в базе “Сервер” но пройти по шагам не успеваю, сеанс отладки быстро прерывается. Через 5-10 запусков команды и заходов/выходов из мобильного приложения обмен заработал сам собой.
Наверное нужно решить с десяток подобных задач чтобы уровень понимания сменился с “я примерно представляю как оно работает” до “я точно знаю что тут и зачем”.
Ну и жутко напрягает “стабильная нестабильность” работы 1с и , в частности, мобильного приложения. Невозможно понять где ошибся я, а где чудит платформа.
В этом вся прелесть разработки, никогда не знаешь где подвох. А в 5 модуле вообще покажу одну интереснейшую проблемку :) На решение которой я в первый раз убил пару дней. Так как даже не представлял себе, что такое может быть :)
Опять “спойлеры” :)
Научить программистов НА 1с программировать вполне реально, а научить программистов В “1С” не выпускать сырые платформы гораздо сложнее.
У меня тут в продвинутом курсе последовательность на днях не работала, не двигала границы. Причем её копия, сделанная по Ctrl+С/Ctrl+V работала идеально без изменений.
Добрый день!
Когда публикую конфигурацию с галочкой “разрешить отладку” вылетает ошибка: в браузере “страница недоступна”, а на клиенте “{ОбщийМодуль.СинхронизацияСЦБ.Модуль(4)}: Ошибка при вызове конструктора (WSОпределения): При создании описания сервиса произошла ошибка. http://192.168.71.62:8080/mobserver/ws/synchro.1cws?wsdl: При создании описания сервиса произошла ошибка. http://192.168.71.62:8080/mobserver/ws/synchro.1cws?wsdl: Ошибка работы с Интернет: Server returned nothing (no headers, no data)”
А если галочку “разрешить отладку” снимаю, тогда все работает. Подскажите, пожалуйста, как можно решить эту проблему? Спасибо!
а вы прописали там ниже галочки 127.0.0.1 ( при чем обратите внимание на точки, а то на русской ставят обычно запятые, а их не отличить)
Точки проверила. Во время манипуляций apach перезапускала
.
не прописывайте порт.. просто 127.0.0.1
Не помогает (
Обе базы файловые.
Попробуйте полностью отключить публикацию и сделать снова.
Если не поможет – скиньте скрин, на подобии вот такого:
http://курсы-по-1с.рф/wp-content/uploads/2014/04/64434/629c7cad3cf77c9b949f24ab7b2ef1c0.jpg
Да действительно помогло спасибо за помощь.
Здравствуйте, вопрос конечно не по теме сегодняшнего дня, но как установить мобильную платформу на iOS? По той информации что я нашла, надо делать сборку в отдельной программе на Масе, проще варианта нет?
Проще только для взломанных устройств.
Без взлома – долго и не бесплатно.
Я на iPad тренинг прохожу. Все совсем непросто было :)
Игорь, а не поделитесь информацией, вот очень не хочется покупать developer program
Ну у меня не взломанные устройства, у меня как раз есть аккаунт разработчика iOS.
А для взломанных все просто как и всегда – закидываете файл платформы и все :) В интернете найти можно, правда я ломаную не ставил не пробовал. Нафиг нафиг. И так нестабильностей хватает ))
шаг №1 – обработкой (для 8.3.3) или специальной конфигурацией (для 8.3.4) называемой сорщик мобильных приложений собирается промежуточный результат
шаг №2 – который далее программой x-Code (на компьютере под управлением iOS) пересобираем в выполнимый файл.
шаг №3 – покупаем за 100$ лицензию разработчика сроком на год и размещаем полученное на шаге 2 в AppStore
Для установки мобильной платформы разработчика сразу начинаем с п.3.
Размещать в AppStore ничего не требуется. Инструменты разработчика iOS позволяют разместить отладочное приложение напрямую на свои тестовые устройства.
AppStore – это уже дистрибуция ПО, а нам достаточно разработки.
Помогите разобраться. Решил развернуть апач на рабочем компе на нем 7 ка установлена, а на домашнем ХР. На домашнем все запустилось без проблем. На 7 ке не пойму что не так, пытаюсь опубликовать мобильное приложение, каталог который указал для публикации пустой, когда в адресной строке браузера указываю путь до каталога ошибка HTTP 403 – запрещено, что не так сделал. Я правильно понимаю там xml схема конфиги должна быть?
Да, пишут о такой проблеме. У многих не воспроизводится, но кому-то “везет”.
Решения не попадалось.
В качестве временного решения можете самостоятельно сохранить туда xml. В конфигураторе Конфигурация – Мобильное приложение – Записать в файл – И укажите каталог Апача.
Проверьте заработает или нет.
Чтобы не запускать каждый раз 1с с правами админа я дал полный доступ своему пользователю на каталог “C:\Program Files (x86)\Apache Software Foundation\Apache2.2\conf”.
Если windows не 64битная то путь будет без ” (x86)”.
Запуска 1с под админом делать не приходится.
Ага, спасибо, но я вкурсе :)
Я установил не в системную папку, а в обычную и никаких дополнительных прав настраивать не надо
Иногда права понастраивать полезно для понимания что, куда и зачем
тоже сегодня с 403-ей ошибкой столкнулся, на видео когда нажимают кнопку Мобильное приложение – Публиковать после перезапуска аппача 1С спрашивает обновить мобильное устройство – тренер нажимает “Нет” – у меня после этого такая ошибка и пошла. Когда нажал “Да” – ошибка исчезла.
Ошибка эта раздражает и не дает продолжить нормально курс :(
у Вас конфигуратор под Администратором запущен при публикации?
Вроде это проблема с правами на папку публикации
Проверьте права на каталог у пользователя, под которым работает Апач.
А с правами точно всё норм? Может установить не в программфайлс а в другой каталог(не столько защищаемый операционной системой)? Может попробовать отключить антивирус?
Немного хотелось бы поправить авторов:
“Обратите внимание, сначала идет фильтр, а потом данные. Таким образом, если мы изменим запись в регистре (именно изменим, например, поменяем статью), то в отборах будет старая статья, а в записи – новая”
На самом деле будет 2 набора передано, в первом “старый” фильтр и пустой набор, во втором “новый” фильтр и текущий набор.
Да, действительно, что-то я тут промахнулся. Спасибо.
Не всегда, 2 набора передаются только в случае, если вы меняете значение измерения, у которого стоит галочка “Основной отбор”
Все сделал по аналогии с вебинаром. Обмен нормально функционирует до момента, когда подключил второе мобильное устройство. В этом случае при редактировании объекта на одном из мобильных устройств этот объект передается через “сервер” другому, а потом таким же образом обратно, и так без конца. В данном случае требуется дополнительно проверять на каждом мобильном устройстве необходимость принятия измененных данных. Есть над чем подумать.
вроде не было такой проблемы. У мобильных устройств случайно не один и тот же код узла?
Нет, узлы разные
При приеме данных на мобильном устройстве обратно на сервер регистрироваться не должно, проверьте строку Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель. Установка отправителя перпятствует обратной регистрации.
Да, только после этого идет Данные.Записать(), а оно регистрирует записанный объект для выгрузки обратно. Нужно либо не записывать, либо очищать регистрацию объекта.
Собственно, что на самом деле происходит:
1. На М1 регистрируется изменение объекта
2. Объект выгружается на ЦБ
3. Объект записывается на ЦБ
4. Объект регистрируется ЦБ для отправки на М2, но не на М1
5. Объект загружается на М2
6. Объект записывается на М2
7. Объект регистрируется М2 для отправки на ЦБ
8. Объект выгружается на ЦБ
9. Объект записывается на ЦБ
10. Объект регистрируется ЦБ для отправки на М1, но не на М2
11. Объект загружается на М1
12. Объект записывается на М1
далее п.1, и по кругу.
Отсюда вывод: нужно (по-видимому на ЦБ) проверять необходимость записи загруженного объекта, и в зависимости от результата регистрировать его изменение.
Объект после загрузки не должен регистрироваться для отправки в ЦБ с М2, если отправитель правильно заполнен. Похоже на глюк платформы. На форумах по 1с народ встречал такое, сообщение со ссылкой на ветку не прошло, наверное на модерации, если пройдет – посмотрите.
А у объекта перед записью установлено свойство ОбменДанными.Загрузка=Истина;
Может это спасет от регистрации изменений?
Дополнительно ничего проверять и обрабатвать не нужно, платформа сама все должна делать.
Может этот элемент ранее уже у вас зарегистрирован с большим номером сообщения, такое поведение на новых элементах повторяется?
Кажется нашел глюк. В клиентской базе не было УдалитьРегистрациюИзменений(). В серверной сделал, а в клиентской забыл.
Поставьте точку останова перед записью объектов, посмотрите что хранится в свойстве .ОбменДанными – какие там отправители получатели и т.п. Не понятно почему у вас в М2 при приеме из ЦБ происходит регистрация для отправителя
Александр правильно написал, установка отправителя препятствует обратной регистрации, но у 1с бывают странности.
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=579909&print=1
По началу не мог разобраться с обменом. Проблему решил, посчитав, что ошибка вылезала из-за несоответствия сообщений.
В практическом задании сделал обмен так же как и в примере который рассматривался в видео вэбинара. Единственное внес изменения в свою конфигурацию для того чтобы конфигурация сервера и клиента стали идентичными. Добавил единицу измерения и комментарий.
В обе конфигурации добавил регистр Штрих-коды. Префикс для номера документа или для кода беру из кода узла плана обмена.
Префикс = ПланыОбмена.ОбменСМобильнымиУстройствами.ЭтотУзел().Код
Использую методы УстановитьНовыйНомер(Префикс) и УстановитьНовыйКод(Префикс)
“Единственное внес изменения в свою конфигурацию для того чтобы конфигурация сервера и клиента стали идентичными.”
Да, на это есть прямое указание в тексте задания.
Почему в выложенной базе нет удаления регистрации при обмене?
Честно говоря, меня немного смутило наличие подобной заглушки в видео, потому как до сих пор планы обмена вполне адекватно справлялись с коллизиями. Попробовал явно вызывать исключение на разных этапах – на сервере при загрузке сообщения клиента, на сервере при подготовке ответа, на клиенте при загрузке ответа – так и не получилось наткнуться на что-то необъяснимое.
Попробуйте для плана обмена создать форму списка и включите отображение колонок для номера входящего сообщения и номера исходящего. Если номер отправленного на узле-источнике не равен номеру принятого на узле-приемнике, то где-то случился косяк.
Возможно, Дмитрий прольет немного больше света, для чего нужно было удаление в видео.
Удаление нужно в любом случае. Если не удалять, у нас будут копиться инфа на отправку и на принятие, тогда планы обмена становятся не нужными вовсе.
Насчет разных номеров. Тут немного другая ситуация, при отправке и приема номера должны соответствовать или “быть больше”, если что то случиться, то посыпятся ошибки при чтении хмл.
Опять же, никаких обработок таких ситуаций в базе нет.
А вы думали вам будет готовый 100% рабочий шаблон? Не :) Тут есть ошибки, некоторые сделаны спецом, что бы потом на них указать, некоторые сами появляются, я при решении не готовлюсь за ранее :) А вот сел и пошел писать.
Некоторые ошибки будем исправлять позже, когда будем на них попадать явно, некоторые будут не столь явными.
Там есть еще одна ошибка, но ее мы решим в 5 модуле. Чисто ошибка по невнимательности, но раз ее допустил я, то 100% допустит еще кто-то.
Как то так :)
Повторяю с динамической ссылкой действия как в вебинаре:
ВСОпределение = Новый WSОпределения(“http://192.168.*.*/paycontrolws/ws/WebServiceExchangeDataPayControl.1cws?wsdl”);
При проверке на ПК на видео все гуд, у меня ошибка. Скрин.
Ссылка http://192.168.*.*/paycontrolws/ws/WebServiceExchangeDataPayControl.1cws?wsdl в браузере открывается, xml вот такой странный (Операция Синхронизация с методом Синхронизация() в веб-сервисе WebServiceExchangeDataPayControl в конфигурации есть). Скрин.
У вас либо имя обработчика в модуле веб-сервиса для метода Синхронизация не совпадает с указанным в свойстве ИмяМетода, либо количество параметров разное.
спасибо за подсказку :)
Так вот же, Вам в XML подсказывают, что нет такой операции – Синхронизация(), зайдите в модуль web-сервиса и проверьте.
вот поэтому я и считала xml странным, потому что операция Синхронизация есть, причем если, например, ее переименовать в СинхронизацияДанных, говорилось, что ее нет.
Нашла источник проблемы – не был проставлен параметр у функции, я сначала создала по кнопке метод операции (автоматом соответственно в параметрах ничего не поставилось), а потом только параметр Данные завела и вручную не добавила в функцию.
сейчас все работает.
по материалу – все прекрасно, легко и просто. Расстраивают только глюки платформы (описанная в видео необходимость многократно нажимать “назад” чтобы он продолжил работать). Похоже это связано с использованием метода “Сообщить”.
нет..не сообщить.. это просто вызов команды из меню. Вынес кнопку на форму (как в первом примере) и все прекрасно.
При скачивании вебинара выходит 403 ошибка. Токен у меня есть.. Что делать?
попробуйте скачать при помощи программы для скачиваний файлов. Например Download Master
Кроме этого – попробуйте обновить страницу через Ctrl + F5 (или вручную очистить кэш), и как вариант – другим браузером.
Не рассматривали раздавать материалы торрентами? И качать проще и на вас нагрузка меньше?
А если их надо изменить? Нашли ошибку и т.д. от торента толку мало будет.
Тем более часть скачает и вырубит раздачу. Так что так как то уверенней. Тем более с 3 модуля материал закрыт для свободного скачивания.
Вывешиваете обновление, перекачивается torrent файл и качать по новой. В торрент-клиенте будет видно что закачка встала.
Торрент файл можно выдавать только зарегистрированным на курс или отправлять ссылку в почту.
Ну и насчет “закрытость” материала – это все-таки миф.
Материалы минимум 2-х ваших платных курсов можно найти в сети.
И так каждый раз. И через неделю все будут на раздаче? В общем торенты- не вариант. Считайте это нашей причудой :) Имеем право :)
Как всегда я с проблемой. У меня не запускается отладчик. Конфигурация – клиент. На видео тренер запускает его в легкую. Проблема вот в чем. Я нажимаю f5. Изменения сохраняются, но вот предприятие не запускается. Использую учебную версию, скаченную с 1с сайта, как было в первой методичке. Может дело в том, что назначение “Мобильное приложение”?
попробуйте нажать кнопку на панеле задач.
не совсем Вас понял
Вместо запуска приложения в режиме отладки по F5 – попробуйте сделать то же самое соответствующей кнопкой меню в конфигураторе.
(про панель задач – опечатался)
Выходило тоже самое. Перенастроел запуск 1с. Установил на запуск “Тонкий клиент”. До этого стояло “Мобильное приложение”. Видимо поэтому у меня так получалось. Где то видел такую фразу, что мобильное приложение не поддерживает отладку. Так ли это?
Вполне возможно, видимо это Дмитрий и имел ввиду, когда в видео первого дня говорил, что при установке технологической платформы нужно добавлять в списке модулей установку тонкого клиента в файловом варианте.
Это ограничение связанно с тем, что вы не можете подключится к самому телефону и делать отладку на нем.
запуск в режиме мобильного приложения запускает процесс обновления конфигурации на подключенных в данный момент мобильных устройствах. Т.е. на самом пк он ничего не запускает.
Так и должно быть.
Я запускаю предприятие в ручную. Устанавливаю галочку в параметрах “Разрешить отладку в текущем сеансе”. Все работает. Останавливается на точках останова. Но с конфигуратора почему то не запускается…
У меня бывает такая штука иногда при отладке веб-сервисов. Захожу в Отладка – Подключение…, а там в подключенных предметах отладки висят веб-сервисы. Ситуация характеризуется иконкой кнопки “Начать отладку” – она выглядит так, как будто отладка идёт.
Возможно, соединение подвисает; не пытался разбираться. Просто отключаю предметы отладки – иконка меняется на обычный жёлтый кружок, и отладку можно запускать заново.
ДанныеXDTO = ВСОпределение.ФабрикаXDTO.Создать(ВОперация.Параметры.Получить(“Данные”).Тип, Данные);
Такая строчечка непонятная.
Почему вы не предлагаете просто отправлять и получать хранилище значений?
Полагаю, чтобы принимающая сторона точно знала, что она получает именно “Хранилище значения” в сериализованном виде…
Она и так знает, что получит ХранилищеЗначений
Она не знает, а только предполагает. Для сериализации XDTO требуется привязка к пространству имен. Все это делает данная строчка. Если же передавать просто хранилище значения, то результат приема будет непредсказуем. Как при строительстве Вавилонской башни, когда строители не смогли понимать друг друга по причине “смешения языков”.
имхо это скорее вопрос оптимизации. Мы можем сэкономить пару строчек кода и просто передать хранилище. При этом, если веб-сервис изменился или мы отправили не то, что было нужно. Узнаем мы об этом уже после установки сетевого соединения и попытки передачи данных. Если же мы “спросим” что веб-сервису нужно, и приведем тип данных, то в случае ошибки, исключение произойдет на клиенте до отправки данных.
Я думаю, что это для того, чтобы не зависеть от изменения имени типа. Т.е. мы получаем тип параметра, а как он называется, нам до лампочки.
Эм, если мы будем искать по имени, то как раз мы будем зависеть. Если будем просто отправлять Хранилище значений, то все будет куда проще.
Мы ищем тип по имени параметра. Не путайте.
Но на практике, я и к имени не привязываюсь. В моих шаблонах для меня важен только порядок параметров, а имя и тип – до лампочки. Так что сервер может делать с ними что хочет :)
Так как в случае изменения типа, не надо искать места вызова и переопределять их.
Сейчас там строка, изменили на число – будет число, так как тип берется из типа параметра сервиса. А если жестко указать -хранилище, то поменяв тип на строку – надо еще и за этим следить.
Плюс если сервис чужой – сидеть и искать что это за тип… Зачем?
цитата:
“Следующие блоки на этой странице доступны только для разрегистрированных …”
может все-таки “зарегистрированных”?
Очень интересный курс, много нового узнаю и вспоминаю те моменты, которые забылись. Огромное спасибо!
Добрый вечер!
Не могу скачать материалы по ссылкам на этой странице. Выдаёт ошибку: “ссылка устарела (403)”.
Пытался открыть следующие ссылки:
http://fs.kursypo1c.ru/protected/1cv8-mobile/FM2014/mobile-apps-fm-webinar-module03.rar?h=L9mtgQifamHOtzzrEpH-VQ==&ip=77.222.98.53&u=brauer&t=1398023422
http://fs.kursypo1c.ru/protected/1cv8-mobile/FM2014/mobile-apps-fm-theory-module03.pdf?h=trG3rqGvPhvi-dPqBy3n2g==&ip=77.222.98.53&u=brauer&t=1398023422
http://fs.kursypo1c.ru/protected/1cv8-mobile/FM2014/mobile-apps-fm-practicwork03.pdf?h=90VnPqr7lVP1n7sFxZ_30w==&ip=77.222.98.53&u=brauer&t=1398023422
http://fs.kursypo1c.ru/protected/1cv8-mobile/FM2014/mobile-apps-fm-module03-configuration-control.rar?h=k-ep5REu5v_MJWDlR_8D5A==&ip=77.222.98.53&u=brauer&t=1398023422
Прошу помочь мне в данной проблеме.
попробуйте скачать методичку по ссылке:
http://fs.kursypo1c.ru/protected/1cv8-mobile/FM2014/mobile-apps-fm-theory-module03.pdf?h=53-9xVDgTKqsEuET9EEZbA==&ip=95.86.234.61&u=Vash.Prog&t=1398024760
у Вас токен активен до 27-го числа?
мм.. так наверное не получится…
подождите ответа саппорта
но ссылки сейчас – рабочие.
Который раз пытаюсь скачать материал и все без успешно. Подскажите в связи с чем проблемы. На данный момент пытаюсь скачать с планшета с мобильным интернетом.
попробуйте скачать при помощи программы для скачиваний файлов. Например Download Master.
На планшете стоит загрузчик, но и на нем не хочет скачивать, до этого все было замечательно. Скачать на обычном ПК сейчас нет возможности т.к. сам в дороге и интнрнет мобильный. Support почему-то молчит.
Ответит, там просто некоторые им вопросы шлют по модулям, вот они и разгребают это все.
Все сделал по заданию. Не с пол пинка конечно но все работает хорошо.
Однако есть один нюанс. При изменении одного и того же элемента справочника изменения применяются от мобильника. Пока не могу сообразить как бороться с этой коллизией.
А как Вы хотите бороться? Какой приоритет у данных? Сервер трет клиент?
Думаю центральная база должна иметь приоритет.
Видимо в нашем случае план обмена используется чисто как сборщик изменений и механизм обмена отличается от варианта с РИБ.
Вот как думаете, так и настраивайте. Логику всегда прописываем так, как нужно – у каждого свои тараканы… :)
По плану обмена все верно заметили.
Сначала с сервера отправляете данные на клиент, потом после записи – данные отправляете с клиента на сервер. В каком порядке пропишите выполнения операций – такой приоритет и будет.
И то верно. А я уж думал проверять наличие данных на сервере (в случае со справочником) на пустую ссылку и просто не записывать если объект уже существует
А если он существует, но пришли измененные данные? :)
Если совсем заморачиваться, можно сделать анализ конфликтных ситуаций как в БСП: Применять какое-то правило приоритета данных “по умолчанию”, но при этому сообщать пользователю о коллизиях, и предоставлять возможность переопределить автоматическое разрешение проблемы. Например по умолчанию приоритет – серверные данные, но мало ли вдруг корректные данные все таки идут с клиента.
Да. Пожалуй не стоит замораживаться. Все зависит от задачи.
Верно верно! Отморозков не нужно! %)
Здравствуйте,
Возникла небольшая проблема, никак не могу понять в чём дело.
Использую конфигурацию которая приложена на страничке.
В конфигурации поменял адрес ws ссылки на свой IP.
Больше не делал никаких изменений. Затем я установил конфигурацию на эмулятор android. Добавил узлы в план обмена на android как рассказывается в видео уроке (коды узлов совпадают), НО при попытки синхронизации выдается ошибка.
Подскажите в чем может быть проблема?
В теоретическом материале, на 27-й странице написано, что все имена функций и параметров в web-сервисах должны быть написаны латиницей.
Посмотрите – вроде скриншот ошибки похож на Ваш.
URI пространства имен и прочее с кириллицы на латинницу заменили?
Спасибо, я ещё раз всё проверю.
Переименовал все функции и URI в латиницу. Не помогло.
Потом предположил, что возможно проблема из-за того, что в базе которую я скачал с сайта уже происходил обмен. Может не совпадали сообщения обмена? Не уверен, но когда создал новую базу и загрузил только конфигурацию, а не файл CD, то всё заработало.
Спасибо за наводку. По твоей методике победил эту же ошибку у себя.
Вот и отлично. Базы в раздаточных материалах тоже могут иметь ошибки. Главное в этом все то, что понимая принцип – люди сами могут исправить ошибки.
Сразу возникают вопросы про приоритеты и т.д.
Так что там вы увидите еще не одну ошибку, это я вам обещаю. Но чаще всего, исправив пару строк кода – все заработает :)
Задание выполнил по аналогии с вебинаром – т.е. также гоняю туда-сюда хранилище значений. Префикс устанавливаю в процедурах ПриУстановкеНовогоНомера и ПриУстановкеНовогоКода строкой Префикс = ПланыОбмена.ОбменСМобильнымиУстройствами.ЭтотУзел().Код;
Все отлично работает – даже не верится.
Забыл добавить, что т.к. про синхронизацию с мобильным устройством ничего в задании сказано не было, поэтому спользую предыдущий веб-сервис ВыполнитьОбмен. Чтобы заработал, также поменял URI пространства имен на латиницу
пока не в тему вопрос: что за чудесное приложение позволяет видеть (или даже управлять?) андройдом с ПК в этом видео?
В выложенном видео – это VMware-player-6.0.1-1379776.exe, который был в раздаточных материалах к курсу.
В видео первого дня рассматривается установка и запуск Андроида в виртуальной среде.
У меня в частности всё запущено в VirtualBox.
22:40 видео: “обратите внимание, я показываю экран своего мобильного устройства. Просто на нем намного удобнее и быстрее работать чем в виртуальной машине”.
офф: вопрос еще с первой темы возникал по поводу виртуальной среды, остался там без ответа – может вы подскажете.
при установке мобильной платформы на андроид используются 2 версии установки, как я поняла, в зависимости от типа процессора. с физической машиной понятно (смартфон, планшет), посмотрел какой проц, погуглил про тип, сориентировался…
а на виртуальной, вопрос дилетантский конечно, процессор, тип, особенности его работы наследуется от физической машины (ПК, на котором виртуальная развернута), что вроде как мне подозревается более логичным (у меня AMD А6-5200, выбрала вариант arm-процессора, но он не установился – это удивило, отсюда и вопрос), или также возможна какая-то эмуляция работы процессора (его каких-то технологий, но мне это кажется не очень реалистичным) другого типа?
ПК это всегда x86, а не arm. Других в наши дни найти проблемотично.
о, спасибо! значит, я не то что-то нагуглила про AMD =), косяк мой.
Что конкретно в видео не понятно, но можно тот же TeamViewer к примеру использовать. К кому-то можно наверное и по SSH приконнектиться (эт же linux), но root скорее всего нужен будет
В TeamViewer’е из Play Маркета появилась функция входящих подключений?
Просто я когда пару месяцев назад пробовал – из него можно было только подключиться к ПК, но не обратно.
При коннекте по SSH можно “посмотреть картинку” с рабочего стола? (я просто ни разу не пробовал такое проделать.)
К устройствам некоторых вендоров есть возможность подключаться, приложение называется TeamViewer Quick Support. К самсунгам точно можно
Спасибо, буду иметь ввиду. Самсунгов дома правда нет :)
Как вариант использовал MyPhoneExplorer (не требует root прав) :) Что использует Дмитрий не пойму, но точно знакомая программа =)) Ждем его комментария
я прошу прощения, что не совсем правильно понял первоначальный вопрос.
В Play Маркете есть приложение BBQScreen Android Client Beta (платное), которое вкупе с клиентской частью на ПК позволяет организовать демонстрацию.
Но судя по внешнему виду – у Дмитрия другое.
Я использую вот это.
https://play.google.com/store/apps/details?id=com.mymobiler.android
Самое стабильное и менее тормознутое. Как по мне. Хотя я далеко не все варианты смотрел, но этом мне понравился больше всех.
По ходу видео на пару секунд мелькал заголовок окна приложения – MyMobiler. В районе 50:50.
Вот тайна и раскрылась =)