Имя: Пароль:
1C
1C 7.7
v7: Выполнение процедур документа из другого документа.
,
0 Enlighted
 
22.02.17
22:07
Добрый день люди.
Есть задача:
требуется в документе сформировать список просроченных документов (A), а затем весь этот список дружно оплатить и закрыть. Закрываются и оплачиваются они все другим документом(Х), который вызывает документ(У) расчёт процентов. Причем на каждый просроченный документ нужно создать по одному документу (X) соответственно и по одному документу (У).
Сначала возникла идея создавать документ (Х) из документа (А) со списком и запускать его процедуры в ОткрытьФормуМодально(...,Х,0) но выяснилось что таким образом невозможно запустить процедуры документа (Х). Затем появилась идея закинуть куски кода (Х) и (У) в код документа (А), но она отпала потому что если понадобится откорректировать какое то из этих закрытий, то их потом не найти. Да и эти закрытия в журнале документов потом нужны на каждый просроченный документ. Может кто подскажет как реализовать множественное создание документов и запуск их внутренних процедур, без участия пользователя?
Приветствуются ссылки на костыли и велосипеды. Грабли в конструкции не подойдут.
1 Enlighted
 
22.02.17
22:10
(0) Извиняюсь в третьей строке (А) следует не читать.
2 Злопчинский
 
22.02.17
23:01
конт ="";
ОткрытьФорму(КакойТоТекущийДокумент,конт);
Конт.КакаяТоПроцедура(парам1,Парам2);
3 Enlighted
 
22.02.17
23:16
(2) Форма откроется, а документ то создастся?
4 Enlighted
 
22.02.17
23:58
(2) Тут же вопрос а как передать номер документа который надо закрыть, если при вызове ОткрытьФорму, управление передаётся новому документу.
5 Злопчинский
 
23.02.17
01:53
(3) почитай в СП про ОткрытьФорму - или сам создавайдокумент и передавай его ссылку или вызывай открытьФорму в режиме ввода нового.

Конт.Форма.Закрыть(); //но тут будут траблы ибо при закрытии задастся вопрос о записи изменений а они скорее всего будут...

самый правильный вариант - формы не трогать, все создавать программно. ПОВТОРЯЕМЫЕ КУСКИ КОДА вынести в отдельные процедуры - чтобы менять водном месте. (и эти процедуры будут отрабатывать и при интерактивном манипулировании документом и при программно если ты это вставишь в программный код)

также посмотри в формексе возможность выполненяи процедур документа
6 Злопчинский
 
23.02.17
01:57
(4) > если при вызове ОткрытьФорму, управление передаётся новому документу.
- утверждение неверное. управление передается ПОСЛЕ открытия формы.
7 Злопчинский
 
23.02.17
02:00
(0) > со списком и запускать его процедуры в ОткрытьФормуМодально(...,Х,0) но выяснилось что таким образом невозможно запустить процедуры документа (Х).

- утверждение неверное. формируй список параметров, передавай его в ОткрытьФормуМодально, в проуедцре ПриОткрытии - анализируй переданные параметры и делай что надо (посмотреть можно в типовых)
например
Процедура ПриОткрытии()
  ЧтоДелать = Форма.Параметр.Получить("КОМАНДА");
  Если ЧтоДелать = "НапечататьСЧФ" Тогда ПечатьСЧФ(); CnfnecDjpdhfnf(0); Возврат; КонецЕслИ;
8 Enlighted
 
23.02.17
09:57
(7) Лабагадарю сейчас буду пробовать. А при закрытии документа вызванным открыть форму, управление обратно возвратится в документ из которого была вызвана форма?
9 Злопчинский
 
23.02.17
10:01
(8) если модально то да
И если открывать немодально то тоже
10 bodri
 
23.02.17
10:37
Если документ (Х) автоматически создает документ (У), тогда документы (А) заполняем в таблицу обработки (или документа), заполняем документы (Х), проводим, а они на основании себя делают документы (У)
11 Enlighted
 
24.02.17
01:00
Фигня какая-то, вызываю:
ОткрытьФормуМодально("Документы.ЗБ",НомерЗБ,1);

в вызываемом документе стоит это:

АтрибутВызоваФормы = Форма.Параметр;
Если ПустоеЗначение(АтрибутВызоваФормы) = 0 Тогда
сообщить("апчхи");
КонецЕсли;

Даже не чихает!
12 Злопчинский
 
24.02.17
01:05
(11) номер трибэ содержит пустое значение
13 Злопчинский
 
24.02.17
01:10
(11) опять же в каком месте это стоит? Если ты открываешь форму нового документа то смотри порядок вызова предопределённых процедур
14 Enlighted
 
24.02.17
01:16
НомерЗБ не пустой, условие стоит в процедуре ПриОткрытии
15 rt0107
 
24.02.17
01:20
ОткрытьФормуМодально() - изначальное зло, если чо. Включая поток исполнения. За разъяснениями - к более сведущим, но заставить их работать адекватно - тот ещё танец.
16 Злопчинский
 
24.02.17
01:30
(14) на ввод нового код перенести попробуй
Хотя и так должен работать
17 Злопчинский
 
24.02.17
01:32
(15) не знаю,
Всегда открыть форму модель но работало нормально как задумывадось
18 Enlighted
 
24.02.17
01:36
экспериментальным путём выяснил что ОткрытьФормуМодально не отрабатывает. Форма не открывается вообще. Хотя в параметрах указано верное название типа документа.
19 Enlighted
 
24.02.17
01:56
Ухты во какую ошибку выдало:

{Документ.АвтоЗакрытиеПросрочек.Форма.Модуль(88)}: Неудачная попытка создания объекта (Документы.ВозвратСсуды)
20 rt0107
 
24.02.17
02:05
(19) ДокументЫЫЫЫ
21 Enlighted
 
24.02.17
02:13
убрал, ошибка ушла, однако форма документа не открывается всё равно
22 Enlighted
 
24.02.17
02:16
О всё заработало, как обычно элементарная невнимательность.
23 Enlighted
 
24.02.17
12:03
Извиняюсь еще раз, в СП сказано только это:
ОткрытьФормуМодально(<?>,,)
Синтаксис:
ОткрытьФормуМодально(<Документ>,<КонтекстФормы>,<РежимПросмотра>)
Назначение:
Функция ОткрытьФормуМодально позволяет открыть модальную форму документа, справочника, журнала документов и других форм, используемых в системе 1С:Предприятие. Синтаксис и описание см. метод ОткрытьФорму.

Однако <РежимПросмотра> - никак не влияет на видиомсть формы ставлю 1 её невидно ставлю 0 её всёравно невидно.
24 Enlighted
 
24.02.17
12:03
По синтаксису ОткрытьФорму в СП вообще ничего нет. Прям ничего
25 Злопчинский
 
24.02.17
12:04
(23) флажок это режим открытия формы, а не регулирования видимости
26 Злопчинский
 
24.02.17
12:05
Непонятно, сейчас работает или нет?
27 Злопчинский
 
24.02.17
12:09
Если у тебя форма не открывается значит у тебя стоит статус возврата(0)
28 Enlighted
 
24.02.17
12:12
работает только наполовину, открывается форма документа (Х) и она невидима, в принципе меня это устраивает, но из него открывается форма документа (У) и она уже видимая, а этого мне не надо.
29 Злопчинский
 
24.02.17
12:13
(28) невидимаяиформа потому что у тебя не отработала до конца приоткрытии
30 Enlighted
 
24.02.17
12:14
(25) режим открытия формы - этого в СП не нашёл.
(29) Тогда я и в документе (У) всё закончу в приоткрытии, и будет как надо.
31 Enlighted
 
24.02.17
21:51
Всё заработало, всех благодарю, есть правда косячок, окошки документов мелькают, однако даже так, скорость закрытия просрочек многократно возросла.
Ошибка? Это не ошибка, это системная функция.