7.7 Док есть в журнале, но код его не видит. Почему?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем ФинанСист, 30 июл 2008.

  1. TopicStarter Overlay
    ФинанСист
    Offline

    ФинанСист

    Регистрация:
    14 июл 2008
    Сообщения:
    20
    Симпатии:
    0
    Баллы:
    1
    Использую FormEx.dll и WScript.Shell
    Через метод ОткрытьФорму дока создаю новый док. (Новый() не подходит - нужно заполнить таблицу).Через WScript.Shell (эмуляция клавиши) закрываю форму. Док вижу в журнале.
    Пытаюсь найти записанный док и провести. Проблема; Код его не видит.

    Это модуль формы внешней обработки:

    Код:
    Процедура Сформировать()  
    // прежде удалим, если есть старый док
    Доки=СоздатьОбъект("Документ");
    Доки.ВыбратьДокументы(КонДата,КонДата); 
    Пока Доки.ПолучитьДокумент()=1 Цикл 	
    Если Доки.Вид()="ЗаписиКнигиПокупок" Тогда   
    Доки.Удалить(1); 
    сообщить("Удаляю ФормированиеКнигиПокупок. Буду формировать ее снова с заполнением.");
    КонецЕсли;
    КонецЦикла;
    // меняем дату поскольку ОткрытьФорму нового дока дает ТЕКУЩУЮ дату, и сообщение "...уже существует документ..";
    РабочаяДата(КонДата); 
    Сервис = СоздатьОбъект("Сервис");
    ОткрытьФорму("Документ.ЗаписиКнигиПокупок", конт); 
    Конт.ДатаДок=КонДата; 
    // какие- то действия, к примеру автозаполнение таблицы 
    Если Сервис.ВыполнитьПроцедуру(конт,"Заполнить",)=0 Тогда  
    сообщить("Не заполнена таблица дока ЗаписиКнигиПокупок");
    КонецЕсли;   
    ф=СоздатьОБъект("WScript.Shell");
    ф.SendKeys("%а");   //Альт и Записать. Записывает док, но не проводит 
    Сообщить("Записываю и закрываю форму");
    Конт.Форма.Закрыть(0); //закрывает без вопросов. Док видится в журнале.
    РабочаяДата(ТекущаяДата());  //восстанавливаем дату  
    //теперь находим док в базе и проводим его
    Доки=СоздатьОбъект("Документ.ЗаписиКнигиПокупок");
    Доки.ВыбратьДокументы(КонДата,КонДата);  
    Пока Доки.ПолучитьДокумент()=1 Цикл 
    сообщить("найден ЗаписиКнигиПокупок для проведения");
    // обработка его НЕ ВИДИТ! В чем дело? В журнале есть.
    Доки.Провести();
    Если Доки.Проведен()=1 тогда
    сообщить("Проведен "+Доки);
    Иначе 
    сообщить("Не проведен!!!!! "+Доки);
    КонецЕсли;
    КонецЦикла;      
    КонецПроцедуры
    
    ИСПУЛЬЗУЕМ ТЭГ
    Код:
    
    
  2. bob
    Offline

    bob Опытный в 1С

    Регистрация:
    7 май 2008
    Сообщения:
    386
    Симпатии:
    0
    Баллы:
    26
    используй отладчик
  3. Natalya
    Offline

    Natalya Опытный в 1С

    Регистрация:
    7 фев 2008
    Сообщения:
    57
    Симпатии:
    0
    Баллы:
    26
    Попробуйте записать так:

    Код:
    Если Док.ВыбратьДокументы(Дата1,Дата2)=1 Тогда
    Пока Док.ПолучитьДокумент()=1 Цикл
    
  4. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    А почему не подходит метод Новый()?

    Заполняй свою таблицу в предопределенных функциях, которых предостаточно: ПриОткрытии() или ВводНового(), например.

Поделиться этой страницей