Перейти к содержимому

Перейти
Перейти

Загрузил

Тема поддержки файла Информация

  • Загружен: Mar 02 2014 06:00
  • Последнее обновление: Mar 02 2014 06:00
  • Размер: 6.45К
  • Просмотров: 299
  • Скачан: 3

Объектно ориентированный взгляд на программирование в 1С

- - - - -



Рассмотрим 1С в объектно-ориентированном подходе. Предопределенные объекты (Документ, Регистр,..) содержат код 3-х типов:
1. «Модуль объекта» - Код отвечает за конкретный экземпляр объекта, а вернее обработку данных этого объекта.
2.«Модуль формы» - Код отвечает за обработку действий пользователя.
3. «Модуль менеджера» - Код отвечает за операции над определенным типом объекта, без привязки к конкретному экземпляру.
В обычных языках это зовется «статические методы»
Все процедуры и функции в этих модулях, можно воспринимать как методы класса. Область видимости процедур или функция регламентируется ключевым словом «Экспорт» (здравствуй инкапсуляция). Правда, реквизиты нельзя сделать закрытыми, но это обходиться созданием глобальных переменных в самом модуле.
Модуль формы позволяет отделить код, отвечающий за обработку действий пользователя, и код, который обрабатывает данные.
Лучшее решение, это воспринимать «обработки» как описание собственных классов.
Наглядный пример. В «Списке значений» мне не нравится диалог, вызываемый методом «ОтметитьЭлементы». Не хватает кнопок, которые выделяли (или снимали выделение) со всех пунктов. И вот обработка СписокЗначенийРас как раз и дает такой диалог. Добавляем обработку в конфигуратор, а потом вызываем:
СписокЗначенийРас = Обработки.СписокЗначенийРас.Создать();
СписокЗначенийРас.Добавить("Пример1");
СписокЗначенийРас.Добавить("Пример2");
Если СписокЗначенийРас.ОтметитьЭлементы() тогда
СписокЗначенийРас.Данные.ОтметитьЭлементы(); // а это стандартный диалог
КонецЕсли;
К сожалению наследования в 1С нет. Поэтому методы и свойства которые есть у СпискаЗначений надо либо дублировать в обработке или обращаться к реквизиту который хранит оригинальный список значений (СписокЗначенийРас.Данные)
Теперь переходим в конфигуратор. Находим обработку СписокЗначенийРас и вызвав на нем контекстное меню, переходим в «модуль менеджера». Добавляем следующую функцию.
// Устанавливает или снимает (интерактивно) пометки у элементов списка значений.
// Заголовок - Заголовок окна диалога
// РабочиеДанные - список значений
Функция ОтметитьЭлементы(Заголовок=Неопределено, РабочиеДанные) Экспорт
Результат = Ложь;

ФормаОЭ = ПолучитьФорму("ФормаОтметитьЭлементы");
ФормаОЭ.ПрочитатьДанные(РабочиеДанные);
ФормаОЭ.ЧитатьДанныеПриОткрытие = Ложь;
Если Заголовок <> Неопределено тогда
ФормаОЭ.Заголовок = Заголовок;
КонецЕсли;

РезультатФормы = ФормаОЭ.ОткрытьМодально();
Результат = (РезультатФормы = КодВозвратаДиалога.ОК);

Возврат Результат;
КонецФункции
Теперь мы можем вызвать диалог еще проще.
сзДанные = Новый СписокЗначений;
сзДанные.Добавить("Пример_1");
сзДанные.Добавить("Пример_2");
Обработки.СписокЗначенийРас.ОтметитьЭлементы("Заголовок",сзДанные);
Чем не статический класс?




Администрация не несет ответственности за возможный вред, причиненный этим материалом.





  • 8623 Всего файлов
  • 9 Всего категорий
  • 49 Всего авторов
  • 23872 Всего загрузок
  • 1c8.2 Последний файл
  • fov_07 Последний автор

6 посетителей за последние 15 минут

0 пользователей, 4 гостей, 0 анонимных


Google (1), Bing (1)