Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Волшебство программирования на 1С:Предприятие 7.7 Выпуск 15


Информационный Канал Subscribe.Ru

Логические задачи на сообразительность Налогообложение и бухгалтерский учет
в вопросах и ответах
В идеале цель высшего образования - научиться обрабатывать информацию - научиться думать. Этому нужно тренироваться, так как неиспользуемый орган атрофируется. Эта рассылка будет полезна "менеджерам", руководителям любого уровня - всем, кто имеет дело с информацией.

Сайт поддержки рассылки: http://www.shsd.spb.ru

Комментарии к широкому кругу проблем, связанных с бухгалтерским учетом и налогообложением, с применением нововведений законодательства РФ. Кроме того, на сайте www.yaktior.ru в рубрике "Вопрос-Ответ" каждое юридическое лицо может получить бесплатную консультацию на один вопрос.

Волшебство программирования на 1С:Предприятие

Здравствуйте! Сегодня мы исследуем глубину проникновения объектно-ориентированного подохода при программировании на 1С:Предприятие 8.0

В прошлом выпуске рассылки нам удалось создать отчет с собственным реквизитом и методом:

Отч = Отчеты.ДолгиКлиента.Создать(); //создаем экземпляр отчета
Отч.ВыбКлиент = ТекКлиент; //обращаемся к созданному нами реквизиту
Отч.Сформировать(); //вызываем написанный нами метод

Теперь попробуем взглянуть на эту ситуацию другими глазами, с точки зрения объектно-ориентированного программирования. Фактически мы создали класс ДолгиКлиента, а затем обратились к его свойству и методу. То же самое можно сделать со справочниками, документами и обработками. Таким образом можно сказать, что версия 8.0 вносит нечто новое в обычное программирование учетных задач, а фактически появляются элементы объектно-ориентированного программирования, а именно инкапсуляция.

Напомню, что существует три основных механизма объектно-ориентированного программирования:

  • Инкапсуляция (объединение свойств и методов в класс)
  • Наследование (отношения между классами, при котором дочерний класс наследует все свойства и методы родительского класса)
  • Полиморфизм (возможность переопределения методов в дочерних классов, в результате чего один и тот же метод, объявленный в родительском классе работает по-разному в каждом дочернем классе)

Сейчас мы наблюдаем, как 1С потихоньку осваивает инкапсуляцию. Причем чтобы определить класс его нужно оформить каким-нибудь объектом конфигурации, например обработкой. Пока нельзя написать где-нибудь в глобальном модуле

Класс Автомобиль Экспорт
{
Реквизиты
......Цвет: тип Цвет;
......МощностьДвигателя: тип Число;
...
Методы
.......Поехали();
...
};

Авто = Новый Автомобиль;

Тем не менее 1С чуть-чуть опередила всех на полголовы. Справочники и документы - это сохраняемые в базе классы. При этом документ характеризуется номером, датой и временем, а справочник кодом и наименованием. Сохраняемые в базе данных классы насколько я знаю только начинают осваиваться ведущими разработчиками баз данных, например они только недавно появились в последних версиях Oracle.

Предлагаю подумать над реализацией наследования и полиморфизма в 1С на примере справочников и документов. Например, есть справочник Контрагенты, от которого наследуется справочники Фирмы (юридические лица, входящие в наш холдинг) и Банки. Поскольку фирмы и банки суть контрагенты, то такое наследование вполне обоснованно. Они будут наследовать все признаки контрагентов, такие как ИНН, Юридический адрес и т.д. Кроме того, они будут иметь свои собственные реквизиты и методы. Например, банк имеет БИК, корр. счет и т.д.. Фирма имеет дополнительные свойства "Место в структуре холдинга", "Директор" из спр. Сотрудники и т.д.

Было бы здорово, если документы так же смогут наследовать свойства и методы друг друга. Например, есть документ Продажа, от которого наследуются документы РасходнаяНакладная, РасходнаяРеализатора и другие документы, осуществляющие списание остатков товаров на коммерческой основе. У этих документов будет общая часть модуля проведения, прописанная в документе Продажа, а также свои особенности: дополнительные поля, экранные формы, движения по другим регистрам и т.д. При этом родительский документ Продажа может вообще не иметь экранной формы, а содержать только движения по регистрам остатков товаров. Тогда он будет фактически абстрактным классом и пользователь о нем никогда не узнает.

Для полной реализации ООП в 1С необходимо иметь возможность создания классов в памяти, не связанных с объектами конфигурации, как например, всем известные СписокЗначений и ТаблицаЗначений. Эти объекты хранятся только в памяти и не сохраняются в базе. Конечно, если только вы не примете дополнительные меры, например сохраните их в реквизите справочника или в хранилище значений.

Далее хочу предостеречь ярых сторонников объектно-ориентированного программирования от массы флейма по этому поводу. ООП полезно только для достаточно больших и сложных проектов. Для небольших программ этот подход может только все усложнить. Поэтому такая возможность была бы не лишней, но это не горит. Существуют гораздо более насущные проблемы, чем введение ОО-подхода в учетные системы.

Отмечу, что даже для версии 7.7 относительно недавно появилась компонента 1С++, которая позволяет использовать объектно-ориентированный подход в ваших программах на 1С. Как говорится в документации, поддерживаются инкапсуляция, наследование и полиморфизм. Подробнее об этой компоненте вы можете прочитать здесь.

Внимание! Любая информация, опубликованная в данной рассылке, не является гарантированно достоверной и может не совпадать с официальным релизом 1С:Предприятие 8.0.

Официальный сайт рассылки www.mista.ru
Архив выпусков рассылки находится здесь
http://subscribe.ru/archive/comp.soft.prog.magic1c

С уважением,
Волшебник Станислав

stasmit@mail.ru


 

Рассылка Рецепты HTML:

Рассылка Технологии Программирования Visual Basic

HiProg.com/vb

 



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное