Имя: Пароль:
1C
 
Не отображается картинка в присоединенные файлы
0 mralexshapovalov
 
05.06.25
09:24
Ребят,всем привет! Пытаюсь реализовать программно добавление картинки в "СправочникПрисоединенные Файлы" ,файл создает но не открывает,можете подсказать в чем проблема? Может что-то добавить нужно?

СтрокаBase64 = ПолучениеСтрокивВBase64; // Замените на вашу строку в формате Base64

ЗаказПокупателя = Документы.ЗаказПокупателя.НайтиПоНомеру("НомерЗаказа"); // Замените на нужный номер заказа


НовыйФайл = Справочники.СправочникПрисоединенныеФайлы.СоздатьЭлемент();
НовыйФайл.ВладелецФайла = ЗаказПокупателя;
НовыйФайл.Наименование = "Картинка";
НовыйФайл.Расширение = "jpg";
НовыйФайл.Автор = Пользователи.ТекущийПользователь();

ДвоичныеДанныеФайла = Base64Значение(СтрокаBase64);
НовыйФайл.Хранилище = Новый ХранилищеЗначения(ДвоичныеДанныеФайла, Новый СжатиеДанных(9));

НовыйФайл.Записать();
1 Волшебник
 
05.06.25
09:29
Может покажете реальный программный код?
2 mralexshapovalov
 
05.06.25
09:33
(1) А в чем он не реальный? Что в нем не так?
3 Fish
 
гуру
05.06.25
09:40
(2) Где данные самой картинки?
4 mralexshapovalov
 
05.06.25
09:46
(3) Получается идет преобразование СтрокаBase64  в двоичные данные. Это есть картинка. В 1С она отображается,но засунуть в хранилище не получается.
5 Fish
 
гуру
05.06.25
09:48
(4) А что у тебя в СтрокаBase64 ?
6 mralexshapovalov
 
05.06.25
09:57
(5) Если весь алгоритм. У меня есть ComОбъект,который делает скриншот и передает в 1С качестве строки который кодирован в Base64. Потом методом Base64Значение,получаю уже двоичные данные.
7 arsik
 
гуру
05.06.25
10:23
Может для начала записать двоичные данные в файл и проверить. Может этот файл и не открывается.
Ну или скинь сюда что внутри СтрокаBase64
8 mralexshapovalov
 
05.06.25
11:10
(7) Я сейчас единственное заметил,что НовыйФайл.Хранилище имеет тип ХранилищеЗначения,но в регистр ХранилищеФайлов не попадает. Может в этом есть какая-то связь?
9 Волшебник
 
05.06.25
11:11
(8) что за регистр ХранилищеФайлов?
10 Мультук
 
гуру
05.06.25
11:14
(8)

Наверняка в вашей конфе есть БСП

А значит есть общие модули "РаботаСФайлами"
А значит есть функция

Функция ДобавитьФайл(<Всякие параметры>)

А это в свою очередь означает, что "всё уже написано за нас"
11 craxx
 
05.06.25
11:19
(10)
Наверняка в вашей конфе есть БСП

не факт, может какая-то самописка ручной работы 17 века.
12 mralexshapovalov
 
05.06.25
11:28
Да,БСП. Только не понятно как можно добавить двоичный файл в данную функцию?
13 Мультук
 
гуру
05.06.25
11:46
(12)

Чуть выше данной функции должна быть написана куча текста.
Эта функция по идее в конфе должна использоваться (примеры)

Имя (и версия) конфигурации слишком интимное, чтобы называть его по имени?
Или всё же самописка ?
14 mralexshapovalov
 
05.06.25
11:50
(13) Спасибо тебе добрый человек!Все получилось!
15 DiMel_77
 
05.06.25
13:03
(12)  должно быть что-то типа такого:
                        СсылкаНаВладельца = Документы.ЗаказПокупателя.НайтиПоНомеру("НомерЗаказа"); // Ваш пример
                        ДвоичныеДанныеФайла = Base64Значение(СтрокаBase64); 
			АдресФайлаВоВременномХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла, Новый УникальныйИдентификатор);
			
			ПараметрыФайла = Новый Структура;
			ПараметрыФайла.Вставить("Автор",     Неопределено);
			ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное", Дата(0001,1,1));
			ПараметрыФайла.Вставить("ВладелецФайлов",     СсылкаНаВладельца);
			ПараметрыФайла.Вставить("ИмяБезРасширения",   "Картинка");
			ПараметрыФайла.Вставить("РасширениеБезТочки", "jpg");
			
			РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресФайлаВоВременномХранилище);
			
			УдалитьИзВременногоХранилища(АдресФайлаВоВременномХранилище);

16 mralexshapovalov
 
05.06.25
11:55
(15) Еще раз спасибо большое! Примерно все так и у меня получилось!