Вход | Регистрация


1С:Предприятие ::

Метки:

v7 ТиС Как перепозиционировать документ в OLE объекте?

Я
   Абитуриент
03.12.04 - 12:36
Выхожу на базу ТиС(самописная) через OLE, создаю объект Документ, выбираю нужный документ БТДок.Выбрать("Выберите документ ", ""), затем обрабатываю его, необходимо выбрать следующий документ,обнуляю переменную БТДок=0 ,в ответ получаю что невозможно перепозиционировать документ. Может я что-то делаю не так?
 
 
   Rovan
 
1 - 03.12.04 - 12:53
(0) Просто вызови еще раз БТДок.Выбрать("Выберите документ ", "")
   Абитуриент
2 - 03.12.04 - 12:58
В том то все и дело, что при этом выдается ошибка-невозможно перепозиционировать документ...Подскажите плз...
   Rovan
 
3 - 03.12.04 - 13:11
(2) Покажи код: 15-20 строк (ключевые поменты с комментами)
   Абитуриент
4 - 03.12.04 - 13:30
Процедура Загрузка() 
    ОчиститьОкноСообщений();
    БТ=СоздатьОбъект("V77.Application");
    БТ.Initialize(БТ.RMTrade,"","");
    БТДок=БТ.EvalExpr("СоздатьОбъект(""Документ"")");
    БТСпрГрКл=БТ.EvalExpr("СоздатьОбъект(""Справочник.Клиенты"")");
    БТСпрГрНом=БТ.EvalExpr("СоздатьОбъект(""Справочник.Товары"")");
    БТСпрГрСкл=БТ.EvalExpr("СоздатьОбъект(""Справочник.Склады"")");
    Спец=БТ.EvalExpr("СоздатьОбъект(""ТаблицаЗначений"")");
    СпецНов=БТ.EvalExpr("СоздатьОбъект(""ТаблицаЗначений"")");
    НачатьТранзакцию();
    ЗагрузкаДокументов();
    ЗафиксироватьТранзакцию();
    Предупреждение("Документ перенесен!");
    Продолжение= Вопрос("Продолжаем?","Да+Нет");
    Пока Продолжение = "Да"  Цикл
    БТДок=БТ.EvalExpr("СоздатьОбъект(""Документ.Перемещение"")");    
    БТДок=БТ.EvalExpr("СоздатьОбъект(""Документ"")");
    НачатьТранзакцию();    
    ЗагрузкаДокументов();
    ЗафиксироватьТранзакцию();
    Предупреждение("Документ перенесен!");
    Продолжение= Вопрос("Продолжаем?","Да+Нет");    
    КонецЦикла;
    БТ=0; 
КонецПроцедуры   

Процедура ЗагрузкаДокументов() 
    Если БТДок.Выбрать("Выберите документ ", "") > 0 Тогда
        БТДок = БТДок.ТекущийДокумент();
    КонецЕсли;
   Абитуриент
5 - 03.12.04 - 13:31
В этом коде пытался переопределить БТДок
   laeg
 
6 - 03.12.04 - 13:41
Совет:
1. Перетащи документы за определеный период в ТЗ или СЗ в форме обработки загрузки
2. Отметь то что хочешь
3. Перетащи без проблем
   Абитуриент
7 - 03.12.04 - 13:50
(6) Спасибо за совет. Я думал над этим, но может быть есть все же путь иначе переопределить объект?
   laeg
 
8 - 03.12.04 - 13:54
Есть конечно, нужно посмотреть внимательней
А вот пренебрегать я бы не стал, скорость выше и удобней ...
Организуешь типа журнала, отметишь нужные и переташишь.
   laeg
 
9 - 03.12.04 - 14:02
Совет:
Переменная  БТДок  не должна быть Глобальной в Модуле ... она должна быть локальной в  "Процедура Загрузка()" и передавай ее в Процедура ЗагрузкаДокументов() ...

Далее, нафига ты 
Если БТДок.Выбрать("Выберите документ ", "") > 0 Тогда
      БТДок = БТДок.ТекущийДокумент(); // !!!!!
Присваиваешь его самому себе ???!?!
   Абитуриент
10 - 03.12.04 - 14:21
Первый раз все выбирает и переносит, а повторно все равно виснет...Пишет что действие не может быть завершено т.к.другая программа занята.Для перехода к этой программе воспользуйтесь кнопкой переключиться. И не переключается... Виснет...
 
  Рекламное место пустует
   laeg
 
11 - 03.12.04 - 14:30
Воть епть ....
Это ты каждый раз подключаешься к ОЛЕ что бы перенести "ОДИН" документ ?!?!!
Но не маразм ли это ? Ты сам подумай ...
   Абитуриент
12 - 03.12.04 - 14:36
Просто возникла задача перетаскивания документов по одному...
   laeg
 
13 - 03.12.04 - 14:42
Ты в одной обработке, перетаскиваешь документы по одному и каждый раз подключаешься через ОЛЕ к другой базе ? - так ?
   Абитуриент
14 - 03.12.04 - 14:46
Хотелось бы подключиться к базе и вибирая доки из нее перетаскивать по одному, не отсоединяясь от базы...
   laeg
 
15 - 03.12.04 - 14:55
Ну дык в чом проблема ?

кто тебе поставил такую задачу ? Суть задачи какая ? (формулировка)
   Rovan
 
16 - 03.12.04 - 15:01
(14) Можно ОЛЕ запустить и пусть висит (выделить отдельного пользователя под это), нужно качаешь данные (выбираешь там что-то), не нужно висит дальше - ждет приказов.
   Абитурент
17 - 03.12.04 - 15:29
(14) Вот она и висит...
   Абитуриент
18 - 03.12.04 - 15:31
(16)Проблема в том что в открытой базе не удается перепозиционировать документ. Не хочет он выбираться второй раз... Ругается база что невозможно перепозиционировать док!
   laeg
 
19 - 03.12.04 - 17:15
Погонял у себя ...
Такая-же байда
Наверное прейдется все-же воспользоваться (6)
   Абитуриент
20 - 03.12.04 - 17:39
Понял что проблема видимо не решается: либо подключаться и отключаться от OLE, либо как в (6)
   NiGMa
 
21 - 04.12.04 - 11:43
(Абитуриент) У тебя в коде кривизна!

Вот здесь:
   БТДок=БТ.EvalExpr("СоздатьОбъект(""Документ.Перемещение"")");     
  БТДок=БТ.EvalExpr("СоздатьОбъект(""Документ"")");
ты зачем-то 2 раза определяешь одну и ту же переменную.
Но это мелочи.
Ошибка - вот где:
   Если БТДок.Выбрать("Выберите документ ", "") > 0 Тогда 
       БТДок = БТДок.ТекущийДокумент(); 
  КонецЕсли;
После выполнения присваивания БТДок ПЕРЕСТАЕТ БЫТЬ ОБЪЕКТОМ!!! Он же теперь - ТекущийДокумент(), и, вполне естественно, не может быть перепозиционирован.

Сделай примерно так:
       БТДок_Т = БТДок.ТекущийДокумент(); 
и все у тебя заработает!!!
   Абитуриент
22 - 06.12.04 - 17:45
(21) Попробовал по этому варианту-все равно 2 раза выбирает, на 3й виснет-говорит что система занята другим приложением. 3й перепозиционирования не происходит...
   laeg
 
23 - 06.12.04 - 17:58
(21)
Глюк ... даже без присваивания не работает ...
Уже по разному пробовал, все дело ОЛЕ + Выбрать(ДОКУМЕНТ)
   laeg
 
24 - 06.12.04 - 18:04
+(23)
21. Об этом еще в (9) сказал



Список тем форума
Рекламное место пустует   Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует