Имя: Пароль:
1C
1C 7.7
v7: Вызов процедуры из документа
0 Erhov_egor
 
20.07.11
10:15
Можно ли вызвать из одного документа в модуле документа процедуру из другого документа, например процедура заполнить()?
   ВыбратьСтроки();
   Пока ПолучитьСтроку() = 1 Цикл
       Если КоррСчет_=Сч62_2 Тогда
           Докум.Новый();
           Докум.СчетАванса62=1;
           Докум.ТипРасчетов=1;
           Докум.Контрагент = Субконто1;
           Докум.ДоговорАванса=Субконто2;
           Докум.ТипРасчетов6=Субконто3;
           Докум.ДатаДок = ДатаДок;
           Докум.Записать();
       КонецЕсли;    
   КонецЦикла;
1 1Сергей
 
20.07.11
10:17
не открывая форму другого документа, до её кода не достучаться никак
2 Erhov_egor
 
20.07.11
10:23
а если я вызову форму например,то програмно все равно нельзя запустить?
3 AeDen
 
20.07.11
10:26
Форма.параметр
4 AeDen
 
20.07.11
10:26
в приоткрытии отработай
5 Erhov_egor
 
20.07.11
10:35
Т.е. я должен написать так?
к=1;
Докум.ОткрытьФорму("ЗачетАвансаПокупателя",пер);
Докум.Параметр=к;
6 Erhov_egor
 
20.07.11
10:36
я просто создаю новый,потом записываю некоторые данные,как открыть этот документ в который я только начал записывать?
7 __Se24
 
20.07.11
10:42
вынеси процедуру в глобальник и не заморачивайся )
8 miki
 
20.07.11
10:43
(6)открывать-то зачем? Пиши сразу что хочешь, как вариант.
9 Erhov_egor
 
20.07.11
10:44
(7)и че это даст? ну передаст он параметр даже,а как он строки заполнит?
10 Erhov_egor
 
20.07.11
10:46
(8)а как я процедуру вызову из другого дока? даже если в глобальник вынесу,мне нужно заполнить док тот который я хочу открыть программно
11 AeDen
 
20.07.11
10:48
про открытьформу почитай жкк
12 miki
 
20.07.11
10:48
(10)заполняешь откуда?
13 AeDen
 
20.07.11
10:48
и сделай поиск в конфигурации по ключу Форма.параметр
14 Erhov_egor
 
20.07.11
10:51
(12)мне нужно из одного дока в другой перенести некоторые данные,такие как контрагент,дату,вид расчетов. Я создаю новый док и записываю туда,по этим данным в процедуре заполнить он ищет задолжности и заполняет строки...
15 chief accountant
 
20.07.11
10:52
(14) Лень процедуру заполнения второго дока перенести в первый?
16 AeDen
 
20.07.11
10:55
Групповая печать документов во пример
(15) А смысл?
17 chief accountant
 
20.07.11
10:59
(16) Нафига форму-то открывать?
18 AeDen
 
20.07.11
11:01
(17) Писать меньше.
19 AeDen
 
20.07.11
11:01
даи мало-ли, может стоит задача открыть форму нового документа с его заполнением.
20 miki
 
20.07.11
11:01
(18)копипаст быстрее :)
21 AeDen
 
20.07.11
11:03
(20) как сказать, копипасту надо еще рашпилем подточить зачастую.
22 chief accountant
 
20.07.11
11:04
(20) Угумс.
(19) После того как столклулся с глюками при программом создании новых доков и последующем их отркрытий для заполнения - бросил эту затею. Хотя работало несколько лет
23 AeDen
 
20.07.11
11:06
(22) А какова природа глюков?
24 Sereja
 
20.07.11
11:06
(0) Попробуй ВыполнитьПроцедуру Из Формекса
25 chief accountant
 
20.07.11
11:08
(23) Не создавался второй документ после обновления платформы на 27 релиз. На 25 работало как часы
26 AeDen
 
20.07.11
11:14
(25) Да ладно!
Надо будет проверить...
27 Erhov_egor
 
20.07.11
11:23
через открыть форму этот параметр передается?
28 chief accountant
 
20.07.11
11:25
(26) Не всё так просто: если конфа открыта, то работает обработка, если через шедулер облом на втором доке
29 chief accountant
 
20.07.11
11:29
(27) Вот пример:
СписокПараметров=СоздатьОбъект("СписокЗначений");
СписокПараметров.ДобавитьЗначение("ЗачетАванса","Действие");
СписокПараметров.ДобавитьЗначение(ТабД.Учреждение,"ВыбраннаяФирма");
СписокПараметров.ДобавитьЗначение(ТабД.СчетАванса.ИсточникФинансирования,"ИсточникФинансирования");
СписокПараметров.ДобавитьЗначение(ТабД.Контрагент,"Контрагент");
СписокПараметров.ДобавитьЗначение(ТабД.Договор,"Договор");
СписокПараметров.ДобавитьЗначение(ТабД.СчетАванса.Родитель(1),"Счет");
СписокПараметров.ДобавитьЗначение(ТабД.СчетАванса,"СчетАванса");
СписокПараметров.ДобавитьЗначение(ТабД.ФКР,"КБК");
ОткрытьФормуМодально("Документ.ЗачетАвансаВыданного",СписокПараметров);
30 Erhov_egor
 
20.07.11
11:35
все спасибо
31 Erhov_egor
 
21.07.11
06:58
Возник вопрос в том чтобы открыть документ нужно его записать, а если у меня нету задолженности которая проверяется в открываемом документе,то он не должен быть по сути. как обойти?
32 VoditelKobyly
 
21.07.11
07:11
(31) смотри (7). Вынеси процедуры расчета в глобальник и не дергай лишний раз формы, тем более модально. Проверил, есть долги формируй документ, нету не формируй.
33 Erhov_egor
 
21.07.11
07:36
в модуле документа можно вызвать глобалку?
34 povar
 
21.07.11
07:38
(33) вызывай
и почитай ЖКК
35 VoditelKobyly
 
21.07.11
07:55
(33) Можно только помни, что модуль документа и модуль формы документа вещи разные. И это надо учитывать и не вызывать ОткрытьФормуМодально() в модуле формы и стараться не запускать процедур и функций длительное время работающих. Сам догадайся почему.
36 VoditelKobyly
 
21.07.11
07:58
(35+) Не надо вызывать в модуле документа.
Переноси такие вещи в ПриЗаписи().
37 chief accountant
 
21.07.11
08:02
(31) Во-во. Нефиг форму второго дока вообще открывать. Давно бы сделал как в (15) и не парил мозг
38 big
 
21.07.11
09:15
ЗагрузитьВнешнююКомпоненту(1cpp.dll);
Док=СоздатьОбъект("Документ.Чего-тоТам);
Док.ПеременнаяИзЭтогоДока = ТутПишуЧтоМнеНадо;
Док.НужнаяМнеПроцедура();

и всё работает "только в путь"
39 big
 
21.07.11
09:15
(38) + ну, конечно ещё надо этот Док найти, но мне лениво писАть было
40 Erhov_egor
 
22.07.11
06:48
(38)Для чего переменную записывать?
41 big
 
26.07.11
19:12
(40) это просто для примера, что доступны не только процедуры и функции модуля формы, но и переменные
42 smaharbA
 
26.07.11
19:14
(41) переменные и так доступны, даже без контекста
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.