Код программы для 1c

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

Сим­вол Описание
// Двумя знаками косая черта начинается комментарий. Комментарием считается весь текст от символа до конца текущей строки
| Используется только в строковых константах в начале строки и означает, что данная строка является продолжением предыдущей (перенос строки)
~ Начало метки оператора
: Окончание метки оператора
; Символ разделения операторов
( ) В круглые скобки заключается список параметров методов, процедур, функций и конструкторов.

Директивы компиляции

Русское имя Английское имя
НаКлиенте AtClient
НаСервере AtServer
НаСервереБезКонтекста AtServerNoContext
НаКлиентеНаСервереБезКонтекста AtClientAtServerNoContext
НаКлиентеНаСервере AtClientAtServer

Ключевые слова языка запросов

Русское написание Английское написание
АВТОУПОРЯДОЧИВАНИЕ AUTOORDER
БУЛЕВО BOOLEAN
В IN
ВНЕШНЕЕ OUTER
ВНУТРЕННЕЕ INNER
ВОЗР ASC
ВСЕ ALL
ВЫБОР CASE
ВЫБРАТЬ SELECT
ВЫРАЗИТЬ CAST
ГДЕ WHERE
ГОД YEAR
ДАТА DATE
ДАТАВРЕМЯ DATETIME
ДЕКАДА TENDAYS
ДЕНЬ DAY
ДЕНЬГОДА DAYOFYEAR
ДЕНЬНЕДЕЛИ WEEKDAY
ДЛЯ ИЗМЕНЕНИЯ FOR UPDATE [OF]
ДОБАВИТЬКДАТЕ DATEADD
ЕСТЬ IS
ЕСТЬNULL ISNULL
Значение VALUE
И AND
ИЕРАРХИЯ HIERARCHY
ИЗ FROM
ИЛИ Or
ИМЕЮЩИЕ HAVING
ИНАЧЕ ELSE
ИНДЕКСИРОВАТЬ ПО INDEX BY
Истина TRUE
ИТОГИ … ПО TOTALS … BY
КАК AS
КВАРТАЛ QUARTER
КОГДА WHEN
КОЛИЧЕСТВО COUNT
КОНЕЦПЕРИОДА ENDOFPERIOD
КОНЕЦ END
ЛЕВОЕ LEFT
Ложь FALSE
МАКСИМУМ MAX
МЕЖДУ BETWEEN
МЕСЯЦ MONTH
МИНИМУМ MIN
МИНУТА MINUTE
НАЧАЛОПЕРИОДА BEGINOFPERIOD
НЕ Not
НЕДЕЛЯ WEEK
НЕОПРЕДЕЛЕНО UNDEFINED
ОБЩИЕ OVERALL
ОБЪЕДИНИТЬ UNION
ПЕРВЫЕ TOP
ПЕРИОДАМИ PERIODS
ПОДОБНО LIKE
ПОЛНОЕ FULL
ПОЛУГОДИЕ HALFYEAR
ПОМЕСТИТЬ INTO
ПРАВОЕ RIGHT
ПРЕДСТАВЛЕНИЕ PRESENTATION
ПУСТАЯТАБЛИЦА EMPTYTABLE
РАЗЛИЧНЫЕ DISTINCT
РАЗРЕШЕННЫЕ ALLOWED
Сгруппировать По GROUP BY
СЕКУНДА SECOND
СОЕДИНЕНИЕ … ПО JOIN … ON
СПЕЦСИМВОЛ ESCAPE
ПОДСТРОКА SUBSTRING
СЕКУНДА SECOND
СРЕДНЕЕ AVG
ССЫЛКА REFS
СТРОКА STRING
СУММА SUM
ТИП TYPE
ТИПЗНАЧЕНИЯ VALUETYPE
ТОГДА THEN
ТОЛЬКО ONLY
УБЫВ DESC
УПОРЯДОЧИТЬ ПО ORDER BY
ЧАС HOUR
ЧИСЛО NUMBER
УНИЧТОЖИТЬ DROP

Источник: disweb.ru

Разбор кода 1С, выпуск № 1

Не пиши так код в 1С

Инструкция по обращению к 1С из С#

Разработка модулей на платформе 1С:Предприятие 8.3

Для описания всех алгоритмов управления данными в конфигурации приложения 1С предусмотрено 11 видов программных модулей, 3 раздела, 7 опций, 5 директив компиляции и инструкции препроцессора. Ниже кратко и конспективно они объяснены, изложены принципы внутренней организации модулей и их взаимодействие между собой, приведены примеры. Текст еще не завершен и многие нюансы еще уточняются и будут дополняться.

Модуль обычного приложения

  • осуществляет обработку интерактивного запуска и завершения Толстого клиента в режиме Обычного приложения, в котором присутствует обычный командный интерфейс в виде Главного меню
  • компилируется и как Клиент и как Сервер

Модуль управляемого приложения

  • обработка интерактивного запуска и завершения
  • Тонкого клиента
  • Толстого клиента
  • Управляемого приложения
  • Веб-клиента
Читайте также:
С помощью какой программы можно редактировать сканированные документы

Модуль сеанса

Модуль инициализирует значения глобальных переменных, служащих параметрами сеанса

  • модуль используется при любом режиме запуска
  • при старте приложения событие УстановкаПараметровСеанса вызывается самым первым
  • события в модуле приложения вызываются позже и могут выполнить Отказ в дальнейшем запуске приложения
  • событие УстановкаПараметровСеанса может возникать во время сеанса повторно
  • при первом вызове события УстановкаПараметровСеанса количество элементов в массиве параметров сеанса равно нулю

Модуль внешнего соединения

  • работает в режиме com-соединения
  • содержит экспортные переменные и экспортные методы, которые будут доступны на стороне внешнего вызова через объект 1С:Предприятие 8.3
  • без интерактивных средств, поэтому нельзя использовать
  • диалоговых форм!
  • выводить предупреждающие сообщения!
  • так как нет пользовательского интерфейса!

Общий модуль

Общие модули содержат общие алгоритмы, которые могут вызываться из других модулей.

  • доступен только раздел описания процедур и функций (нельзя описывать переменные и программы).
  • режимы компиляции определяются опциями общего модуля
  • не требуется указывать директивы компиляции вначале процедур и функций, и хотя они не вызывают ошибок компиляции, использование директив НаКлиентеНаСервереБезКонтекста сделает процедуру или функцию недоступной для любых серверных вызовов.
  • управлять компиляцией отдельных фрагментов модуля следует инструкциями препроцессора #ЕСЛИ #ИНАЧЕ #КОНЕЦЕСЛИ

Опции Общего модуля

  • Глобальный — объявленные в модуле экспортные методы будут доступны за пределами модуля напрямую без указания имени модуля, глобальный модуль компилируется при старте системы, поэтому увеличивает время старта системы.
  • Опции компиляции и доступности
  • Клиент (управляемое приложение) — модуль будет скомпилирован и доступен на Клиенте
  • Сервер — модуль будет скомпилирован и доступен на Сервере
  • Внешнее соединение — модуль будет скомпилирован и доступен при Внешнем соединении
  • Вызов сервера — делает экспортные процедуры и функции доступными для вызова из модулей исполняемых на Клиенте, предполагает возможность двунаправленного XDTO преобразования параметров и возвращаемых значений (см. подробней Передача параметров и возвращаемых значений ниже).
  • Привилегированный — применим только к модулям на Сервере, отменяет контроль доступа к объектам данных, что существенно увеличивает скорость выполнения, особенно при горизонтальном разграничении доступа к записям таблицы.
  • Повторное использование возвращаемых значений — позволяет ускорить выполнение функций неглобального общего модуля путем оптимизации XDTO преобразования параметров повторяющихся вызовов.

Вызов метода общего модуля

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

МойОбщийМодуль . МояЭкспортнаяПроцедура ( ) ;

Пример косвенного вызова метода общего модуля:

НекоторыйМодуль = ОбщийМодуль ( «МойОбщийМодуль» ) ;
НекоторыйМодуль . МояЭкспортнаяПроцедура ( ) ;

Модуль объекта

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

  • присутствует у Справочников, Документов, Отчетов, Обработок, ПВХ
  • отсутствует у Констант, Перечислений, Журналов, Внешних источников данных
  • у Регистров аналогичную роль выполняет Модуль Записи
  • переменные объявленные как Экспорт доступны у объекта как реквизиты . , но в отличие от реквизита она не сохраняется при записи
  • процедуры и функции описанные как Экспорт доступны у объекта как методы .()
  • по неизвестной причине доступ к переменным и методам у Обработок не действует

Примеры

Пример описания переменной, конструктора объекта, экспортной функции и пример вызова:

// код модуля объекта
Перем Переменная ;
Функция ЭкспортнаяФункция ( ) Экспорт
Возврат ЭтотОбъект . Реквизит + Переменная ;
КонецФункции
Переменная = 123 ;
// код в другом модуле
ИсточникОбъект = ИсточникСсылка . ПолучитьОбъект ( ) ;
ДанныеИсточника = ИсточникОбъект . ЭкспортнаяФункция ( ) ;

Читайте также:
Исполнитель программы это компьютер

Модуль менеджера

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

  • присутствует у Справочников, Документов, Журналов, Перечислений, Отчетов, Обработок, ПВХ, Регистров, Бизнес-процессов, Задач
  • отсутствует у Внешних источников данных
  • доступность обеспечивается только из модулей на Сервере
  • могут при необходимости получить объект или ссылку в параметре вызова

Примеры

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

// модуль менеджера
Функция ЭкспортнаяФункция ( ) Экспорт
Возврат Справочники . Источник . НайтиПоКоду ( 123 ) ;
КонецФункции
ДанныеИсточника = Справочники . Источник . ЭкспортнаяФункция ( ) ;

Модуль менеджера значения

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

Модуль формы

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

  • компиляция по умолчанию выполняется на Сервере, но отдельные фрагменты модуля могут устанавливать другую область компиляции директивами компиляции
  • НаКлиенте
  • реквизиты объекта формы доступны через Объект.
  • реквизиты формы доступны непосредственно по имени
  • элементы формы доступны через Элементы.
  • статические переменные существуют только на время обработки события формы, а затем удаляются
  • реквизиты объекта формы доступны через Объект.
  • реквизиты формы доступны непосредственно по имени
  • элементы формы на Сервере недоступны
  • статические переменные существуют только на время вызова метода на Сервере, а затем удаляются
  • данные реквизитов при каждом вызове НаКлиенте->НаСервере и возврате НаСервере->НаКлиенте все (целиком в полном объеме) проходят через XDTO сериализацию
  • доступные методы реквизитов на Клиенте и на Сервере отличаются

Модуль набора записей

Модуль команды

Временный динамический модуль

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

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

Разделы модулей

Директивы компиляции и выполнения

Пять директив определяют область исполнения функций и процедур. Их следует применять только в коде модулей управляемых форм и в коде модулей команд, в остальных модулях рекомендуется применять инструкции препроцессора.

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

Инструкции препроцессора

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

Предусмотрены четыре инструкции

Области

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

Области выделяются с помощью двух инструкций препроцессора #Область и #КонецОбласти :

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

#КонецОбласти

Области типовых конфигураций 1С:
  • Модуль объекта
  • ПрограммныйИнтерфейс
  • ОбработчикиСобытий
  • СлужебныеПроцедурыИФункции
  • ИнициализацияИЗаполнение
  • Прочее
  • ПрограммныйИнтерфейс
  • ОбработчикиСобытий
  • СлужебныеПроцедурыИФункции
  • СлужебныйПрограммныйИнтерфейс
  • Обеспечение
  • НаправленияДеятельности
  • Проведение
  • Отчеты
  • Печать
  • ШаблоныСообщений
  • Прочее
  • ТекущиеДела
  • ОбновлениеИнформационнойБазы
  • ФормированиеГиперссылкиВЖурналеДокументыПродажи
  • Назначения
  • ОписаниеПеременных
  • ОбработчикиСобытийФормы
  • ОбработчикиСобытийЭлементовШапкиФормы
  • ОбработчикиСобытий
  • ОбработчикиСобытийЭлементовТаблицыФормыТовары
  • ОбработчикиКомандФормы
  • СлужебныеПроцедурыИФункции

Предопределенные Объекты конфигурации

В модулях используются объекты данных с предопределенными именами

ЭтаФорма

Объект

  • Является именем основного реквизита управляемой формы, который хранит данные ИБ открытые в управляемой форме, например: Объект.Ссылка;
  • Имя реквизита Объект может быть изменено, но делать это не принято.
  • Полный формат: ЭтаФорма.Объект.Ссылка;

ЭтотОбъект

  • Указывает на объект формы для доступа к реквизитам формы
  • Допускает только чтение
  • Доступен для Сервер, Толстый клиент, Внешнее соединение

Запись

В модуле записи регистра.

Элементы

Коллекция Элементы В модуле формы НаКлиенте содержит все элементы формы

  • Элементы.
  • Элементы(«»)
  • ?Получить значение элемента ни свойством, ни методом нельзя

Аннотации расширения модулей

Три аннотации позволяют определить перехват порядка вызова типовых методов новыми методами.

  • После — перехватчик будет выполнен после того, как выполнится типовой метод.
  • распаковываются» и используются. При переходе с серверной части на клиентскую – обратный процесс. Здесь необходимо отметить, что данная схема корректно обрабатывает передачу параметров по ссылке и по значению. При передаче параметров действуют следующие отграничения:
  • Передавать между клиентом и сервером (в обе стороны) можно только немутабельные значения (т.е. значения которых не могут изменяться): примитивные типы, ссылки, универсальные коллекции, значения системных перечислений, хранилище значения. При попытке передать что-либо другое – аварийное завершение клиентского приложения (даже, если передавать некорректный параметр пытается сервер).
  • Не рекомендуется при передаче параметров передавать большие объёмы данных (например, строки более 1 миллиона символов), это может негативно сказаться на производительности сервера.
  • Передача в любом направлении ссылок на данные преобразует ссылки в копии данных, так при передаче структур и массивов других взаимосвязанных ссылками структур будет получена структура похожая по содержанию на исходную, но ссылочная связанность в ней будет потеряна и связные изменения выполняться не будет.
  • Описанное разрушение ссылочной целостности происходит в реквизитах управляемой формы при первом же вызове метода https://reks.biz/?p=2276″ target=»_blank»]reks.biz[/mask_link]
Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru