![]() |
![]() |
![]() |
|
Если док открыт, то заполнется, иначе создает док и заполняется! Как? | ☑ | ||
---|---|---|---|---|
0
SemT
20.10.04
✎
12:08
|
Сделал обработку заполнения документа из файла XLS. Теперь хочу сделать кнопку в самом документе, чтобы запускалась эта обработка.
Подскажите как написать (ну или хотябы чем можно воспользоваться), что-то типа Если обработка запущена из документа, тогда заполнить, Иначе сначала создать документ и потом его заполнить. |
|||
1
ОFF
20.10.04
✎
12:09
|
Передавай контекст в обработку, проверяй то или нет, ну и т.д.
|
|||
2
YamMike
20.10.04
✎
12:10
|
передаешь какой-нить параметр, а при открытиии обработки смотришь на него
|
|||
3
SnarkHunter
20.10.04
✎
12:10
|
Передавай параметр в обработку и анализируй...
|
|||
4
SemT
20.10.04
✎
12:12
|
Ух как Вы оперативно! Респект!
|
|||
5
Diter
20.10.04
✎
12:16
|
А разве можно программно заполнить строки открытого документа?
|
|||
6
Diter
20.10.04
✎
12:18
|
(+5) Я имею в виду не извращаясь с "Закрыть-Найти-Заполнить-Открыть"
|
|||
7
miki
20.10.04
✎
12:42
|
(6) Посмотри в типовой бух. документ Сч-Ф полученный, банковская выписка и т. п., напримери (кнопка "Заполнить").
|
|||
8
Diter
20.10.04
✎
12:49
|
(7) Это я знаю. Речь идёт о внешней обработке. См (0) Человек вызывает внешнюю обработку и заполняет открытый документ. Это две большие разницы.
|
|||
9
F427
20.10.04
✎
12:58
|
(8) Можно.
Есть 1 штатный способ (2 модификации) и куча нештатных... |
|||
10
Diter
20.10.04
✎
13:16
|
(9) Расскажи по подробнее, если конечно можно. Сам не раз сталкивался с подобной задачей и выходил из положения именно через "закрыть-найти-заполнить-открыть".
Да и ещё тогда вопрос попутно : есть форма подбора (например документов). Как сделать так, чтобы эта форма закрылась при выполнении определённого условия. Пример : формируем приходный кассовый (переделанный). Этот кассовый может закрывать сразу несколько отгрузок. В т.ч. документа фактически два реквизита "Документ" и "Сумма". Так вот, необходимо, чтобы как только общая сумма документов-отгрузок превысит сумму ПКО, форма подбора документов закрылась бы. Подбор множественный. Т.е. форма подбора не закрывается при выборе документа. Пока вижу только один вариант - закрывать и каждый раз перед открытием проверять условие, но может чего ещё подскажите. |
|||
11
SemT
20.10.04
✎
14:05
|
Обработка вообще-то у меня встроена в конфигурацию.
|
|||
12
SemT
20.10.04
✎
14:08
|
Вот похожая функция
Это в документе Процедура ЗаполнениеИзФайла() Если Клиент.Выбран()=0 Тогда Сообщить("Выберите клиента ..."); Возврат; КонецЕсли; НомерЛиста=1; ВвестиЧисло(НомерЛиста,"Введите номер листа ...",10,0); НомерПервойСтроки=1; ВвестиЧисло(НомерПервойСтроки,"Введите номер первой строки ...",10,0); НомерПоследнейСтроки=1; ВвестиЧисло(НомерПоследнейСтроки,"Введите номер последней строки ...",10,0); Если НомерПервойСтроки>НомерПоследнейСтроки Тогда Сообщить("Номер первой строки больше номера последней строки ..."); Возврат; КонецЕсли; Если ВыдачаКонтекстаОбработки(Контекст)=0 Тогда // невозможна выдача контекста, тк он уже // кому-то выдан ... Сообщить("Не возможно открыть подчиненную обработку ..."); Возврат; КонецЕсли; инд=0; Пока (НомерПоследнейСтроки>=НомерПервойСтроки+инд) Цикл инд=инд+1; НоваяСтрока(); КонецЦикла; // ОткрытьФорму("Обработка.ФормированиеТоварыВПути",Конт); КонецПроцедуры |
|||
13
Diter
20.10.04
✎
14:17
|
(11) "Внешняя" не имеется в виду ert. а обработка, не находящаяся в модуле документа
|
|||
14
Den
20.10.04
✎
14:18
|
(10) Очень просто. Создаешь в ПКО СЗ, запихиваешь туда контекст, сумму1, сумму2, короче, все что хочешь, затем, при открытии подбора передаешь вместо контекста документа эту СЗ, в подборе анализируешь и делай что хочешь. Все это теория, проверь на практике сам. Но, ИМХО, не есть хорошо автоматическое закрытие подбора, поскольку этим самым ты вгоняешь юзера в ступор или в состояние, близкое к тому. Лучше в подборе сделай отображение нужной информации и свали ответственность за неправильное заполнение на юзера.
|
|||
15
SemT
20.10.04
✎
14:25
|
Хм. А можно всеж-таки, ближе к моему вопросу.
|
|||
16
miki
20.10.04
✎
14:42
|
(7) Не вижу разницы. В типовой бухе посмотри сам код заполнения реквизитов открытого документа. А в своей кнопке "Заполнить" вызови обработку (хоть *.ert, хоть вшитую в конф.). Передаешь контекст в обработку через "Форма.Параметр". В этой обработке в процедуре "ПриОткрытии()" анализируешь чо за параметр. Далее вызываешь процедурку получения данных из ХЛС. Если передан существующий документ - заполняешь, если нет - создаешь и заполняешь. Затем вызываешь СтатусВозврата(0).
|
|||
17
F427
20.10.04
✎
15:32
|
(16) фигня... В лоб <> по лбу (Это у тебя...)
|
|||
18
miki
20.10.04
✎
15:52
|
В обработке:
Процедура ПриОткрытии() ТвойПара=Форма.Параметр; Если (ТипЗначенияСтр(ТвойПара)="Документ") Тогда Если ТвойПара.Вид()="<НужныйВид>" Тогда ЗаполнитьДокумент(ТвойПара); Иначе Предупреждение("Не умею заполнять такие доки"); КонецЕсли; Иначе //Можно и тут поизвращаться Док=СоздатьОбъект("Документ.<НужныйВид>"); Док.Новый(); ЗаполнитьДокумент(Док.ТекущийДокумент()); Док.Записать(); Сообщить(<Что-нибудь>); Док=0; КонецЕсли; СтатусВозврата(0); КонецПроцедуры (17)Скажи, где фигня? |
|||
19
F427
20.10.04
✎
16:54
|
Док в доке создавать?
|
|||
20
YF
20.10.04
✎
18:00
|
(18)
Если из формы дока запустить обработку: ОткрытьФорму("Отчет",Контекст,"Путь..."), тогда ТипЗначенияСтр(ТвойПара)="ГрупповойКонтекст" |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |