Имя: Пароль:
1C
 
Получить фото номенклатуры из другой базы.
,
0 vikadruzhok
 
25.09.15
17:04
Есть две базы с одинаковой конфигурацией. В одной базе учет по Украине, во второй - по России. Номенклатура идентична в базах, за исключением, что в Украине картинки есть, а в России только ссылки на  них. Создаю отчет на СКД - нужно выводить фото. В Украине проблем нет - фото есть, а в России - ... фото нужно получить при выводе отчета с Украинской базы. Помогите, пожалуйста.
4 Fragster
 
гуру
25.09.15
17:22
проще всего наладить обмен
6 vikadruzhok
 
25.09.15
17:31
нет, это так задумано. в базе больше 30 000 номенклатур, и в каждой номенлатуре до 10 фото.
7 Fragster
 
гуру
25.09.15
17:34
(6) тогда надо хранить изображения на внешнем ресурсе (тома хранения), доступном из обоих мест, и обмениваться только элементами справочников номенклатуры и связанные файлы, версии (плюс сопутствующая инфа: частично тома хранения, например)
10 Aloex
 
25.09.15
17:37
(0) Так а в чем сложность?
12 vikadruzhok
 
25.09.15
17:40
сложность... как мне с базы №1 получить изображение в базе №2
13 Fragster
 
гуру
25.09.15
17:41
(12) нужно, чтобы изображения хранились во внешней папке, а не внутри базы. в БСП это называется "Тома хранения файлов"
14 Fragster
 
гуру
25.09.15
17:42
ну, можно придумать, конечно, всякие извращенные варианты типа передачи двоичных данных картинок через http-сервисы, но это будет давать нагрузку сразу на две базы
15 vikadruzhok
 
25.09.15
17:45
Ваш вариант реализовать "Тома хранения файлов" к сожалению невозможно. Фактически меня устроит вариант выгрузки этого файла в общую папку, а потом вторая база его заберет и удалит.
16 vikadruzhok
 
25.09.15
17:45
У меня все согласны, что это будет работать очень долго, но без фото они жить не могут
17 DGorgoN
 
25.09.15
17:47
(16) Ну а просто хранить во второй базе? Зачем изобретать велосипеды?
18 stix2010
 
25.09.15
17:49
и в чем проблема?
19 hhhh
 
25.09.15
17:49
(16) хранить картинки в обеих базах
20 vikadruzhok
 
25.09.15
17:50
больше 100 000? и номенклатуры добавляется каждый день...
21 Web00001
 
25.09.15
17:51
Вариант раз:
Функция в скд которая получает фото из второй базы, через веб сервис, или что то еще. Это будет ужасно.

Вариант два самый логичный фотки и там и там.

Вариант три: btsync и хранение фоток в папке которая будет синхронизироваться
22 vikadruzhok
 
25.09.15
17:52
от меня хотят вариант раз
23 hhhh
 
25.09.15
17:52
(20) ну и что? до 100 миллионов можете не париться.
24 vikadruzhok
 
25.09.15
17:52
и этот вариант я реализовать не могу
25 Web00001
 
25.09.15
17:53
Тут можно извращаться как угодно, но что бы показать фотки пользователю, они в этот момент должны быть на компьютере.
26 vikadruzhok
 
25.09.15
17:55
То есть я выгружаю эти фотки на компьютер того, кто формирует отчет и потом только подставляю в отчет?
27 vikadruzhok
 
25.09.15
17:55
Вы простите за глупые вопросы
28 Web00001
 
25.09.15
17:56
(24)Не можешь реализовать web сервис, который будет по запросу отдавать нужную фотку? Можно придумать регл задание или что то рядом, которое раз в секунду будет искать файл с ссылками и в ответ оставлять папку с картинками. Но долго это все работать будет, лучше вариант три.
29 hhhh
 
25.09.15
17:56
(26) конечно. Это мама не горюй будет. По часу отчет будет лопатить.
30 vikadruzhok
 
25.09.15
17:57
Не можешь реализовать web сервис, который будет по запросу отдавать нужную фотку?
31 vikadruzhok
 
25.09.15
17:57
да, не могу
32 vikadruzhok
 
25.09.15
17:58
этому отчету ничего не страшно, если изначально они хотели три отчета, то теперь в один 10 - причем данные с двух баз
33 vikadruzhok
 
25.09.15
17:58
фото с другой базы - это только начало
34 Web00001
 
25.09.15
17:59
(26)нууу надо начинать читать информацию по этому поводу, ее много и здесь и вообще в инете.
35 vikadruzhok
 
25.09.15
17:59
web сервис... куда он положит эту фотку? в папку которую я скажу?
36 Tatitutu
 
25.09.15
18:00
подключиться в базе 2
получить картинку
запихнуть в Base64Строка
в базе 1 получить
(можно и сохранить и показать)
37 vikadruzhok
 
25.09.15
18:00
Функция UnloadImageToFileResource(GUID, FileName)
    Результата = ВыгрузитьИзображениеНаФайловыйРесурс(GUID,FileName);
    Возврат Результата;
КонецФункции  



Функция ВыгрузитьИзображениеНаФайловыйРесурс(ГУИД,ПутьКФайлу)
    Попытка
        УИД = Новый УникальныйИдентификатор(ГУИД);
        Если УИД = Неопределено Тогда
            Возврат "Не верный уникальный идентификатор";
        КонецЕсли;
        Фото = Справочники.ХранилищеДополнительнойИнформации.ПолучитьСсылку(УИД);
        ВременныйФайл = ПолучитьИмяВременногоФайла("jpg");
        Картинка = Фото.Хранилище.Получить();
        Картинка.Записать(ВременныйФайл);  
        КопироватьФайл(ВременныйФайл,ПутьКФайлу);
        Результат = "";
    Исключение
        Результат = ОписаниеОшибки();    
    КонецПопытки;
    Возврат Результат;
КонецФункции
38 Fragster
 
гуру
25.09.15
18:01
а эти "базы" - они в одной сети?
39 hhhh
 
25.09.15
18:02
(36) да, и это в цикле 100000 раз, для каждой номенклатуры.
40 vikadruzhok
 
25.09.15
18:02
я ко второй базе подключаюсь через веб-сервер
41 vikadruzhok
 
25.09.15
18:02
отчет формируют не по всей номенклатуре сразу
43 Fragster
 
гуру
25.09.15
18:13
номенклатуры по какому полю синхронизируются? по гуидам?
45 vikadruzhok
 
15.10.15
15:07
(36) Спасибо за совет. Я не поняла изначально, что Вы имели в виду. Только когда разобралась с web-сервисами все стало на свои места.
46 vikadruzhok
 
15.10.15
15:09
Сделала так:

Написала web-сервис.

Функция GetFoto(GUID)
    Попытка
        УИД = Новый УникальныйИдентификатор(GUID);
        Если УИД = Неопределено Тогда
            Возврат "Не верный уникальный идентификатор";
        КонецЕсли;
        Фото = Справочники.ХранилищеДополнительнойИнформации.ПолучитьСсылку(УИД);
        Рисунок=Фото.Хранилище.Получить();
        Текст=Base64Строка(Рисунок.ПолучитьДвоичныеДанные());
    Исключение
        Текст = ОписаниеОшибки();    
    КонецПопытки;

    Возврат  Текст;

КонецФункции
47 vikadruzhok
 
15.10.15
15:10
GUID - это уникальный идентификатор на элемент справочника "Хранилище дополнительной информации" преобразованный в строку.
48 vikadruzhok
 
15.10.15
15:14
На стороне базы-приемника подключаюсь к базе отправителю. И вызываю свою функцию GetFoto и создаю картинку со своими полученными двоичными данными:
Файл=СторонняяБаза.GetFoto(СокрЛП(ПрисоединенныйФайл.УникальныйИдентификатор()));
                      Рисунок=Новый Картинка(Base64Значение(Файл),Ложь);
49 vikadruzhok
 
15.10.15
15:15
Как подключиться к базе не описываю.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан