Имя: Пароль:
1C
 
Если док открыт, то заполнется, иначе создает док и заполняется! Как?
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)
Если из формы дока запустить обработку: ОткрытьФорму("Отчет",Контекст,"Путь..."), тогда
ТипЗначенияСтр(ТвойПара)="ГрупповойКонтекст"
Программист всегда исправляет последнюю ошибку.