Имя: Пароль:
1C
1С v8
Программное удаление документов
0 Штурман
 
12.05.16
08:51
Как удалить программно помеченные на удаление объекты?

Если пользоваться кодом

    Помеченные = НайтиПомеченныеНаУдаление();
    Найденные = 0;
    УдалитьОбъекты(Помеченные, Истина, Найденные);
    Для каждого Ссылка из Найденные Цикл
        СтрСообщения = "Объект не удален: " + СокрЛП(Ссылка[0]);
        СтрСсылка = ", используется в " + СокрЛП(Ссылка[1]);
        Сообщить (СтрСообщения + СтрСсылка);
    КонецЦикла;


Выдает:

"Ошибка при вызове метода контекста (УдалитьОбъекты)
    УдалитьОбъекты(Помеченные, Истина, Найденные);
по причине:
Должен быть установлен монопольный режим
"


Другой же код:

    WshShell = Новый COMОбъект("WScript.Shell");
    WshShell.AppActivate("1C: Предприятие");
    WshShell.SendKeys("%");
    WshShell.SendKeys("{ENTER}");
    WshShell.SendKeys("{RIGHT}");
    WshShell.SendKeys("{RIGHT}");
    WshShell.SendKeys("{UP}");
    WshShell.SendKeys("{UP}");
    WshShell.SendKeys("{UP}");
    WshShell.SendKeys("{UP}");
    WshShell.SendKeys("{UP}");
    WshShell.SendKeys("{ENTER}");
    WshShell.SendKeys("{ENTER}");
    WshShell.SendKeys("{TAB}");//Таб
    WshShell.SendKeys("{TAB}");//Таб
    WshShell.SendKeys("{RIGHT}"); //право
    WshShell.SendKeys("{ENTER}");
    WshShell.SendKeys("{ESC}");

На самой последний посыл кнопки отмены и других вообще не реагирует
1 ДенисЧ
 
12.05.16
08:52
Дык... Выгони всех пользователей и останови все регламенты...
А потом уже удаляй
2 Штурман
 
12.05.16
08:58
(1) В первом случае никого в базе вообще нет, только 1 админ, под которым собственно и выполняется задание, проверяю на файловой базе

Во втором случае непонятно, почему дальше кнопки в последнем диалоге, где нужно нажать всего лишь пару кнопок уже не посылаются нажатия клавиш
3 Guk
 
12.05.16
09:01
(2) если программа говорит, что режим не монопольный, значит он не монопольный...
4 Jofa
 
12.05.16
09:01
(2)Проверь не запущены регламентированные задания !
5 Штурман
 
12.05.16
09:04
(4) нет, не запущены

(3) так если вручную мышкой Операции - Удаление... покликать, то все удаляется по этим же пользователем, а вот опработка лишь сообщение выдает, которое привел выше
6 Jofa
 
12.05.16
09:05
А как ты это проверил?
7 Штурман
 
12.05.16
09:07
(6) Через активных пользователей, фоновые задания обычно висят
8 Рэйв
 
12.05.16
09:16
(0)
Выполни код УстановитьМонопольныйРежим(Истина)
оно напишет тебе какие компы и сеансы тебе мешают
9 Штурман
 
12.05.16
09:25
(8) Странно, данный код ничего не выдал, но после него код из (1) заработал нормально и удалил помеченные объекты.

Осталось только со вторым кодом разобраться, почему программно клавиши не посылаются
10 Рэйв
 
12.05.16
09:32
(9)Просто ты не устанавливал принудительно монопольный режим, а ему было надо и само оно не могло:-)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший