Как изучить синтаксис в программе 1с. Специальные символы, используемые в исходном тексте

Язык 1С весьма прост в изучении по сравнению с любым другим языком программирования.

На территории России для многих большое значение имеет то, что можно писать код прямо на русском языке. «Можно» – значит не обязательно — можно писать и на английском, все операции и операторы имеют английский синоним.

Мы изучим язык 1С между делом сейчас, за пять минут.

Общие принципы программирования

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

Программирование – это написание программного кода на программном языке.

Программный код – это последовательность команд (слов), которые поддерживает этот язык программирования.

Команды делятся на:

  • Переменные
  • Операторы
  • Функции и процедуры.

Рассмотрим их в первом приближении.

Переменные

Переменные

Есть цифра 12. Это значение. Сама по себе эта цифра нигде не хранится. Подули и ее уже нет 🙂 Она должна где-то храниться. Переменные – это место хранения значений. Переменная может называться любым словом.

Например:
Чтото = 12;
Чтото = Чтото + 10;
Сообщить(Чтото); //будет выведено «22»

Переменная, которая является частью объекта 1С (например поле справочника) и хранится в базе данных – называется реквизит.

В 1С переменные не типизированы, это значит, что одной и той же переменной сначала можно назначить значение одного типа (например цифру), а потом другого типа (например строку) и ошибки не будет.

Однако реквизиты объектов – типизированы. Но проверки на типы при этом не происходит. Мы можем попытаться назначить реквизиту значение не того типа. 1С попытается его преобразовать (например из цифры в строку), но если не получится, то значение реквизита останется пустым.

Длина строки в переменной – неограниченная. Длина строки реквизита – задается точно, но можно задать неограниченную (поставив длину строки 0).

По буквам к строке обращаться нельзя. Но можно искать или выделять части (Найти(), Лев(), Прав(), Сред()).

Сложные переменные

Если значение одно – это просто. А когда значений – много?

  • Массив

    Это одна колонка Excel. В каждой ячейке – переменная. У нее одно название, так же как и у обычной переменной. А к ячейке можно обратиться по номеру.

    Чтото = Новый Массив;
    Чтото.Добавить(22); //в ячейке 1 значение 22
    Чтото.Добавить(33); //в ячейке 2 значение 33
    Сообщить(Чтото); //выводим значение 1й ячейки

  • СписокЗначений

    То же, что и массив, только к каждой ячейке можно подписать комментарий.

    Чтото = Новый СписокЗначений;
    Чтото.Добавить(22, «Это 22»); //в ячейке 1 значение 22
    Чтото.Добавить(33, «Это 33»); //в ячейке 2 значение 33
    Сообщить(Чтото.Получить(0).Значение); //выводим значение 1й ячейки
    //а могли бы вывести и комментарий, тогда бы написали.Представление а не.Значение

  • ТаблицаЗначений

    Это – уже полноценная страница Excel со строчками и колонками.
    Как с ней работать – посмотрим в другом уроке.

  • ДеревоЗначений

    Таблица представленная в виде дерева. Пример – окно конфигурации. Ветки, у каждой ветки может быть подчиненная ветка.

Обратите внимание – нумерация ячеек в 1С начинается не с 1, а с 0.

Программирование 1С

Если Вам необходимо вспомнить где происходит написание программы в 1С — мы обсуждали это в .

Строки программы

Строки заканчиваются на точку с запятой «;».

Комментарий начинается с «//» — то есть эта строчка или часть строчки не будет выполняться и будет пропущена.

Значение строк нужно указывать в кавычках «Значение». Если нужно указать в значении кавычку, то она удваивается – «Значение ««а»»!».

Значение строки может быть с включением переноса строки, тогда в начале следующей строки должен стоять «|», например:

«Это начало
| и продолжение значения»

Если нужно указать специальные символы в значении строки, для этого есть специальный объект: «Символы.», например:

«Это начало» + Символы.ПС + «и продолжение значения» //ПС – перенос строки

Операторы

Это конструкции языка, которые заложены в нем самом и позволяют создавать простейшую последовательность выполнения программы.

  • Условие

    Определенные строки кода будут выполнены если будет выполнено условие.

    Чтото = 12;
    Если Чтото 200 Тогда
    Сообщить(«Условие выполнено»);
    ИначеЕсли Чтото > 200 Тогда
    Сообщить(«Условие не выполнено»);
    Иначе
    Сообщить(«Что-то еще»);
    КонецЕсли;

  • Цикл

    Определенные строки кода будут выполнены указанное количество раз.

    //считаем по-одному
    Для Чтото = 1 по 20 Цикл
    Сообщить(Чтото);
    КонецЦикла;

    //считаем по-другому
    Чтото = 1;
    Пока Чтото

    //если у нас список значений, то можно обойти каждое из его значений
    Чтото = Новый СписокЗначений;
    Для каждого ЗначениеСписка из Чтото Цикл
    Сообщить(ЗначениеСписка.Значение);
    КонецЦикла;
    //обратите внимание, что «ЗначениеСписка» - это переменная, она может называться как угодно

    Для того, чтоб прервать цикл, можно внутри написать команду «Прервать», для того чтобы прервать только одну итерацию цикла – команду «Продолжить».

Работа с объектами

Все объекты, с которыми мы работаем в языке – является полноценными объектами, то есть могут иметь свои данные и свои методы.

Объекты языка создаются с помощью команды «Новый», например:

Чтото = Новый Массив();
Чтото = Новый СписокЗначений();
И т.п.

Объекты 1С нельзя создать – доступ к ним можно получить с помощью так называемых менеджеров, названных соответственно по веткам конфигурации: Справочники, Документы и т.п. Методы менеджера можно расширять (см. урок по модулям 1С, модуль менеджера объекта).

Например:

Справочники.Номенклатура.СоздатьЭлемент();
Документы.Накладная.НайтиПоНомеру(«…»);

Свои объекты программировать нельзя, как и наследовать или переопределять типовые.

Ошибки

Программист не всегда может догадаться, будет ли ошибка при выполнении определенной строчки кода.

Например если написать в коде внешней обработки:

Справочники.Номенклатура.НайтиПоКоду(«…») и открыть эту обработку в базе, где нет справочника с названием Номенклатура, то будет ошибка.

Чтобы этого не произошло, можно использовать следующую конструкцию:

Попытка
Справочники.Номенклатура.НайтиПоКоду(«…»);
Исключение
Чтото = ОписаниеОшибки();
Сообщить(«Ой-ой-ой»);
Сообщить(Чтото);
КонецПопытки;

Если в момент выполнения строчек программы между Попытка и Исключение возникнет ошибка, то выполнение будет прервано и перейдет на строчки между Исключение и КонецПопытки. Если не будет ошибки – эти строчки не будут выполнены.

Функция ОписаниеОшибки() работает только между Исключение и КонецПопытки и возвращает описание произошедшей ошибки.

Функции и Процедуры

Функции и Процедуры – это способ взять несколько строчек кода и назвать их каким-то словом, как переменную. Когда мы потом напишем ее название в другом месте – будет вызвана эта функция (то есть выполнены эти строки кода).

Мы неоднократно обсуждали методы объектов и обработчики событий. Функции и процедуры и являются этими методами и обработчиками.

//Программируем
Процедура КакоетоДействие()
Сообщить(«Чтото»);
КонецПроцедуры

//Вызываем
КакоетоДействие();

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

Как программировать

Теперь, когда Вы познакомились с языком 1С, .

Программирование проводится в модуле. Соответственно Вы должны найти нужный модуль и написать там код программы.

Пример разработки внешней обработки ():

  • Создаем внешнюю обработку
  • – будет выполнен по открытию обработки в режиме Предприятие и по нажатию кнопки
  • Или открываем модуль объекта обработка и пишем код там – будет выполнен сразу при открытии в режиме Предприятие.

Программированию конкретных объектов языка 1С мы коснемся в ближайших уроках.

Откройте ее в конфигураторе и Вы можете посмотреть программу или изменить ее.

Программный код написан в модуле объекта обработки.

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

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

Назначение и краткая характеристика встроенного языка

Встроенный язык системы 1С:Предприятие предназначен для описания (на стадии разработки конфигурации) алгоритмов функционирования прикладной задачи.

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

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

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

Построение книги

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

Формат описания элементов языка

Каждый элемент (конструкция) языка, упомянутый в этом руководстве, печатается таким шрифтом. Информация по компонентам языка приводится в виде синтаксической диаграммы, подробного описания и примера исходного текста.

Соглашения и обозначения, принятые в синтаксических диаграммах

В синтаксических диаграммах используются следующие символы:

Синтаксическая диаграмма описания элемента языка

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

ЭлементЯзыка

Краткое описание того, что делает данный ЭлементЯзыка.

Синтаксис :

ЭлементЯзыка(<Параметр1>, <Параметр2>, ...) [ДобКлючевоеСлово]

Англоязычный Синтаксис: (в случае языковых конструкций)

Keyword(<Параметр1>, <Параметр2>, ...)

Англоязычный синоним: (в случае описания методов, функций и процедур)

Параметры :

<Параметр1> краткое описание <Параметра1>. <Параметр2> краткое описание <Параметра2>. [ДобКлючевоеСлово] краткое описание ДобКлючевоеСлово.

Возвращаемое значение :

Тип и краткое описание возвращаемого значения.

Описание :

Подробное описание того, что реализует ЭлементЯзыка.

Пример :

· Краткое описание примера // Исходный текст примера

1. Что из себя представляет язык 1с.
2. Методы, переменные, другие конструкции языка.

Что из себя представляет язык 1с.

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

1. модуль приложения

2. общие модули

3. модуль объекта

4. модуль формы.

В разных видах модулей код исполняется на разных этапах выполнения программы. В модуле приложения код может исполняться при запуске программы или при закрытии, в общих модулях во время вызова из других модулей, в модуле объекта – при действиях над объектом (создание, изменение, удаление), в модуле формы – во время действий над формой. Что можно использовать при написании кода:
Переменные, объекты и их реквизиты, методы созданные нами (программистами 1С) и системные (встроенные в платформу), а также конструкции встроенного языка.

Методы, переменные, конструкции языка

Переменные используются для хранения данных во время сеанса работы пользователя. Переменная это такое слово которое начинается с буквы(русской или английской) или со знака подчеркивания «_» и состоит из букв цифр и знаков подчеркивания.
Например :

  • ЭтоПеременная
  • _ЭтоПеременная
  • _Это1_Переменная

То, что буквы могут быть русскими и английскими может сыграть злую шутку при употреблении похожих по начертанию букв из разных языков.

Регистр букв в коде не учитывается, т.е. переменные «Переменная1 » и «пЕрЕмЕннАя1 » при выполнения кода для программы являются одинаковыми. Желательно чтобы названия переменных были осмысленные. Это улучшает читабельность кода.

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

Например : Объект «Товарный чек № 00018 от 01.01.2005».
Мы можем отличить этот товарный чек от других товарных чеков по данным реквизитов, которые он содержит. Это реквизит «Номер» со значением «00018»(тип строка ) и реквизит «Дата»(тип дата ) со значением «01.01.2005». Единственное что, мы могли определить по объекту, не зная значений его реквизитов - это его тип «Товарный чек».
Методы являются маленькими и как правило законченными инструкциями.

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

Другие конструкции языка (операторы, коллекции значений и т.д.) - это зарезервированные системой 1с слова которые помогают производить манипуляции над данными.

Например :

Для каждого ЭлементКоллекции Из ИмяКоллекции Цикл КонецЦикла;

В примере приведена конструкция перебора элементов коллекции. Эта конструкция называется цикл . Большинство типов объектов, а также их реквизитов являются коллекциями, которые можно перебирать вышеуказанным способом и обращаться к элементу коллекции указывая его индекс (ИмяКоллекции [ 0] ). Все коллекции начинаются с элемента, у которого индекс = 0.

Встроенный язык системы 1С: Предприятие 7.7 предназначен для описания алгоритмов функционирования прикладной задачи. Синтаксис языка напоминает смесь Паскаля и Бэйсика, причем на русском языке.

Язык 1С поддерживает структурное программирование и вся программа состоит из набора модулей, содержащих исходный код - операторы языка и комментарии.

Программные модули

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

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

Виды программных модулей:

  • Глобальный модуль.
  • Модуль формы списка справочника
  • Модуль формы группы
  • Модуль формы элемента справочника
  • Модуль формы документа
  • Модуль документа
  • Модуль формы журнала документов
  • Модуль формы списка счетов
  • Модуль формы счета
  • Модуль формы журнала операций
  • Модуль формы операции
  • Модуль формы журнала проводок
  • Модуль формы отчета
  • Модуль формы обработки
Каждый отдельный модуль воспринимается системой как единое целое, поэтому все процедуры и функции программного модуля выполняются в одном контексте.

Структура программного модуля

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

Контекст выполнения программного модуля

Глобальный контекст:
  • значения системных атрибутов, системные процедуры и функции, например, функция ТекущееВремя() возвращает текущее системное время, а функция ТекущаяДата() – текущую дату на компьютере.
  • значения заданных в конфигураторе констант, перечислений.
  • переменные и процедуры глобального программного модуля с ключевым словом «Экспорт».
Локальный контекст образуется тем конкретным местом конфигурации задачи, для которого использован этот конкретный модуль.

Формат операторов

Общий синтаксис операторов языка 1С:Предприятие: [~метка:]Оператор [(Параметры)][ДобавочноеКлючевоеСлово];

Идентификаторы

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

Типизация переменных в языке не жесткая, т.е. тип переменной определяется ее значением. Чтобы определить, является ли слово зарезервированным, нужно воспользоваться поиском в синтакс-помощнике: установить курсор на проверяемое слово и одновременно нажать клавиши СTRL+F1. Таким же способом можно узнать синтаксис системной процедуры или функции: количество и назначение параметров, значения по умолчанию.

Пример правильных идентификаторов в 1C:

// Определение переменных Перем ЭтоПеременная; Перем ЭтоВтораяПеременная; // Процедуры и функции Процедура ЭтоПроцедура() // текст процедуры КонецПроцедуры Функция ЭтоФункция() // текст функции КонецФункции // Раздел основной программы ЭтоПременная = "123";

Процедуры и функции программного модуля

Синтаксис объявления процедуры: Процедура <Имя_проц>([Знач] <Парам1> [=<ДефЗнач>] , …) [Экспорт] // Объявления локальных переменных; // Операторы; … [Возврат;] // Операторы; КонецПроцедуры

После ключевого слова «КонецПроцедуры» точка с запятой не ставится. Ключевое слово «Знач» означает, что переменные передаются по значению. Ключевое слово «Экспорт» имеет смысл только в глобальном модуле и означает, что процедура будет доступна в любом программном модуле. Функция, в отличие от процедуры должна возвращать значение

Для передачи локального контекста используется ключевое слово «Контекст» в качестве параметра.

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

Листинг 36. Пример описания процедуры

Процедура УстСклада(Конт) Экспорт // создаем объект типа "справочник" Скл = СоздатьОбъект("Справочник.Склады"); // вызываем диалог для выбора элемента Справочника Скл.Выбрать("Выберите Склад", ""); Если Скл.Выбран() = 1 Тогда // если в диалоге элемент Справочника был выбран, // то присваиваем его значение реквизиту Документа, // который доступен по локальному контексту Конт.Склад = Скл.ТекущийЭлемент(); КонецЕсли; КонецПроцедуры

Здесь переменная Конт является формальным параметром, которому при вызове процедуры будет присвоен локальный контекст. В данном примере обращение к реквизитам и методам локального контекста происходит «через точку» после идентификатора Конт, например:

Конт.Склад = Скл.ТекущийЭлемент();

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

УстСклад(Контекст);

С примерами программных модулей можно ознакомиться в типовой конфигурации «Бухгалтерский учет».

Типы данных

В системе поддерживаются базовые и агрегатные типы данных. К базовым типам относятся числа, строки и даты. Агрегатные типы данных – это специализированные типы данных, предназначенные для работы с объектами 1С:Предприятия. Агрегатными типами данных называются следующие типы данных:
  • Константа – средство работы с постоянными (или условно постоянными) значениями. В константах хранится информация, которая не изменяется или изменяется достаточно редко. Например, название организации, почтовый адрес. Перечень констант, доступный в конкретной конфигурации, их названия и тип определяются в конфигураторе.
  • Справочник – средство для ведения списков однородных элементов данных. Помимо наименования элементов данных, списки могут содержать различную дополнительную информацию. Физическим аналогом справочника может являться картотека. Каждая карточка – это элемент справочника, а сведения, заносимые в карточку, являются реквизитами справочника. Перечень справочников, доступных в конкретной конфигурации, их названия и реквизиты определяются в конфигураторе.
  • Перечисление – средство работы с элементами данных, список возможных значений которых жестко задан (например, для перечисления «ФормаОплаты» можно задать возможные значения: «Нал», «Безнал»). В отличие от справочников, списки значений в перечислении задаются в процессе их создания в конфигураторе и при выполнении задачи не могут быть изменены. Состав перечислений, доступных в конкретной конфигурации, их названия и допустимые значения определяются в конфигураторе.
  • Документ – средство для ввода первичной информации о совершаемых хозяйственных операциях. Перечень документов, доступных в конкретной конфигурации, их названия, реквизиты и другие свойства определяются в конфигураторе.
  • Запрос – средство для выполнения обращения к документам, регистрам, документам, справочникам и журналам расчетов с целью получения сводной информации при формировании выходных отчетов. В программных модулях допускается создавать произвольное число объектов типа Запрос при помощи вызова системной функции СоздатьОбъект.
  • Текст – средство работы с текстовыми документами. В программных модулях допускается создавать произвольное число объектов типа Текст при помощи вызова системной функции СоздатьОбъект.
  • Таблица – средство работы с таблицами (отчетами). В программных модулях допускается создавать произвольное число объектов типа Таблица, при помощи вызова системной функции СоздатьОбъект.
  • СписокЗначений – средство для создания списка значений каких-либо данных и возможности в дальнейшем сортировать и выбирать нужные значения из списка. При добавлении в диалоговых формах полей типа «Список» или «Поле со списком», система автоматически создает объекты СписокЗначений, доступ к которым в языке возможен по идентификатору поля. В программных модулях допускается создавать произвольное число объектов типа СписокЗначений при помощи вызова системной функции СоздатьОбъект.
  • ТаблицаЗначений - средство для создания списка значений каких-либо данных и возможности в дальнейшем сортировать и выбирать нужные значения из списка. При добавлении в диалоговых формах полей типа «Список» или «Поле со списком», система автоматически создает объекты СписокЗначений, доступ к которым в языке возможен по идентификатору поля. В программных модулях допускается создавать произвольное число объектов типа СписокЗначений при помощи вызова системной функции СоздатьОбъект.
  • Картинка – средство для работы с графическими файлами. При добавлении в диалоговых формах и в таблицах полей типа «Картинка», система автоматически создает объекты Картинка, доступ к которым в языке возможен по идентификатору поля. В программных модулях допускается создавать произвольное число объектов типа Картинка при помощи вызова системной функции СоздатьОбъект.
  • Периодический - средство для работы с периодическими реквизитами справочников и периодическими константами. В программных модулях допускается создавать произвольное число объектов типа Периодический при помощи вызова системной функции СоздатьОбъект.
  • ФС – средство для работы с дисковыми файлами непосредственно из встроенного языка системы 1С:Предприятие. В программных модулях допускается создавать произвольное число объектов типа ФС при помощи вызова системной функции СоздатьОбъект. Кроме того, в глобальном контексте по умолчанию существует один уже созданный объект этого типа с именем ФС (имя объекта совпадает с названием агрегатного типа данных).
  • XBase – средство для работы с файлами баз данных DBF формата непосредственно из встроенного языка системы 1С:Предприятие. В программных модулях допускается создавать произвольное число объектов типа XBase при помощи вызова системной функции СоздатьОбъект.
Следующие типы данных доступны только при наличии компоненты «Бухгалтерский учет»:
  • ПланСчетов является служебным типом данных. Он предназначен для идентификации Плана счетов, созданного в метаданных. В основном он используется для передачи в качестве параметра различным процедурам и функциям компоненты «Бухгалтерский учет» и для выбора плана счетов в формах. Тип значения «ПланСчетов» не поддерживает никаких данных в информационной базе, а список возможных значений этого типа данных определен планами счетов созданными в конфигурации. Значения типа «ПланСчетов» могут выступать как реквизиты диалога формы, как реквизиты документов, справочников и т. д. Для получения значения такого типа данных используется глобальный атрибут ПланыСчетов, который имеет в свою очередь набор атрибутов типа «ПланСчетов» соответсвующих имеющимся в конфигурации планам счетов. Кроме того, глобальный атрибут ПланыСчетов имеет методы для обхода всех существующих планов счетов.
  • ВидСубконто является служебным типом данных. Он предназначен для идентификации Вида субконто, созданного в метаданных. В основном он используется для передачи в качестве параметра различным процедурам и функциям компоненты «Бухгалтерский учет» и для выбора вида субконто в формах. Список возможных значений этого типа данных определен видами субконто, созданными в конфигурации. Значения типа «ВидСубконто» могут выступать как реквизиты диалога формы, как реквизиты документов, справочников и т. д. Для получения значения такого типа используется глобальный атрибут ВидыСубконто, который имеет в свою очередь набор атрибутов типа «ВидСубконто» соответствующих имеющимся видам субконто. Кроме того, глобальный атрибут ВидыСубконто имеет методы для обхода всех существующих видов субконто. Операция - средство для манипулирования из встроенного языка данными бухгалтерских операций и проводок формируемых документом. Так как проводки в системе 1С:Предприятие принадлежат операциям, то управление и операциями и проводками выполняется объектом «Операция».
  • БухгалтерскиеИтоги – средство для организации доступа к бухгалтерским итогам в различных разрезах, за различные периоды и с разной степенью детализации. При наличии в системе 1С:Предприятие компоненты «Бухгалтерский учет» система автоматически реализует специальный механизм работы с бухгалтерскими итогами. Данный механизм обеспечивает хранение, динамический пересчет бухгалтерских итогов и их извлечение средствами встроенного языка. Система хранения бухгалтерских итогов поддерживается системой 1С:Предприятие автоматически на основе существующих планов счетов. При редактировании планов счетов - в конфигураторе или при работе с системой 1С:Предприятие - для счета могут быть установлены ряд свойств, которые влияют на организацию хранения бухгалтерских итогов: это признаки ведения валютного и количественного учета, а также включение аналитического учета по субконто. Изменение бухгалтерских итогов может производиться только проводками бухгалтерских операций.
Каждый агрегатный тип данных, как правило, имеет набор атрибутов и методов. Атрибуты по свойствам напоминают переменные, т. е. им можно присваивать или читать их значения. Методы – это те действия, которые может выполнять агрегатный тип данных. Методы могут иметь или не иметь возвращаемое значение. Если метод имеет возвращаемое значение, то он может размещаться в правой части оператора присваивания, в выражениях, в описании фактических параметров других вызываемых методов, процедур или функций.

Типичная последовательность работы с объектом агрегатного типа данных выглядит следующим образом:

  1. С помощью функции СоздатьОбъект создается объект агрегатного типа данных, и какой-либо переменной присваивается ссылка на него;
  2. Объект позиционируется на нужном элементе данных;
  3. Производятся различные манипуляции с объектом агрегатного типа данных через вызовы методов и обращения к его атрибутам.
  4. В случае, если объект агрегатного типа данных больше не нужен, он может быть отсоединен от переменной посредством переприсваивания переменной какого-либо значения базового типа (например, числа 0). Отсоединение объекта выполнять не обязательно.
Пример: // Создаем объект Сотр = СоздатьОбъект(“Справочник.Сотрудники”); // Позиционируем созданный объект по наименованию Сотр.НайтиПоНаименованию(“Петров”); Если Сотр.Выбран()=1 Тогда Сообщить(“Петров ”+Строка(Сотр.Оклад)); Иначе Сообщить(“Петров не найден”); КонецЕсли;

Для преобразования значения одного базового типа в другой используются функции Строка(<Значение>), Число(<Значение>), Дата(<Значение>).

Символы

Специальные символы, используемые в исходном тексте

// Двумя знаками «косая черта» начинается комментарий. Комментарием считается весь текст от знака "//" до конца текущей строки.
| Вертикальная черта в начале строки используется только в строковых константах и означает, что данная строка является продолжением предыдущей (перенос строки), (см. «Строковые константы»).
~ Знаком тильда начинается метка оператора.
: Двоеточием заканчивается метка оператора.
; Точка с запятой является символом разделения операторов.
() В круглые скобки заключается список параметров методов, процедур и функций.
В квадратные скобки заключается размерность массивов.
, Запятая разделяет параметры в списке параметров методов, процедур и функций.
" " В двойные кавычки заключаются строковые константы.
" " В одинарные кавычки заключаются константы даты.
. Десятичная точка в числовых константах. Разделитель, используемый в описаниях агрегатных типов данных.
+ Символ «плюс» обозначает операцию сложения.
- Символ «минус» обозначает операцию вычитания.
* Символ «звездочка» обозначает операцию умножения.
/ Символ «косая черта» обозначает операцию деления.
> Правая угловая скобка обозначает логическую операцию «больше».
>= Логическая операция «больше или равно».
< Левая угловая скобка обозначает логическую операцию «меньше».
<= Логическая операция «меньше или равно».
= Знак равенства обозначает присвоение или логическую операцию «равно».
<> Две угловые скобки обозначают логическую операцию «не равно».

Управляющие операторы

Для управления логикой выполнения программы используются логические выражения и управляющие операторы. Логическое выражение записывается с помощью символов сравнения = (равно), <> (не равно), > (больше), < (меньше), <= (меньше либо равно), >=(больше или равно), при этом сравнение производится только над значениями одинаковых типов (то есть нельзя, например, сравнивать число и строку). Из нескольких сравнений можно построить более сложное условие с помощью булевых операций «и», «или», «не». Порядок сравнений можно определять с помощью круглых скобок.

Оператор ветвления

Если <Логическое_выражение> Тогда

ИначеЕсли <Логическое_выражение> Тогда

Иначе

КонецЕсли;

Циклы

Пока <Логическое_выражение> Цикл … [Прервать] … [Продолжить] … КонецЦикла; Для <Имя_переменной> = <Выражение1> По <Выражение2> Цикл … [Прервать] … [Продолжить] … КонецЦикла;

Величина приращения счетчика при каждом выполнении цикла равна 1. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.

Обработка ошибок

Попытка … [Исключение] … КонецПопытки;

Работа с транзакциями

Транзакции применяются для выполнения длительных и критических для функционирования системы операций. В некоторых случаях система сама начинает транзакцию и специально описывать ее не надо. Например, это происходит при проведении документов: так как в программе могут работать одновременно несколько пользователей, то при записи документа (например, продажа товара со склада) недопустима ситуация «одновременного» проведения двух документов – все равно один из них должен быть проведен раньше, чем другой (иначе можно продать один и тот же товар два раза!). Поэтому система выполняет проведение документа в режиме транзакции, – база данных становится недоступной для записи остальных пользователей. Естественно, что при большом количестве пользователей, которые активно вводят данные в программу, работа системы замедляется. Одним из решений этой проблемы может быть установка версии для SQL, в этом случае процедуры записи выполняется на отдельном компьютере (сервере базы данных) с помощью MS SQL Server 7.0.

В остальных случаях транзакцию начать и зафиксировать с помощью следующих функций:

НачатьТранзакцию(); … [ОтменитьТранзакцию();] … ЗафиксироватьТранзакцию();

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

Работа с объектом «СписокЗначений»

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

Элемент списка содержит три поля – значение, представление и пометка. Значение может принимать значение любого типа, представление же всегда имеет тип «Строка». В форме диалога отображается представление (если оно задано). Пометка означает, помечено данное значение или нет.

Основные функции работы со списком следующие:

  • ДобавитьЗначение(<Знач>,<Строка>)
  • НайтиЗначение(<Знач>)
  • ПолучитьЗначение(<Позиция>,<Перем>)
  • Получить(<Строка>)
  • УдалитьЗначение(<Позиция>,<Колич>)
  • УдалитьВсе()
  • РазмерСписка()
  • Сортировать(<Направление>)
  • СортироватьПоПредставлению(<Направление>)
  • Принадлежит(<Знач>)
  • Пометка (<Позиция>,<Отметка >)
  • ИзСтрокиСРазделителями(<Строка>)
  • ВСтрокуСРазделителями()

Работа с объектом «ТаблицаЗначений»

Объект «ТаблицаЗначений» применяется для создания динамических массивов (не сохраняемых в БД), которые могут отображаться в диалоговых формах (элемент «Таблица значений»). Таблица значений создается с помощью функции СоздатьОбъект(«ТаблицаЗначений»), либо визуально при добавлении на форму элементов «Таблица значений». Пример. Т=СоздатьОбъект(«ТаблицаЗначений») // Определяем идентификаторы и параметры колонок Т.НоваяКолонка(«Товар», «Строка», 30, «Наименование товара», 20); Т.НоваяКолонка(«Цена», «Число», 10, 2 , «Цена», 10); Т.НоваяКолонка(«Количество», «Число», 10, 3, «Кол.», 10); Т.НоваяКолонка(«Сумма», «Число», 15, 3, «Сумма», 10); // Создаем новую строку Т.НоваяСтрока(); Т.Товар= «Сыр»; Т.Цена= 50; Т.Количество= 10; Т.Сумма= Т.Цена* Т.Количество;

Основные функции работы с таблице следующие:

  • НоваяКолонка(<Идентификатор>,<Тип>,<Длина>,<Точность>,<Заголовок>,<Ширина>, <Формат>,<Положение>)
  • НоваяСтрока()
  • УдалитьСтроку(<НомерСтроки>)
  • УдалитьСтроки()
  • ПолучитьСтрокуПоНомеру(<НомерСтроки>)
  • ПолучитьЗначение(<НомерСтроки>,<Колонка>) <Колонка> - это либо номер колонки либо идентификатор колонки
  • НайтиЗначение(<Знач>,<Строка>,<Колонка>) <Строка> – идентификатор переменной, в которую возвращается номер найденной строки, <Колонка> – идентификатор переменной, в которую возвращается колонка найденной строки.
  • ВыбратьСтроки() – открыть выборку строк из таблицы
  • ПолучитьСтроку() – получить следующую строку из выборки
  • Сортировать(<Колонки>) <Колонки> - это строка, содержащая список идентификаторов или номеров колонок, разделенных запятой, по которым выполняется сортировка строк таблицы значений
  • Свернуть(<ГрупКолонки>,<СумКолонки>) <ГрупКолонки> - это строка, содержащая список идентификаторов или номеров колонок, разделенных запятой, по которым выполняется группировка строк таблицы значений (то есть если имеется несколько строк с одинаковыми значениями в группируемых колонках, то в результате свертки останется одна такая строка). <СумКолонки> - это строка, содержащая список идентификаторов или номеров колонок, разделенных запятой, в которых выполняется суммирование значений строк таблицы значений (то есть, если группируется несколько строк, то значения суммируемых колонок будут складываться).

Запуск внешних приложений из 1С.

Для запуска внешнего приложения можно использовать функцию ЗапуститьПриложение(). Эта функция использует средства OLE-Automation и позволяет использовать серверы автоматизации в приложениях 1С. Небольшой пример интеграции 1С и Excel приведен в листинге 37.

Листинг 37. Запуск внешнего приложения из программы 1С

Окно = СоздатьОбъект(«Excel.Application»); Окно.Visible = 1; // делаем окно видимым Окно.Caption = “Отчет”; // задаем имя окну Окно.Workbooks.Add(); // создаем новую рабочую книгу Для Н=1 По 10 Цикл Ячейка = Окно.Cells(Н,1); Ячейка.Value = Н; КонецЦикла;

Постоянный адрес этой страницы:

Войдите на сайт как ученик

Внутренний язык программирования 1С 8.3 для начинающих программистов: установка 1С и ваша первая программа на языке 1С

Если вы не читали введение к урокам - пожалуйста, прочтите его: .

Установка учебной версии 1С

Для обучения программированию нам понадобится 1С 8.3 (не ниже 8.3.13.1644 ) .

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

Задание №1 : скачать и установить учебную версию 1С 8.3.

После выполнения Задания №1 на вашем рабочем столе должен появиться вот такой ярлык:

Поздравляю! Платформа 1С установлена и очень скоро вы сможете написать первую программу.

Первая программа

Это уже стало традицией для программистов - изучая новый язык, первое, что на нём пишут это программу, печатающую на экране фразу "Hello, World!".

Не станем исключением и мы. Но, будучи русскими программистами, заставим компьютер вывести на экран фразу "Привет, Мир!".

Задание №2: написать программу на языке 1С 8.3, которая при запуске выводит на экран фразу "Привет, Мир!".

Инструкция для выполнения:

1. Запустите ярлык "1С:Предприятие" на вашем рабочем столе.

2. Перед вами открылся список баз 1С. Как видите, он пуст. Давайте создадим учебную базу, в которой и будем программировать. Нажмите кнопку "Добавить ".

3. Выберите пункт "Создание новой информационной базы " и нажмите кнопку "Далее ".

4. Выберите пункт "Создание информационной базы без конфигурации... " и нажмите кнопку "Далее ".

5. В качестве имени базы укажите "Учебная " и нажмите кнопку "Далее ".

6. В качестве каталога базы укажите любую пустую папку (в данном случае это папка "Учебная" в моих документах). Нажмите кнопку "Далее".

7. Укажите вариант аутентификации "Выбирать автоматически ", режим запуска "Толстый клиент ". В качестве версии 1С:Предприятия ничего не указывайте, нажмите кнопку "Готово".

8. Как видите, в списке, наконец, появилась первая база, которую мы только что создали сами! Начнем писать код. Нажмите кнопку "Конфигуратор ".

9. В открывшемся окне, выберите через меню "Конфигурация "->"Открыть конфигурацию ".

10. В открывшейся слева панели нажмите правой кнопкой мыши на слове "Конфигурация " и выберите из списка "Открыть модуль управляемого приложения ".

11. Открылось окно с редактором. Сюда можно писать текст! С ним мы и будем работать в дальнейшем.

12. Теперь, не задумываясь, просто перепишите в это окно следующий текст:

Сообщить("Привет, Мир!" ) ;

13. Отлично! Код нашей первой программы готов. Запустим его на выполнение. Через меню "Отладка "->"Начать отладку " (или клавиша F5 ).

14. На вопрос ответим утвердительно.

15. Спустя секунду или две запустится 1С и в окне снизу появится надпись "Привет, Мир!". Мы добились от компьютера того, чего хотели. Поздравляю вас с первой программой!

Что-то не получилось? Остались вопросы? Задайте их мне на почту [email protected] и я отвечу вам сегодня же. Ваш преподаватель: Владимир Милькин .

Обращение преподавателя

Уровень сложности уроков идёт снизу вверх. Поэтому старайтесь заниматься последовательно, ничего не пропуская и не откладывая на потом.

Обязательно выполняйте все тесты и домашние задания, старайтесь улучшить свои результаты. Сверяйтесь с эталонными решениями только после самостоятельного выполнения задач.

Войдите на сайт как ученик

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