Имя: Пароль:
1C
1C 7.7
v7: Форма обработки из документа
,
0 balak05
 
15.04.14
10:24
Здравствуйте. Открываю форму обработки из документа с помощью метода "ОткрытьФорму". Вторым параметром передаю документ. Далее в обработке загружаю в табличную часть этого документа данные из EXCEL. Вопрос в том как теперь "вернуться" к самому документу. Если я делаю из обработки запись документа то он ругается что документ открыт. Как обновить данные документа после изменения ее в обработке?
1 Ёпрст
 
15.04.14
10:31
ОткрытьПодбор самое простое, если конечно, обработка не внешняя
2 Ёпрст
 
15.04.14
10:32
а так, передавай не ссылку на документ, а контекст открытой формы - через него и строки свои лепи.
3 Torquader
 
15.04.14
10:35
(2) Через контекст строки не всегда вставляются - нужно будет только при открытии работать.
А при закрытии форму мы вернёмся в документ.
P.S. ещё - форму можно модально открывать.
4 Vlad_1717
 
15.04.14
10:35
(0) Обработку открывай модально. Это старый прикол семерки.
5 balak05
 
15.04.14
10:43
(4) попробовал модально. то же самое
6 balak05
 
15.04.14
10:44
(1) обработка не внешняя. но данные загружаются из эксель а не из формы обработки.
7 Mikeware
 
15.04.14
10:45
(6)" но данные загружаются из эксель а не из формы обработки" - угу, а рация не на транзисторах, а на бронепоезде....
8 balak05
 
15.04.14
10:59
(7) не понял прикола). При этом методе данные должны быть в самой форме, а у меня они в эксель. Или я чего то не понимаю?
9 Ёпрст
 
15.04.14
11:03
(8) не понимаешь
10 balak05
 
15.04.14
11:06
(9) ну так объясните, если не трудно?
11 Ёпрст
 
15.04.14
11:06
открываешь подбор , в форме обоработки при загрузке строк с экселя делаешь Форма.ВыполнитьВыбор(ПараметрыДляСтрокиДокумента)
в документе, в ОбработкаПодбора лепишь строки документа от прилетевших параметров(передавать проще структуру или СЗ)
12 Ёпрст
 
15.04.14
11:07
Для красоты, можно в форме обработки поместить или ТЗ для предварительного просмотра/правки строк с экселя, или.. другой красивый грид: табличноеПоле, элемент управления йоксель/tabledoc, или грид от Садовникова
13 Ёпрст
 
15.04.14
11:08
а можно и не помещать
14 balak05
 
15.04.14
11:21
(11) (12) Спасибо вам за пояснение. Но я все равно не понимаю зачем мне подбор? Вот смотрите, я открываю форму обработки (можно было даже в самом документе делать, но в форме обработки пользователь должен указать первую и последнуу строчки для загрузки и столбцы где находятся данные, так как файлы эксель разные). Передаю туда через параметр документ, добавляю строки к самому документу и все получается (проверял отладчиком). Я сейчас застрял на том как сохранить данные документа, сделанные в обработке
15 Mikeware
 
15.04.14
11:26
(14) "позовите программиста"©
16 balak05
 
15.04.14
11:27
(15) Зачем? я же уже почти все реализовал. Просто подскажите как сохранить данные документа, сделанные обработкой
17 Torquader
 
15.04.14
11:29
(14) Так после открытия обработки закрой форму документа - она тебе не нужна, потом откроешь её, когда документ уже будет сформирован - и покажешь пользователю, что получилось.
18 balak05
 
15.04.14
11:36
(17) Не поверите). Обработка, пока открыта, не дает переключится на документ. Да и не вариант это для пользователей. Не станут они каждый раз документ закрывать
19 dk
 
15.04.14
11:50
(0) 1c++ есть? тогда работай через контекст (2) и не парься
20 Mikeware
 
15.04.14
11:56
(19) "Не поможет"©
г.р. ТС посмотри...
21 Torquader
 
15.04.14
11:58
(18) Можно сделать вообще чудо - передать через параметр в обработку ТЗ или СЗ, а потом его там заполнить и в самом документе по данным этой ТЗ (или СЗ) заполнить форму.
22 Ёпрст
 
15.04.14
12:02
(14) см (2) тогда.
23 balak05
 
15.04.14
12:15
(21) Это как вариант. Можно попробовать.
24 Torquader
 
15.04.14
12:21
(23) В вашем случае, хороший вариант, так как потом можно будет сделать несколько обработок, и из каждой передавать одинаковую таблицу.
25 ivsher
 
15.04.14
12:32
Я постоянно использую для обработки документов внешние отчеты. Никаких проблем я не вижу. Все делаете правильно.
ОткрытьФорму("Отчет",КонтекстДокумент,ПутьКОтчету);
В сомом отчете доступ к документу получаете через Форма.Параметр. Ну что то типа такого ВнешнийДокумент=Форма.Параметр;
Далее просто работаете с обектом ВнешнийДокумент. Заполняйте что вам надо, табличную часть или шапку. Ну я например это делаю в процедуре внешнего отчета ПриЗакрытии(). Только не забудьте в конце добавить ВнешнийДокумент.Форма.Обновить(). Получается после закрытия внешней обработки пользователь видит на экране обновленный документ. Но имейте ввиду он еще не записан, и если пользователь нажмет закрыть и не сохранит, то все изменения пропадут. Ну это как бы все естественно.
26 Torquader
 
15.04.14
12:33
(25) Так это же хорошо, что не записан - пользователь может заметить, что он загрузил не тот файл, и повторить ещё раз.
27 ivsher
 
15.04.14
12:34
Ну да, показываем пользователю что он на делал, и оставляем возможность откатить назад.
28 balak05
 
15.04.14
13:22
(25) Делал так:
//Док.Форма.Обновить();
Не работает. Сейчас сделал через таблицу значений, все заработало.
29 balak05
 
15.04.14
13:22
Спасибо всем кто помогал.
30 ivsher
 
15.04.14
13:50
(25)Странно что не работает. У меня таким методом работает без проблем.
31 ikea
 
15.04.14
13:57
(31) А работать кто будет?
32 ikea
 
15.04.14
13:58
(31) Промазал, относится к (30)