|   |   | 
| 
 | Результат выполнения фонового задания | ☑ | ||
|---|---|---|---|---|
| 0
    
        nAPACEHAK 15.07.20✎ 10:35 | 
        Доброго.
 Форма запускает фоновое. в фоновом получает скрины с камер и выводит картинку АдресКартинокДляФонового, ИдентификаторЗаданияПолученияИзображенияСКамер - реквизит формы *** Форма &НаКлиенте Процедура ПриОткрытии(Отказ) АдресКартинокДляФонового = ПоместитьВоВременноеХранилище(Неопределено, ЭтаФорма.УникальныйИдентификатор); ЗапуститьФоновоеКамера (АдресКартинокДляФонового, ИдентификаторЗаданияПолученияИзображенияСКамер, ЭтаФорма.УникальныйИдентификатор); ПодключитьОбработчикОжидания("Подключаемый_ПроверитьВыполнениеЗаданияПолученияИзображенияСКамер",Интервалы.ИнтервалОбновленияИзображений); КонецПроцедуры &НаСервереБезКонтекста Процедура ЗапуститьФоновоеКамера(АдресКартинокДляФонового, ИдентификаторЗаданияПолученияИзображенияСКамер, УИД) ДлительныеОперации.ОтменитьВыполнениеЗадания(ИдентификаторЗаданияПолученияИзображенияСКамер); ИдентификаторЗаданияПолученияИзображенияСКамер = Неопределено; ПараметрыПроцедуры = Новый Массив; ПараметрыПроцедуры.Добавить(АдресКартинокДляФонового); НаименованиеЗадания = НСтр("ru = 'Получение изображений с камер'"); Задание = ФоновыеЗадания.Выполнить("КамерыВызовСервера.ПолучитьИзображениеСКамер", ПараметрыПроцедуры,, НаименованиеЗадания); ИдентификаторЗаданияПолученияИзображенияСКамер = Задание.УникальныйИдентификатор; КонецПроцедуры &НаКлиенте Процедура Подключаемый_ПроверитьВыполнениеЗаданияПолученияИзображенияСКамер() ЗаданиеВыполненоУспешно = Ложь; Если ЗаданиеФоновоеВыполнено(ИдентификаторЗаданияПолученияИзображенияСКамер) Тогда ЗаданиеВыполненоУспешно = Истина; КонецЕсли; Если ЗаданиеВыполненоУспешно Тогда Картинки = ПолучитьИзВременногоХранилища(АдресКартинокДляФонового); АдресКартинки1 = Картинки.АдресКартинки1; АдресКартинки2 = Картинки.АдресКартинки2; АдресКартинки3 = Картинки.АдресКартинки3; АдресКартинки4 = Картинки.АдресКартинки4; ;;;;; Данные = ПолучитьИзВременногоХранилища(ВходныеПараметры.АдресКартинки1); *** (1) ЗапуститьФоновоеКамера (АдресКартинокДляФонового, ИдентификаторЗаданияПолученияИзображенияСКамер, ЭтаФорма.УникальныйИдентификатор); КонецЕсли; КонецПроцедуры *** Общий модуль Процедура ПолучитьИзображениеСКамер(АдресКартинок = "") Экспорт Парам = Неопределено; ВходныеПараметры = Новый Структура("АдресКартинки1, АдресКартинки2, АдресКартинки3, АдресКартинки4", "", "", "", ""); ВыходныеПараметры = Неопределено; Результат = ПолучитьИзображенияСКамерыHTTP(Парам, ВходныеПараметры, ВыходныеПараметры); Если Результат Тогда ПоместитьВоВременноеХранилище(ВходныеПараметры, АдресКартинок); КонецЕсли; ;;;;; Данные = ПолучитьИзВременногоХранилища(ВходныеПараметры.АдресКартинки1); *** (2) КонецПроцедуры Помогите разобраться, плз С формы запускается фоновое В фоновом получаем картинки, кидаем их во временное (ПолучитьИзображенияСКамерыHTTP). ВходныеПараметры - структура с адресами картинок. (тут в (2) есть данные) Кидаем ВходныеПараметры по переданному адресу. фоновое завершено на форме проверяем завершение фонового. По сохраненному адресу получаем структуру адресов с данными. Тут АдресКартинки1 на форме и АдресКартинки1 в фоновом - идентичны но в (2) по этому адресу данные есть а в (1), по этому же адресу данные = неопределено хотя структуру с адресами, записанную в фоновом, после выполнения получили на клиенте. а по адресам из структуры - неопределено ЧЯДНТ? есть еще мысль что дело в УИДе когда помещаем в хранилище в фоновом сеансе и принимаем на клиенте - это разные хранилища, хоть и адрес одинаковый. Может так? | |||
| 1
    
        nAPACEHAK 15.07.20✎ 10:36 | 
        блин. промахнулся со сносками. чот не подумал что он из них ссылки на пост сделает     | |||
| 2
    
        nAPACEHAK 15.07.20✎ 10:36 | 
        (2)     | |||
| 3
    
        vi0 15.07.20✎ 11:23 | 
        стабильно воспроизводится?
 какая платформа? | |||
| 4
    
        nAPACEHAK 15.07.20✎ 11:27 | 
        (3) каждый раз получаю неопределено
 8.3.15.1830 | |||
| 5
    
        nAPACEHAK 15.07.20✎ 11:55 | 
        каждый раз структура адресов хранилища (заполненная в фоновом) но клиенте получаю
 по адресу из структуры (по которому лежит картинка из фонового) получаю всегда неопределено как то непонятно получается. адрес1 формы = адрес1 фонового, адрес2 формы = адрес2 фонового на форме по адрес1 есть данные и там и там по адрес2 в фоне еть на форме неопределено | |||
| 6
    
        vi0 15.07.20✎ 12:41 | 
        (5) без обид, но воспринимать такой текст тяжело, особенно последнюю строку     | |||
| 7
    
        Ёпрст гуру 15.07.20✎ 12:48 | 
        (0)
 Данные = ПолучитьИзВременногоХранилища(ВходныеПараметры.АдресКартинки1); *** (1) а зачем ты передаешь ВходныеПараметры.АдресКартинки1 а выше получаешь АдресКартинки1 ? И есть уверенность, что в этот момент, в ВходныеПараметры.АдресКартинки1 не дырка от бублика ? | |||
| 8
    
        nAPACEHAK 15.07.20✎ 12:56 | 
        (7) есть уверенность
 и то что в коде как Данные = .... это просто для точек останова временно ставил что бы посмотреть что там. оно нигде не используется но в 1. там неопределено а в 2 там данные в 1 и 2 адрес, по которому получаю, одинаковый. 2 это в фоновом а 1 это на клиенте после выполнения фонового т.е получается фоновое поместило данные по конкретному адресу, завершилось, и уже после завершения, на клиенте, по этому же адресу неопределено | |||
| 9
    
        Franchiser 15.07.20✎ 13:03 | 
        (0) Передавай картинку как двоичные данные, возможно так в фоновое передавать нельзя параметры в составе ВХ. Такая же проблема была с передачей файлов (смотри мои темы).     | |||
| 10
    
        nAPACEHAK 15.07.20✎ 13:11 | 
        (9) в смысле? она и так хранится как ДД
 там в ПолучитьИзображенияСКамерыHTTP ДвоичныеДанные = Ответ.ПолучитьТелоКакДвоичныеДанные(); ПоместитьВоВременноеХранилище(ДвоичныеДанные, Адр); | |||
| 11
    
        Ёпрст гуру 15.07.20✎ 13:24 | 
        (0) почитай описалово метода ПоместитьВоВременноеХранилище, там есть на счет фонового и родительской формы, откуда оно запущено и что и где доступно будет     | |||
| 12
    
        Franchiser 15.07.20✎ 13:40 | 
        (10) не помещай в ВХ     | |||
| 13
    
        Franchiser 15.07.20✎ 13:47 | 
        (10) у меня была проблема именно с передачей двоичных данных в фоновое (что обошел передачей двоичных данных в качестве параметра), обратно (из фонового) можно ли передать без ВХ не знаю (проблемы такой не было.)     | |||
| 14
    
        Franchiser 15.07.20✎ 13:51 | 
        Так пробовал?
 АдресКартинокДляФонового = ПоместитьВоВременноеХранилище(Неопределено, ЭтаФорма.УникальныйИдентификатор); Заменить на АдресКартинокДляФонового = ПоместитьВоВременноеХранилище(Неопределено, Новый УникальныйИдентификатор); | |||
| 15
    
        nAPACEHAK 15.07.20✎ 13:53 | 
        (11) потопал в очередной раз читать буквы (((
 хотя сейчас попробовал вернуть не структуру адресов с адресами ДД в хранилище, а сразу адрес на ДД (в принципе ничего основного не поменялось в коде) - и на клиенте по переданному адресу получил ДД а если передаю структуру с адресами и получаю из ВХ по адресу из структуры адресов полученной (адреса идентичны) - почему то вместо ДД неопределено выходит (12) а как передать ДД как результат работы фоновой на клиента? с файлами извращаться тоже не комильфо (13) вроде как только ВХ из фонового. это если без контекста. если с контекстом то можно рекв.формы например какой нить заполнить (14) да. однопенисуально | |||
| 16
    
        vi0 15.07.20✎ 14:03 | 
        есть баг один, но вроде не твой случай
 https://bugboard.v8.1c.ru/error/000048128 | |||
| 17
    
        Franchiser 15.07.20✎ 14:04 | 
        (15) Почему нельзя сделать структуру не 
 Новый Структура("АдресКартинки1, АдресКартинки2, АдресКартинки3, АдресКартинки4", "", "", "", ""); а Новый Структура("ДДКартинки1, ДДКартинки2, ДДКартинки3, ДДКартинки4", "", "", "", ""); Насколько я помню будет доступен только тот адрес с данными хранилища который определен на клиенте перед передачей в фоновое. | |||
| 18
    
        vi0 15.07.20✎ 14:07 | 
        Адрес = ПоместитьВоВременноеХранилище(Неопределено);     | |||
| 19
    
        Franchiser 15.07.20✎ 14:09 | 
        (18) у него есть такой код в ПриОткрытии()     | |||
| 20
    
        vi0 15.07.20✎ 14:11 | 
        (19) не вижу у него такого вызова, чтобы с одним параметром     | |||
| 21
    
        Franchiser 15.07.20✎ 14:12 | 
        (0) Что есть АдресКартинки1, АдресКартинки2, АдресКартинки3 ...
 Это адреса картинок в ВХ, созданном в фоновом задании или адреса на объекты в БД ? | |||
| 22
    
        Franchiser 15.07.20✎ 14:18 | 
        (20) если без второго параметра данные в хранилище как раз  точно исчезнут после первого же серверного вызова.     | |||
| 23
    
        vi0 15.07.20✎ 14:45 | 
        (22) ну да, правда я не вчитывался в код и топик, бегло прочитал     | |||
| 24
    
        nAPACEHAK 15.07.20✎ 15:30 | 
        (21) АдресКартинки1 это реквизит формы, в который дожны попадать адреса из фонового
 Картинки это структура ("АдресКартинки1,2,3...) в значениях которой адреса ДД помещенных в фоновом Картинки = ПолучитьИзВременногоХранилища(АдресКартинокДляФонового); АдресКартинки1 = Картинки.АдресКартинки1; итд | |||
| 25
    
        Franchiser 15.07.20✎ 16:20 | 
        (24) то есть ты в фоновом задании каждую картинку помещаешь в отдельный ВХ, адреса которых инициированы в фоновом задании?     | |||
| 26
    
        Franchiser 15.07.20✎ 16:24 | 
        (0) Покажи код из ПолучитьИзображенияСКамерыHTTP()     | |||
| 27
    
        nAPACEHAK 16.07.20✎ 08:17 | 
        (26)
 Точно. Походу я промохал с идентификатором ВХ и после фонового на клиенте там ничего нет АдресКартинки = Неопределено; (!!!) Попытка HTTPСоединение = Новый HTTPСоединение(ИмяСервера, Порт, Логин, Пароль, Неопределено, Таймаут); HTTPЗапрос = Новый HTTPЗапрос(URLПодключения); //ИмяФайла = ПолучитьИмяВременногоФайла("~jpg"); Ответ = HTTPСоединение.Получить(HTTPЗапрос); //, ИмяФайла); Если Не ПолучитьФайл Тогда //ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла); //АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, АдресКартинки); //УдалитьФайлы(ИмяФайла); ДвоичныеДанные = Ответ.ПолучитьТелоКакДвоичныеДанные(); АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, АдресКартинки); ВходныеПараметры["АдресКартинки" + й] = АдресКартинки; Иначе //ВыходныеПараметры.Добавить(ИмяФайла); КонецЕсли; Исключение | |||
| 28
    
        Franchiser 16.07.20✎ 10:43 | 
        (27) Интересный у тебя код:
 АдресКартинки = Неопределено; (!!!) АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, АдресКартинки); | |||
| 29
    
        Franchiser 16.07.20✎ 10:46 | 
        Зачем у тебя еще в ПолучитьИзображениеСКамер():
 Если Результат Тогда ПоместитьВоВременноеХранилище(ВходныеПараметры, АдресКартинок); КонецЕсли; ? | |||
| 30
    
        nAPACEHAK 16.07.20✎ 13:01 | 
        (28) спасибо, разобрался ))))
 просто код этой процедуры по диагонали просмотрел. перемкнуло чота | |||
| 31
    
        vi0 16.07.20✎ 15:39 | 
        (30) твоя ошибка в спешке
 рекомендую пофиксить ее накорню | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |