|
Несоответствие типов, параметр 1 | ☑ | ||
---|---|---|---|---|
0
solbadguy
05.07.18
✎
08:23
|
Здравствуйте уважаемые знатоки, проблема следующая -
Создаю конфигурацию, из которой будет цеплять данные мобильный клиент на мобильном устройстве соответственно. Добился того, что при нажатии на волшебную кнопку данные из мобильного устройства грузит в основную базу. Из центральной базы в мобильное устройство - нет. В ступор встал конкретно, изейший вопрос по-любому. Видимо не хватает Готовый код не прошу, прошу тыкнуть носом. Спасибо. |
|||
1
solbadguy
05.07.18
✎
08:25
|
Имеется общая команда.
&НаКлиенте Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды) Если ВыполнитьСинхронизациюНаСервере() Тогда Сообщить("Синхронизация прошла успешно!"); Иначе Сообщить("При синхронизации произошла ошибка!"); КонецЕсли КонецПроцедуры &НаСервере Функция ВыполнитьСинхронизациюНаСервере() Попытка ВСОпределение = новый WSОпределения("http://192.168.111.108/Web/ws/WebОбмен.1cws?wsdl"); ВСервис = ВСОпределение.Сервисы.Получить("Data", "WebОбмен"); ВТочкаВхода = ВСервис.ТочкиПодключения.Получить("WebОбменSoap"); ВОперация = ВТочкаВхода.Интерфейс.Операции.Получить("Синхронизация"); Данные = новый ХранилищеЗначения(ЗарегистрироватьВыгрузку(), новый СжатиеДанных(9)); ДанныеXDTO = ВСОпределение.ФабрикаXDTO.Создать(ВОперация.Параметры.Получить("Данные").Тип, Данные); ВСПрокси = новый WSПрокси(ВСОпределение, "Data", "WebОбмен", "WebОбменSoap"); Ответ = ВСПрокси.Синхронизация(ДанныеXDTO); ПринятьИзмененияПоПлану(Ответ.Получить()); Возврат Истина Исключение Сообщить(ОписаниеОшибки()); Возврат Ложь; КонецПопытки; КонецФункции &НаСервере Процедура ПринятьИзмененияПоПлану(СтрокаСообщения) ЧтениеХМЛ = Новый ЧтениеXML; ЧтениеХМЛ.УстановитьСтроку(СтрокаСообщения); ЧтениеСообщения = ПланыОбмена.СоздатьЧтениеСообщения(); ЧтениеСообщения.НачатьЧтение(ЧтениеХМЛ); Пока ВозможностьЧтенияXML(ЧтениеХМЛ) Цикл Данные = ПрочитатьXML(ЧтениеСообщения.ЧтениеXML); Если НЕ Данные = Неопределено Тогда Данные.ОбменДанными.Отправитель = ЧтениеСообщения.Отправитель; Данные.ОбменДанными.Загрузка = Истина; Данные.Записать(); КонецЕсли; КонецЦикла; ЧтениеСообщения.ЗакончитьЧтение(); КонецПроцедуры &НаСервере Функция ЗарегистрироватьВыгрузку() ЗаписьХМЛ = новый ЗаписьXML; //ЗаписьХМЛ.ОткрытьФайл(ЗаписьХМЛ); ЗаписьХМЛ.УстановитьСтроку(); ЗаписьСообщения = ПланыОбмена.СоздатьЗаписьСообщения(); Узел = ПланыОбмена.МобильныйОбмен.НайтиПоКоду("ЦБ"); ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ, Узел); ВыборкаИзменений = ПланыОбмена.ВыбратьИзменения(Узел, ЗаписьСообщения.НомерСообщения); Пока ВыборкаИзменений.Следующий() Цикл ОбъектОбмена = ВыборкаИзменений.Получить(); ЗаписатьXML(ЗаписьХМЛ, ОбъектОбмена); КонецЦикла; ЗаписьСообщения.ЗакончитьЗапись(); Возврат ЗаписьХМЛ.Закрыть(); КонецФункции |
|||
2
butterbean
05.07.18
✎
08:25
|
Пожалуйста, а в чем конкретно проблема-то?
|
|||
3
Не кассир
05.07.18
✎
08:26
|
(1) И?
|
|||
4
solbadguy
05.07.18
✎
08:26
|
{ОбщаяКоманда.ВыполнитьСинхронизациюСБД.МодульКоманды(61)}: Ошибка при вызове метода контекста (НачатьЗапись): Недопустимое значение параметра (параметр номер '2')
|
|||
5
Не кассир
05.07.18
✎
08:27
|
(4) Какие буквы не понятны?
|
|||
6
solbadguy
05.07.18
✎
08:27
|
Узел = ПланыОбмена.МобильныйОбмен.НайтиПоКоду("ЦБ");
ЗаписьСообщения.НачатьЗапись(ЗаписьХМЛ, Узел); вот этот кусок неправильный. Ещё заметил что в обратную сторону обмен тож идёт, однако работает только со справочниками у которых стандартные реквизиты. Алсо создаёт автоматом код ЦБ0001, ЦБ0002, ... |
|||
7
Не кассир
05.07.18
✎
08:29
|
(6) И?
|
|||
8
solbadguy
05.07.18
✎
08:29
|
Пробовал добавил ещё 1 переменную, найти покоду МУ (мобильноеустройство) и в плане обмена 2 кода прописать. Не работает вообщем. Признаюсь делал не сам - стоит задача, цепляю из сети. Однако с десяток примеров уже разобрал, каждый раз доходит до этой ошибки - дальше не могу сдвинуться.
Вот нервы сдали - зарегистрировался. |
|||
9
Не кассир
05.07.18
✎
08:30
|
(8) Поздравить с регистрацией?
|
|||
10
butterbean
05.07.18
✎
08:31
|
(8) отладчиком пользоваться умеешь? посмотри что у тебя во втором параметре (Узел). Скорее всего там ничего, т.к. по коду ничего не найдено
|
|||
11
Не кассир
05.07.18
✎
08:31
|
(10) зачем интригу ломаешь?
|
|||
12
solbadguy
05.07.18
✎
08:37
|
(10) Точно - пусто. А как бы так назначить параметр если код автоматически ставится ЦБ0000001, ЦБ0000002 (точный регистр сейчас указал, не повторение)
И заметил ещё что повторяются значения, т.е он не добавляет новое при выгрузке ИЗ мобильного устройства, а просто создаёт позицию с этим же кодом и неважно что он уже существует |
|||
13
solbadguy
05.07.18
✎
08:38
|
т.е как я понимаю он берёт моё "ЦБ" и добавляет н-ное кол-ви нулей, но понимания это не особо даёт
|
|||
14
Не кассир
05.07.18
✎
08:38
|
(12) Ты перечитай, что написал. И учись четко формулировать.
|
|||
15
solbadguy
05.07.18
✎
08:48
|
не догоняю, ну никак. Посоветуйте где почитать хотя бы если вам всё ясно
|
|||
16
Не кассир
05.07.18
✎
08:49
|
(15) Читай где угодно, разницы нет. А вот , что ты хочешь почитать?
|
|||
17
1Сергей
05.07.18
✎
08:59
|
Смотри планы обмена
|
|||
18
solbadguy
06.07.18
✎
04:24
|
разобрался, кнопка на платформе-сервере с этим кодом и не должна работать. Другой вопрос, существует ли похожая процедура - "При открытии мобильного клиента" ?
Хочу реализовать обновление не с нажатия кнопки в клиенте, а при открытии, в этихвашихинтернетах не нашёл полезной информации. Была идея создать константу, не включать ее в план обмена, и построить условие в модуле конфигурации, обратиться к общей команде. Однако пишут что программно к общей команде не получится обратиться |
|||
19
Не кассир
06.07.18
✎
05:47
|
(18) Можно попробовать еще поучиться прежде чем писать.
|
|||
20
solbadguy
06.07.18
✎
06:23
|
(19) Спасибо Кэп!
А если серьёзно, неужели никто не сталкивался? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |