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

Вопросы инкапсуляции

Автор hackoff, 17 авг 2011, 11:29

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

hackoff

Здравствуйте уважаемые. Столкнулся с небольшими сложностями при написании кода.
1. Как вызывать функцию из модуля документа, написанную в модуле формы (как она должна быть описана)?
2. Как обратиться к элементу формы из модуля документа (К полям которые "реквизиты" получается)?
Спасибо за внимание :)

ОльгаН

Я тоже ученик, но думаю так:
1. Описать функцию в ГлобальномМодуле, в этом случае она "видна" всюду. Или скопировать описание функции и в модуль документа тоже.
2. Если форма того же документа, то в чем проблема?

hackoff

Проблемы в том что я слишком долго писал на с++/Qt и бред про чистоту кода не могу выбить из своей тупой головы:)
Еще один вопрос возник. Есть ли статические локальные переменные?

ОльгаН

Что такое "статические локальные переменные"? Для чего нужны?

sergejK74

Цитата: hackoff от 17 авг 2011, 11:47
Есть ли статические локальные переменные?
Нет.
Кнопочка Спасибо - слева!

hackoff

По вопросу 1 и 2 кто может подсказать?

hackoff

В документации описано то, что из модуле документа доступен только глобальный контекст и контекст с реквизитами текущего документа. И еще я так понял что в форме документа нельзя создавать глобальные функции, в документации написано "не имеет смысла" ( со словом экспорт), что это можно только в глобальном модуле.
Следовательно:
из модуля документа нельзя обратиться к элементам формы, глобальным переменным, не являющимися "реквизитами"
из модуля документа нельзя вызвать функцию/процедуру находящеюся в модуле формы документа

Товарищи! Где я не прав? Во мне медленно и верно погибает желание изучать 1с :(. Может есть литература "похожая" на Бьерна Страуструпа и Герберта Шилда?

sergejK74

Цитата: hackoff от 18 авг 2011, 10:15
Следовательно:
из модуля документа нельзя обратиться к элементам формы, глобальным переменным, не являющимися "реквизитами"
Это ограничение вызвано логикой работы системы 1С. Представь, что у тебя есть какой-то реквизит на форме (не являющийся "реквизитом"). И логика проведения документа зависит от его значения. Если документ записать и закрыть, то значение реквизита будет неопределено. При повторном перепроведении документа (допустим при групповом перепроведении) невозможно получить значение реквизита формы и использовать его в алгоритме обработки проведения.
Цитата: hackoff от 18 авг 2011, 10:15
из модуля документа нельзя вызвать функцию/процедуру находящеюся в модуле формы документа
Логика здесь та же. Для уменьшения количества ошибок связанных с использованием разного рода реквизитов, которые не сохранены в базе, при обработке проведения. В 8.х этот недостаток устранен, там есть модуль объекта. Общие функции можно вынести туда.
Цитата: hackoff от 18 авг 2011, 10:15
Товарищи! Где я не прав? Во мне медленно и верно погибает желание изучать 1с :(. Может есть литература "похожая" на Бьерна Страуструпа и Герберта Шилда?
По 7.7 литературы очень мало, всю ее наверно можно найти в разделе ПОЛЕЗНЫЕ ССЫЛКИ для скачивания.
Кнопочка Спасибо - слева!

hackoff

Спасибо всем! Информацией удовлетворен:) надеюсь когда нибудь сам достигну уровня, на котором смогу помогать по вопросам 1с:)
Тему можно закрыть:)

Теги:

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

Рейтинг@Mail.ru

Поиск