Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Программно нажать кнопку или...


Автор: Berserk 16.6.2011, 15:07
1с 8.1 не типовая бух для Украины.
Собственно проблема: нужно программно ввести до 20000 контрагентов и с ними столько же договоров(элементы справочников "контрагенты" и "договора контрагентов"). С контрагентами проблем нет, добавил все подхватилось, все довольны. А вот договора....
Код

         НовыйЭлемент = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();   
    НовыйЭлемент.Наименование = "НаименованиеДоговора";
    НовыйЭлемент.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее;
    НовыйЭлемент.Владелец = Контрагент;
    НовыйЭлемент.ПредметЗадолженности = ПредметЗадолженности;
    НовыйЭлемент.Комментарий = Комментарий;
    НовыйЭлемент.Организация = Организация;
    НовыйЭлемент.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("999");
    НовыйЭлемент.Записать();    
    


Договор добавляется, но какой-то недоделанный. Вся беда в том что при открытии формы "ДокументКонтрагента" срабатывают события ПриОткрытии и ПередОткрытием,при закрытии ПередЗакрытием и ПриЗакрытии, в которых что-то добавляется в форму, переносить это все безобразие в свой код долго, нудно, и скорее всего не правильно. Дальше написал следующее:

Код

        НовыйЭлемент = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
    НовыйЭлемент.Наименование = "НазваниеДоговора";
    НовыйЭлемент.ВидДоговора = Перечисления.ВидыДоговоровКонтрагентов.Прочее;
    НовыйЭлемент.Владелец = Контрагент;
    НовыйЭлемент.ПредметЗадолженности = ПредметЗадолженности;
    НовыйЭлемент.Комментарий = Комментарий;
    НовыйЭлемент.Организация = Организация;
    НовыйЭлемент.ВалютаВзаиморасчетов = Справочники.Валюты.НайтиПоКоду("999");
    ФОрма = НовыйЭлемент.ПолучитьФорму();
    ФОрма.Открыть();
    Если Форма.ЗаписатьВФорме() Тогда
        Сообщить("Записано");
    Иначе
        Сообщить("Не записано");
    КонецЕсли;
    Форма.Закрыть();


В этом случае все записывается, но при работе обработки открывается форма "ДоговорКонтрагента"(это не страшно), а при закрытии выдает модальное окошко: Данные были изменены, хотите ли их сохранить(да, нет, отмена).
ВОзможно ли программно ответить да? 
Возможно есть другие варианты реализации? Например не трогая форму вызвать все ее события?
Спасибо.


Автор: Berserk 16.6.2011, 16:39
Нашел вот что:

Код

 Shell = Новый COMОбъект("WScript.Shell");
Shell.SendKeys("{ENTER}"); 

 
но если честно, то не пойму что с этим делать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)