Бесплатный курс по Мобильной платформе 1C. Модуль 2
Модуль 2. Обмен данными с мобильным приложением через веб-сервисы
Изучив второй модуль, Вы научитесь:
- Создавать и публиковать веб-сервисы
- Сериализовать и десериализовать данные при передаче между клиентом и сервером
- Производить перенос справочников из одной базы в другую
![]()
Порядок обучения
Скачивайте теоретические материалы в PDF и видео-формате. Рекомендуем начинать именно с изучения теории.
Выполняйте практическое задание для закрепления полученных знаний.
Выполните самоконтроль, просмотрев видео-решение преподавателя.
![]()
Теоретические материалы
Итак, приступайте к изучению теоретического материала второго модуля курса.
Данный контент доступен только для зарегистрированных пользователей.
Пожалуйста, войдите на сайт (Войти), если Вы уже зарегистрированы или зарегистрируйтесь на сайте (Зарегистрироваться), чтобы получить доступ.
Регистрация занимает 1 минуту, но открывает доступ к материалам сайта.
Пожалуйста, войдите на сайт (Войти), если Вы уже зарегистрированы или зарегистрируйтесь на сайте (Зарегистрироваться), чтобы получить доступ.
Регистрация занимает 1 минуту, но открывает доступ к материалам сайта.
Вопросы
Если у Вас возникли вопросы, Вы можете просто просмотреть комментарии ниже, наверняка Вы найдете ответ.
Обратите внимание, для навигации по комментариям внизу страницы есть ссылки
Если же Вам необходима поддержка, мы с радостью ответим на Ваши вопросы в рамках Мастер-группы «Полного курса по разработке Мобильных приложений на платформе «1С:Предприятие 8».
![]()
Комментарии / обсуждение (873):
Комментарии закрыты

еще одну ошибку не могу добить: перенос новых данных с сервера на клиент происходит нормально, а обратно (на клиенте создана одна новая номенклатура и один товар) вылетает ошибка:
один раз вылезала подобная, когда тестировала перенос новых элементов с сервера, помогла перепубликация с перезапуском аппача, сейчас перезапуск аппача не помогает(
Почитайте вот тут: http://gilev-ru.ya.ru/replies.xml?item_no=1472
Может натолкнёт на мысли.
нет, с параметрами было все ок, сегодня попробовала… все перегрузилось без ошибок. правда я перед сегодняшней попыткой еще на всякий пожарный заново на клиенте для WS-ссылки сделала импорт WSDL, может это помогло, может просто перезагрузка в новый день.
второй модуль был очень сложный, учитывая то, что знания пришлось переваривать с нуля и XDTO, и сериализацию, и веб-публикации. возникли еще технические проблемы по невнимательности, что еще притормозило продвижение. тяжелым было еще то, что первый раз пытаешься соориентироваться в одном, но при этом уже надо быстро сидеть экспериментировать с загрузкой и выгрузкой реквизитов, вроде как не новыми вещами во встроенном языке, но при этом ломать голову, почему вылетают ошибки, во всех структурах при передаче можно запутаться и как-через что получить тоже. ДЗ подглядывала в ответ, не додумалась до соответствия с ТипЗнч(): например как тут в эталоне: Соответствие.Вставить(ТипЗнч(Справочники.Номенклатура.ПустаяСсылка()),СформироватьСправочники());
В эталонном решении добавила б еще в процедуры загрузки справочника в клиенткой и серверной конфигурациях условия, группа это или нет — соответственно и запись аналогично, и запись родителя — группа загружается при обмене как элемент, а элементы, бывшие внутри ее, переносятся в корневую группу
не знаю, как у остальных, но после всего прохождения видео-урока, нажал на первую кнопку «Подключиться через статическую ссылку» — сервер вываливается с ошибкой на строке Если ЗначениеЗаполнено(СтруктураДанных):
Функция ПолучитьСреднее(СтруктураДанных, СериализованнаяСтруктураДанных)
Если ЗначениеЗаполнено(СтруктураДанных) Тогда
поменял условие на:
Если СтруктураДанных Неопределено Тогда
заработало — почему сломалось?
ошибка:
«Ошибка SOAP сервера: Неизвестная ошибка. {WebСервис. ФункцияДляРасчета.Модуль(4)}. Ошибка при вызове метода контекста (ЗначениеЗаполнено)…
по причине: Проверка мутабельных значений на заполненность не поддерживается.
до сериализации в строку и из строки — работало.
и вроде передавали структуру как XDTO и не ругался, что это мутабельное
На сервере, в процедуре ФункцияДляРасчета в режиме отладки проверьте — какое значение у Вас приходит в качестве параметра.
Свойство: СтруктураДанных.
Значение: ОбъектXDTO.
Тип: ОбъектXDTO.
Содержит в себе:
КоличествоЭлеменнтовВМассив = 2;
Комментарий = «Test»;\
МассивЧисел — список XDTO, в котором два значения 6 и 3.
Вначале смотрим видео.
а может не правильно анализировать на ЗначениеЗаполнено() если передаем в качестве параметра Структуру? и лучше всё-таки сравнивать на Неопределено?
в данном случае, не структура, а объект XDTO.
Конфигурация — дается как конечный результат видео. Для копирования кода и т.д.
Так как идет наращивание функционала, то сарый, что бы не удалять — остается для копирования слушателям видео курса.
Так что возможно все. Если посмотрите видео — узнаете, почему так работало там, и почему не отработало у вас.
попробуйте сделать так
Если не(СтруктураДанных = Неопределено) тогда
СтруктураДанных.Проверить();
Структура = СтруктураДанных;
Иначе
Структура = ДесериализоватьXML(СерСтруктураДанных);
КонецЕсли;
да я так и написал: Если СтруктураДанных Неопределено Тогда
просто выше знак пропустил :) — так работает и получаю ответ :)
оказывается на форуме съедает два символа: знак меньше и знак больше если рядом поставлены — выше снова съелись…
обрабатываются как html-тег?
в смысле форум считает это началом тега и поэтому не выводит.
Проведём эксперимент:
Результат
Да, так и есть = в данном случае были теги выделения текста жирным.
Добрый вечер!
При разборе примера из методички все получилось.
При решении практической задачи при отладке, когда есть неуникальность кода справочника или документа, то при записи выдает ошибку на мобильном. затем зависает web сервис и не отвечает. приходится перепубликовывать web сервис и перезапускать апачи.
После снятия контроля уникальности обмен получился в обе стороны
получай по ссылке и проверяй заполненность поля, если пустой то новый — его создавай, если нет — то «синхронизируй».
чтобы гарантированно избежать неуникальности кодов, надо использовать префиксы в обеих базах
Небольшое предложение по оптимизации.
Вместо промежуточной таблицы значений
Результат = Запрос.Выполнить().Выгрузить();
и
Для Каждого Кол Из Результат.Колонки Цикл
использовать результат запроса, его колонки и выборку.
Результат = Запрос.Выполнить();
Колонки = Результат.Колонки;
Выборка = Результат.Выбрать();
Если такого рода предложения неуместны в рамках обсуждения данного курса — сообщите.
Раз уж на то пошло, то можно еще оптимизировать:
Функция СформироватьДокументы()
Запрос = Новый запрос(«|ВЫБРАТЬ
| ПоступлениеТоваровУслуг.Ссылка,
| ПоступлениеТоваровУслуг.ПометкаУдаления,
| ПоступлениеТоваровУслуг.Номер,
| ПоступлениеТоваровУслуг.Дата,
| ПоступлениеТоваровУслуг.Проведен,
| ПоступлениеТоваровУслуг.Товары.(
| Номенклатура,
| Количество
| )
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг»);
Возврат запрос.выполнить().выгрузить();
КонецФункции
(в качестве значения поля «товары» будет вложенная таблица)
Но не думаю что такая оптимизация серверной части играет роль.
Та без проблем. Только вы теперь людям, у которых опыта меньше объясните это все :)
Вариантов — просто море, но нельзя забывать про читабельность кода, особенно в учебных материалах.
Если вы с таким умеете работать — Отлично! Пишите, делитесь, это всегда хорошо.
Но если вы так делаете, то тогда приводите не просто свой пример, а объясняйте, что подход автора материалов — был не удобен (не верный, ошибочный, узконаправленный и т.д.), он использовал то то и то, и на выходе получил это. А я предлагаю — это это и это. Преимущества — такие такие и такие.
А то сразу так и не поймешь — чем ваш код лучше :)
2-й модуль оказался намного сложнее первого. Перечитывал pdf с теорией раза 3 целиком и ещё частями. В голове никак не складывается цельная картина что для чего нужно и как оно работает.
Очень нехватает какой-либо блок схемы взаимосвязи объектов (WS ссылок, web сервисов и xdto пакетов). C текста это воспринимается плохо.
Первое практическое задание сделал скорее на интуиции и подглядывании в базу с примером.
Сервис опубликовал, через браузер, xml доступен. В базе Клиент ссылку прописал. Понял что ссылка вписалась корректно когда увидел в ней созданный в другой базе web-сервис.
Вторую часть так и не осилил сам. В голове нет цельной картины что и для чего нужно. Придется смотреть решение :(
веб-сервис можно сравнить с обычной процедурой или функцией, которую просто сделали доступной через обычную сеть. XDTO пакет это описание структур данных используемый в качестве параметров и/или возвращаемых значений этих процедур и функций. Помогает контролировать (типизровать, что ли) передаваемые данные, но не явялется обязательным. А WS-ссылка это своего рода «описатель» веб-сервиса, благодаря которому мы экономим время при разработке (т.к. нам не требуется каждый раз при вызове прописывать адрес к веб сервису, и мидитировать в поисках информации о структуре его параметров)
Все просто :)
Спасибо, со ссылкой было понятно интуитивно. Прописал ссылку — увидел то-же что и создано в базе Сервер.
Непонятно было как передавать данные между БД. Т.е. изложив по другому:
1. В базе Клиент готовим структуру с данными для отправки.
2. Заворачиваем её в xml
3. Заворачиваем xml в строку.
4. «Дергаем» за «ws ссылку — удаленную функцию». В неё передаем строку из п.3, а возвращает она тоже строку.
5. Строку из. п.4 «разворачиваем» в обратном порядке, сначала в xml, затем в ТЗ с привычными объектами БД (справочники и документы).
Так «картинка» складывается.
Как я понимаю, инициатором обмена с помощью web-сервисов может быть только мобильное приложение. Т.е. если нам нужны актуальные данные, мы должны каким то образом регулярно выполнять команду обмена в мобильном приложении.
Последний момент мне тоже очень интересен, но думаю, что идеологически правильно будет только ручное инициирование обмена пользователем устройства нажатием чего-либо. В том же гугл диске, дропбоксе, новостных лентах и т.п. нужно «дернуть вниз». Хотя тут уже люди предлагали ставить события и с указанным интервалом запрашивать данные.
PS: лично я предпочел создать два метода у веб-сервиса: set и get у о первого входной параметр передает данные на сервер, второй имеет только выходной параметр и возвращает клиенту данные.
ставить события с указанным интервалом — это придем обратно к началу лекции с dbf-файлами — т.е. асинхронное выполнение, сервер будет работать в холостую и т.д… тоже вот этот момент интересен, + не все брать элементы справочника, документы и тупо перезаписывать их всех в мобильной конфигурации — а всё-таки отслеживать, какие изменились и только те обновлять/добавлять/удалять.
это хорошо когда 1-2 элемента справочника, или документа — а если миллион…
Не бегите вперед. Это на следующем уроке.
Действительно интересно можно ли сэмулировтаь работу плана обмена с квитанциями о приеме сообщения на стороне мобильного приложения.
Конечно можно. Можно и платформу переписать. Чего велосипедом пользоваться =)
На самом деле тут задача еще более глубокая, чем кажется на самом деле. И именно в контексте мобильных решений. Но мы говорить, в контексте этого курса, об этом не будем.
можно, просто разработаете механизм — повторяющий стандартные механизмы Планов обмена. Оно того стоит?
(если не чисто в учебных целях)
Абсолютно верно
Вы теорию посмотрите вначале. А не читайте. Основной материал — видео.
Видео я попозже тоже посмотрел. Я в тексте лучше воспринимаю чем видео. Можно пробежать глазами вперед/назад/ по диагонали. Мне с этим в продвинутых курсах приходится мучиться. К концу 5-го часа видео про СКД, в голове полная каша и забываешь что было в начале главы. А перечитать возможности нет. Приходится пересматривать видео и искать главы которые помогут в решении ДЗ.
После публикации http://127.0.0.1/server/ws/obmen.1cws в нем текст:
soap:Client
Операция не найдена: {obmen}:Obmen:ВыполнитьОбмен()
Красным выделено soap:Client и Операция не найдена: {obmen}:Obmen:ВыполнитьОбмен(). Операция есть, функция в модуле тоже, конфигурация сохранена. В чем может быть проблема?
После сохранения конфигурации — попробуйте обновить публикацию и перезапустить апач вручную ещё раз. Иногда помогает.
Увы, не помогло
В браузере пробовали посмотреть? Там схема выводится полностью или с ошибкой? (если с ошибкой — это сразу видно, общий текст короткий и описание ошибки есть на русском.)
А это и есть из браузера, просто при отправке комментария тэги исчезли, в приложении полный текст
Сделайте пожалуйста скриншот конфигурации, так, чтоб было видно всю структуру Web-сервиса, и откройте ещё модуль этого Web-сервиса.
Складывается впечатление, что для Операции не назначен обработчик
Проблема разрешилась. Функция была без переданного параметра, после формирования новой функции все заработало. Т.е. сперва нужно создать параметр, потом функцию
Хорошо :)
Добрый вечер. При запуске обновления(отправить/получить данные по справочнику и документам) на виртуальной машине выскакивает ошибка:»Ошибка работы с Интернет Connection to http:127.0.0.1 refused».
ошибку победил
у меня тоже такая выдается, чем побеждается? спасибо заранее.
У меня такая ошибка вылезла, когда я с вирт.машины с Андроида пыталась коннектиться к веб-сервису. Вылечила прописыванием в конфе клиента адреса ws-ссылки не через локалхост (127.0.0.1), а через адрес хоста во внутренней сети (192.168.х.х)
Прошу прощения, что не по теме, как на этом сайте найти свои комментарии? Задал вопрос, но не могу найти его и ответы соотвественно.
Еще раз повторюсь: Как вообще дела обстоят если веб сервис публиковать на другом компьютере? т.е Апач стоит не там где стоит 1С. И возможно ли публиковать веб сервис на хостере? т.е можно ли публиковать веб сервисы , там где находиться например сайт компании?
Доступ к настройкам апача частично закрыт.
актуальная задачка. Ведь при этом еще надо открывать доступ к серверу предприятия 1С во внешний мир ,чтобы апач мог подключиться, и с безопасностью могут быть вопросы. Хостер позволяет редактировать conf файлы? Веб-сервисы настраивается в этих файлах
У тех, кто через интернет обновляет типовые конфигурации — как правило, доступ во внешний мир уже и так открыт :)
(ну или кто встроенный почтовый клиент использует.)
Извините , пожалуйста. Не много не понял про что вы говорите. Тут удосужился все таки прочитать справку нажав по кнопке «справка» при публикации конфигурации. Насколько я понял без возможности перезагрузки Апач все это вообще не имеет смысла. Плюс посмотрел конфиг файл Апача , там идет подгрузка dll от 1С. Так что насколько я понял все таки на хост опубликовать сервис не получиться. Я правильно понял?
Вопрос с разными машинами , с 1с и с вебсервером: там нужно какуюто утилиту webinst применять?
да, нужно расширение веб-сервера устанавливать. Для линукса тоже бывает. А что, хостинг не позволяет расширения свои добавлять?
не согласен, когда запускаешь обновление, то инициируешь соединение «изнутри». А я имел ввиду, что в случае веб-сервиса на внешнем хостинге соединение с 1С будет инициироваться от этого хостера «извне», для этого надо открывать порты на фаерволе, да еще и проброс настраивать.
проброс порта — дело 10 минут, а безопасность здесь это политика, а не техника. Кроме того, там ведь будет авторизация.
И зачем пытаться смешивать понятия и приплетать 1с к сайтам на неком хостинге? Это имеет смысл только если вы и свои базы 1С держите удаленно и работаете с ними как веб-клиент.
не имеет смысла. Проще публиковать со своего сервера.
Все это до боли интересно, нужно разобраться.
Почему эти вопросы родились:
1. Из уроков было сказано что все эти механизмы позволяют из вне актуально синхронизироваться (и не только) с другими системами, вот у меня и родилась задумка реализовать синхронизацию с поставщиками товаров, ради практики так сказать.
2. Для себя захотел задумать написать мобильное приложение а-ля домашняя бухгалтерия с размещением вебсервиса на хостинге фирмы от работы. Но видимо здесь такие административные вопросы разбираться не будут
тут как такова синхронизация: это взять все элементы справочника или все документы, сериализовать всё это в строку, потом обратно — в качестве примера веб-сервиса очень хорош, а для синхронизации — это не применимо.
Попробуйте следующим образом: на странице с материалами, где публиковали свой комментарий нажмите Ctrl+F. Должно где-то появиться окошко для поиска (в FireFoxe — у меня внизу слева, в IE, кажется, вверху). В этом окошке наберите свой ник. Если вхождений на странице не найдено — переместитесь в самый низ комментариев и попробуйте «Предыдущие»/»Следующие» комментарии, на какой-то из страниц — должны найти :)
Спасибо за ответ. Потом догадался про старый русский добрый ctrl+C,ctrl+V, к которому уже добавил и ctrl+F ))), но вот может предложение разработчикам сайта: что бы может где в кабинете был список своих комментов
Насколько я помню, предложение уже не однократно озвучивали и такое пожелание фиксировали.
В любом случае серверу с апачем необходимо иметь установленную компоненту 1С которая так же прописываетсяв в конфиге апача (wsap). Плюс доступ к базам данных. Ну и лицензии так или иначе. Без всего этого ни как.
Можно, но это лучше в админам за помощью
извините, забыл еще вопрос:
у меня почему-то при попытке обратиться из моб.приложения на смартфоне НТС к веб-сервису выдавалась ошибка,
«XML parsing error: [158,78] Error:xmlns:tns: «ОбменДанными» is not a valid URI
пришлось изменить название веб-сервиса, метода и его параметра на латинские, после этого заработало. Не сталкивались?
многие столкнулись, в видео говорили, что лучше использовать латиницу
Изначально говорилось, что URI на кириллице ведется в академических целях. Вся адресация в интернете лучше делать на латинице.
интересно, значит в домене «.рф» пока что не получится пользовать веб-сервисы))
честно , я не знаю как реализован механизм с доменами на кириллице, но чувствую что там с костылями. Например попрбуйте скопировать «русскую» ссылку и вставить например в скайп. У меня по крайней мере переводит в англозычную квакрозябру. Будет время поинтересуюсь этим вопросом.
При использовании мобильной платформы — никакой кирилицы!!! Кстати при сборке пакетов apk для их установке на мобильные устройства не задействуя мобильную платформу (через кабель USBЗ или через PlayMarket) — то-же самое требование: никакой кирилицы!
Сталкивались.
Еще заметил два момента:
1) т.к. сначала идет выгрузка из клиента на сервер, то получается что «коллизии» всегда решаются в пользу клиента
2) в приведенном решении не передается пометка удаления и признак проведенности. Я делал универсальные функции преобразования справочников и документов, перебирая из метаданных все стандартные реквизиты, все обычные реквизиты и табличные части.
У меня вопросы:
1)В Вашем решении документ просто записывается (не проводится). Если реализовывать полноценный алгоритм с передачей движений документа, то мне видется 2 варианта: проводить сразу при записи, либо отложенным проведением — как в типовых конфигурациях 1С. Какой вариант предпочтительней?
2)мне понравилась идея с сериализацией/десериализацией, потому что упрощает разработку обмена. Если не секрет, кто автор идеи? Используется ли такой подход в жизни, в каких-нибудь коммерческих решениях?
2) обработка «универсальный обмен данными xml» которую можно найти в любом углу построена на сериализации. Обмен между ЗУП и БП, на сколько я понял, тоже (иначе зачем еще в этих двух конфигурациях созданы «искусственные» документы имеющие полностью идентичную структуру?)
наверное имеете ввиду ВыгрузкаЗагрузкаДанныхXML? вообще логично. Но про обмен ЗУП и БП не слышал такого, ведь там обмен на БСП должен быть, т.е по правилам обмена, а в правилах задается структура. Какие версии конфигураций имеете ввиду?
да, эта обработка.
ЗУП 2.5. Да там есть правила, только они зашиты в обработке, а не выбираются при создании обмена. И сам обмен использует встроенную обработку УниверсальныйОбменДаннымиXML. А причем здесь БСП я не понял.
я имел ввиду, что подсистема обмена взята из БСП
Колллизии как раз наоборот решаются в сторону сервера и это правильно.
Вполне возможно что полноценно проводить документ не самая хорошая идея, т.к. чаще всего на клиенте будет не вся информация, логичнее сделать проведение при получении данных от клиента на сервере.
Сериализация в 1с используется часто.
нет. Я проверил. Меняю на сервере, и на клиенте один и тот же документ. Запускаю обмен. На сервере и клиенте теперь версия клиента.
На счет проведения — согласен, зависит от конкретных задач и нюансов, но мне кажется чаще всего на практике будет требоваться автоматическое проведение «мобильных» документов в центральной базе.
Это зависит от того, что делается сначала — выгружаются в базу сервере полученные с клиента данные, или собирается из базы ответ клиенту
1. Давайте еще раз — мы не показываем тут синхронизацию, а показываем обмен. Тут есть большая разница.
Плюс — у каждого свои бизнес процессы, так что коллизии были, есть и будут всегда, вопрос только как их решать, а тут кроме вас никто не ответит.
2. То вы теперь сами сможете это добавить? Если да, то значит мы достигли своей цели.
1. Передавать движения — само по себе абсурдно. Это используется только в РИБ, а РИБ у нас нет. Так что проводить надо по любому. Отложенным не выйдет. Тут нет фоновых заданий (пока), так что если даже в ожидании поставите — интрфейс будет блокирован. Так что лучше при загрузке.
2. На всех моих проектах, и не только при обмене.
вторую часть разбираю — теорию, вот несколько замечаний:
1. Страница 8 «Создание XDTO-пакета, заполнение, чтение» в первом абзаце «реализуем на практике…» здесь бы, конечно, лучше написать что реализовываем в новой созданной конфигурации… а то читаешь, читаешь 8 страниц, приступаем к практике и как-то автоматически думается, что должны продолжать правку конфигурации предыдущего урока…
2.Соединение = WSСсылки.ФункцииДляРасчета.СоздатьWSПрокси(«ФункцияДляРасчета», «ФункцияДляРасчета», «ФункцияДляРасчетаSoap»);
интересует второй параметр, откуда его взяли? Первый параметр показали, где он находится в дереве конфигурации, второй нет..
и еще вопрос:
3. Проверить() необходимо запускать и на мобильном приложении перед вызовом метода веб-сервиса или всё-таки можно обойтись одним вызовом в серверной базе в методе ПолучитьСреднее() веб-сервиса? Или где тогда лучше проверку делать: на сервере, на клиенте?
если я правильно понял, в случае наличия ошибки в структуре исключение произойдет еще до того как клиент получит что-либо. Так что проверять на клиенте полученные данные выглядит бессмысленно. Надеюсь, меня поправят если это не так
у меня вот первый параметр: функция пространства имен — называется «ФункцияДляРасчета», а в дереве конфигурации WS-Ссылки называется как «ФункцииДляРасчета», но передал в обоих параметрах как «ФункцияДляРасчета» — в итоге всё работает… где подвох?
>>»в дереве конфигурации WS-Ссылки»
имя ВС сылки здесь не имеет значения. Важно имя Веб-сервиса (в конфигурации сервера).
Специально проверил — левые имена в этих параметрах дают эксепшен
ответ дали в третьем уроке, когда первый параметр изменили на латиницу, второй — оставили — сразу прояснилось :)
И там и там. Ибо если ошибка заполнения — смысл вызывать сервер? Только нагрузка лишняя. А если безответственный программист не проверил на ошибки, тогда проверять на сервере. Хотя при использовании XDTO — еще в момент подключения может быть проверка, но это в случае веб сервиса.
2 Второй параметр это непосредственно имя веб сервиса — то, которое отображается в дереве конфигурации.
1. Теория идет к видео, а не как самостоятельный материал для изучения.
2. Можете найти в справке 1С.
Данные сериализуются и на сервер отправляются, но потом происходит ошибка, с которой не могу разобраться
сама структура передаваемых данных не может быть прочитана на клиенте. нужно смотреть что содержат сериализумые данные перед отправкой.
В записи решения Тренера проскакивала подобная ошибка — на сколько помню там была попытка десериализовать пустую строку
Я пыталась сделать ДЗ сама, прежде чем посмотреть решение преподавателя. Сейчас уже смотрю решение, вижу свою ошибку и понимаю, как исправить :)
Господа. А в случае ситуации, когда серверную часть делает один человек, а клиентскую часть делает другой, то получается запросы здесь не очень уместны на сервере? Ведь получается что в действительности прогер(Сервер) совсем же не знает какие реквизиты нужно выгружать для прогера(клиент).
Хотел бы уточнить вопрос в такоей ситуации только XDTO применяется?
И где бы все таки посмотреть где разбирается практическое задание с решением с XDTO?
А еще у меня до сих пор не видны материалы для сегодняшнего дня :(
А в плане сегодня только вебинар по решению вчерашнего, который был выложен записью или вы не видите в новостях решение второго задания?
то есть — это как раз то чем мы щас занимаемся? :)
Ну да
Напишите в саппорт тогда, с приложенным скрином.
FTP это лишь транспорт, к тому же скорость взаимодействия с которым зависит от конкретной реализации ftp-сервера. Чтение, формирование файлов, промежуточные пересылки между каталогами обмена — в промышленных средах это не так то быстро работает.
Так, похоже картина проясняется :)
Основной сервер — Windows 2008 x64,
стоит 1C v8.2.19
лицензии, серверная — программная, клиентские — аппаратная.
Для учебы IT развернули VirtualBox 4.3.10 и поставили XP sp2.
Apachе стоит на ХР, виден (смарт HТC его видит)
на виртуалке лицензии видны, основные базы (те что на 8.2) запускаются и работают.
Похоже у веб-сервера с лицензией проблема.
Перенести Apache невозможно — работаю в терминале.
P.S.
Я в пролете?
так 8.2 работает, а 8.3? Она хотя бы в пользовательском режиме (не веб.сервисы) лицензии находит?
Все таки не самый удобный формат переписки — предыдущие сообщения нечитабельны (их не читают).
L0z4 — 8.3 не работает.
это про Апач, а так — работает, как поставили (с 16-го числа).
Мобильное приложение на Апаче — работает, смартфон обновляется.
Похоже все таки проблемы с лицензией под веб-сервер на виртуалке, полезу ставить 8.3 и Apache на основной сервер.
P.S.
IT поймает — убъет. :)
Пересмотрел первый вебинар — все так же выполняется в виртуальной машине! только там система Windows 7 (и возможно виртуальная машина VMWare, а мне VirtualBox поставили).
Ключи видны!
Есть какие идеи, а?
А почему сделан вывод о лицензиях? У вас локально то нет способа развернуть инструментарий — так оно попроще бы было?
У меня вообще все на маке — и виртуалка Windows 8.1 c 1c 8.3 и виртуалка Android, к тому же виртуалки на Parallels стоят и работают
Потому что сейчас поставил поставил Апач на основной сервер — и все «взлетело».
В моем случае (еще раз повторюсь: VirtualBox 4.3.10, OC WIndows XP sp2) получается следующее:
— лицензии сервера видны;
— базы на 8.2 локально и серверно запускаются;
— базы на 8.3 локально запускаются;
— apache, мобильное приложение регистрирует и запускает;
— веб-сервер 1С работать отказывается.
P.S.
а еще dunar вы невнимательны, я выше писал — работаю в терминале, локально поставить могу, но лицензии взять негде. Лицензии все на сервере.
P.P.S.
Где лежит 8.3, версия для обучения? Я так понимаю для нее лицензии не нужны?
Причем тут невнимательность :) — я предлагал уйти с терминала и поставить все у себя — тут уже не раз писали, если нет лицензий своих, пути решения. Версию для обучения можно получить на сайте 1с.
«И снова здравствуйте» (с) :)
чуть выше я спросил где она лежит, так как на users.v8 я ее не нашел среди списка дистрибутивов 8.3
Если клиентские лицензии раздаются сервером 1С, то клиенты моут работать только с этим сервером, в клиент-серверном режиме. В Вашем случае сервер версии 8.2, то есть платформу 8.3 на таких лицензиях в принципе не поднять. Нужно либо включать раздачу лицензий менеджером лицензий (отключив раздачу лицензий сервером), либо ставить аппаратные ключи в локальный компьютер. В общем, отвязать клиентские лицензии от сервера.
8.3 локально получает лицензию, все выполняется в файловой версии — чего еще не хватает?
Клиентские лицензии — аппаратный ключ.
в большенстве случаев фтп не заменит веб сервисы. Да и «быстрее» то фтп с чего бы был? Или в плане «кодинга» с фтп быстрее?
Тут нельзя путать синхронный обмен и асинхронный. Так что они решают абсолютно разные задачи.
Я это и имел ввиду. Да и о чем тут говорить, если в первых 10 минутах первой лекции все было сказано наилучшим образом.
Рад что все получилось так хорошо объяснить, а то тема таки сложная.
Это вы сейчас о чем? :)
Проблем не возникло.
Сериализатор порадовал, так как до этого работал на уровне внешних обработок без изменения конфигурации…
Тренинг классный!
Счастливый вы человек, обходиться без сериализатора тем более не имея доступ на изменение структуры базы данных. Обмены, выгрузки и хранение собственных настроек во внешних файлах как без xml то в наши дни? :)
Очень понравился описанный в первой части метод обмена через XDTO пакеты с контролем содержимого данных на корректность.
Поэтому для закрепления материала сначала сделал именно такой вариант обмена :-)
С (де)сериализацией в строку тоже все получилось, но от такого подхода осталось впечатление некоторой «ненадежности» — нет практически никакого контроля передаваемого содержимого — если десериализовалось корректно — ок, а нет — сложно определить что не понравилось системе.
Возможно это только первое впечатление.
Верное впечатление :) Но тут каждый сам решает. В любо случае — сеиализация надежней самописного формирования xml, как это делали многие.
и очень затратно по времени!
Вебинар сегодня будет? На почту ничего не приходило. Где новости читать?
Судя по плану вебинар должен был быть только по решению ДЗ, а так как выложили решение, то судя по всему вебинара не будет. Вот план ели что: http://xn—-1-bedvffifm4g.xn--p1ai/post-2014-04/%D0%BF%D0%BB%D0%B0%D0%BD-%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B0/
в файле теории в теме по сериализации при вызове операции «ПолучитьСреднее» используется просто строка в качестве параметра сериализованной структуры данных. и это работает.
В видео решения сериализованная строка приводится к типу XDTO.
Оба варианта одинаково правильные или первый — это небрежность в коде, которая может привести к каким-то последствиям в будущем?
Теория — освещает разные аспекты работы. А практика — конкретное решение конкретной задачи. В теории об этом всем говорится. Если вы соло программист — то можно и сериализацией. А если вы в команде и вы пишете сервер, а другой — клиент, то конечно лучше xdto, будет меньше проблем и меньше времени на объяснение.
Олеся, DmitriyVa запустите 1С с правами администратора (ПКМ по ярлыку)
В настройках ярлыка 1С стоит Запускать от администратора, не в этом дело
Неактуально
у меня тут косяк с настройками/установками/или еще чем то
как по решению публикую вебсервис. запускаю из хрома —
{«#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’
где смотреть и что с этим делать?
Это вы так базу назвали «111»? Я надеюсь что я ошибаюсь.
это не имя базы это имя папки в корневом каталоге, т.е. в публикации на сервере каталог F:\www\111\
вопрос снимается.
я думал что в строкеhttp://127.0.0.1/111/ws/ОбменДанными.1cws после айпи надо писать имя каталога, который мы указываем при публикации (www — корневая папка веб сервера, а 111 папка лежащая в ней), вместо этого указывается имя сервера публикации.
Коллеги не подскажете будет ли сегодня вебинар?Спасибо
если по плану http://xn—-1-bedvffifm4g.xn--p1ai/post-2014-04/%D0%BF%D0%BB%D0%B0%D0%BD-%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D0%BA-%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B0/
то сегодня в 19.30 — вебинар с ответами.
поскольку уже выложены записи решения, то, возможно, вебинара и не будет.
Спасибо. Верно раз решение есть
тоже аппач веб-сервис не публикует :(, его перезапуск не помог, перезагрузка компа в целом тоже тоже, пробовала разные браузеры и наименование латиницей например так: 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 учебная версия — это может как-то повлиять?
при установке 1с веб сервисы добавили? по умолчанию не устанавливаются
Я — да,
в апаче:
LoadModule _1cws_module «C:/Program Files/1cv8/8.3.4.465/bin/wsap22.dll»
есть
да, при установки учебной вроде только пункта про тонкого клиента не было, остальное выбирала, что требовалось
Может быть, у нее ограниччено количество пользователей одновременных. А апач иногда весит свои подключения. перезагрузиться попробуйте
пробовала, без изменений
Скиньте скрин публикации базы
в папке serverpub такой default.vrd (а может влиять пробел в названии каталога баз 1с?):
base=»/Server»
ib=»File="C:\1C bases\8.3\Server";»
вполне может влиять.
тогда смущает, что база для публикации для мобильного приложения в том же каталоге лежит с пробелами, и она нормально опубликовалась в первом задании и сейчас xmlоткрывается через http://127.0.0.1/order/ …
Следите за именем публикации. Оно должно соответствовать 1 в 1 тому, что вы вбиваете в строку, с учетом регистра букв.
Скиньте адрес, по которому вы подключаетесь сейчас
name=»WebServiceFunctionForCounting»
alias=»WebServiceFunctionForCounting.1cws»
enable=»true»/
скрины:
http://127.0.0.1/serv/ws/WebServiceFunctionForCounting.1cws
Внимательней будьте.
http://127.0.0.1/Server/ws/WebServiceFunctionForCounting.1cws
спасибо! я в ссылке имя каталога вставляла serverpub, а не имя публикации Server, и в первый раз они были тоже различные serv и Server! да, работает! ура :)
Поздравляю. Внимательней читайте методичку и слушайте видео. Я понимаю, что хочется всего и сразу. Но если что то не выходит — отлучитесь на пару минут, выпейте кофе. Откройте видео и методичку на таком же моменте и всмотритесь и вслушайтесь :)
есть такое. после дневного присмотра за мелкой вечером голова в ауте и все по быстрому, пока время свободное есть. спасибо за отклик, а то зависла и отстала уже от графика.
XDTO очень интересно, никогда еще с этим не работала, всё с нуля, спасибо за проект! :)
а на сегодняшний день уже была раздача, на почте пока никаких новостей?
Была раздача практического материала. Следите по сайту. Справа на ленте — вся новая инфа.
файл default.vrd:
По практике удалось реализовать только обмен справочника, с документами поплыл. Буду смотреть где ошибся. Спасибо за разбор на примере.
Здравствуйте.
В представленном решении есть очень серьезная ошибка. Если взять и удалить все данные с серверной части(элементы справочника и документы) о опять запустить обмен, то мы увидим, что элементы справочника синхронизировались, номер и дата документа тоже, а ссылки на номенклатуру в табличной части битые. Это происходит потому, что сначала синхронизировался документ, а потом справочник.
Такая ошибка проявилась только у меня? Получается при выгрузке сериализовались данные в обратном порядке из структуры. Нужно обязательно в коде учитывать порядок загрузки данных, а именно сначала справочник, а потом документы.
Хорошее замечание. Я обычно обмен через XDTO-пакеты делаю — здесь обработка идет в строгом соответствии со структурой пакета.
Я думаю о концепции схемы обмена будут ещё говорить: чем обмениваться какими объектами (не каждый же раз всё выгружать), как обрабатывать удаление очистку объектов из баз и т.п.
Все верно говорите. Но это то, что должно пониматься на практике, мы же не можем все предусмотреть. Тем более — в дальнейшем это играть роли не будет, мы будем работать с планами обмена.
странно, у меня этой ошибки нет. Сделал тоже самое: удалил непосредственно с сервера и заново запустил обмен. Битых ссылок нет. Что вполне логично, как мне кажется. Ведь в нашем случае передаются ВСЕ объекты гарантированно, и не важно в какой последовательности, все встанет «на свои места», и к окончанию сеанса обмена битых ссылок не будет.
это если вы при создании напишите Объект.ЭтоОбмен = Истина.
Иначе, если у вас есть родитель и он не заполнен, то будет ошибка.
А на планшете все также должно отрабатывать?
У меня на компьютере на клиенте все ок, а на планшете пишет «Connection to http://127.0.0.1 refused» и все. Хотя кнопки и другие элементы появились в интерфейсе на планшете.
Для подключения с других устройств твоей сети нужно в URL источника в WS-ссылке указывать реальный IP или имя.
О теперь пошло дело, но уже другая ошибка: «Ошибка отображения типов: Отображение типа string (http://www.w3.org/2001/XMLSchema)date в тип «Дата». Ошибка преобразования данных XML»
Такая ошибка:
Отображение типа (http://www.w3.org/2001/XMLSchema)date в тип “Дата”. Ошибка преобразования данных XML”
Ну здесь внимательно посмотри как у тебя реквизиты заполняются и как принимаются — точно на ПК такие же данные передаются корректно?
Да, на ПК все норм и туда и обратно обмениваются.
Ошибки поборол. Была проблема с МоментовВремени, и не хотела Десереализовывать ДеревоЗначений (в ней собраны документы и их ТЧ) на планшете, пришлось переделать на ТаблицуЗначений.
Теперь и на планшете все ок.
В справке 1С к каждому объекту прописывается сериализуется ли он. И, кстати, само посебе дерево значений сериализуется. Проблема могла быть только с данными в дереве.
Пишите внешний IP адрес, а не внутренний. Внимательней видео просмотрите
Apache веб сервис не публикует.
httpd.conf
прицепить как?
Выдает 1С какие-то ошибки при публикации? В httpd.conf появляется блок вида:
# 1c publication
Alias «/MyMobApp» «C:/www/MyMobApp/»
AllowOverride All
Options None
Order allow,deny
Allow from all
DirectoryIndex 1cema.xml
Конфигуратор от локального админа запускаете (как это в обучающих роликах показано)?
Ошибок нет (скрин 1С’а)
а почему вы решили что не публикует? ошибки какие-то? по вашим сообщениям не понятно в какой момент не работает
Да потому что не публикует.
у вас что по http://127.0.0.1/serv/ws/ОбменДанными.1cws
вышло?
у меня 404
содержимое 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/»
публикация тоже.
А обычный веб-клиент работает (http://127.0.0.1/serv)?
текущая http://127.0.0.1/serverpub — не работает, а вчерашняя публикация для мобильного приложения http://127.0.0.1/order открывается
Нет.
мобильное приложение (мое — учебное, без сервисов), работает и обновляется.
Для пробы развернул эталонные (сервер и клиент)
с сервером то же самое — его невидно, клиента в браузере видно.
На телефоне (HTC) при развертывании:
«Ошибка разбора XML: -[158,78]
Ошибка: xmlns:tns: ‘ОбменДанными’ is not a valid»
в файлах вроде все верно, попробуйте перевести все на латиницу: URI, название сервисов
Есть подозрение, что все таки default.vrd не овсем правильный.
Помнится в самом начале появления веб-сервера на Apache была закорвырка с написание путей к файловой базе, я про эту строку: { ib=»File="C:\Documents\dBase\Эталон\Сервер";}
что-то с кавычками и ",за давностью не помню в чем засада была
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, завела с этим именем и пыталась с нуля опубликовать
у меня всё на латинице сразу было, кроме названия веб-сервиса, потом сменила на латиницу и его — ничего не заработало(
А у вас на компе на 80 только апач проверяли? И нет ли специфичных настроек для localhost в системном файле hosts на компе?
на 80 порту только httpd.exe
никаких настроек параметров локальной сети через прокси нет, т.е. там галочки, что используется прокси, и для него порт 80 тоже нет
Вы его перезапустить после публикации пробовали?
«Решение 2-го задания будет выложено 19.04.2014 в 11:00 (время московское).» — хоть убейте, но не вижу ссылки на решение! Подскажите, пожалуйста, подскажите, где можно посмотреть.
В новостях первой ссылкой разве не отображается?
ой. сорри. справа в новостях )
извините
Спасибо! Все на простом уровне, но поучительно — как раз для обучения. После реализации клиента и сервера залил клиента на телефон — обмен пошел :).
Добрый день!
Скажите пожалуйста, сегодня планируется вебинар или раздача записи? Может быть мне одному материал показался непростым — останавливал запись и пересматривал несколько раз … В рамках вебинара будет сложно уловить все моменты.
я тоже некоторые моменты пересматривал. Не представляю как переварить это в формате вебинара.
Однако, в рамках вебинара, если непонятно — можно записать, задать вопрос ведущему и разобрать вопрос на примере — что невозможно при работе оффлайн :(.
Почему невозможно, здесь в комментариях вполне оперативно отвечают, как ведущий, так и остальные участники, а возможность посмотреть нужное количество раз в нужной тебе скорости очень помогает, я например очевидные вещи и написание кода смотрю со скоростью 2х, новые объяснения с нормальной. Формат с записью намного удобнее по моему мнению
Я не против записи, особенно как дополнение к вебинару :). Но считаю вебинар эффективней: совместно можно и направление решения изменять и итог разный получить и более правильное решение и оперативнее это (как бы оперативно здесь не отвечали — но это неудобно).
ИМХО Я думаю, что при участии такого большого количества людей вебинар будет затягиваться на длительный период. Пока все зададут вопросы, на них ответят, кто-то вопрос пропустит и задаст опять, его пока отфильтрует ну и т.д. Я бы наверно такой вебинар проводил в формате первый день видео с вебинаром(уроком), а второй день вопросы и ответы на них.
А кто говорит что все одновременно надо — как обычно формировать группы и учить людей.
И никакой личной жизни у автора? :) 3500 человек, это не 50 человек. Эффективная группа — максимум 100 человек :) Вот и считайте. Это на год затянется.
Ну тогда опять проще теорию в записи, а вебинар — ответы на вопросы. 3000 чел вебинар…брр
На группы — я имел ввиду не на 3000 тыс человек, а последовательно или параллельно разные учебные группы набирать :) (тут такая практика обычно вроде и была — я не понимаю почему при заведомо большом количестве участников так не поступили с данным обучением, качество материалов и проведения то снизилось при таком количестве).
Мы на такой поток не рассчитывали :)
Ну по поводу личной жизнии… :) я понимаю что все заработать хотят, но кто говорит что это все надо вешать на одного автора — распределение задач для сокращения сроков еще никто не отменял
Та я же шучу. И заработок тут совсем ни при чем, тренинг то бесплатный :) Тут желание донести до людей информацию. Просто на конференции инфостарта я видел, как люди очень сильно интересовались этой темой, и на сколько был глубок информационный вакуум.
Вот мы и решили его заполнить информацией. А теперь ждите на всех форумах рунета кучу вопросов и ответов по всем проблемам :) Это лучше, чем разделять людей на группы.
Не думаю что лучше, но это мое личное мнение. Вы молодцы что заполняете вакуум, хотя он не только по этой тематике есть и будет :).
«Бесплатный» — вопрос наверно только в том кто чем платит, но не думаю что по этому нужно продолжать дискуссию — она растянется на несколько страниц. Тренинг все равно классный и за него не жалко заплатить ни деньгами ни рекламой — так держать!
если план обмена доступен и на мобильной платформе и на сервере, можно было создать и там и там планы обмена, регистрировать изменения и создание новых объектов, а затем обменивать их?
Ответ будет дальше на ваш вопрос.
А отчитываться надо по 2 дню?
Читаю в графмке 4 дня «Решение предыдущего задания.
Будет доступно только для тех, кто отчитался по данному заданию.»
НО решение уже выложено, получается отчитываться не надо, только вопросы задавать?
Ну так как это не вебинар, а записи, то отчитываться не надо.
Надо будет только по 5 модулю.
Но что бы отчитаться по 5, надо сделать все предыдущие.
Спасибо.
Подскажите насчет лицензирования вэб сервисов со стороны 1С.
Если на мобильном устройстве установлена конфигурация из apk файла и обмен происходит только через web-сервис.
Сколько лицензий 1С нужно в следующих случаях:
— доступ к web сервису под одним пользоватем
— доступ к web сервисам под разными пользователями (один пользователь — одна мобильная база)
1С лицензирует рабочее место. Т.е. если все делать честно, то лицензировать надо каждый мобильный телефон, даже если они все заходят под одним пользователем
А разве 1С не разрешила до 50 пользователей(смартфонов) использовать без лицензии.
http://www.1c.ru/news/info.jsp?id=16733
Цитата — «Мобильные приложения, разработанные пользователями и партнерами на платформе «1С:Предприятие 8.3», в настоящее время разрешается распространять без оплаты фирме «1С», если количество распространяемых копий не превышает 50. Для распространения большего числа копий требуется согласование с фирмой «1С».»
Это про мобильную платформу. А мы говорим про центральную базу и веб сервисы. Хотите использовать ее автономно — не вопрос. А вот если к ЦБ хотите — то тут уже нюансы.
Добрый день, подскажите что делать с такой ошибкой
В браузере xml получаете нормально?
Действительно: попробуйте на локальной машине в браузере открыть адрес с базой, как в теоретических материалах прописано, у меня там было видно — что не выгружается в XML схема обмена нормально, и было написано — в какую сторону смотреть.
Посмотрел решение, сам всё не сделал, но на бумаге решение было такое же.
Соображения:
1.) Наверное нужны универсальная функции по сериализации и десериализации справочников и документов, чтобы при добавлении новых справочников и документов не прописывать новые функции. Может быть уже где-нибудь в БСП есть.
2.) Метод определения наличия объекта в базе по заполненности кода не понравилось, наверное можно придумать что-то другое, т.е. тот же запрос к базе делать условию на равенство ссылке.
Согласен с п2.
Я сделал вот так:
НовСпр = Спр.Ссылка.ПолучитьОбъект():
Если НовСпр = Неопределено тогда
НовСпр = Справочники.Номенклатура.СоздатьЭлемент();
НовСпр.УстановитьСсылкуНового(Спр.Ссылка);
КонецЕсли;
Ну насколько я успел прочитать комментарии , то универсальные функции по сериализации десериалиции будут рассмотрены позже через XDTO
Про второй пункт тоже соглашусь, ориентироваться на Код не очень хорошая идея, не раз сталкивался на практике когда коды в базе летели, и пару раз по моей вине. Летели всмысле вообще удалялись.
Ясное дело, что такой подход не всегда пройдет. У справочника вообще кода может не быть.
Но суть урока была не в том :)
Можно вообще не проверять, а сделать через попытку, это будет самый надежный вариант :)
1) у меня тоже такая мысль возникла, поэтому сделал универсальную функцию для любого документа или справочника с любыми табличными частями и реквизитами, чтобы при изменении метаданных объекта не пришлось менять программный код
2)то же на это обратил внимание, ведь теоретически номер существующего документа может быть тоже не заполнен, и тогда будет попытка заново создать документ с таким же ГУИД
1. Это хорошо
2. 1С не даст. Это вам не код или номер. Объект однозначно определяется по гуид. Так что не выйдет, вы будете работать в любом случае с одной и той же сущностью
Вопрос возник по 2 модулю- сделал серверную и мобильную конфигурацию, на компьютере локально все заработало, при попытке перенести на телефон конфигурация на телефоне не обновляется.
Ошибка разбора XML Ошибка: xmlns:tns ‘ФункцииДляРассчета’ is not a valid URI
строка 157, 83.
вот эта строка:
Что может быть не так? (IP адрес прописал не локальный, а реальный 198.168……… и т.д)
Была такая же ошибка, вот только не помню как решил, вроде перевел все на латиницу, но сначала проверьте что везде URI правильный указан
URI пакета на латинице сделайте
В комментариях было много подсказок, Дмитрий где-то даже прямо написал используйте сериализацию, да и не просто так же про нее рассказывали.
Ну вот честно ни один ответ не навел на мысль о способе решения, а про подход с «эмулированием» структуры реквизитов объектов я бы в последнюю очередь подумал. Да, метод знаком по КД, но не думал что и тут только так можно это реализовать.
Не бегите вперед. Все будет.
Нде, решение оказалось «проще», чем я пытался реализовать. Вместо «хитрой» сериализации объектов все сделано через сериализацию структуры реквизитов этих объектов.
Я же в своем решении пытался все сделать через XDTO-пакеты, но до конца так и не смог «победить».
Можно было где-нибудь оставить мааааленькую подсказку: я несколько часов честно потратил на попытку реализовать свою идею, но в итоге так и лег спать в расстроенных чувствах не получив никакого результата ;-(
Кстати, подскажите, а возможно было вообще сделать через XDTO-пакеты?
На стороне мобильного клиента они недоступны, но если клиент будет отправлять и принимать только в своем «формате», а сервер формировать ответ в «формате» клиента, а принимая переводить данные в собственный, то вроде все выглядит нормально.
У меня как раз возникла проблема при попытке «перевести» на сервере данные клиента.
Можно было например сделать через xdto с одним параметром строкой, в которую помещать сериализованные объекты
Но на сервере XDTO пакеты всё равно придется создавать. Иначе получится ошибка XDTO про «anytype». Я налетел недавно, когда реализовывал обмен с web-сервисом во внешней обработке…
Перевести во что?
В изначальной «идее» — в объект, который бы нормально десериализовался или который можно было без заморочек обработать реализации задачи.
Ответ будет в 5 уроке.
Спасибо! А то не будет мне покоя ;-)
Судя по описанию тренинга, в 5 уроке проблема с различиями в структурах объектов будет решаться через ПреобразованиеXSL. У меня же получилось решить задание через XDTO используя только «пройденную» теорию и гораздо меньший объем кода.
Хочу проверить себя, потому вопрос:
Поставленную задачу, вроде бы, можно решить создав простенький XDTO-пакет в котором описать массивы передаваемых\получаемых объектов (из http://v8.1c.ru/8.1/data/enterprise/current-config). На сервере (где реквизитов больше) тогда вообще можно передавать просто XDTO-значения, а на клиенте единственное что нужно сделать перед сериализацией XDTO-значений — это «сбросить»\»установить» недостающие на клиенте реквизиты (стандартными методами объекта XDTO).
Собственно вопрос заключается в том, насколько нормальным является такое решение? Есть ли в нем подвохи, которые незаметны на первый взгляд\при такой простой структуре конфигурации?
Есть, но на этот вопрос вы сможете ответить позже.
Просто представьте себе, что вам надо синхронизировать базы данных, а не просто сделать обмен.
Вы сами ответите на свой вопрос, но позже
После просмотра 5 дня, все вопросы отпадут сами по себе.
В решении обнаружил маленькую неприятность. Группы товаров становятся элементами и загружаются без учета иерархии. В своем варианте поправил. Все получилось. Спасибо.
Вот и отлично :) А теперь еще проверьте работает ли ваша загрузка при загрузке справочника где иерархия только элементов стоит.
Естественно вывалились ошибке даже в запросе поскольку ЭтоГруппа отсутствует в таком варианте справочника.
Но все быстренько подлечилось и заработало.
Ну вот и отлично. Это и есть основная цель курса — не просто показать как делать, а научить. И где то подсказать про грабли :)
2 вопроса:
1.) Прозвучал про таймаут 5 минут при работе веб-сервисов. Это время за которой веб-сервис должен сработать? Но ведь за 5 минут даже мелкий обмен не сможет пройти между базами.
2.) Веб-сервисы в итоге обмениваются в принципе xml — а это текст, передачи от сервера клиента эти данные сжимаются (архивируются)?
1. это время на трансфер данных. А не на загрузку в телефоне.
2. для архивации — используется обмен в хранилище значений, об этом позже.
1.) Время 5 на трансфер. Т.е. как в пример если бы наш веб-сервис на сервере вычислял 10 минут среднее (это же не передача данных), то клиент в итоге получил бы значение среднего?
Была бы ошибка. 5 минут после вызова функции и до получения ответа. Но вроде как это изменить можно в свойствах апача. Но не уверен. Не красиво человека заставлять ждать даже 5 минут. не говоря уже о большей длительности.
1.Это время жизни одного соединения, если 1С не дождется ответа от веб-сервиса, то вывалится ошибка. Для этого при обмене данные можно передавать порциями, не превышая данный лимит. Это вообще плохой лимит. Пользователь с трудом поймет работает что-то или все зависло.
Здесь рекомендации как и на обычных системах — использовать порции + отображение прогресса.
2. Не подскажу, думаю что нет.
Смотрю видео с решением и появился вопрос:
Если бы структуры данных клиента и сервера были идентичными, на сколько оправдано при выгрузке использовать метод «ПолучитьОбъект()» все же он крайне замедляет процесс?
И одна приятная мелочь: вместо кода вида
спр.Код = стр.Код;
спр.Наименование = стр.Наименование;
Мне понравилось использовать метод ЗаполнитьЗначенияСвойств(…)
ЗаполнитьЗначенияСвойств(спр,стр);
При большом количестве реквизитов крайне облегчает работу, да и симпатичнее код становится.
Есть такое. Но в данном случае это больше проблем, так как возникла бы ошибка при заполнении ссылки.
та и так наглядней. Не все же знают что это:)
хм.. с сылкой проблем не было, а в случае табличной части товаров (ее заполнить он не может) метод выглядит так:
ЗаполнитьЗначенияСвойств(спр,стр,,»Товары»);
можно конечно и
ЗаполнитьЗначенияСвойств(спр,стр,,»Товары,Ссылка»);
для надежности.
Можно все, тут от стиля зависит. Просто потом начинаются проблемы при таком подходе.
Вот вы не учли еще реквизит ЭтоГруппа. Его тоже добавлять туда? Вобщем в итоге получится больше кода и менее понятного. чем те две строки.
И это правильная мысль! Поддерживаю.
УРА !!!, собрал мобильное приложение и инсталлировал на Андроид, правда через флешку. Очень полезные статьи в разделе «новые статьи по мобильной платформе 1С:Предприятие».
Вопрос Авторам, а есть/будет статья «как выложить приложение на андроид маркет» ?
а еще лучше: в аппаче удалить index.html, выложить туда всё что хочешь и не только запускай apk на планшете, но даже курсы смотри и pdf читай! :)
Думаю да, но пока еще рано.
Люди добрые, я отстаю уже на два дня, потому что не могу скачать клиент 1С по ссылке. Клиенты из других источников не работают как надо. Я уже несколько раз писал комментарий по поводу этой проблемы, но, к сожалению, безответно! Уважаемые модераторы (или кто там этим занимается), обновите пожалуйста ссылки или сделайте уже хоть что-нибудь!! на комментарий хоть ответье
Я может неправильно понял о чем вы, но мобильный клиент доступен либо по подписке ИТС, либо после покупки книги
Увы, мы ничего не можем вам ответить. Внимательно читайте форму первого дня, там четко люди писали — где, что и как.
Кроме этого — можете купить книгу, только откройте ее в формате epub и там будет ссылка на материалы.
У Вас есть подписка на ИТС и доступ к обновлениям ПП 1С?
Если да, то все можно скачать в Вашем личном кабинете. Качаете последние версии платформы 8.3 и мобильной платформы – вот и все.
Если ИТС нет, то ссылка приведена в самом конце теоретического материала первого дня: можете купить электронную версию книги
http://1c.ru/news/info.jsp?id=17891
“В этой книге откройте 2 страницу и там будет ссылка на раздаточные материалы (~500Мб). Скачайте их, и там будет учебная стационарная платформа 8.3.4 и мобильная платформа.”
Добрый день! По ссылке “Решение 2-го задания тренинга “Разработка мобильного приложения с нуля – за 7 вечеров!” нельзя оставлять комментарии, и не рабочая ссылка на материалы – выдает ошибку 404 и карту сайта.
см.комменты ниже, видимо страница с сылкой была опублкована автоматически без создания страницы с материалами
Добрый день!
Исправлено, заходите на страницу.
Кстати господа, по поводу логического рассуждения , а какие там могут быть материалы по решению ДЗ, если в самой статье «часть 1» было выложено решение в виде файла выгрузки
а там не решение, оказывается, там конфигурация которая создавалась во время лекции
А задачи то там разные :)
Господа, прошу прощения что пишу сюда. В новости «Решение 2-го задания тренинга “Разработка мобильного приложения с нуля – за 7 вечеров!” нельзя оставлять комменты, (хотел там написать) и не рабочая ссылка на материалы — выдает ошибку 404 и карту сайта (что то вроде этого)
Попробуйте еще раз. Только что успешно скачал все материалы
попробовал , та же ситуация.
Исправили.
аналогично: http://video.yandex.ru/users/evgeniuxp/view/12/
Не понятно как вы скачали материалы, или вы наверное имели ввиду первый день.
+1 Ошибка
«404 — Not Found
Looks like the page you’re looking for isn’t here anymore. Try using the search box or sitemap below.»
Аналогично
Столкнулся с такой проблемой: Данные с сервера получаю и передаю на клиента, а наоборот не получается. Если на сервере доступен запрос, то на мобильном клиенте нет. Ломаю голову каким образом собрать данные на клиенте для сереализации и передачи на сервер.
Нет запросов — используйте объектную модель чтения, она как раз поддерживается.
ВыборкаОбъектов = Справочники.ИмяСправочника.Выбрать();
По аналогии и для других объектов системы.
Выборку можно не только запросом делать, но и объектной моделью
Это самое веселое в мобильной платформе :)