Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 июн 2024, 08:58

Обращение к экспортной процедуре

Автор 1cka, 18 июн 2014, 16:12

0 Пользователей и 1 гость просматривают эту тему.

cska-fanat-kz

Ну а как тогда большие базы работают?
Нет, я не спорю, логика во всем этом есть...
Просто нигде в книгах от самой 1С такого не написано...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

1cka

Цитата: cska-fanat-kz от 19 июн 2014, 06:24
Для того, чтобы вызвать экспортный метод модуля объекта, надо сперва получить этот самый объект!
Для того, чтобы в Док1 вызвать метод ПоискДокумента() из модуля объекта Док2, надо получить объект Док2.
Вот тут просто вопрос как связаны ваши Док1 и Док2. Чисто предположив ,что в Док1 есть реквизит условно ДокументОснование типа ДокументСсылка.Док2, то имеем следующее:


мДок2 = ДокументОснование.ПолучитьОбъект();
НашДокумент = мДок2.ПоискДокумента(ссылка);
Документ = НашДокумент.ПолучитьОбъект();

в док2 есть реквизит ДокументОснование с типом Документссылка.Док1
А экспортная функция возвращает ссылку на Док2 и сама экспортная функция находится в модуле объекта Док2
Я хочу при проведении Док1 обратиться (с помощью экспортной функции) к соотв док Док2.

LexaK

Цитата: cska-fanat-kz от 19 июн 2014, 06:26
Цитата: LexaK от 18 июн 2014, 16:34
ДокОбъект  = Неопределено;
//последнюю команду можно не выполнять, но для порядка

первый раз такое вижу )
и что реально отражается на производительности, объеме используемой ОЗУ и пр.?

да, вы правы, особо на производительность это не влияет, просто осталась привычка "чистить" ненужные переменные из других языков программирования,
если модуль небольшой то при выходе из него, память и так очистится, а если модуль большой и создаваемый документ с табличной(ными) частями по 100 000 строк, то есть смысл очищать переменую (освобождать память) до выхода из данной процедуры.
Вообще стараюсь избегать таких ситуаций, если в несколькоих и разных документах нужно выполнять одинаковую процедуру/функцию то ее надо вынести в общий модуль и вызывать ее как общую процедуру, без этих ненужных танцев вокруг создания ДокументаОбъекта.
Добавлено: 19 июн 2014, 11:02


в догонку:
Вообще для того что бы использовать экспортную процедуру какого либо объекта, ссылка-то и особо не нужна, достаточно создать новый объект:

лкДокОбъект = Документы.НУЖНЫЙДОКУМЕНТ.СоздатьДокумент();
лкДокОбъект.НУЖНАЯПРОЦЕДУРА(...);
или
лкРезультат = лкДокОбъект.НУЖНАЯФУНКЦИЯ(...);
если помогло нажмите: Спасибо!

cska-fanat-kz

Цитата: LexaK от 19 июн 2014, 10:45да, вы правы, особо на производительность это не влияет, просто осталась привычка "чистить" ненужные переменные из других языков программирования,

Обычно в Си этот навык хорошо "въедается" )
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Dethmontt

Цитата: LexaK от 19 июн 2014, 10:45да, вы правы, особо на производительность это не влияет, просто осталась привычка "чистить" ненужные переменные из других языков программирования,

В 1С да и во многих других, локальная переменная очищается после ключевого слова КонецПроцедуры\функции
1С использует механизм работы с памятью "КУЧА", так что очищение переменной не приводит к очищению памяти, а просто ставит свойство что она как бы свободна и в случае нехватки памяти ее можно использовать!!!
З.Ы.(клиент 1С 32-битный и больше чем 2Гб потребить не может, архитектура не позволяет, да и не нужно ей этого)
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск