|
Расширение: Использовать переменную заимствованного модуля | ☑ | ||
---|---|---|---|---|
0
moto77
18.07.18
✎
14:50
|
Платформа 8.3.11.2924, БП 3.0.64.28
Задача: немного дополнить функцию общего модуля, в котором происходит создание заполнение таблицы значений, нужно просто добавить в эту таблицу строки. Пытаюсь вот так: &Вместо("ПолучитьТаблицуВидовАктивовИОбязательств") Функция Расш_ПолучитьТаблицуВидовАктивовИОбязательств() // Вставить содержимое метода. Результат = ПродолжитьВызов(); НоваяСтрока = ТаблицаВидовАктивовИОбязательств.Добавить(); Возврат Результат; КонецФункции Выдает ошибку, что переменная не определена (ТаблицаВидовАктивовИОбязательств). Есть ли возможность указать, что переменная уже объявлена в заимствованном модуле? |
|||
1
Lamer1C
18.07.18
✎
15:07
|
(0) Из-за того, что &Вместо таблица не создается, вероятно. Используйте &После и дополняйте.
|
|||
2
Salimbek
18.07.18
✎
15:12
|
&(0) Если используешь Вместо, то надо полностью продублировать оригинальный код и в конце дописать нужное тебе. Но, судя по задаче, правильнее использовать &После как и говорит (1).
|
|||
3
Вафель
18.07.18
✎
15:15
|
(1) а что разве После видит все переменные исходной процедуры?
|
|||
4
moto77
18.07.18
✎
15:18
|
При создании расширения не дало использовать ничего, кроме &Вместо. Видимо, потому, что это функция, а не процедура.
Да в любом случае переменные расширяемого модуля не видны в Расширении. Не хотелось ведь код дублировать ради маленькой вставки, ну ладно, придется. |
|||
5
Aleksey
18.07.18
✎
15:19
|
Потому что неправильный код. Нужно
или Результат = ПродолжитьВызов(); НоваяСтрока = Результат.Добавить(); Возврат Результат; или ТаблицаВидовАктивовИОбязательств = ПродолжитьВызов(); НоваяСтрока = ТаблицаВидовАктивовИОбязательств.Добавить(); Возврат Результат; |
|||
6
moto77
18.07.18
✎
15:20
|
Я думал, может есть какая-то директива, указывающая на то, что переменная уже ранее объявлена.
Пригодилось бы не только для этой задачи, а вообще. |
|||
7
Aleksey
18.07.18
✎
15:20
|
(4) поправь код и ненужно дублировать
Только смысл в добавлении пустой строки в таблицу? |
|||
8
Aleksey
18.07.18
✎
15:21
|
(6) Ты о чем? Представь что ты вызываешь в своем коде функцию. Какую дерективу ты хочешь чтобы были доступны локальные переменные внутри функции? Или дублируй код функции или работай с результатом возвращаемый функцией, а не с локальными переменными
|
|||
9
Вафель
18.07.18
✎
15:24
|
(8) а в других языках можно ...
|
|||
10
Aleksey
18.07.18
✎
15:25
|
Например пример
Функция ИнициализироватьТЗ() Результат = новый ТаблицаЗначений; Результат.Колонки.Добавить("ПерваяКолонка"); Возврат Результат; КонецФункции Процедура МояПроцедура() МояТЗ = инициализироватьТЗ(); Далее ты с этой тз как работаешь, как с переменной Результат потому что так она внутри функции объявлена, или с переменной МояТЗ? Т.е. если по ходу хочешь добавить колонки в процедура МояПроцедура ты как пишешь Результат.Колонки.Добавить(); или МояТЗ.Колонки.Добавить(); ? Так почему если тут нет вопросов, то аналогичный код в расширении у тебя вызывает недоумение? |
|||
11
moto77
18.07.18
✎
15:26
|
(7) Как всё просто, спасибо!
|
|||
12
Aleksey
18.07.18
✎
15:26
|
(9) Это как?
Т.е. используя внутри какой нибудь функции строку а:=0, я в любом месте кода в любой процедлуре могу обратиться к этой переменной а и там будет 0? Или он пошлет скажет что не объявлена переменная? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |