Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Помогите разобраться с методом "НачатьПомещениеФайлаНаСервер"

Помогите разобраться с методом "НачатьПомещениеФайлаНаСервер"
Я
   Kuo
 
18.06.21 - 17:19
Вроде бы все работает корректно,но при повторном вызове данного метода при проверке Номера получаемого файла сбивается нумерация и никак не могу понять с чем это связанно (КОД ПРИЛАГАЮ)

&НаКлиенте
Процедура ПродолжитьЗаполнениеБезСоздания(Файлы, Парам2) Экспорт
    
    МассивФайлов = Новый Массив;
    
    НомерФайла = 0;
    
    Для Каждого Файл Из Файлы Цикл
        
        //ОтладкаОтправитьФайл(Файл);
        НомерФайла = НомерФайла + 1;
        Попытка
            СтруктураФайлов = Новый Структура;
            
            СтруктураФайлов.Вставить("НазваниеКаталога",Парам2.НазваниеКаталога);
            СтруктураФайлов.Вставить("Путь",Парам2.Путь);
            СтруктураФайлов.Вставить("СтрокаНазваниеКаталога",Парам2.СтрокаНазваниеКаталога);
            
            СтруктураФайлов.Вставить("ИмяФайла",Файл.Имя);;
            СтруктураФайлов.Вставить("Новый",Ложь);
            СтруктураФайлов.Вставить("Путь",Файл.Путь);
            СтруктураФайлов.Вставить("Расширение",Файл.Расширение);
            СтруктураФайлов.Вставить("ПутьПолныйКФайлу",Файл.ПолноеИмя);
            СтруктураФайлов.Вставить("НомерФайла",НомерФайла);
            СтруктураФайлов.Вставить("КоличествоФайлов",Файлы.Количество());
            
            НачатьПомещениеФайлаНаСервер(Новый ОписаниеОповещения("ПослеПолученияДвойкиБезСоздания",ЭтаФорма,СтруктураФайлов),,,, Файл.ПолноеИмя,ЭтаФорма.УникальныйИдентификатор);    
            
        Исключение
            Сообщить(ОписаниеОшибки());
        КонецПопытки;
        
        СтруктураФайлов.Очистить();
    КонецЦикла;
    
    
КонецПроцедуры

&НаКлиенте
Процедура ПослеПолученияДвойкиБезСоздания(АдресФайла, СтруктураФайлов) Экспорт
    СтруктураФайлов.Вставить("АдресХранища",АдресФайла.Адрес);
    МассивФайлов.Добавить(СтруктураФайлов);
        
    Если СтруктураФайлов.КоличествоФайлов = СтруктураФайлов.НомерФайла Тогда
        НайтиСтраницу(СтруктураФайлов.НазваниеКаталога,СтруктураФайлов.СтрокаНазваниеКаталога,МассивФайлов,СтруктураФайлов.Путь);
        ПроверитьСканыВДокументоре(Ложь);
    
        Обновляем = Ложь;
        ПодключитьОбработчикОжидания("ЗаполнитьПоступленияИРеализацииКлиент", 0.1, Истина);        
    КонецЕсли;
КонецПроцедуры
   Жан Пердежон
 
1 - 18.06.21 - 17:50
дичь какая-то, да еще в цикле, есть же
НачатьПомещениеФайловНаСервер()
   Жан Пердежон
 
2 - 18.06.21 - 17:57
а вообще, процедура асинхронная - то есть не факт, что файл, который ты помещаешь последним, загрузится последним
   Kuo
 
3 - 18.06.21 - 18:32
(1)т.е. ты предлашь почитать про процедуру начатьПомещениеФайловНаСервер и мой вариант нормально не отработает?
   ДедМорроз
 
4 - 18.06.21 - 19:13
Глобальная переменная МассивФайлов это очень некрасиво.
Вариант отработает, просто,обработчик ожидания нужно подключать только при получении последнего файла,так как если его подключать каждый раз,то он может и сработать между получениями файла.
   sikuda
 
5 - 18.06.21 - 21:14
Нужен не цикл, а после второго вызова рекурсия
&НаКлиенте
Процедура КопироватьСервер(Команда)
    
    МассивФайлов = ПолучитьВыделенныеФайлыСервера(Истина);
    МассивАдресов = ПолучитьМассивАдресовФайлов(МассивФайлов);
    МассивИмен   = ПолучитьВыделенныеФайлыСервера(Ложь);
    Директория = ПолучитьТекущуюДиректориюСервер();
    
    ДопПараметры = Новый Структура("ном, МассивИмен, МассивФайлов");
    ДопПараметры.Вставить("ном", 0);
    ДопПараметры.Вставить("МассивИмен", МассивИмен);
    ДопПараметры.Вставить("МассивАдресов", МассивАдресов);
    ДопПараметры.Вставить("Директория", Директория);
    НачатьПолучениеФайлаССервера(Новый ОписаниеОповещения("ПолучениеФайла", ЭтаФорма, ДопПараметры),МассивАдресов[0],Директория + МассивИмен[0]);

КонецПроцедуры

&НаКлиенте
Процедура ПолучениеФайла(ПолученныйФайл, ДопПараметры) Экспорт
    Если ПолученныйФайл <> Неопределено Тогда    
        
        ном =  ДопПараметры.ном;
        Директория = ДопПараметры.Директория;
        //КопироватьФайл(ПолученныйФайл.ПолноеИмя, ДопПараметры.Директория + ДопПараметры.МассивИмен[ном]);

        Если ном < ДопПараметры.МассивФайлов.Количество()-1 Тогда
            ДопПараметры.Вставить("ном", ном+1);
            НачатьПолучениеФайлаССервера(Новый ОписаниеОповещения("ПолучениеФайла", ЭтаФорма, ДопПараметры),ДопПараметры.МассивАдресов[ном+1],Директория + ДопПараметры.МассивИмен[ном+1]);
        Иначе
            //Обновить все

            ДеревоПапокСервер.ПолучитьЭлементы().Очистить();
            ДобавлениеДисковСервера();
        КонецЕсли;    
        
    КонецЕсли;    
КонецПроцедуры

   sikuda
 
6 - 18.06.21 - 21:20
(5) Если действительно критично принимать файлы по одному, а если без разницы то зачем тебе вообще нумерация?

Но больше всего понравился шедевр
"ПодключитьОбработчикОжидания("ЗаполнитьПоступленияИРеализацииКлиент", 0.1, Истина);"
Это когда сразу не получится, а через 0,1 секунды точно сработает ;)
   Cthulhu
 
7 - 18.06.21 - 23:17
тут с НачатьПомещениеФайлаНаСервер прикол в файловой версии вдруг обнаружился. ну как "прикол".
в режиме отладки, включить замер производительности - запустить НачатьПомещениеФайлаНаСервер с обработчиками - дождаться окончания копирования - отключить замер производительности... и хобана - в процедуре описания оповещения "перед началом" вообще нет отметок хронометража как будто туда вообще не заходит - НО при этом оно заходит и отрабатывает (спецом воткнутое сообщение выводится)... в процедурах других использованных описаний оповещения, кстати - всё ок, отметки хронометража есть...
немного недоумеваю.
   Cthulhu
 
8 - 18.06.21 - 23:18
ЗЫ: и - да, брейкпойнт в этой процедуре - пофиг, как будто действительно не заходит от слова вообще
   Жан Пердежон
 
9 - 19.06.21 - 16:40
(8) в одной из последних версий был баг с отладкой
   Cthulhu
 
10 - 19.06.21 - 18:31
(9): проверь на своем?
у меня на 15-м так. и на 14-м.
   Guk
 
11 - 19.06.21 - 18:43
(10) для хохлов 1С выпустила специальную версию движка. оно в отладчик не заходит, а на любые попытки пишет "Крым-наш"...
   Kuo
 
12 - 19.06.21 - 18:45
Всем спасибо в принципе понял куда идти дальше
   Cthulhu
 
13 - 19.06.21 - 19:00
(11) ваня в своем репертуаре - пукн бомбит а по сути ноль.
   Guk
 
14 - 19.06.21 - 19:05
а ссуть они в песок...
   Cthulhu
 
15 - 20.06.21 - 01:01
мндя, ваня похоже опять в алкашню подался...
   Guk
 
16 - 20.06.21 - 08:09
да куда мне до дури зеленского ;)...

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.