Имя: Пароль:
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
Всё заработало, всех благодарю, есть правда косячок, окошки документов мелькают, однако даже так, скорость закрытия просрочек многократно возросла.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан