Встроенный язык системы «1С: Предприятие»
Разработка прикладного решения в системе «1С: Предприятие» заключается в двух основных действиях: визуальном конструировании объектов конфигурации и описании специфического поведения системы с использованием встроенного языка и языка запросов.
Встроенный язык системы «1С: Предприятие» имеет много общих черт с другими языками программирования, но не является прямым аналогом какого-либо из них. Наиболее значимые его особенности:
· мягкая типизация (тип переменной определяется типом значения, которое она содержит, и может изменяться в процессе работы);
· отсутствие программного описания прикладных типов (они создаются при добавлении объектов конфигурации);
· событийная ориентированность встроенного языка;
· все операторы имеют как русское, так и английское написание, которое можно использовать одновременно.
Модули конфигурации
Для размещения текста программы на встроенном языке предназначены модули прикладного решения. Эти модули располагаются в различных местах конфигурации и имеют различное назначение. Большинство модулей «привязано» к определенным объектам конфигурации или к самому прикладному решению.
Различают следующие виды программных модулей:
· Общие модули. В конфигурации может быть произвольное количество модулей, в том числе и ни одного. Общие модули сами по себе не вызываются в процессе работы конфигурации. Они служат лишь для размещения в них текстов процедур и функций, которые могут вызываться из других модулей прикладного решения. Поэтому в них отсутствует раздел описания переменных и раздел основной программы. Т.о. общие модули содержат только процедуры и функции.
· Модуль приложения. В конфигурации всегда существует единственный модуль приложения. Он выполняется при запуске системы в режиме «1С: Предприятие» и предназначен для отработки действий, связанных с сеансом работы конечного пользователя. Основными событиями, которые могут обрабатываться в модуле приложения, являются события начала и окончания работы приложения. Последовательность из вызова представлена на рис. 1. Событие ПередНачаломРаботыСистемы возникает при запуске системы до открытия главного окна. Обрабатывая это событие, разработчик, например, имеет возможность отказаться от запуска, если какие-либо условия не выполнены. Событие ПриНачалеРаботыСистемы возникает после открытия главного окна. В обработчике этого события можно, например, вывести сведения об именинниках и пр.
· Модуль внешнего соединения. В конфигурации всегда существует единственный модуль внешнего соединения. Он выполняется при обращении к приложению как к COM-серверу (в режиме внешнего соединения). В режиме внешнего соединения запускается не полноценное приложение «1С: Предприятия», а «облегченный вариант», в котором недоступны все функции, так или иначе связанные с организацией пользовательского интерфейса.
· Модули форм. Каждая форма имеет свой модуль, в котором определяется поведение формы и действия, выполняемые из нее, например, открытие других форм. Для всех форм вызываются события ПередОткрытием, ПриОткрытии, ПередЗакрытием и ПриЗакрытии.
Контекст
В системе «1С: Предприятие» контекст обозначает окружение модуля, т.е. доступные ему переменные, объекты, свойства, методы и события. Можно выделить следующие виды контекстов, и, соответственно, правила видимости экспортируемых переменных, процедур и функций:
· Глобальный контекст, доступный во всех остальных контекстах, состоит из следующих частей:
§ свойства, методы и события глобального контекста (например, свойство РабочаяДата);
§ системные перечисления и системные наборы значений (например, КодВозвратаДиалога и Символы).
· Контекст общего модуля образуется глобальным контекстом и локальным контекстом самого общего модуля (т.е. процедурами и функциями, определенными внутри общего модуля). В контексте общего модуля доступны экспортируемые процедуры и функции других общих модулей. Недоступны экспортируемые переменные, процедуры и функции модуля приложения.
· В контексте модуля приложения или модуля внешнего соединениядоступны экспортируемые процедуры и функции общих модулей.
· В контексте модуля прикладного объектаесть доступ к реквизитам и табличным частям объекта, а также его методам и событиям. Здесь доступны экспортируемые переменные, процедуры и функции модуля приложения (модуля внешнего соединения) и общих модулей.
· В контексте модуля формыдоступны реквизиты формы, а также свойства, методы и события формы. Если у формы назначен основной реквизит, то в модуле формы становятся доступны свойства и методы прикладного объекта, используемого в качестве основного реквизита.
Схематично взаимосвязь контекстов изображена на рис. 2.Нарис. 3 изображено возможное взаимодействие модуля формы журнала и модуля документа.
Процедуры и функции
Процедуры и функции являются блоками программы, которые можно вызывать по имени из другого места, например, из другой процедуры. Функции отличаются от процедур только тем, что имеют возвращаемое значение. В 8-й версии порядок следования процедур и функций не важен. Это означает, что процедура может располагаться ниже места ее вызова.
Процедуры и функции могут иметь параметры, которые определяют, какие действия и с какими объектами она должна сделать. Параметры процедуры или функции по умолчанию передаются по ссылке. Это означает, что изменение формального параметра внутри процедуры или функции приведет к изменению фактического параметра в том месте, где она вызывается. Чтобы гарантированно передать параметр по значению, нужно перед именем параметра вставить ключевое слово Знач.
Пример 1:
Расчет(); // Вызов процедуры
Пример 2:
Процедура Расчет(Пар1, Пар2, ПарЗ) Экспорт
Глоб = Глоб + Пар1 + Пар2 + ПарЗ;
Расчет(5, 6, 7); // Вызов процедуры
Пример 3:
Функция Расчет(Пар1, Пар2, ПарЗ) Экспорт
Лок = Глоб + Пар1 + Пар2 + ПарЗ;
Рез = Расчет(5, 6, 7); // Вызов функции
Типы данных
Число, Строка, Дата, Булево, значение Неопределено, значение Null (для неуказанных значений в таблицах базы данных)
Тип. Значения специального типа «Тип» нужны для представления и сравнения типов данных, например:
Если ТипЗнч(ВыбДок)=Тип(«ДокументСсылка.Чек») Тогда …
Объявление переменных
Переменные появляются в программе в следующих случаях:
· после их объявления при помощи оператора Перем.
· после первого размещения имени переменной в левой части оператора присваивания.
Пример:
· при определении имен идентификаторов редактируемых элементов диалога;
· при задании формальных параметров процедур.
Приведение типов
Приведение типов может быть явное и неявное.
Для явного приведения существуют следующие функции: Число, Строка, Дата, Булево. Неявное приведение типов производится системой автоматически при вычислении выражений.
Пример: значение числовой переменной НомерМесяца неявно преобразуется в строку и присоединяется к другой строке:
Справочники
Работа со справочниками производится с помощью следующих объектов:
· СправочникиМенеджер. Обеспечивает доступ ко всем справочникам конфигурации. Свойства этого объекта совпадают с именами справочников и содержат объекты типа СправочникМенеджер.
· СправочникМенеджер. Обеспечивает доступ к операциям над справочником как множеством элементов. Через методы этого объекта можно осуществлять поиск, получать выборку, создавать новые элементы, обращаться к формам и макетам справочника.
· СправочникСсылка. Однозначно идентифицирует элемент (группу) справочника и позволяет обращаться к нему в режиме «только чтение». Через свойства и методы этого объекта можно прочитать реквизиты элемента (группы), обратиться к его табличным частям. Значение этого типа хранится в реквизитах, ссылающихся на элементы данного справочника, например, в реквизите Сотрудник документа ПриемНаРаботу хранится ссылка на конкретный элемент справочника Сотрудники.
· СправочникОбъект.Предоставляет доступ к элементу с возможностью записи. Данный объект содержит методы, влияющие на элемент в базе данных, например, методы Записать и Удалить.
· СправочникВыборка. Предоставляет возможность перебора элементов справочника. Выборка может быть прямой или иерархической.
· СправочникСписок. Объект для управления списком элементов в табличном поле. Позволяет управлять колонками, отбором и сортировкой в списке.
Источник
Программирование в 1С для всех
В этой статье я разберу объекты платформы 1С 8.3, и покажу, какие виды объектов бывают в 1С.
Что такое объект? Объект в языке программирования — это некоторая сущность, обладающая Свойствами, над которой можно свершать различные манипуляции посредством Методов.
Самое интересное, что пользователь программы 1С работает не с самим объектом, а с экземпляром объекта, который он может создать либо самостоятельно, либо с помощью программного кода, написанного разработчиком.
Всего в платформе 1С 8.3 можно выделить несколько видов объектов – это объекты конфигурации (или объекты метаданных, прикладные объекты), общие объекты и универсальные коллекции значений.
Какое общее свойство всех объектов в 1С? В платформе 1С мы не можем, как разработчики, самостоятельно изобрести тот или иной объект (или прототип объекта, если это касается объекта метаданных, об этом ниже), мы можем довольствоваться только тем, что нам предоставили разработчики платформы. Мы можем создать разные справочники, разные документы, разные таблицы значений и списки значений, но не можем придумать какой-то свой объект и с ним работать. В этом есть плюс, и есть минус. Минус в том, что мы ограничены функционалом платформы 1С, и вынуждены с ним работать. Плюс в том, что любое приложение, разработанное на платформе 1С стандартизировано, и нам не придётся разбираться в том, что придумал тот или иной разработчик.
У объектов есть свойства, методы и события.
Свойство объекта – это поле, которое может содержать какую-то информацию, связанную с этим объектом. Это поле может быть доступно для записи (можно записать какую-то информацию в это поле) и для чтения (информацию можно прочитать из этого поля), или просто для чтения. Причем, информация в свойстве объекта связана не с самим объектом, а с его экземпляром.
Метод объекта – это процедура или функция, которая выполняет или какое-то действие над экземпляром этого объекта, или возвращает информацию о состоянии экземпляра этого объекта.
У объектов метаданных разработчик может создать собственные свойства и методы, а у общих объектов и у универсальных коллекций значений можно довольствоваться только теми свойствами и методами, которые предоставляет платформа 1С.
Событие – это процедура, которая позволяет перехватить какое-то событие над этим объектом, и, или доработать это событие, или отменить его.
Объекты конфигурации 1С
Объекты конфигурации 1С или объекты метаданных создаются на этапе конфигурирования разработчиком – это справочники, документы, константы и т.п. Пользователь может непосредственно работать с некоторыми объектам — создавать экземпляры объектов и манипулировать ими. Или использовать их — отчеты, обработки и тп.
В платформе 1С существуют различные прототипы объектов метаданных. Это справочники, документы и прочие метаданные.
Все прототипы объектов метаданных представлены в дереве метаданных.
Разработчик может самостоятельно создать объект того или иного прототипа. Например, мы можем создать Справочник. Для этого, достаточно выделить ветку Справочники дерева конфигурации, вызвать правой клавишей мышки контекстное меню, и выполнить команду «Добавить» этого меню.
После выполнения команды, будет создан новый объект, с заранее определенным разработчиками платформы 1С набором методов и свойств.
Например, у справочника, созданного выше, одни из свойств это Имя, Синоним и т.д., а методы, например, Записать, Заполнить и тд.
Также, у объекта могут быть события: это возможность перехватить какие-то действия с объектом, например, можно перехватить запись элемента справочника.
Набор методов, свойств и событий объекта определяется его прототипом. Например, у справочников может быть один набор свойств, а у документов совершенно другой.
Посмотреть все методы, свойства и события прототипа того или иного объекта можно в синтакс-помощнике. В ветке для соответствующего прототипа.
Для объектов метаданных разработчик может самостоятельно создать те или иные свойства – реквизиты объектов.
А также, разработчик может создать методы – описав их в модуле объекта.
У некоторых объектов пользователь может создавать экземпляры этих объектов: например, можно создать экземпляр справочника или документа, и записать этот экземпляр в базу данных. А некоторые объекты метаданных пользователь может использовать для каких-то целей. Например, отчет или обработку.
Общие объекты 1С
Общие объекты – это объекты встроенного языка программирования 1С, которыми может оперировать разработчик, необходимые для различных технических и вспомогательных нужд (например, такой общий объект, как ДиалогВыбораФайла предназначен для работы с диалогом открытия файла, сохранения файла и т.д.).
В синтакс-помощнике информация обо всех общих объектах расположена в одноименном каталоге.
Если у объектов метаданных были прототипы, и разработчик мог создать тот или иной объект какого-либо прототипа, то у общих объектов ни каких прототипов нет, и разработчик может довольствоваться только теми общими объектами, которые ему предоставляет платформа 1С.
Разработчик имеет возможность самостоятельно создать только экземпляр какого-то объекта, для своих утилитарных целей. Делается это при помощи конструктора. Какой у того или иного объекта конструктор, можно посмотреть в синтакс-помощнике в одноименном каталоге.
Как правило, большинство общих объектов создается при помощи конструктора Новый. Например, так создаётся табличный документ.
У общих объектов, также как и у объектов метаданных, могут быть свойства, методы и события. Но, в отличие от объектов метаданных, мы не можем, как разработчики, самостоятельно конструировать те или иные свойства и методы, а можем оперировать только тем, что предоставила платформа 1С. О том, какие свойства, методы и события имеются у того или иного общего объекта можно посмотреть во всё том же синтакс-помощнике.
Не у всех общих объектов есть и методы, и свойства, и события. У некоторых объектов может не быть событий, а у некоторых свойств.
Обратиться к свойствам и методам можно через оператор «.»:
Универсальные коллекции значений
Универсальные коллекции значений – это, также как и общие объекты, объекты встроенного языка программирования, которыми может оперировать разработчик. Но, в отличие от общих объектов, они предназначены для хранения наборов данных, причем эти наборы данных хранятся в оперативной памяти компьютера, во время запущенного сеанса. Таким образом, когда пользователь прекратит работу с сеансом 1С, то и вся информация этих наборов данных будет уничтожена.
Все универсальные коллекции описаны в синтакс-помощнике в разделе «Универсальные коллекции значении». Это массив, структура, соответствие, список значений, таблица значений и т.д.
Как правило, все универсальные коллекции значений создаются при помощи конструктора Новый.
Читайте продолжение темы:
Более подробно про основные универсальные коллекции значений платформы 1С можно почитать в соответствующих статьях:
Так же, как и остальные объекты, универсальные коллекции значений имеют методы и свойства. Но, у каждой универсальной коллекции будет свой состав.
Например, у массива есть только методы, а у структуры есть методы и свойства.
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»
Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Источник
Понятие класса и объекта (бесплатная статья по Программированию 1С)
из цикла статей «Первые шаги в разработке на 1С»
О чем эта статья
Эта статья продолжает цикл статей «Первые шаги в разработке на 1С».
В ней будут рассмотрены следующие вопросы:
Применимость
Материал полностью актуален для платформы «1С:Предприятие 8» редакций 8.2. и 8.3.
Объекты конфигурации и встроенного языка
Виды объектов Платформы 1С:Предприятие 8:
Объекты конфигурации – это те объекты, которые отображаются в дереве конфигурации.
Объекты можно разделить на несколько типов:
Объекты общего назначения (Общие модули, Права доступа, Интерфейс и т.д.) в дереве конфигурации располагаются в ветке Общие.
Прикладные объекты в дереве объектов располагаются несколько ниже (Константы, Справочники, Документы и т.д.). Объект Критерий отбора, не смотря на то, что находится в ветке Общие является прикладным и может иметь визуальную форму.
Среди объектов конфигурации можно выделить те, которые являются подчиненными. Например, у справочника подчиненными объектами могут быть: Реквизиты, Табличные части, Формы, Макеты.
Объекты встроенного языка тоже можно разделить на два класса:
Обратимся к Синтакс-помощнику.
Не смотря на то, что система 1С:Предприятие является объектной (т.е. новые классы создавать нельзя), у существующих классов можно создавать новые методы, которые будут доступны для данного объекта.
Например, для документа можно создать метод, который будет использоваться вне этого документа.
Существует модуль объекта, в котором можно определить какие-нибудь методы, т.е. создать экспортные процедуры, которые будут доступны из вне данного модуля. При этом будет создан новый экземпляр класса ДокументОбъект.
Забегая вперед, можно сказать, что есть такой класс ДокументМенеджер, в котором тоже можно доопределять новые методы, используя модуль менеджера.
Рассмотрим понятие объектов и классов с точки зрения объектов конфигурации. Например, Справочники вообще – это класс, который обладает определенными свойствами и методами.
Конкретные Справочники – это классы-наследники и для них заданы определенные свойства. А вот элементы конкретного Справочника – это экземпляры класса, в которых хранятся конкретные значения.
Кратко ознакомимся, какие классы объектов необходимы для бизнес-систем, и как они представлены в 1С:Предприятие8.
Рассмотрим, например, склад. На склад поступают товары от поставщиков и возвраты от покупателей. Со склада товар продается покупателям, часть товара может возвращаться поставщику. Могут производиться прочие списания.
Во-первых, любая хозяйственная операция (приход или расход) должна быть документально подтверждена. В информационной системе должно быть только то, чему есть документальное подтверждение.
Таким образом, для регистрации хозяйственных операций в информационной системе должен быть электронный аналог документа, т. е. необходим класс объектов Документ.
Чтобы все сотрудники склада одинаково называли товары, нужны единые списки номенклатуры, т.е. нужна справочная информация. Объект, содержащий справочную информацию – Справочник.
Информация из справочника будет использоваться в документах (какая номенклатурная позиция и в каком количестве поступает на склад или отгружается с него).
Задача любой информационной системы – показать результаты анализа деятельности за некоторый период. Значит необходимы Отчеты. В отчеты информация поступает из документов.
Важной характеристикой информационной системы является скорость выдачи аналитических показателей, критичных, например, для принятия руководством ответственных решений.
Таким образом, Отчеты должны формироваться достаточно быстро. Чтобы оптимизировать процесс расчетов, необходим подготовительный объект, который хранит итоговые данные по документам.
Этот объект – Регистр. Документы записывают информацию в регистры, а из регистров информация берется в отчет. Происходит некоторое дублирование данных (избыточность данных), но при этом существенно возрастает скорость подготовки отчетов.
Рассмотрим, как представлены различные классы объектов согласно только что разработанной схемы.
Что касается справочной информации, для ее хранения существует достаточно большое количество объектов. Прежде всего, это сами Справочники.
Сюда же можно отнести и Константы, Перечисления (фиксированные списки значений), Планы видов характеристик, Планы счетов (описывают бухгалтерские счета), Планы видов расчета (для автоматизации расчетов), Бизнес-процессы и Задачи (подчиненный объект Бизнес-процесса).
Что касается документов, то в конфигурации существует прежде всего объект Документ и Журнал документов.
Выходная информация представлена, прежде всего, Отчетами. Также применяются Обработки (которые обрабатывают данные).
Объекты, которые содержат информацию для Отчетов – Регистры. Применяется четыре вида регистров. Регистры сведений – для хранения некоторых состояний. Регистры накопления – для хранения остатков и оборотов числовых величин.
Регистр бухгалтерии – для автоматизации бухгалтерского учета. Регистр расчета – для хранения информации о рассчитанной заработной плате и для установки правил расчета зарплаты.
В следующей статье мы продолжим знакомиться с объектами встроенного языка, а именно подробно изучим универсальные коллекции.
PDF-версия статьи для участников группы ВКонтакте
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Вы можете скачать эту статью в формате PDF по следующей ссылке:Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Комментарии / обсуждение (5):
Статья спорная, как в определениях класса(придерживаюсь определения С++), классификации языков (считаю, что 1С использует скорее предметно-ориентированный язык программирования, из чего и следует его достаточно глубокое развитие в некоторых областях и крайне поверхностное в других) и т.д.
Отличия от объектно-ориентированных систем: невозможно создание собственных классов и наследования; методов, которые можно переопределить незначительное количество. Именно поэтому язык считается объектным. Этим хотели сказать, что до такого языка, как С++, он не дотягивает. Стратегия его развития пока была иной. Чтобы программисты оперировали фактически только уже готовыми объектами.
Источник