Версия для печати темы (https://pro1c.org.ua/index.php?s=4b88b28ee259f23087498b2473b8560a&showtopic=59284)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Управление формой из другой формы

Автор: 4andriy 28.05.20, 21:11

1c 7.7 Предприятие

Програмно создаю документ из журнала документов (процедура в журнале документов)
Происходит открытие документа (на нем есть кнопка Сохранить и закрыть)
Как сделать что-бы при открытии документа програмно документ сохранялся и закрывался и происходил переход в предидущий журнал?
Пробовал прописать в процедуре журнала документов в код создания:

Элемент.Записать();
Элемент.Закрыть();

но не помогло.

Автор: volodya1122 29.05.20, 8:00

4andriy @ Вчера, 22:11 * ,

А зачем вообще открывать форму документа, если програмно создается документ и програмно записываются все нужные реквизиты в нем?4andriy @ Вчера, 22:11 * ,

Автор: 4andriy 29.05.20, 11:27

volodya1122 @ Сегодня, 9:00 * ,
так код написан, не хочеться там ковырять, проще програмно его закрыть и сохранить

Автор: volodya1122 29.05.20, 11:53

4andriy @ Сегодня, 12:27 * ,

Добре, По тій схемі як Ви написали не спрацює. Потрібно через так зване "Ложное открытие" .
В мене так працює груповий друк документу.
Отже
1. в журналі де йде створення документу написати:

    СЗ=СоздатьОбъект("СписокЗначений");
    СЗ.Установить("ВыполнитьПечать",1); // змінну можете назвати так як забажаєте
ОткрытьФорму(Док,СЗ);


2. В самому документі в ПриОткрітии() в самому цінці процедури;
        _Параметр=Форма.Параметр;
    Если ТипЗначенияСтр(_Параметр)="СписокЗначений" Тогда
        Если _Параметр.Получить("ВыполнитьПечать")=1 Тогда
    //        Печать1(1,1);        
//Записать(); Провести();;  // по вкусу добавити      
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
    КонецЕсли;

Автор: 4andriy 29.05.20, 22:15

volodya1122 @ Сегодня, 12:53 * ,

де створення прописав:

Спр=СоздатьОбъект("СписокЗначений");
Спр.Установить("ЗакрФорма",1);


в формі, яка відкривається:
ЗакрФорма=Спр.Форма;
Если ТипЗначенияСтр(ЗакрФорма)="СписокЗначений" Тогда
Если Спр.Получить("ЗакрФорма")=1 Тогда
Записать();
Форма.закрыть();
СтатусВозврата(0);
Возврат;
КонецЕсли;
КонецЕсли;


помилок при перевірці немає, але не працює

Автор: volodya1122 30.05.20, 8:00

4andriy @ Вчера, 23:15 * ,
1. потрібно бути трішки уважнішим. я ж написав ще

ОткрытьФорму(Док,СЗ);

У вас повинно бути подібний рядок в створенні де відкривається цей документ (ОткрытьФорму або ОткрытьФормуМодально)). Потрібно туди добавити так як я написав передачу списку значень.
2. Ви написали
Спр=СоздатьОбъект("СписокЗначений");

Змінна "Спр" можливо ще десь у вас використовується, Переіменуйте так щоб вона була унікальна. І зазвичай "Спр" називають Справочники, а не списак значень.
3. Ця лінійка лишня
Форма.закрыть();

4. Тут повинно бути не так
//ЗакрФорма=Спр.Форма;
ЗакрФорма=Форма.Параметр;


5. Ще помилка
//Если Спр.Получить("ЗакрФорма")=1 Тогда
Если ЗакрФорма.Получить("ЗакрФорма")=1 Тогда

Автор: mut 31.05.20, 18:06

Приклад коду з програмним створенням документа і програмним закриттям форми. Ніяких втручань в код документа не потрібно. В методі ОткрьітьФорму() передбачено отримання контексту форми, через який можна керувати нею.

Перем Конт;
    
    Док = СоздатьОбъект("Документ.РасходнаяНакладная");
    Док.Новый();
    Док.ДатаДок = РабочаяДата();
    Док.Записать();
    
    //открываем форму
    ОткрытьФорму(Док.ТекущийДокумент(),Конт);
    
    //можно что-то прочитать/записать в реквизиты документа
    Конт.Примечание = "Форма открылась";

    //закрываем открытую форму
    Конт.Форма.Закрыть();

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua