![]() |
|
v7: Насчет Сервис.ВыполнитьПроцедуру() | ☑ | ||
---|---|---|---|---|
0
DES
02.02.13
✎
20:11
|
Такая тема:
Есть Документ Док1 с табличной частью 2 поля. "Сотрудник" и "Сумма" Сотрудник заполняется от руки из справочника, а Сумма вычисляется при запуске процедуры Расчет() по кнопке. И документе есть Процедура РасчетСуммы() Сумма = 0; Если Сотрудник.Хитрый=Да Тогда Сумма = 100; КонецЕсли КонецПроцедуры Которая выполняется в Процедура Расчет() ВыбратьСтроки(); Пока ПолучитьСтроку()=1 Цикл РасчетСуммы(); КонецЦикла КонецПроцедуры Все работает, теперь нужно их другого документа получать расчетную Сумму для Сотрудника из этого документа. Делаю Если ОткрытьФорму("Документ.Док1", Конт)=1 Тогда Список = СоздатьОбъект("СписокЗначений"); Конт.Сотрудник = Сотрудник; // тут ха-ха Сервис.ВыполнитьПроцедуру(Конт, "Расчет", Список); КонецЕсли; Сотрудник не передается. Как сделать правильно ? |
|||
1
DES
04.02.13
✎
17:50
|
Апну ?
|
|||
2
Ёпрст
гуру
04.02.13
✎
17:56
|
Ну и нафига там твой список, у тя Расчет() без параметров.
Мог бы и так написать: Конт.Расчет(); |
|||
3
monsterZE
04.02.13
✎
20:53
|
не понял.. если у тебя есть документ с уже рассчитанной суммой - зачем ее еще раз рассчитывать? найди док, выгрузи тч и отфильтруй по сотруднику.. или по списку.
тем более, судя по тому, что ты привел, "расчет" у тебя обрабатывает тч документа, в котором сидит. что ты ему собрался передавать? скопировать процедуру в глобальник или в новый документ не предлагать? =) |
|||
4
DES
04.02.13
✎
22:58
|
Мне нужно понять механизм возможности использования алгоритма процедуры без параметров.
Процедура оперирует с табличной частью документа. Как мне подсунуть этой процедуре данные чтобы она отработала с ними также как с табличной частью. Мне нужен результат изменения данных. Ничего не нужно переписывать и переделывать и перемещать в глобальник или еще куда. Нужно из своего документа вызвать процедуру из другого документа подставить свои данные и получить результат изменения данных. |
|||
5
DES
04.02.13
✎
23:00
|
(2) поясни
|
|||
6
DES
05.02.13
✎
17:26
|
апну ?
|
|||
7
Ёпрст
гуру
05.02.13
✎
17:32
|
(5) чего пояснять ?
|
|||
8
DES
05.02.13
✎
17:44
|
можно ли конт. изменить чтобы передать нужные данные или нужно заполнять вновь созданный Документ ?
|
|||
9
Ёпрст
гуру
05.02.13
✎
17:45
|
изменяй, что мешает
|
|||
10
DES
05.02.13
✎
17:46
|
меняю, проверяю на воде процедуры - а там пусто.
|
|||
11
Ёпрст
гуру
05.02.13
✎
17:48
|
чего где меняешь, что где не получаешь?
|
|||
12
DES
05.02.13
✎
17:53
|
Конт.Сотрудник = Сотрудник
на входе Процедуры смотрю Сорудник = |
|||
13
Ёпрст
гуру
05.02.13
✎
17:54
|
На входе какой процедуры ?
|
|||
14
Ёпрст
гуру
05.02.13
✎
17:54
|
в какой момент ?
|
|||
15
DES
05.02.13
✎
18:00
|
Процедура РасчетСуммы()
брекпоинт => Сумма = 0; |
|||
16
Ёпрст
гуру
05.02.13
✎
18:07
|
||||
17
DES
05.02.13
✎
18:20
|
а если форма документа,
а Федя это элемент табличной части Пойдет ? |
|||
18
ADirks
05.02.13
✎
18:53
|
(12) а перед этим сказать
Конт.НоваяСтрока(); нельзя? а так то извращение конечно |
|||
19
DES
05.02.13
✎
19:20
|
спс.
|
|||
20
DES
05.02.13
✎
19:40
|
а как бы сделать чтобы форма Документа не открывалась на экране?
|
|||
21
ADirks
05.02.13
✎
19:44
|
создать документ
записать его в базу открыть форму сделать свои чёрные дела закрыть форму (Конт.Форма.Закрыть();) и всё это в транзакции (форма конечно откроется, но это хоть минимальное зло) |
|||
22
ADirks
05.02.13
✎
19:46
|
когда говоришь
ОткрытьФорму("Документ.Док1", Конт); и у пользователя уже открыта форма нового документа, то именно она и активизируется, и туда ты и зафигачишь все свои данные. И пользователь обрадуется, ага. |
|||
23
DES
12.02.13
✎
23:46
|
так это заработало, спасибо.
вот на другое наткнулся. Как бы так сделать: Создать документ, заполнить пару атрибутов, выполнить процедуру документа ПриОткрытии() записать и закрыть документ. и чтобы не моргало. Застрял на Записи документа без вопроса. Или не сохраняет или спрашивает Конт = 0; ОткрытьФорму("Документ." + _ТипДок,Конт,0); Конт.ДатаДок = _ДтДок; Конт.НомерДок = _НомДок; FormEx.ВыполнитьПроцедуру(Конт,"ПриОткрытии",); //Конт.Форма.Записать(); // не работает Конт.Форма.Закрыть(0); |
|||
24
Ёпрст
гуру
13.02.13
✎
11:04
|
(23) какой-то х..й занимаешься.
ПриОткрытии и так всегда выполняется при ОткрытьФорму, вызывать его спецом не надо. А в твоём случае, надо делать Док.Новый() и не открывать форму. Это в разы быстрее и правильнее. |
|||
25
DES
14.02.13
✎
00:42
|
так если Новый() - то не выполнится ПриОткрытии(), а там инициализируется некоторые атрибуты
|
|||
26
Zhuravlik
14.02.13
✎
00:56
|
(25) ВводНового()?
|
|||
27
DES
14.02.13
✎
01:37
|
(26) что вводнового ?
|
|||
28
Ёпрст
гуру
14.02.13
✎
09:49
|
(25) прописать их в поделке в разы быстрее, чем открывать форму для этого.
|
|||
29
Ёпрст
гуру
14.02.13
✎
09:50
|
если что, ежели код универсальный (как в типовых), достаточно вызвать пару процедур глобальничка и привет, типа глПриИзмененииФирмы/Клиентоса и т.д
|
|||
30
DES
14.02.13
✎
14:17
|
(28) да это понятно
но создается куча разных документов, при том что в последствии могут изменить код ПриОткрытии() в любом из них. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |