+7 (495) 926-37-81ООО «Центр КТ» (495) 926-37-81
МОСКВА
Офис в Москве



1C Общая концепция платформы 1С:Предприятие 8

На данную тему уже написаны многочисленные и очень полезные статьи, книги и публикации. В этой же статье вкратце описаны основные моменты, наиболее важные для понимания общей концепции 1С:Предприятие 8.

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

  • Совокупность таблиц: вся информация системы находится в табличной форме. Например, для данных о сотрудниках организации существует специальная таблица с полями ФИО, Дата рождения, Пол, Адрес и др.
  • Совокупность объектов, что более правильное понятие с т. з. языков программирования. Объектом системы, например, является тот же самый справочник Сотрудники. Однако в понятие объекта входит не только перечисленные выше поля (атрибуты объекта), но и «вложенные» таблицы (например, со списком детей сотрудника), а также набор методов управления объектом, например Редактировать. Таким образом объект представляет собой некий набор таблиц с полями (свойства объекта) и соответствующий программных средств для управления объектом (методы объекта).

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

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

Типовые реализации серверной инфраструктуры для различных вариантов использования 1С Предприятие

Основное отличие версий 8.х заключается в возможности организации трехзвенной архитектуры - "клиент" - "сервер приложений 1С" - "сервер баз данных". Таким образом организация существенно облегчает процесс масштабирования и использования в предприятиях с большим числом пользователей. Мы более подробно остановимся на каждой из версий и особенности реализации аппаратного обеспечения для разного типа компаний.

1С Предприятие 8.x Версия «Клиент-Сервер» с выделенным общим сервером

1С Предприятие 8.x Версия «Клиент-Сервер» с выделенным сервером приложений и сервером SQL

1С Предприятие 8.x Версия «Клиент-Сервер» с выделенным сервером приложений, сервером SQL и терминальным сервером

1С Предприятие 8.x Версия «Клиент-Сервер» с кластером серверов приложений, сервером SQL и фермой терминальных серверов

Дерево метаданных (открываем конфигурацию)

Итак, с помощью документации к платформе «1С:Предприятие» из базовой поставки, вы установили систему с пустой конфигурацией.

Далее откройте дерево конфигурации (меню Конфигурация - Открыть Конфигурацию).

То что вы видите в дереве метаданных - это и есть составляющие метаданные типы объектов, они определяют структуру БД. Иногда язык программирования 1С называют объектно-ориентированным, хотя правильней будет назвать его «почти объектно-ориентированным. Дерево метаданных можно рассматривать как классы объектов и они жестко заданы. Встроенными средствами языка невозможно создать новые типы объектов, но можно создать неограниченное количество объектов определенного класса с уникальными свойствами.

На рисунке изображены свойства объекта Справочник. На закладке Данные можно создать описание структуры базы данных, для этого в свойствах объекта необходимо указать необходимые табличные части и реквизиты. В большинстве случаев объект уже имеет определенный реквизитный состав, например, справочник уже содержит таблицу с реквизитами Код и Наименование, длина которых можно настроить на закладке Данные.

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

В модуле описываются неинтерактивные события объекта. Структуру объекта метаданных можно представить в виде следующей формы:

На данной схеме впервые представлены модули. Именно в них системы описано поведение системы при различных событиях.

Виды и иерархия модулей:

Общие модули. Эти модули включают общие для всей системы функции и процедуры (но могут содержать и некоторые локальные процедуры и функции доступные в пределах только этого модуля), имеют доступ к процедурам и функциям другого общего модуля, не содержат область инициализации и описание переменных, основного текста программы. Общие модули подразделяются на глобальные и не глобальные. Функции и процедуры, описанные в глобальных модулях могут вызываться просто по имени, а описанные в неглобальных модулях вызываются путем обращения: НазваниеМодуля.НазваниеПроцедуры().

Специализированные модули приложения. К ним относятся модуль внешнего соединения, модуль приложения и модуль сеанса. Они предназначены для COM-событий или интерактивных событий старта и завершения работы системы. Эти модули могут вызывать функции и процедуры общих модулей.

Модули объектов. Они принадлежат объектам, имеют описание функций и процедур для манипулирования определенным объектом, могут вызывать процедуры и функции общих модулей.

Модули форм. Включают описание событий деятельности пользователя в форме. Могут вызывать функции и процедуры как модуля объекта, так и общих модулей.

Следует отметить, что в модуле любого объекта существует возможность описывать "Экспортные" процедуры и функции и обращаться к ним, но для этого сначала необходимо "получить" сам объект.

Структура модулей

Практически в любом модуле (есть исключения) можно выделить несколько частей:

Область объявления переменных. Эдесь находится описание переменных, «областью жизни» которых является весь модуль. Таким образом, значение переменной доступно из любой процедуры и функции модуля.

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

Область инициализации переменных (основной текст программы). За описанием процедур и функций находится текст программы, вызов которого производится непосредственно при запросе к текущему модулю. В этой части может находиться тот текст программы, который, например, должен быть выполнен, при открытии объекта. Но не стоит забывать что платформа «1С:Предприятие 8» представляет собой «событийный» язык, т.е. вызов определенных процедур и функций будет организуется системой самостоятельно, а в этой части модуля обычно только присваивают значения переменным, которые были описаны в первой части модуля.

Все эти части модуля не являются обязательными. В общих модулях нельзя объявлять и инициализировать переменные, таким образом, общие модули - это своеобразные «репозитарии общих процедур и функций».

Базовый синтаксис

Рассмотрим основные синтаксические конструкции. Синтаксис в системе 1с двуязычный: английский и русский, но все типовые конфигурации и большая часть авторских решений написаны русским синтаксисом.

Описание переменных

Явное объявление переменных.

Для объявления переменных служит оператор Перем, за которым следует имя переменной, соответствующее правилам идентификаторов системы (только символы, цифры и знаки подчеркивания, не превышает 255 знаков, не начинается с цифры). Оператор завершается точкой с запятой (";").

Перем ИмяПеременной;

Описание функций и процедур

В самом простом случае описание процедуры заключается в указании ее имени, перед которым стоит ключевое слово Процедура. После имени в атрибутных скобках могут быть указаны принимаемые атрибуты переменных, после описания процедуры КонецПроцедуры. В конце описания процедуры точка с запятой не ставится.

Процедура ИмяПроцедуры()

КонецПроцедуры

Вызвать процедуру также можно указанием ее имени с атрибутными скобками и точкой с запятой в конце. Например:

ИмяПроцедуры();

Для получения атрибутов, в скобках указываются названия переменных. Если они определены на уровне модуля, в них попадет атрибут, заменив собой переменную. В противном случае, описанные для приема параметров атрибуты объявляют свои переменные уровня процедуры.

Параметры передаются «по ссылке»,т.е. принимающий атрибут принимает не значение, а саму переменную.

Пример описания процедуры и атрибутами и ее вызов:

Процедура МояПроцедура(Парам1, Парам2)

КонецПроцедуры

МояПроцедура(10,20);

Если необходимо принять атрибут по значению, то в атрибутных скобках указывается ключевое слово ЗНАЧ до названия принимаемой переменной :

Процедура МояПроцедура(Парам1, ЗНАЧ Парам2)

КонецПроцедуры

Кроме того, для принимаемых атрибутов можно указать значение по умолчанию, то есть, в случае если значение не будет передано, переменная примет это значение:

Процедура МояПроцедура(Парам1, Парам2 = 0)

КонецПроцедуры

Для вызова процедуры из других модулей системы, в описании за атрибутными скобками ставится ключевое слово ЭКСПОРТ:

Процедура МояПроцедура(Парам1, Парам2 = 0) Экспорт

КонецПроцедуры

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

Функция МояФункция(Парам1, Знач Парам2, Парам3 = 0) Экспорт

Возврат Парам3;

КонецФункции

Базовые типы значений

Рассмотрим основные типы значений. К ним относятся примитивные, служебные типы и коллекции значений.

Примитивные типы

Булевый тип переменных

Переменная с булевым типом принимает одно из 2-х значений: Истина или Ложь. Тип переменной устанавливается в момент присвоения ей значения. значение переменной присваивается знаком равно: «=». Если переменная не была объявлена до присвоения ей значения, она может быть объявлена в момент присвоения ей значения, в этом случае объявление переменных называют неявным.

Переменная1 = Истина; Переменная2 = Ложь;

Для булевого типа значений возможно только одна операция - инвертирование ключевым словом НЕ:

Переменная3 = НЕ Переменная2;

Число.

Для присвоения числового значения переменной не используется никаких специальных знаков, просто указывается присваиваемое число. Например:

// *** Переменная4 = 5; Переменная5 = -124; Переменная6 = 0.789; // ***

Для числового типа данных доступны все основные математические операции:

// *** Переменная7 = 5 + 10; Переменная8 = 3 - 48.36; Переменная9 = 29 * 45; Переменная10 = 16 / 8; // ***

Также имеется оператор получения остатка от деления: «%» (процент):

// *** Переменная11 = 8%3; // ***

В результате переменная примет значение 2 (остаток от деления 8 на 3).

Дата.

Переменная, содержащая дату всегда хранит время с точностью до секунды! Обозначается дата и время знаком « ' » (одинарными кавычками). Возможны различные варианты написания:

// *** Переменная12 = '20120806'; Переменная13 = '2012-08-06'; Переменная14 = '20120806203000'; Переменная15 = '2006-11-06 20:00:00'; // ***

Если время не указано, система вставляет нули. Например, переменная 12 хранит ноль часов ноль минут ноль секунд. С датами можно производить основные математические операции, при чем результатом операции будет дата, отличающаяся от исходной на указанное число секунд.

// *** Переменная16 = '20101123' - '20081103'; Переменная17 = '20071015' + 85320; // ***

Строка.

Строковый тип значения может содержать все доступные символы, для их описания используется Знак двойные кавычки: «"». Возможно описание строки, состоящей из нескольких строк, при этом для описания новой строки в начале указывают знак «|», а кавычки ставят только в начале первой и конце последней строки:

// *** Переменная18 = "Любая строка"; Переменная19 = "Первая строка |Вторая строка |Третья строка"; // ***

Для строк доступна только одна операция - конкатенация (объединение строк):

// *** Переменная20 = "Строка 1" + "Строка 2"; // ***

Служебные типы данных

Служебные типы представляют собой следующие типы переменных:

Неопределено - этот тип чаще всего возвращают методы объектов, а также до присвоения переменной значения, она имеет тип «Неопределено».

NULL - этот тип значения используется при запросах к базе данных, когда система не возвращает значение и не обнаруживает его в таблице.

Коллекции значений

К этим типам значений можно отнести:

Массив

Таблица значений

Список значений

Соответствие

Структура

Управляющие синтаксические конструкции

Условия

Основа любого алгоритма - ветвления и условия. Условный оператор «Если» имеет следующее описание:

// *** Если <условие> Тогда КонецЕсли; // ***

Условие - это логическое выражение, которое может содержать различные математические знаки =, <>, <, >, <=, >= , и возвращающее булевый тип значения:

Ветвления во встроенном языке можно указывать непосредственно в условном операторе, в конструкции «Иначе»:

// *** Если 2 = 0 Тогда Б = 2; Иначе Б = 14; КонецЕсли; // ***

Существует еще одна возможность ветвления с условием:

// *** Если 2 = 0 Тогда А = 2; ИначеЕсли 2 = 4 Тогда А = 5; ИначеЕсли 25 < 60 Тогда А = 87; Иначе А = 0; КонецЕсли; // ***

Конструкция «ИначеЕсли» может повторяться неограниченное число раз.

Циклы

Можно выделить несколько конструкций цикла:

Цикл с условием:

// *** Пока <Условие> цикл КонецЦикла; // ***

Операции цикла будут повторяться до тех пор, пока выполняется условие, например:

// *** Б = 0; Пока А < 50 Цикл Б = Б + 1; КонецЦикла; // ***

Данный цикл будет выполнен 50 раз.

Цикл со счетчиком.

// *** Для А = 0 По 50 Цикл КонецЦикла; // ***

Цикл выполнится от 0 до 50 раз (шаг всегда равен единице) т.е. 51.

Плюс еще один цикл - обхода коллекций.

// *** Для каждого ПеременнаяПринимающаяЭлементКоллекции Из Коллекция Цикл КонецЦикла; // ***

В цикле каждый элемент последовательно передается в описанную переменную.

На практике

Вернемся к нашему справочнику. Найдите модуль объекта (на последней закладке в свойствах справочника ). Модуль можно разделить комментариями на три части:

*** // Область объявления переменных Перем Переменная1; // Область описания процедур и функций Функция Факториал(Парам1) Если Парам1 <= 0 Тогда Возврат 0; КонецЕсли; РезультатФункции = 1; Для Ном = 1 По Парам1 Цикл РезультатФункции = РезультатФункции * Ном; КонецЦикла; Возврат РезультатФункции; КонецФункции // Область инициализации переменных Переменная1 = 5; ФакториалИзЧисла = Факториал(Переменная1); Сообщить(ФакториалИзЧисла); ***

Небольшой комментарий к данному тексту: Символом // (двойной слеш) обозначает начало комментария. Методом «Сообщить» выводится пользователю то, что было передано в виде параметра, (в нашем случае это факториал числа 5).

Запустите систему нажатием F5 на клавиатуре, затем откройте Справочник1. Ничего не произойдет, и это нормально, т.к. вы открыли только форму списка справочника, а код программы расположен в модуле объекта. То есть вам для начала необходимо этот объект получить. В форме необходимо или создать новый элемент, или открыть уже существующий, в этом случае Вы будете работать с объектом «справочник» и модуль выполнится.

Нашли ошибку на сайте? Напишите о ней нам!
Наверх Обратный звонок