Заказы на доработку 1С (сервис удаленной работы)

Хранилище

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

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Валидный base64 изображения из 1С          
AIR Подменю пользователя
сообщение 21.04.15, 14:58
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Добрый день уважаемые коллеги.
Поясню проблему. Я сам являюсь backend разработчиком на php и просто помогаю решить проблему нашему 1С программисту. Сейчас пишу интернет магазин который плотно взаимодействует с 1С сервером через сервер очередей RabbitMQ.
Суть в том, что бы вся инфа по продуктам выгружалась в 1С и он её отправлял на севрер очередей откуда я своим сайтом её вытягиваю и раскладываю по своей логике. Система в общем то не трудная. И всё было хорошо, пока не столкнулись с передачей изображений.
Решили изображения слать из 1С на сервер очередей в формате base64, который я потом должен оттуда успешно вытащить и собрать в изображение на стороне php. И вроде как 1С кодирует изображения в base64 но эти данные на php просто не собираются в изображения, и валятся ошибкой функции. Проверял я эту base64 строку на валидность на множестве онлайн валидаторов base64 - то же самое. Говорит что неправильный base64.
Может кто делал когда то подобные манипуляции, подскажите как правильно сделать правильный base64 из изображения. Буду очень благодарен. Неделю бьёмся уже над этим )

logist Подменю пользователя
сообщение 21.04.15, 15:29
Сообщение #2

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Может покажите код 1С который кодирует в base64


Signature
Личные бесплатные консультации не даю, для этого есть форум!

AIR Подменю пользователя
сообщение 21.04.15, 15:33
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Я не силен в 1С и в коде не шарю. Но по логике, вроде как вот этот кусок.

ДвоичныеДанные = Тов.ХранилищеКартинок.ФайлКартинки.Получить();
  Строка64 = Base64Строка(ДвоичныеДанные);
  СтруктураДляКартинки.Вставить("pic", Строка64);

  СообщениеДляКартинкиJSON = json(СтруктураДляКартинки);


И этот base64 далее вставляется в массив JSON со всем остальными данными по изображению.

logist Подменю пользователя
сообщение 21.04.15, 15:37
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Что делает "json"? Покажите текст функции

Там где ДвоичныеДанные - могут быть не совсем двоичные данные картинки. Для теста попробуйте так:
ДвоичныеДанные = ОбъектКоторыйХарнитКартинку.ХранилищеЗначенияКартинки.Получить();
ИмяВрФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные .Записать(ИмяВрФайла);
Картинка = Новый Картинка(ИмяВрФайла);
СтрокаBase64 = Base64Строка(Картинка.ПолучитьДвоичныеДанные());


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Petre Подменю пользователя
сообщение 21.04.15, 15:39
Сообщение #5

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2903
Из: Київ, Україна
Спасибо сказали: 1145 раз
Рейтинг: 1225

Какой код кодирования изображения в base64?
Слишком долго читал.

Сообщение отредактировал Petre - 21.04.15, 15:43


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

AIR Подменю пользователя
сообщение 21.04.15, 15:46
Сообщение #6

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(logist @ 21.04.15, 15:37) *
Что делает "json"? Покажите текст функции

Там где ДвоичныеДанные - могут быть не совсем двоичные данные картинки. Для теста попробуйте так:
ДвоичныеДанные = ОбъектКоторыйХарнитКартинку.ХранилищеЗначенияКартинки.Получить();
ИмяВрФайла = ПолучитьИмяВременногоФайла();
ДвоичныеДанные .Записать(ИмяВрФайла);
Картинка = Новый Картинка(ИмяВрФайла);
СтрокаBase64 = Base64Строка(Картинка.ПолучитьДвоичныеДанные());



JSON шлется на сервер очередей для обработки сайтом. А одним из полей json является base64 представление изображения, которое мне нужно уже собрать на стороне сайта.

Цитата(Petre @ 21.04.15, 15:39) *
Какой код кодирования изображения в base64?
Слишком долго читал.

В смысле, код? Если Вы про реализацию, то я привел пример уже как наш 1С программист пытается это закодировать.

Petre Подменю пользователя
сообщение 21.04.15, 16:10
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2903
Из: Київ, Україна
Спасибо сказали: 1145 раз
Рейтинг: 1225

Цитата(AIR @ 21.04.15, 16:46) *
В смысле, код? Если Вы про реализацию, то я привел пример уже как наш 1С программист пытается это закодировать.

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

Тут действительно надо смотреть, чему равно ДвоичныеДанные.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

AIR Подменю пользователя
сообщение 21.04.15, 16:21
Сообщение #8

Молчаливый
*
Группа: Пользователи
Сообщений: 4
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Petre @ 21.04.15, 16:10) *
Просто я поздно ответил, и не заметил, что уже есть куча сообщений в теме.

Тут действительно надо смотреть, чему равно ДвоичныеДанные.



А есть какой то стандартный алгоритм по шифрованию картинок в base64? Может подскажете, если не тяжело?

Petre Подменю пользователя
сообщение 21.04.15, 16:33
Сообщение #9

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2903
Из: Київ, Україна
Спасибо сказали: 1145 раз
Рейтинг: 1225

Сделайте просто.
Сохраните картинку в файл.
Получите строку и проверьте ее на валидность:
Картинка = Новый ДвоичныеДанные("c:\1.png");
СтрокаКоторуюНадоПроверитьНаВалидность = Base64Строка(Картинка);

Если все норм, значит надо искать проблему в коде в 1с.


Signature
Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія".

oleshiy Подменю пользователя
сообщение 26.09.17, 12:31
Сообщение #10

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Спасибо сказали: 0 раз
Рейтинг: 0

Довелось столкнуться с подобной проблемой. Выяснилось, что при конвертации в base64 1c может добавлять (не уверен, что это происходит всегда, проявилось при конвертации jpeg-ов) к итоговой base64 строке символы перевода строки и возврата каретки. После их исключения файлы декодируются нормально.

Бэйз64Строка = Base64Строка(ДвоичныеДанные);
Бэйз64Строка = СтрЗаменить(Бэйз64Строка, Символы.ВК, "");
Бэйз64Строка = СтрЗаменить(Бэйз64Строка, Символы.ПС, "");
    
Возврат Бэйз64Строка;

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 29.03.24, 11:15
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!