|
v7: Выполнить процедуру документа из внешней обработки | ☑ | ||
---|---|---|---|---|
0
kupec
30.12.14
✎
11:16
|
День добрый, имеется обработка, которая набивает строки в новые документы при определенных условиях, в модуле документа есть процедура ОбработкаСтроки(), в ней обрабатывается выбранный товар и в зависимости от характеристик товара (указанных в элементе в качестве реквизитов) заполняются реквизиты ТЧ документа. Как запустить данную процедуру из текущей обработки, почитал форум, нашел вариант с 1СРР, но у меня что то не получается реализовать, там сказано якобы конт.Обработкастроки()
//Пример кода Док=СоздатьОбъект("Документ.Приход"); Док.НоваяСтрока(); Док.Товар = Товар; Док.ОбработкаСтроки(); в итоге выдает что поле агрегатного объекта ОбработкаСтроки() не найдено, компонента загружена в глобальнике методом ЗагрузитьВнешнююКомпоненту(); Помогите разобраться |
|||
1
kupec
30.12.14
✎
11:17
|
Инфо брал от сюда
как выполнить процедуру модуля формы документа из обработки? |
|||
2
Остап Сулейманович
30.12.14
✎
11:22
|
(0) Перенести (скопировать) код процедуры в обработку и не делать людЯм моск. Или вынести в глобальный модуль.
|
|||
3
silent person
30.12.14
✎
11:32
|
ВыполнитьПроцедуру / CallAsProcedure
Синтаксис: ВыполнитьПроцедуру(Контекст, ИмяПроцедуры, СписокАргументов) Параметры: Контекст - тип: ГрупповойКонтекст. Контекст, в котором необходимо выполнить процедуру. Необязательный. По умолчанию - текущий контекст. ИмяПроцедуры - тип: Строка. Имя процедуры. СписокАргументов - тип: СписокЗначений. Список значений, содержащий аргументы процедуры. Если размер списка меньше, чем количество аргументов процедуры, то в оставшиеся аргументы передаются пустые значения. Лишние значения игнорируются. Значения по умолчанию игнорируются. Необязательный. По умолчанию - пустой список. Возвращает: результат выполнения метода в виде числа: 1 в случае успеха, 0 в противном случае. Описание: Метод предназначен для выполнения процедуры в заданном контексте. Пример: Перем Конт; Сервис = СоздатьОбъект("Сервис"); Если ОткрытьФорму("Обработка.Демо", Конт) = 1 Тогда Список = СоздатьОбъект("СписокЗначений"); Список.ДобавитьЗначение("Первый параметр"); Список.ДобавитьЗначение("Второй параметр"); Список.ДобавитьЗначение("Третий параметр"); Сервис.ВыполнитьПроцедуру(Конт, "Выполнить", Список); КонецЕсли; |
|||
4
kupec
30.12.14
✎
11:43
|
спасибо, попробуем
|
|||
5
kupec
30.12.14
✎
11:56
|
Док=СоздатьОбъект("Документ.Приход");
Док.НоваяСтрока(); Док.Товар = Товар; Сервис.ВыполнитьПроцедуру(Док,"ОбработкаСтроки"); Возвращает 0 |
|||
6
kupec
30.12.14
✎
11:58
|
я как понимаю на закрытой форме не сработает?
|
|||
7
trad
30.12.14
✎
12:00
|
надо постичь отличие контекста от прочего агрегатного объекта
|
|||
8
kupec
30.12.14
✎
12:01
|
у меня открыта форма обработки - это контекст, а док это объект, следовательно передаю всместо контекста объект и не срабатывает?
|
|||
9
Cap_1977
30.12.14
✎
12:03
|
(0) Дешевле и быстрее будет выдернуть процедуру ОбработкаСтроки из документа, и ее вставка в твою поделку с коррективами под поделку...
|
|||
10
kupec
30.12.14
✎
12:04
|
(9) а вдруг она поменяется, а там забудется...
|
|||
11
1Сергей
30.12.14
✎
12:05
|
(10) в ГМ её перенеси
|
|||
12
varelchik
30.12.14
✎
12:08
|
(0) Док=СоздатьОбъект("Документ.Приход");
ОткрытьФорму() тогда ты получишь контекст формы с его процедурами и функциями. НЕ путайте 7.7 и 8.х |
|||
13
trad
30.12.14
✎
12:24
|
(8) процедура у тебя в модуле формы документа, следовательно вызывать эту процедуру можно только в контексте формы этого документа. Вызывать ее можно из любого модуля, хоть из обработки, Но вызов должен быть привязан к контексту документа, а не к объекту документа.
КонтДокумента=""; ОткрытьФорму("Документ.Приход",КонтДокумента); КонтДокумента.ОбработкаСтроки(); |
|||
14
Мимохожий Однако
30.12.14
✎
12:35
|
(10)Не гадай. Просто сделай, что советуют. в (2) и (9)
|
|||
15
varelchik
30.12.14
✎
12:54
|
(13) ну я это ж и имел ввиду в (12).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |