|
Как проще разобрать такую строку? [ решено через PHP unserialize() ] | ☑ | ||
---|---|---|---|---|
0
Гений 1С
гуру
30.06.22
✎
19:48
|
Строка такая: a:3:{s:3:\"zip\";s:6:\"143982\";s:8:\"selected\";b:1;s:9:\"mail_type\";s:13:\"ONLINE_PARCEL\";}
Нужно было срочно, поэтому написал сам фукнцию, а вообще что это за формат и как его разбирать? Вроде на JSON не похоже. Функция РазбитьСтрокуФорматаДвоеточий(Знач Строка) //Пример строки: //a:3:{s:3:\"zip\";s:6:\"143982\";s:8:\"selected\";b:1;s:9:\"mail_type\";s:13:\"ONLINE_PARCEL\";} Строка = СтрЗаменить(Строка, "\""", ""); Р = Новый Структура("zip, mail_type"); М = СтрРазделить(Строка, ":;", ложь); Пред1 = Неопределено; Пред2 = Неопределено; Пред3 = Неопределено; Для Каждого Эл Из М Цикл Если Пред3 = "zip" Тогда Р.Вставить("zip", СтрЗаменить(Эл, """", "")); ИначеЕсли Пред3 = "mail_type" Тогда Р.Вставить("mail_type", СтрЗаменить(Эл, """", "")); КонецЕсли; Пред3 = Пред2; Пред2 = Пред1; Пред1 = Эл; КонецЦикла; Возврат Р; КонецФункции |
|||
11
Гений 1С
гуру
30.06.22
✎
20:55
|
(8) там еще вложенность есть {}
|
|||
12
Гений 1С
гуру
30.06.22
✎
20:55
|
(10) Так себе подсказки
|
|||
13
Ненавижу 1С
гуру
30.06.22
✎
21:02
|
Начинать надо с того, где ты это взял?
|
|||
14
Волшебник
30.06.22
✎
21:28
|
(13) От Почты России. Написано в сабже.
|
|||
15
Ненавижу 1С
гуру
30.06.22
✎
21:32
|
(14) я получал от почты нормальный JSON, а не вот это вот всё, поэтому и спрашиваю предисторию
|
|||
16
Волшебник
30.06.22
✎
21:32
|
(15) Ну ждём автора-художника-гения...
|
|||
17
youalex
01.07.22
✎
03:56
|
(0) Выкладывай на Хабр
|
|||
18
Маленький Вопросик
01.07.22
✎
04:15
|
код не смотрел, но проще разобрать через кодсимвола
|
|||
19
Anarki
01.07.22
✎
06:01
|
В одной теме сразу две легенды
|
|||
20
d_monah
01.07.22
✎
06:34
|
Хм,дочка почты России сейчас активно набирает прогов на проект(мне свалилось тоже),если Гения берут в команду,я отказываюсь!!!Вроде тольуо стабилизировались,и вот на тебе..
|
|||
21
Anarki
01.07.22
✎
07:25
|
(0) решается примерно так:
В аутлуке пишешь авторам: привет, могу с кем нибудь поговорить из технических работников? И по телефону, в режиме реального времени обговариваете форматы. А если контора в усмерть бюрократы. Тогда именно такую стойку через регулярные выражения делать (не 1с). Но лучше тупо договориться с то стороной |
|||
22
Конструктор1С
01.07.22
✎
07:42
|
(2) н-да. А пользоваться документацией и гуглить не пробовал?
|
|||
23
Ненавижу 1С
гуру
01.07.22
✎
07:45
|
(22) Серёжа программирует и вообще "Нужно было срочно", какое место на инфостарте?
|
|||
24
d_monah
01.07.22
✎
07:46
|
(22) А что,и так можно?Спасибо,буду пробовать.Или это только для гениев?
|
|||
25
Конструктор1С
01.07.22
✎
07:47
|
(23) никакого учётка давно проё, новая совершенно голая
|
|||
26
d_monah
01.07.22
✎
07:47
|
(23) Запомните раз и навсегда.ЧЕТВЕРТОЕ!Даже я со старческим своим склерозом помню.
|
|||
27
Fish
01.07.22
✎
08:28
|
(26) "ЧЕТВЕРТОЕ!" - А с какой стороны?
|
|||
28
d_monah
01.07.22
✎
08:35
|
(27) Не будьте таким душным,тем более гений про это не говорил.
|
|||
29
Гений 1С
гуру
01.07.22
✎
08:36
|
(15) этот ответ от почты россии передает веб-программист интернет-магазина в розницу при обмене розницы с сайтом.
|
|||
30
Гений 1С
гуру
01.07.22
✎
08:36
|
(22) не нюхал ты Уася, реальной жизни
|
|||
31
Ненавижу 1С
гуру
01.07.22
✎
08:37
|
(29) прямо веб-программист лично передает?
|
|||
32
Ненавижу 1С
гуру
01.07.22
✎
08:37
|
(29) какой запрос посылали, что пришел такой ответ?
|
|||
33
d_monah
01.07.22
✎
08:41
|
(31) Не лично,носит в Почту россии и бандеролью с описью.
|
|||
34
Ненавижу 1С
гуру
01.07.22
✎
08:54
|
(33) не совместимое АПИ https://fixinchik.ru/russkaya-pochta-chto-ty-natvorila/
|
|||
35
mikecool
01.07.22
✎
09:11
|
(34) он даже в почтовые ящики вбрасывает...
|
|||
36
Kassern
01.07.22
✎
09:12
|
(30) (0) У Почты России офигенное API и отзывчивая поддержка. Когда я внедрял интеграцию с ней, вообще проблем не было, если были вопросы, то в течение дня (порой часов) их тех поддержка отвечала. Я так же не понимаю, откуда вы эту строку дернули.
|
|||
37
Kassern
01.07.22
✎
09:13
|
ну офигенное, я конечно загнул, но вполне просто с ним разобраться и работать.
|
|||
38
Гений 1С
гуру
01.07.22
✎
09:14
|
(36) я уже писал - это не совсем почта россии, это ответ от почты россии сайту. сайт сохраняет его в своей БД и потом передает в 1С по XML
|
|||
39
Гений 1С
гуру
01.07.22
✎
09:14
|
(37) Ну я разобрался и работаю. ;-)
Кстати, прикольно, но в двух реализациях обмена с почтой россии видел аббревиатуру ШПИ, хотя в API такого нет. Кто-то у кого-то передирает? |
|||
40
d_monah
01.07.22
✎
09:15
|
(34) Ну,ну это чересчур!))),был бы он сильным просто сломал бы ящик.
|
|||
41
Гений 1С
гуру
01.07.22
✎
09:15
|
(32) пользователь на сайте выбирает адрес и тариф, веб-программмист передает в 1С дополнительно индекс и тариф.
|
|||
42
Kassern
01.07.22
✎
09:15
|
(38) ну так ответ-то должен быть по api и с четкой структурой, которая задокументирована. Получается, что уже сайт таким образом сконвертировал ответ от почты, а не она его таким выплюнула.
|
|||
43
Гений 1С
гуру
01.07.22
✎
09:15
|
(40) я перешел на ЭДО в знак протеста
|
|||
44
Гений 1С
гуру
01.07.22
✎
09:15
|
(42) все так.
|
|||
45
mikecool
01.07.22
✎
09:16
|
(38) а причем тогда почта России?
|
|||
46
Kassern
01.07.22
✎
09:17
|
(44) зачем тогда писать, что строка от почты россии? Вы тем самым ввели людей в заблуждение. По факту, это строка от левого сайта, а откуда она ее собрал и состряпал в контексте задачи уже не важно
|
|||
47
Ненавижу 1С
гуру
01.07.22
✎
09:21
|
(38) а нормальное АПИ использовать нельзя? без вот этих вот сайтов?
|
|||
48
Kassern
01.07.22
✎
09:23
|
(47) как я понял, в контексте хотелки гени, это не нужно. Надо лишь пнуть кодера со стороны сайта, чтобы грузил данные в 1с с сайта в нормальном формате. Смысл с 2х мест стучать на почту, когда сайт уже все получил?
|
|||
49
PLUT
01.07.22
✎
09:26
|
слоган Почты России: еще не всё потеряно!
|
|||
50
Ненавижу 1С
гуру
01.07.22
✎
09:30
|
(48) смысл получать данные в 1С через сайты, если есть АПИ Почты России?
|
|||
51
Гений 1С
гуру
01.07.22
✎
09:31
|
(47) где? Пользователь делает заказ на сайте именно и потом уже сайт сообщает мне, какой тариф и адрес выбрал пользователь. Так что в данном случае не понимаю, почему ты завел канитель про нормальное API
|
|||
52
Гений 1С
гуру
01.07.22
✎
09:32
|
(50) потому что клиент делает заказ на сайте, а не в 1С, гыгыгы. Это же элементарно, Ватсон
|
|||
53
Kassern
01.07.22
✎
09:33
|
(50) да все просто. Покупатель на сайте делает заказ и выбирает нужный способ доставки, сайт стучит на почту передает адрес с весом, та ему возвращает стоимость доставки. Эти данные он показывает покупателю. Он делает заказ, который уже грузиться в 1с. Так вот в этом заказе и нужно передать данные в нормально формате полученные с почты. Это будет лучше чем потом 1ска еще раз постучится и снова будет получать стоимость доставки.
|
|||
54
Kassern
01.07.22
✎
09:34
|
(52) в любом случае потом из 1ски придется не раз еще почту России дергать (выгрузка посылки, этикетки, пререрасчет доставки и т.д.)
|
|||
55
Kassern
01.07.22
✎
09:34
|
Поэтому API со стороны 1с в любом случае желательно.
|
|||
56
Kassern
01.07.22
✎
09:35
|
да та же формализация адреса удобная штука у почты
|
|||
57
Ненавижу 1С
гуру
01.07.22
✎
09:36
|
(52) я не могу читать мысли твоих тараканов
|
|||
58
Гений 1С
гуру
01.07.22
✎
09:39
|
(57) читай мои комменты, я уже раз пять описал схему.
|
|||
59
Гений 1С
гуру
01.07.22
✎
09:40
|
(54) это да, там используется API, ага
|
|||
60
Гений 1С
гуру
01.07.22
✎
09:40
|
(53) тут вопрос не в том лучше или хуже, а в том, чтобы пользователю доставили именно тем тарифом и по той цене, что ему сказал сайт.
Это и для СДЭК актуально. Пока не ковырялся в этом говнище, и не знал, что это важно. |
|||
61
Ненавижу 1С
гуру
01.07.22
✎
09:41
|
(58) в топике ничего не было, а это говорит об умении формулировать задачи
|
|||
62
Гений 1С
гуру
01.07.22
✎
09:42
|
(61) надо читать не только топик, но и уточнения. Ну или не читать, если моё умение формулировать задачи не устраивает. ага
|
|||
63
Fragster
гуру
01.07.22
✎
09:42
|
||||
64
Fragster
гуру
01.07.22
✎
09:42
|
итого - сделать прокладку на php, которая вернет json
|
|||
65
Конструктор1С
01.07.22
✎
09:46
|
(30) в отличии от тебя я читаю доку
|
|||
66
PLUT
01.07.22
✎
09:50
|
(63) что-то не на одноэсном. эта сложна. вот в (0) всё панятно
|
|||
67
Конструктор1С
01.07.22
✎
09:50
|
(47) где Г1С и где нормально. "Делать без костылей, писать код нормально, читать документацию?.. Да ну, бред какой-то"
|
|||
68
Ненавижу 1С
гуру
01.07.22
✎
09:52
|
(67) "в бюджет не впишемся" ))
|
|||
69
PLUT
01.07.22
✎
09:52
|
(66) магия! нажал Run code и
array ( 'zip' => '143982', 'selected' => true, 'mail_type' => 'ONLINE_PARCEL', ) |
|||
70
Kassern
01.07.22
✎
09:55
|
ну хочется ТСу через гланды информацию получать для 1с, ну бог с ним. По мне так, если есть возможность пнуть кодера со стороны сайта, то это лучший вариант. В противном случае, я бы с 1ски API почты дергал. Парсить внутрянку перехваченных ответов сайта - это какой-то изврат
|
|||
71
PLUT
01.07.22
✎
09:56
|
(70) ну в (0) похоже сериализованная пыхыпыщная строка (63) на сайте хранится? пинать нужно пыхаря на сайте, чтобы жысон гению возвращал?
|
|||
72
Kassern
01.07.22
✎
09:58
|
(71) конечно пинать пыхаря, чтобы он в json/xml выгружал данные о заказе, в том числе стоимость доставки, траспортную компанию, индекс и т.д.
|
|||
73
Fragster
гуру
01.07.22
✎
10:21
|
скорее всего там просто заменить serialize на json_encode
|
|||
74
Гений 1С
гуру
01.07.22
✎
10:32
|
(63) офигеть. ;-) значит на сейте кодит любитель пыхапе.
|
|||
75
Гений 1С
гуру
01.07.22
✎
10:33
|
(73) раз это умеет разобрать пыхапе, то и 1с сможет, уже нащупали формат, отлично
|
|||
76
Kassern
01.07.22
✎
10:34
|
(75) походу это не излечимо...
|
|||
77
Гений 1С
гуру
01.07.22
✎
10:44
|
(70) вот мне чисто инетерсно, что ты собрался с Почты дергать, если выбранный пользователем тариф и адрес хранятся на сайте интернет-магазина? Вот жутко любопытно.
|
|||
78
Гений 1С
гуру
01.07.22
✎
10:46
|
в общем, благодаря сообчеству мы формат строки определили - это пышпэшная сериализованная структура.
Можно поискать готовую функцию конвертации такой структуры в структуру 1С, но пожалуй не буду, оставлю так. Да, пыхапыря сайта нагнуть сложно - их там два. Один плагины прикручивает, другой в 1С передает. Проще выцепить что дают. |
|||
79
Кирпич
01.07.22
✎
10:48
|
Чо там разбирать. СтрНайти и в кассу. Начали тут PHP.... API... Как разобрать....
|
|||
80
Волшебник
01.07.22
✎
10:50
|
(63) Гениально
|
|||
81
Fragster
гуру
01.07.22
✎
10:53
|
(78) -> (73)
|
|||
82
Fragster
гуру
01.07.22
✎
10:53
|
поменять вызываемую функцию
|
|||
83
Fish
01.07.22
✎
10:55
|
Так что? Гениальная функция из (0) оказалась не нужна? Ну вот, так всегда - "на самом интересном месте..." (с)
|
|||
84
Kassern
01.07.22
✎
10:57
|
(77) я бы дернул разработчика сайта, чтобы он мне выгрузил данные заказа корректно, а не изобретал велосипеды.
|
|||
85
Kassern
01.07.22
✎
10:58
|
там делов на считанные минуты, добавить в готовую выгрузку доп поля по заказу
|
|||
86
Гений 1С
гуру
01.07.22
✎
11:02
|
(85) всегда ржу, когда слышу "делов на считанные минуты".
|
|||
87
Гений 1С
гуру
01.07.22
✎
11:03
|
(83) в смысле не нужна? Готовой то функции Unserialize на 1С нет. Так что очень даже нужна и работает. ;-)
|
|||
88
Гений 1С
гуру
01.07.22
✎
11:03
|
(84) да там сложно дергать. Удёргаешься
|
|||
89
Kassern
01.07.22
✎
11:04
|
(86) я по личному опыту сужу, множество обменов с сайтами написал и с подобными задачами часто сталкивался. Обычно адекватные разработчики сайтов попадались, оперативно вопрос решали.
|
|||
90
Kassern
01.07.22
✎
11:07
|
(88) ну так есть хозя, который денюшку платит этому разрабу, через него и дергается, раз на прямую не можешь. Надо разграничивать задачи, по факту это не задача для 1с, пытаться выхватить у сайта инфу, как там заказали, а работа для разработчика сайта, чтобы он доработал обмен со своей стороны и выгрузил данные корректно. Тем более интеграция с ТК (транспортными компаниями) у него уже есть, данные у него в базе хранятся (как заказ был сделан), все что осталось в текущий обмен добавить пару тегов и все.
|
|||
91
Гений 1С
гуру
01.07.22
✎
11:16
|
(84) про разработчика понятно, но ты там собирался АПИ Почты дергать, вот я и спросил. АПИ Почты тут дергать нет смысла, ОК
(90) Это прописные истины. Но в данном случае проще разобрать чем дернуть. |
|||
92
Гений 1С
гуру
01.07.22
✎
11:17
|
(89) в IT нет "считанных минут", пора уже это понимать. Как минимум, тестировать надо после каждой такой "пятиминутки"
|
|||
93
Kassern
01.07.22
✎
11:20
|
(92) "считанных минут" - это фактическое время, чтобы добавить тег в выгрузку с данными, которые легко из базы получить. Особенно, когда у тебя код с выгрузкой перед глазами открыт. Чуть больше времени нужно, чтобы этот тег корректно в 1с загрузить.
|
|||
94
Fragster
гуру
01.07.22
✎
11:28
|
(88) лучше, конечно, потратить минимум несколько часов на создание глючного велосипеда (а тестировать ты его будешь на соответствие спецификации? сколько это займет? один рабочий день? два?), чем поменять/добавить такой же но другой эндпоинт с использованием другой типовой функции
|
|||
95
Kassern
01.07.22
✎
11:29
|
(94) фиксин -логика, создать проблему и героически ее решить. При этом выкатить клиенту счет за потраченные часы.
|
|||
96
PLUT
01.07.22
✎
11:31
|
(92) с тебя 2,5 килорубля за час работы одноэсника, ггггыы
УФ: Как в поле ввода (колонка таблицы) активизировать выбор значения? |
|||
97
Kassern
01.07.22
✎
11:32
|
хотя Хозя мог по факту заплатить час работы программисту сайта и час работы 1снику и сделать все красиво, если бы ТС это предложил. И час тут не фактическое время, а минимальное для оплаты.
|
|||
98
Kassern
01.07.22
✎
11:32
|
Можно даже сделать универсально для всех ТК с которыми обмен, это будет еще лучше
|
|||
99
Kassern
01.07.22
✎
11:33
|
В итоге получится, ТС что-то там без ведома разраба сайта стянул, а разраб через недельку взял, да формат поменял, так как не в курсе, что 1ска там что-то дергает из внутрянки. А потом хозя волосы на груди рвет, почему обмен заказов встал, а ТС в отпуск свалил)
|
|||
100
Кирпич
01.07.22
✎
11:39
|
а у меня гугл работает
https://reks.biz/?p=2368 |
|||
101
Кирпич
01.07.22
✎
11:50
|
Но там тоже какой то гений писал. Так что лучше (0)
|
|||
102
Kassern
01.07.22
✎
11:52
|
(101) (100) не открывается ссылка...
|
|||
103
Кирпич
01.07.22
✎
11:56
|
(102) позвони админу :)
|
|||
104
Конструктор1С
01.07.22
✎
11:57
|
(99) ТС постановит: "ггг... кризис вайти"
|
|||
105
Кирпич
01.07.22
✎
11:57
|
Код отсюда https://reks.biz/?p=2368
|
|||
106
Кирпич
01.07.22
✎
11:59
|
только оно не понимает экранирование ковычки. нужно сначала заменить все \"
|
|||
107
PLUT
01.07.22
✎
12:05
|
(105) надо просто подождать выхода новой платформы. наверн добавят скоро (по просьбам?)
джысона тоже когда-то в платформе не было, был программный парсер |
|||
108
Гений 1С
гуру
10.07.22
✎
19:37
|
Кстати, нашел сериализатор/десерилазатор PHP: https://reks.biz/?p=2368
|
|||
109
Гений 1С
гуру
10.07.22
✎
19:37
|
(100) о, держи пять, параллельно нашли
|
|||
110
Гений 1С
гуру
10.07.22
✎
19:55
|
Правда, пришлось сперва убирать экранированные кавычки:
Функция ДесериализоватьРНРСЭкранированнойКавычкой(Знач СтрокаСериализации) Экспорт СтрокаСериализации = СтрЗаменить(СтрокаСериализации, "\""", """"); Возврат ДесериализоватьРНР(СтрокаСериализации); КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |