|
v7: Как закрыть документ при проведении (т.е. из модуля дока) до открытия другого до | ☑ | ||
---|---|---|---|---|
0
mirvel
25.10.11
✎
13:54
|
Надо успеть при проведении закрыть док№1 перед тем как создастья док№2, который изменяет док№1.
|
|||
1
mirvel
25.10.11
✎
13:54
|
:) не смеейтесь
|
|||
2
mirvel
25.10.11
✎
13:54
|
самому смешно
|
|||
3
Попытка1С
25.10.11
✎
13:55
|
Успеть мышкой? Рекомендую игру мархуны, развивает.
|
|||
4
mirvel
25.10.11
✎
13:55
|
и помните что проведение срабатывает позже чем записывание дока!!! поэтому писать надо в модуле дока!!а не в модуле формы дока
|
|||
5
Гектор
25.10.11
✎
13:56
|
док.закрыть();
|
|||
6
mirvel
25.10.11
✎
13:56
|
(3) мышка не пойдет все программно создается
|
|||
7
mirvel
25.10.11
✎
13:56
|
(5) расмешил
|
|||
8
Virusaka
25.10.11
✎
13:57
|
(0) Телепаты подключайтесь
Объясни нормально, что ты хочешь получить/сделать. |
|||
9
mirvel
25.10.11
✎
13:57
|
(8) начинаю
|
|||
10
mirvel
25.10.11
✎
13:59
|
короче такая ситуация.....
была такая ситуация нормальная.... в док№1 на кнопку создается док№2, который пользователем закрывается и при записи изменяетя док№1 а точнее в нем пишем, что реквизит1=док№2 |
|||
11
Ёпрст
25.10.11
✎
14:00
|
(10) глввестисчетфактуру в типовом ТиС\комплексной
|
|||
12
mirvel
25.10.11
✎
14:03
|
реквизит1 влияет на статус документа!!
а при проведении этот статус зависит от этого и других реквизитов.... вот этот статус должен быть использован в док№2... Поэтому я переместил функцию создания док2 из кнопку а в конецпроведения.... и теперь сделал чтобы док№2 создавался без октрытия... но так как док№1 еще открыт док№2 не может править док№1 |
|||
13
mirvel
25.10.11
✎
14:04
|
(11) А КОД НЕ СКИНЕШЬ...РЯДОМ КОНФЫ НЕТУ ТАКОЙ
|
|||
14
mirvel
25.10.11
✎
14:04
|
или мдшник
|
|||
15
mirvel
25.10.11
✎
14:05
|
(11) или объясни на словах как они вышли из ситуации?
|
|||
16
Virusaka
25.10.11
✎
14:16
|
(12) Что то у вас с постановкой задачи не то)
Док1 создает док2 и записывает его в свой реквизит, который меняет другие реквизиты док1, которые в свою очередь влияют на док2.... Какое то зацикливание :( |
|||
17
Virusaka
25.10.11
✎
14:18
|
(12) Переносить создание документа в процедуру проведения, по моему, плохая идея.
Не лучше оставить на кнопке, но перед созданием документа док2 изменить реквизиты док1, которые будут использованы в док2? %) |
|||
18
mirvel
25.10.11
✎
14:18
|
(12)...поэтому то и зацикливание потому что форму дока№! не могу закрыть
щас я подробно опишу ситуацию... |
|||
19
mirvel
25.10.11
✎
14:19
|
(17) я бы с радостью....но при проведении на данный момент куча проверочного кода которые меняют реквизиты....и поэтому до провведения при записи нельзя отправить верные данные!
|
|||
20
mirvel
25.10.11
✎
14:19
|
придеться все переписывать...я хочу попробывать закрыть заранее док
|
|||
21
mirvel
25.10.11
✎
14:25
|
И так имеем документ заявка, доставка
создается заявка если стоит галочка доставка и при других условиях создается автоматом документ доставка...документ доставка при записи выгружает данные в мускул на сайт для водителей... заявка имееет различные статусы: оформлена, , принята на сборку, готова к сборке, собрана, готова к доставке, доставлена. статус заявки зависят от того есть ли в реквизатах заявки заполнененные поля документами: расходная накладная, Акт-Сборка, Доставка и других.... при создании расходной из заявки, создается расходная, и в заявке заполняется поле расходная акт сборка тоже также создается из заявки при нажатию на кнопку формы, и также акт-сборка при записи меняет реквизит заявки, т.е отмечает что поле докакт-сборка=заполненТЕкущимдокументомАктСборки т.е. все выше созданные доки спокойно меняют реквизиты из которых были созданы...потому что перед записью документ заявка предварительно закрывается теперь возникает такая проблема... если создание документа доставка вставить не в модуль формы документа а в обработкупроведения...то не возможно закрыть эту самый документ...чтобы документ который создался а именно доставка, смог бы изменить поле "докдоставка".... Почему в конецобработкупроведения приходитсья вставлять ОткрытьФорму("новыйдокумент"); потому что у заявки меняется статус припроведении!!!! |
|||
22
Escander
25.10.11
✎
14:31
|
(0) в обработке проведения:
1.находишь корректируемый (типа как зависимый документ). 2.Втыкаешь в него все правильные данные. 3. открываешь форму документа и передаёшь какие-то параметры (ну пусть список с элементами "рассчитать","провести","закрыть"). В "зависимом" документе в процедуре при открытии смотришь на параметры (Форма.Параметр) и если это список и есть у него нужные команды то: 1.вызываешь всякие внутренние расчёты - если необходимо. 2.вызываешь метод провести() 3.Закрываешь документ... Хороший стиль программирования предполпгает что результат успешного выполнения этапа 2 будет обратно возвращён через апраметр и проанализирован со стороны "главного" документа. Ферштейн? |
|||
23
Erhov_egor
25.10.11
✎
14:31
|
(0)ПриЗаписи()
получаешь последний документ(номердок-1),если он не равен 1, IsClosed=0;ReadOnly=1; |
|||
24
mirvel
25.10.11
✎
14:43
|
(22) "хороший" стиль программирование был заложен ранее...
такой вариант не подходит, так так после возвращения параметра в главный документ он опять должен будет перепровестись, чтобы изменить статус...а это уже зацикливание.... этот вариант отпал в начале пути |
|||
25
Virusaka
25.10.11
✎
15:00
|
(24) При поставленных условиях - ответ на вопрос - никак.
Возможно как то можно решить с помощью Книга знаний: Асинхронные события 1С: полезные алгоритмы |
|||
26
mirvel
25.10.11
✎
15:03
|
я только хотел узнать можно ли закрыть форму документа из обработкипроведения....
и получил однозначный ответ = Невозможно! если это так...то я тольк это хотел услышать.... |
|||
27
Virusaka
25.10.11
✎
15:14
|
(26) Я бы всё таки остановился на варианте "кнопка в форме".
При нажатии создавал и записывал пустой документ2, чтобы получить его ссылку, эту ссылку записывал в реквизит1 и инициировал проведение документа. После проведения - запускал создание документа2. Как то так. Естественно, я вижу задачу по своему и тому кто "варится" в ней некоторые вещи видятся по другому. |
|||
28
Virusaka
25.10.11
✎
15:16
|
(26) *Создание документа2 = заполнение документа2
|
|||
29
Lepochkin
25.10.11
✎
15:27
|
Формекс ПослеЗакрытия() не прокатит?
|
|||
30
Escander
25.10.11
✎
18:05
|
(24) не вижу проблемы! Нужно что-то вытянуть из подчинённых и запихать в главный документ до проведения главного? Воткни код первыми строками ОбработкаПроведения() главного документа.
Что не так-то? |
|||
31
FN
25.10.11
✎
18:15
|
Если уж сильно хочется то можно так
Док1: Процедура ОбработкаПроведения() ... ОткрытьФорму("Обработка.СозданиеСлужебныхДокументов",ТекущийДокумент()); КонецПроцедуры Обработка: Перем Док1; Процедура ПриОткрытии Форма.ОбработкаОжидания("Выполнить",1); Док1=Форма.Параметр; КонецПроцедуры Процедура Выполнить() СоздатьДокумент2(); ПровестиДокумент1(); ПровестиДокумент2(); УдалитьВсеДоки(); ВсеЧтоДушаПожелает_ДокиУжеРазблокированы(); Форма.Закрыть(); КонецПроцедуры |
|||
32
FN
25.10.11
✎
18:17
|
(31)+На форме обработки красивую надпись "Идет обработка данных..." и тп
|
|||
33
Escander
25.10.11
✎
20:08
|
(31) Я не это предлагал?
|
|||
34
FN
25.10.11
✎
21:48
|
(33) если ты про (22), то это в корне разный подход. В твоем случае происходит типа вложенная транзакция - потом можно нехилых глюков наловить. Хотя (31) - тоже не айс...
|
|||
35
Escander
26.10.11
✎
05:30
|
(34) а ну да есть разница, у мну производятся всякие внутренние операции внутри документа.
Ну так и сама задача не айс, чего уж тут говорить... но иногда приходится |
|||
36
Erhov_egor
26.10.11
✎
05:59
|
(0)я так понял что тебе перед созданием 2 дока нужно закрыть 1 док,делай призаписи(),т.к. пользователя может создать док и не записать а просто отменить создание дока+(23)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |