1с это предметно ориентированный язык
Встроенный язык программирования 1С:Предприятие — язык программирования, который используется в семействе программ «1С:Предприятие». Данный язык является предварительно компилируемым предметно-ориентированным языком высокого уровня.
Средой исполнения языка является программная платформа «1С:Предприятие». Визуальная среда разработки («Конфигуратор») является неотъемлемой частью пакета программ «1С:Предприятие».
Диалекты языка для платформ 1С 7 версий (7.0, 7.5, 7.7) совместимы «снизу вверх» с незначительными исключениями. Языки для платформ 1С:7х и 1С:8х совместимы по основным операторам, но значительно отличаются в работе с прикладными объектами, вследствие чего перенос кода из 1С:7х в 1С:8х не имеет смысла.
Встроенный язык 1С:8 наиболее подобен по своему синтаксису языку Visual Basic.
Платформой предоставляется фиксированный набор базовых классов, ориентированных на решение типовых задач прикладной области:
- Константа,
- Справочник,
- Документ,
- Журнал документов,
- Перечисление,
- Отчет,
- Обработка
- План счетов и др.
На основании базовых классов средствами визуального конфигурирования можно создавать любое количество порождённых классов (возможность определить новый класс программно — отсутствует). Допускается только одна явная ступень наследования классов. Как правило, объекты порождённых классов представляют собой записи (или некоторые наборы записей) в базе данных. Такие классы образуют «Дерево метаданных». В терминах встроенного языка программирования 1С такие классы называются объектами метаданных.
Основными видами объектов метаданных являются: Справочники, Документы, Отчеты, Обработки, Планы видов характеристик, Планы счетов, Планы видов расчета, Регистры сведений, Регистры накопления, Регистры расчета, Бизнес-процессы, Задачи.
Поддерживаются русский и английский синтаксис команд.
Проекты на встроенном языке 1С:Предприятия называются конфигурациями. Распространение (продажа) и внедрение таких конфигураций — это основная коммерческая деятельность фирм-партнёров 1С.
Рабочее название языка — «1Сик» («одинэсик») — очень быстро исчезло из официальных источников. Сейчас при упоминании этого языка в письменных документах нужно писать 1С Язык программирования. Сейчас язык не имеет никакого названия, которое можно было бы произнести устно. Впрочем часто этот язык называют «встроенный язык», в контексте обсуждения 1С:Предприятия.
Содержание
История развития
Объектно-ориентированные диалекты
Существует несколько дополнительных компонентов, расширяющих основные классы, их свободное добавление и изменение; фирмой- разработчиком они не рекомендованы к использованию. Это означает, что фирма 1С и её франчайзи отказываются от какой-либо технической поддержки конфигураций, использующих такие компоненты.
Так компонента 1С++ [1] расширяет язык 1С средствами полноценного объектно-ориентированного программирования. Её использование значительно расширяет возможности конфигурирования 1С. Это свободный программный продукт, распространяемый под лицензией GPL.
Более того — существует полностью свободный проект 2C [2] [3] , не использующий каких либо проприетарных модулей фирмы 1С или других производителей. Это переписанное «с нуля» свободно распространяемое под лицензией GPL расширяемое ядро 1С-подобной системы, в котором даже такие «встроенные объекты» 1C как справочники и регистры — переопределяемые прикладным программистом классы.
Язык платформы 2С проектировался с целью максимальной преемственности с существующими для 1С наработками, и является расширением базового языка 1С. Путём написания соответствующих базовых классов язык 2С может быть приближен как к 1С 7.7, так и к 1С 8.0, хотя 2С:Платформа и не может обеспечить 100 % автоматическую переносимость конфигураций из той или иной версии 1С:Предприятия.
Пример программы
Классический пример вывода текстовой строки встроенный язык 1С:Предприятие 7.7:
Сообщить( "Здравствуй, Мир!" );
Пример функции, возвращающей квадрат числа:
Функция КвадратЧисла ( прЧисло )
Возврат прЧисло * прЧисло ;
См. также
Примечания
Ссылки
- Языки программирования по алфавиту
- Языки программирования с русскими ключевыми словами
Wikimedia Foundation . 2010 .
Полезное
Смотреть что такое "Встроенный язык программирования 1С:Предприятие" в других словарях:
Встроенный язык программирования 1С: Предприятие — Встроенный язык программирования 1С:Предприятие Класс языка: процедурный, предметно ориентированный Тип исполнения: предварительно компилируемый Автор(ы): 1С Последняя версия: 1С:Предприятие 8.2 Типизация данных: динамическая типизация Основные… … Википедия
Язык программирования — Язык программирования формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия,… … Википедия
Языки программирования, основанные не на английском — языке такие языки программирования, которые, в отличие от большинства распространенных языков, не используют ключевые слова, взятые из английской лексики. Содержание 1 Преобладание языков программирования, основанных на английском … Википедия
Русские языки программирования — Языки программирования, основанные не на английском языке такие языки программирования, которые, в отличие от большинства распространенных языков, не используют ключевые слова, взятые из английской лексики. Содержание 1 Преобладание языков… … Википедия
Языки программирования c ключевыми словами не на английском — Языки программирования, основанные не на английском языке такие языки программирования, которые, в отличие от большинства распространенных языков, не используют ключевые слова, взятые из английской лексики. Содержание 1 Преобладание языков програ … Википедия
Языки программирования с ключевыми словами не на английском — Языки программирования, основанные не на английском языке такие языки программирования, которые, в отличие от большинства распространенных языков, не используют ключевые слова, взятые из английской лексики. Содержание 1 Преобладание языков… … Википедия
Языки программирования — Язык программирования формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор… … Википедия
1С:Предприятие — Проверить нейтральность. На странице обсуждения должны быть подробности … Википедия
Мутабельный тип — (англ. Mutable type) сложный тип данных в объектно ориентированном программировании, значения которого (как правило объекты) после своего создания допускают изменение своих свойств. Содержание 1 Примеры … Википедия
RSL — Класс языка: процедурный, объектно ориентированный Тип исполнения: интерпретируемый Появился в: 1994 Автор(ы): Сергей Кубрин Расширение файлов: mac … Википедия
Делфи как известно объектно ориентированные программирование, а 1С какое?
на другом форуме написали что это предметно-ориентированный язык, согласны ли Вы с этим?
1С единственно и истинно объектно-ориентированное программирование: приехал на объект, соориентировался и ну программировать!
(0)
> Полиморфизм, инкапсуляция, наследование
Никита, расскажи словами своими что это такое. Только без википедий.
(0) сидите на своих дельфях, не вставая, получайте свою маленькую, но гордую зарплату. В 1С даже вьюх нет, там все не как в дельфи
помню как происходил переход на программирование в среде разработчика
олдскульные проги рисовали формочки с событиями сами - это давало гибкость и "элитарность" решениям
но среда разработчика повышала скорость разработки решения и в итоге выиграла имхо
1с - язык более высокого уровня. При его разработке были использованы средства, указанные в subj, этого пока достаточно.
(0). Тут этого всего нет и не будет. Потому что иначе бывшие военные, милиционэры, врачи и прочие гуманитарии не смогут конфигурировать авнокод. :)
(0) Оба-на, а с каких это пор 1С стала языком программирования? Ну тогда можно заодно проголосовать и к AMP-проигрываетелю
(0) и всем ответившим про предметно-ориентированное:
вы реально считаете, что все эти костыли придуманные 1С - это способ облегчить программирование? Я имею в виду дерево метаданных, чем по сути регистры сведений отличаются от справочников, неужели для того чтобы соорудить некое подобие никому не нужной параметризации в 1С нужен был костыль типа ПВХ?
я уже не опускаюсь до регистров расчетов и регистров бухгалтерии
(36) для тех кто в танке: это сделано для того что-бы разработчик уделял больше внимания бизнес-логике а не кодированию.
(38) тем кто в танке следовало бы перечитать и попытаться осмыслить то что я написал
ПВХ новый где-то в своих решениях использовал?
(39) ПВХ - конечно, есть краска и её всего 100 кг по бухии и есть спецодежда сапоги которых 30 пар, а для снабженцев то-же самое но краска жёлтая 50 кг, краска зелёная 10 кг и т.п., сапоги 40размер 3 пары и т.д.
(41) может ещё всю базу вугрузить? ПВХ для того и нужен что-бы можно было разным элементам объекта (апример элементам справочника) назначать разные наборы свойств. Разве нет?
(47) можно было бы в зависимости от уровня разработчика открывать
новые объекты метаданных для работы )
на 12-м уровне позволяется работать с ООП, создавать свои объекты конфы и т.п.
не поверю что ООП нужно пока не будет приведен практический пример задачи, которая с ООП решается а без ООП не решается.
(43) чем регистр "свойства объектов" реализованный через пвх, отличается от регистра реализованного через перечисление или справочник?
тем что пользователь может добавить дополнительную категорию?
так это скорее зло, чем добро
(49) даже на асме можно изобразить подобие ООП
но: это будет раза в три больше кода, плюс минимум наглядности
(49) если хочешь можешь изобразить подобие старого баяна типа "Нужно ли ООП в 1С", и я с удовольствием поучаствую и приведу живые примеры где это просто необходимо
(51) можно и на асме, но куча сил уйдет на интерфей, структуры хранения данных и т.п. но оно нам надо?
(58) ну в итоге все эти ООП транслируются в исполняемый код, который можно и на асме нарисовать, но как было ранее сказано не так наглядно.
Для учётных задач 1С впоне сбалансированная система, не без вопросов к ней но сбалансированная.
(58)(59)(60) гундосы, сегодня не смогу, если только после футбола
как пример - юнит-тестирование, нереализуемо
я не про пример ооп, а про нерабочие структуры от 1С
примеров ооп может быть много, тупо мне нужно заполнить общие реквизиты: каким костылем мне нужно пользоваться?
(58) если так рассуждать, нет ни одной задачи, которая решается на 1С, но не решается, на С++, хотя бы потому, что 1С написана на С++. и какой отсюда следует вывод?
(67) нет.
речь не об этом.
речь о том что есть песочница.
в ней копаются дети с совочками и лопаточками
иногда в нее ссут кошки
иногда там играют в машинки
каждую весну привозят новый песочек..
иногда меняется мода и розовые лопатки меняются на зеленые
а тут приходит взрослый дядя и пытается всех убедить что детские совочки это все фуфло и в песочнице позарез нужен карьерный экскаватор.
от сюда вопрос к взрослому дядечке: пусь он хотя бы приведет пример хотя бы одной задачи которые решаются в этой самой песочнице которые с помощью лопатки и ведерка решить нельзя а вот с помощью карьерного эксковатора можно..
(71) офигенная задача которая только под силу ООП!
Делаешь заготовку документа со всем кодом в т.ч. заполнение значений, а все требуемые документы делаешь копированием этого шаблоа с последующим переименованием и дописыванием функционала. в шаблон ваставить комент что сделано на основе такого-то шаблона.
Но это не совсем верный подход, правиьтный в 1С будет такой: вызов из этого шаблона 1 метода общего модуля, который делает всё что требуется.
Офигенный пример! Я просто валяюсь. Дайте примеров ищё!
(1) еще бы кто-нибудь объяснил 1С никам что это такое.
Инкапсуляция, наверное, есть - мы же можем через точку от внешней компоненты писать скрипты на других языках.
(75)есть объект документ . а есть объект документ.приходнаянакладаная . который наследует все свойства объекта документ . неа?
В чистом виде инкапсуляции в 1С нет.
Самый простой пример - получение/установка публичными методами приватных переменных класса. Ну еще много ньюансов разных привести наверное можно.
у ссылочных объектов есть реквизит ГУИД . который от пользователя скрыт . его значение и установку осуществляет через специальный процедуры объекта
(78)Ну да. Это оно и есть. Только это все предопределенные платформой вещи . Самому такую схему организовать вряд ли удастся.
Очень простой язык программирования был одним из преимущств 1С 7.7. В первом приближении этот язык можно было освоить за 1 месяц. Просто почитать руководство и покопаться в типовых конфигурациях. Простой язык программирования 7.7 оставлял время на изучение предметной области.
Когда я увидел 1С 8, то был поначалу огорчен и разочарован. Этот инструмент гораздо сложнее и за 1 месяц его освоить нереально. Постепенно более или менее разобрался и успокоился. Поклонникам ООП могу посоветовать пользоваться другими средствами разработки. Благо их предостаточно.
(81)+1 И то верно. С чего вдруг не объектно ориентированный язык не считается кошерным? чистый асм - вообще спокойно живет без объектной модели и никто не посмеет его назвать ущербным. ООП - это просто один из прикладных стилей.Не стоит делать из него икону.
+(82)Другое дело что программер должен все таки знать основы ООП, т.к. это напрямую влияет на качество кода.
Встроенный язык является важной частью технологической платформы «1С:Предприятия 8», поскольку позволяет разработчику описывать собственные алгоритмы функционирования прикладного решения.
Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic, что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.
- предварительная компиляция — перед исполнением модули, содержащие текст на встроенном языке, преобразуются во внутренний код;
- кэширование скомпилированных модулей в памяти;
- мягкая типизация — тип переменной определяется типом значения, которое она содержит, и может изменяться в процессе работы;
- отсутствие программного описания объектов конфигурации — разработчик может использовать либо встроенные в платформу объекты, либо объекты, созданные системой в результате визуального конструирования прикладного решения.
Событийная ориентированность встроенного языка
Назначение встроенного языка в системе 1С:Предприятие определяется идеологией создания прикладных решений. Прикладные решения в 1С:Предприятии 8 не кодируются целиком. Большая часть прикладного решения создается разработчиком путем визуального конструирования — создания новых объектов конфигурации, задания их свойств, форм представления, взаимосвязей и пр. Встроенный язык используется лишь для того, чтобы определить поведение объектов прикладного решения, отличное от типового, и создать собственные алгоритмы обработки данных.
По этой причине модули, содержащие текст на встроенном языке, используются системой в конкретных, заранее известных ситуациях, которые могут возникнуть в процессе работы прикладного решения. Такие ситуации называются событиями. События могут быть связаны с функционированием объектов прикладного решения или с самим прикладным решением, как таковым.
Например, с функционированием объекта прикладного решения Справочник связан ряд событий, среди которых есть событие ПередЗаписью:
Это событие возникает непосредственно перед тем, как данные элемента справочника должны быть записаны в базу данных. Разработчик, используя встроенный язык, может описать алгоритм, который, например, будет проверять корректность данных, введенных пользователем. Разместив этот алгоритм в соответствующем модуле, разработчик обеспечит то, что каждый раз, как пользователь будет выполнять запись элемента справочника, система будет выполнять созданный разработчиком алгоритм и проверять, не забыл ли пользователь заполнить обязательные реквизиты справочника.
Таким образом можно сказать, что встроенный язык является скриптовым языком для программирования бизнес-логики, а использование модулей на встроенном языке является событийно-зависимым, т. е. выполнение модулей происходит при возникновении определенных событий в процессе функционирования прикладного решения.
Универсальные коллекции значений
Встроенный язык поддерживает работу с большим количеством разнообразных объектов. Безусловно, основную группу объектов составляют прикладные объекты, позволяющие описывать алгоритмы функционирования бизнес-логики.
Однако не менее важной группой являются объекты, предназначенные для хранения временных наборов данных в течение сеанса работы пользователя. Как правило, они служат для вспомогательного сбора, группировки, анализа и обработки информации:
Перечислим кратко их возможности:
Массив
Представляет собой пронумерованную коллекцию значений произвольного типа. К элементу массива можно обращаться по его индексу. В качестве элементов массива могут выступать, в частности, другие массивы. Это позволяет создавать многомерные массивы.
Структура
Представляет собой поименованную коллекцию, состоящую из пар ключ — значение. Ключ может быть только строковым, значение — произвольного типа. К элементу структуры можно обращаться по значению его ключа, т. е. по имени. Обычно используется для хранения небольшого количества значений, каждое из которых имеет некоторое уникальное имя.
Соответствие
Также как и структура, представляет собой коллекцию пар ключ — значение. Однако, в отличие от структуры, ключ может быть практически любого типа.
Список значений
Используется, как правило, для решения интерфейсных задач. Позволяет строить динамические наборы значений и манипулировать ими (добавлять, редактировать, удалять элементы, сортировать). Он может содержать значения любого типа, кроме того, в одном списке типы хранимых значений могут быть разными.
Например, список значений может использоваться для выбора конкретного документа из списка возможных документов, сформированного по сложному алгоритму.
Таблица значений
Таблица значений позволяет строить динамические наборы значений и манипулировать ими. Она может быть наполнена значениями любого типа, и в одной таблице типы хранимых значений могут быть разными.
Одним из примеров использования таблицы значений может служить организация представления в форме списка элементов справочника, отобранных по сложному алгоритму.
Дерево значений
Дерево значений представляет собой динамически формируемый набор значений любого типа, похожий на таблицу значений. В отличие от таблицы значений, строки дерева значений могут образовывать иерархические структуры: каждая строка дерева может иметь набор подчиненных строк, каждая из подчиненных строк, в свою очередь, также может иметь набор подчиненных строк и так далее. При этом поиск значений, сортировка, получение итогов могут осуществляться либо по текущему уровню иерархии, либо включая все подчиненные.
COMSafeArray
Представляет собой объектную оболочку над многомерным массивом SAFEARRAY из COM. Позволяет создавать и использовать SAFEARRAY для обмена данными между COM-объектами.
Фиксированный массив
Неизменяемый массив. Массив заполняется системой при инициализации объектов данного типа или разработчиком, с помощью конструктора.
Редактор текстов и модулей
Для создания и изменения текстов на встроенном языке разработчик может использовать редактор текста и модуля, обладающий удобными средствами создания, редактирования и синтаксической проверки модулей. Подробнее…
Хочу рассказать о том, как я использую объектно-ориентированное программирование в 1С. Вернее его имитацию, т.к. в самом встроенном языке таких возможностей нет. Тем не менее, возможность создавать логически независимые, обособленные, самодостаточные фрагмены кода (да еще с инкапсулированными в них данными), весьма полезна.
— использовать повторно внутри одного и того же проекта;
— легко и просто (не задумываясь) переносить из одного проекта в другой;
— передать кому-то еще, или выложить в Интернете для всеобщего использования как самостоятельное средство решения определенной задачи, которое соответственно также легко может быть кем-то скопировано и вставлено в собственный проект);
— имея класс, можно создать сразу несколько объектов (строить из них массивы, коллекции, списки и т.д.);
— еще какие-то плюсы, о которых я не знаю…
В этой статье будет показаны приемы имитации ООП средствами процедурно-ориентированного языка 1С.
Как известно, встроенный язык 1С не поддерживает ООП в полной мере. Есть стандартные встроенные классы платформы со своими полями, свойствами и методами. Можно создавать объекты этих классов:
и пользоваться ими так, как это делается в обычных универсальных языках программирования. Однако определять и реализовывать собственные классы во встроенном языке нельзя. В принципе, можно сказать, что платформа 1С не поддерживает объектно-ориентированное программирование.
Впрочем, в данной статье речь пойдет не о модулях.
Итак, как же все-таки можно средствами структурного программирования реализовать хотя бы часть основных парадигм ООП?
С полиморфизмом и свойствами типа
ничего не выйдет (их вообще-то тоже можно сделать, но синтаксически это будет выглядеть слишком наворочено, некрасиво и соответственно неудобно и неочевидно в применении). Про разграничение доступа (private, protected, public) тоже придется забыть. А вот инкапсуляцию и наследование (в режиме доступа public) можно сделать вполне прилично.
Идея в общем не нова, и ее можно почерпнуть, например, в архитектуре такого мощного суперпроекта из мира Unix, как графическая библиотека GTK+. Эта библиотека реализована на языке Си, но тем не менее по факту своей архитектуры является объектно-ориентированной (см. пример инициализации библиотеки GTK+ из вышеуказанной статьи в Википедии – из него станет понятно, что имеется в виду). Возможность реализовать ООП средствами языка, который ООП не поддерживает, кроется в принятии особых соглашений о кодировании исходников.
Ведь что такое класс? Класс – это определение данных и методов их обработки «в одном флаконе». А объект – это, по сути динамически созданный набор данных, который неявно передается в качестве параметра методам класса для того, чтобы методы могли обрабатывать эти самые данные. И если средствами языка, данные и методы запихнуть в «один флакон» не получится, то воспользуемся для этого условной надстройкой над возможностями языка – соглашениями о кодировании (Code Conventions).
Будем в качестве хранилища полей объекта использовать структуры (в Си – это встроенный тип данных, в 1С – встроенный класс – хеш-таблица).
В качестве методов будем использовать процедуры и функции, используя следующие соглашения об их наименовании:
Как видно вместо неявной передачи параметра-указателя на набор полей объекта, он переда-ется явно 1-м параметром. Следом идет обычный набор параметров метода.
Рассмотрим следующий пример:
Это был пример инкапсуляции. Наследование выглядит чуть более коряво.
Естественно никаких виртуальных методов и полиморфизма здесь нет. Только переопределение одноименных методов в потомках. Одноименными они опять же являются с точки зрения логики разработки.
Как мы видим, описанный прием оформления исходников на языке 1С, расширяет возможности написанных таким образом фрагментов кода в плане наглядности, универсальности и переносимости.
В дальнейших публикациях я планирую рассказать о некоторых полезных штуках (можно сказать, инструментах), которые можно сразу взять и использовать в своих 1С-программах. Их код будет оформлен как раз в виде таких вот классов.
Всем удачи. До встречи.
P.S.: В процессе подготовки этой статьи наткнулся на описание аналогичного подхода на портале «Инфостарт». Написано, кажется в 2012-м году — примерно в это же время данный метод стал использовать и я. Поскольку в указанной статье есть существенные отличия (автор предлагает унифицировать вызов методов и доступ к свойствам класса через функции-обертки, что как бы более технологично, но на мой взгляд менее наглядно), то я решил опубликовать и собственный вариант технологии.
Язык программирования 1С — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, задающих внешний вид программы и действия, которые выполнит исполнитель (компьютер) под её управлением.
Платформа 1С Предприятие 8 имеет полноценный функционал для разработки собственных решений для разработчика. Главный инструмент разработки — это встроенный язык программирования 1С 8.3.
Язык программирования 1С не имеет названия, на официальных источниках он обозначен как «встроенный язык программирования».
На что похож язык программирования 1С
Встроенный язык программирования 1С — язык программирования, который используется для разработки приложения на базе платформы 1С Предприятие. Данный язык является предварительно компилируемым предметно-ориентированным языком высокого уровня. Язык более всего напоминает по синтаксису Visual Basic в сочетании с языком запросов T-SQL.
Создание новых классов программно в языке 1С 8.3 запрещено. Так как платформа 1С Предприятие специализирована для задач учета, состав классов заранее предопределен:
На основании типовых классов можно в конфигураторе создать любое количество подклассов, имеющих свои наборы. С помощью модулей менеджеров можно незначительно расширить функционал подкласса.
Сложный ли язык программирования 1С?
Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания - попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>
Вопрос достаточно спорный и относительный. Если рассматривать его относительно других языков, возможно, он покажется немного проще. Однако помимо самого программирования, Вам придется изучать предметную область — бухгалтерию, производство, налоговый учет и т.д., что делает в совокупности язык программирования 1С не таким простым, как может показаться с первого взгляда.
Если Вы имели до знакомства с 1C солидный опыт на других предметно-ориентированных языках программирования, Вам не составит труда разобраться и в тонкостях конфигурирования 1С 8.2, главное — желание. Всё что Вам нужно — найти хороший самоучитель по языку программированию 1С.
Русский синтаксис языка 1С
Интересной особенностью встроенного языка программирования 1С является двуязычный синтаксис команд: русский и английский. Русский язык программирования сильно удивляет новичков в сфере 1С программирования 8.2.
Сообщить ( «Привет, Мир!» ) ;
Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):
Читайте также: