Уроки программирования 1С: Примитивный тип данных Дата
Дата – тип данных, который задает число, месяц, год (обязательно) и часы, минуты и секунды (не обязательно) по григорианскому календарю.
На прошлых занятиях мы изучили примитивные типы данных Число и Строка, ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.
В системе 1С:Предприятие 8 для хранения и управления данными используются литералы – внутренний формат данных, который удобен компьютеру, но не всегда нагляден для человека. И если для Числа и Строки литералами являлись соответственно цифры и буквы, то для Даты это строка цифр, заключенная в одинарные кавычки вида ‘ГГГГММДДччммсс’, где:
- ГГГГ — четыре цифры года (включая тысячелетие и век);
- ММ — две цифры месяца;
- ДД — две цифры даты;
- чч — две цифры часа (в 24-х часовом формате);
- мм — две цифры минут;
- сс — две цифры секунд;
В литерале даты игнорируются все значения, отличные от цифр. Разделители в литерале можно указывать для упрощения ввода даты.
Дата(‘2019.03.23 10:45:25’) = «23.03.2019 10:45:25»
Дата(‘2019\03\23-10~45~25’) = «23.03.2019 10:45:25»
Для работы с примитивными данными могут применяться функции Глобального контекста – это функции, не привязанные к какому-либо объекту и работающие непосредственно с реквизитами. Свои функции Глобального контекста есть для Строки (сократить, объединить, разделить строки и др.), Числа (округлить, вычислить синус угла и др.), Даты (получить из даты год, день, получить текущую дату или дату конца года и др.), и других типов данных.
Рекомендуем ознакомиться с функциями Глобального контекста для примитивных данных в синтаксис-помощнике.

Использование функции Глобального контекста с примитивным типом данных Дата
Для примера возьмем функцию ДеньНедели, которая определяет номер дня недели для указанной даты, где 1 – понедельник, а 7 – воскресенье.
С помощью функции создадим обработку, определяющую, в какой день недели родился человек.
Создадим внешнюю обработку с двумя реквизитами:
- ДеньРождения типа Дата
- НазваниеДняНедели типа Строка
И перенесем реквизиты на форму.

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

Выберем создание обработчика события на клиенте.

Платформа 1С:Предприятие 8 автоматически ввела часть кода обработчика, связанную с условием запуска процедуры.

Чтобы получить день недели, код должен будет содержать следующие части:
- Массив данных, в котором будут храниться названия дней недели.
- Функцию ДеньНедели, которая вернет нам порядковый номер дня недели.
- Функцию, которая будет устанавливать соответствие между порядковым номером дня недели и элементом массива данных и выводить итоговые данные строкой.
Массив данных – это универсальная коллекция значений. Нумерация элементов массива начинается с 0 в квадратных скобках. Общее число элементов массива задается в круглых скобках. В массиве могут быть любые данные, в данном случае нам необходима Строка:
Массив=Новый Массив (7);
Теперь нам с помощью функции ДеньНедели получить число, возвращаемое функцией от даты рождения.
Теперь из массива вытащим название дня недели, соответствующее реквизиту Число. При этом переменная Число может получать значения от 1(понедельник) до 7(воскресенье), поэтому для получения названия дня недели из массива уменьшим Число на 1 и присвоим полученное значение реквизиту формы НазваниеДняНедели.
Итоговый код обработчика будет выглядеть следующим образом:

Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.
Форматирование данных
Чтобы выводить реквизиты в удобной и понятной форме, используется функция Формат. Так, например, с помощью этой функции вы можете задать короткий или длинный формат отображения даты, со временем или без. Также можно форматировать и другие типы данных, например, Число (настраивать представление разрядов, отрицательных чисел, и др). Вы можете не форматировать данные перед выводом, тогда будет использоваться стандартный формат.
Ознакомьтесь с детальным описанием функции Формат в синтаксис-помощнике Глобальный контекст – Функции форматирования – Формат.
Для иллюстрации примера форматирования даты создадим функцию-обработчик &НаКлиенте, которая будет выводить дату в нужном нам формате. Для этого в обработке создадим:
- Реквизит ФорматированнаяДата
- Поле ФорматированнаяДата (то есть перенесем на форму соответствующий реквизит)
- Команду ФорматироватьДату
- Кнопку ФорматироватьДату (то есть перенесем на форму соответствующую команду)

Далее приступим к написанию кода обработчика. Код функции выглядит так:
Формат(Значение, ФорматнаяСтрока), где Значением может быть реквизит, а ФорматнаяСтрока – это набор правил форматирования вида «Имя=Значение; «.
Правило форматирования даты задается Именем ДФ, а Значение задается следующим синтаксисом:
- д (d) — день месяца (цифрами) без лидирующего нуля;
- дд (dd) — день месяца (цифрами) с лидирующим нулем;
- МММ (MMM) — краткое название месяца;
- ММММ (MMMM) — полное название месяца;
- г (y) — номер года без века и лидирующего нуля;
- гг (yy) — номер года без века с лидирующим нулем;
- гггг (yyyy) — номер года с веком
- И др.
При этом все другие символы, используемые при написании значения будут использованы как есть. То есть их можно применять как разделители и комментарии (исключение – символы, применяемые в синтаксисе, их нужно брать в одинарные кавычки), например:
- «»дд/МММ/гггг»» отобразится как 01/01/2020
- «»дд ММММ гггг ‘г.’»» отобразится как 01 января 20 г.
В итоге мы оформили команду следующим образом:

Вы можете использовать собственные правила форматирования и внести изменения в наш вариант. Функция Формат отформатирует дату рождения в строку и присвоит реквизиту ОтформатированнаяДата.
Зайдите в 1С в пользовательском режиме и загрузите обработку, чтобы протестировать.

Примитивные данные типа Дата могут участвовать в различных вычислениях.
Например, необходимо получить количество дней, оставшихся до Нового года.
Для иллюстрации этого примера создадим реквизит ОсталосьДоНовогоГода типа Строка и допишем в процедуре обработчике ДатаРожденияПриИзменении(Элемент)
Код, который заполнит этот реквизит остатком дней до нового года:


В заключение хотим сказать, что представленные механизмы могут рассчитывать, например, возраст сотрудников, день их рождения, который можно связать с их поздравлением, рабочий стаж и т.д. В качестве самостоятельного задания вы можете попытаться реализовать одну из этих задач.
Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Описание типов
Тип edo:DigestType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Data | Data | [1] | Данные дайджеста в base64 |
Data
- Базовый тип: base64Binary
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| algorithmVersion | FormatVersionType | [0-1] | Версия алгоритма формирования дайджеста |
Тип edo:DocumentType (1C-Bank_Packet.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор электронного документа. Совпадает с идентификатором электронного документа, помещенного в Data. |
| dockind | DocKindType | [1] | Код вида электронного документа, как он задан в описании к стандарту |
| formatVersion | FormatVersionType | [1] | Версия формата |
| testOnly | boolean | [0-1] | Тестовый документ |
| compressed | boolean | [0-1] | Документ сжат |
| encrypted | boolean | [0-1] | Документ зашифрован |
| signResponse | boolean | [0-1] | Требуется ответная подпись |
| notifyRequired | boolean | [0-1] | Требуется извещение о получении |
| extID | IDType | [0-1] | ID исходного документа, если такой был |
| Data | Data | [1] | Данные электронного документа |
| Signature | Signature | [0-n] | Данные электронных подписей |
Data
- Базовый тип: base64Binary
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| fileName | string | [0-1] | Имя файла |
| contentType | ContentType | [0-1] | Тип контента передаваемого файла |
Тип edo:ErrorType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Code | string (4) | [1] | Код ошибки, как он задан в описании к стандарту (см. таблицу) |
| Description | string (до 255) | [1] | Описание ошибки, как оно задано в описании к стандарту (см. таблицу) |
| MoreInfo | string | [0-1] | Подробное пояснение к ошибке для пользователя |
Тип edo: GenSMSSign (1C-Bank_GenSMSSign.xsd)
ID исходного документа, который требуется подтвердить (может быть несколько)
Дата и время формирования
Наименование и версия программы
Тип edo: GenSMSSignResponseType (1C-Bank_ResultBank.xsd)
URL ссылки, по которой нужно перейти для подтверждения SMS-кодом
ID исходного запроса GenSMSSign
Тип edo: SigningURLType (1C-Bank_Exch-Common.xsd)
Ссылка URL в виде строки
Тип edo:GetPacketListResponseType (1C-Bank_ResultBank.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| TimeStampLastPacket | dateTime | [0-1] | Метка времени, на которую вернули всю актуальную информацию. Значение не должно содержать информацию о часовом поясе. |
| PacketID | IDType | [0-n] | Идентификатор транспортного контейнера (GUID), по которому его можно получить клиенту |
Тип edo:GetSettingsResponseType (1C-Bank_ResultBank.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор настроек |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Data | Data | [1] | Настройки обмена с банком |
Data
- Базовый тип: base64Binary
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| dockind | DocKindType | [1] | Код вида электронного документа, как он задан в описании к стандарту |
Тип edo:LetterType (1C-Bank_Letter.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Id | IDType | [1] | Уникальный идентификатор документа |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | ParticipantType | [1] | Отправитель письма |
| Recipient | ParticipantType | [1] | Получатель письма |
| Data | Data | [1] | Данные письма |
Data
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| linkedID | IDType | [0-1] | Идентификатор письма, в ответ на которое сформировано текущее письмо |
| correspondenceID | IDType | [0-1] | Идентификатор переписки. Данный идентификатор совпадает у всех писем в рамках одной переписки. |
| DocNum | string | [1] | Номер документа. |
| DocDate | date | [1] | Дата документа. |
| LetterTypeCode | string | [0-1] | Код типа письма. Перечень кодов приходят в файле настроек из банка |
| Theme | string | [0-1] | Тема письма |
| Text | string | [0-1] | Текст письма |
| Attachment | Attachment | [0-n] | Присоединенные файлы |
| LinkedDoc | LinkedDoc | [0-1] | Документ, который является предметом обсуждения текущей переписки |
Attachment
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| BinaryFile | BinaryFile | [1] | Данные присоединенного файла |
| Signature | SignatureType | [0-n] | Данные электронной подписи |
BinaryFile
- Базовый тип: base64Binary
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Уникальный идентификатор вложения |
| name | string | [1] | Имя файла с расширением |
| extension | string | [1] | Расширение файла |
| size | integer | [1] | Размер файла в байтах |
| crc | integer | [1] | Контрольная сумма файла (алгоритм CRC32) |
| creationDate | dateTime | [1] | Дата создания файла |
LinkedDoc
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Уникальный идентификатор документа |
| dockind | dockind | [1] | Код вида электронного документа |
Тип edo:LogonCertResponseType (1C-Bank_ResultBank.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| EncryptedSID | base64Binary | [1] | Зашифрованный Идентификатор сессии |
Тип edo:LogonResponseType (1C-Bank_ResultBank.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| SID | IDType | [1] | Идентификатор сессии (не должен содержать национальных символов) |
| ExtraAuth | ExtraAuth | [0-1] | Дополнительная аутентификация. Указывается, если требуется доп. аутентификация) |
ExtraAuth
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| OTP | OTP | выбор [1] |
Параметры доп.аутентификации, которые будут направлены клиенту |
OTP
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| phoneMask | string (12) | [0-1] | Маска телефона или номер клиента |
| code | string (10) | [0-1] | Короткий код сессии, который будет показан при вводе OTP |
Тип edo:BankOrderApp (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| DocNo | string | [1] | Номер документа (поле 3) |
| DocDate | date | [1] | Дата составления (поле 4) |
| Sum | SumType | [1] | Сумма документа (поле 9) |
| Payer | CustomerDetailsType | [1] | Плательщик (поля 8, 9, 10, 11, 12, 60, 102). |
| Payee | CustomerDetailsType | [1] | Получатель (поля 13, 14, 15, 16, 17, 61, 103). |
| PaymentKind | string (15) | [0-1] | Вид платежа (поле 5). Указывается «срочно», «телеграфом», «почтой», иное значение в порядке, установленном банком. |
| TransitionKind | string (2) | [0-1] | Вид операции (поле 18). Указывается условное цифровое обозначение документа, согласно установленного ЦБР перечня условных обозначений (шифров) документов, проводимых по счетам в кредитных организациях. |
| Priority | string (1) | [0-1] | Очередность платежа (поле 21). |
| Code | string (25) | [0-1] | Уникальный идентификатор платежа (поле 22). С 31 марта 2014 года согласно Указанию N 3025-У ЦБР. |
| Purpose | string (210) | [1] | Назначение платежа (поле 24). |
Тип edo:MemOrderApp (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| DocNo | string | [1] | Номер документа (поле 3) |
| DocDate | date | [1] | Дата составления (поле 4) |
| SpareField5 | string | [0-1] | Свободное поле (поле 5) |
| Author | BankType | [0-1] | Составитель (поле 6) |
| AccountNameDebit | string | [0-1] | Наименование счета по дебету (поле 7) |
| AccountDebit | string | [0-1] | Счет по дебету (поле 8) |
| Sum | SumType | [1] | Сумма документа (поле 9) |
| SpareField9a | string | [0-1] | Свободное поле (поле 9a) |
| AccountNameCredit | string | [0-1] | Наименование счета по кредиту (поле 10) |
| AccountCredit | string | [0-1] | Счет по кредиту (поле 11) |
| PartialTransitionKind | string (2) | [0-1] | Шифр документа (поле 13) |
| SpareField14 | string | [0-1] | Свободное поле (поле 14) |
| SpareField15 | string | [0-1] | Свободное поле (поле 15) |
| TransitionContent | string | [0-1] | Содержание операции (поле 16) |
| SpareField20 | string | [0-1] | Свободное поле (поле 20) |
Тип edo:OtherCustomerDetailsType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Name | string | [1] | Наименование плательщика |
| INN | string | [0-1] | Идентификационный номера плательщика (ИНН) |
| KPP | string (от 1 до 9) | [0-1] | Для платежей в бюджет — указывать обязательно |
| Account | AccNumType | [0-1] | Расчетный счет клиента в его банке, независимо от того, прямые расчеты у этого банка или нет |
| Bank | BankType | [0-1] | Реквизиты банка |
Тип edo:OtherPaymentDataType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| DocNo | string | [0-1] | Номер документа |
| DocDate | date | [0-1] | Дата составления |
| Sum | SumType | [1] | Сумма документа |
| Payer | OtherCustomerDetailsType | [0-1] | Плательщик |
| Payee | OtherCustomerDetailsType | [0-1] | Получатель |
| TransitionKind | string (2) | [0-1] | Вид операции |
| Code | string (до 25) | [0-1] | Уникальный идентификатор платежа |
| Purpose | string | [0-1] | Назначение |
Тип edo:Packet (1C-Bank_Packet.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор транспортного контейнера |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | ParticipantType | [1] | Отправитель |
| Recipient | ParticipantType | [1] | Получатель |
| Document | DocumentType | [1-n] | Электронный документ |
| SenderFootprint | SenderFootprint | [0-1] | Сетевые адреса клиента |
SenderFootprint:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| IP | string (до 39) | [0-n] | IP адрес клиента на сервере 1С:Предприятие |
| MAC | string (до 17) | [0-n] | MAC адрес сетевого оборудования клиента |
Тип edo:ParticipantType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Customer | CustomerPartyType | выбор [1] |
Клиент |
| Bank | BankPartyType | выбор [1] |
Банк |
Тип edo:PayDocRu (1C-Bank_PayDocRu.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор платежа |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | CustomerPartyType | [1] | Отправитель |
| Recipient | BankPartyType | [1] | Получатель |
| Data | PayDocRuApp | [1] | Данные платежного поручения |
| Digest | DigestType | [0-1] | Дайджест электронного документа |
Тип edo:PayDocRuApp (1C-Bank_Exch-Common.xsd)
- Базовый тип: PaymentDataType
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| BudgetPaymentInfo | BudgetPaymentInfoType | [0-1] | Реквизиты бюджетного документа. См. правила заполнения платежных поручений, утвержденные приказом Минфина России. |
Тип edo:PaymentDataType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| DocNo | string | [1] | Номер документа (поле 3). |
| DocDate | date | [1] | Дата составления (поле 4). |
| Sum | SumType | [1] | Сумма документа (поле 7). |
| Payer | CustomerDetailsType | [1] | Плательщик (поля 8, 9, 10, 11, 12, 60, 102). |
| Payee | CustomerDetailsType | [1] | Получатель (поля 13, 14, 15, 16, 17, 61, 103). |
| PaymentKind | string (15) | [0-1] | Вид платежа (поле 5). Указывается «срочно», «телеграфом», «почтой», иное значение в порядке, установленном банком. |
| TransitionKind | string (2) | [0-1] | Вид операции (поле 18). Указывается условное цифровое обозначение документа, согласно установленного ЦБР перечня условных обозначений (шифров) документов, проводимых по счетам в кредитных организациях. |
| Priority | string (1) | [0-1] | Очередность платежа (поле 21). |
| Code | string (25) | [0-1] | Уникальный идентификатор платежа (поле 22). С 31 марта 2014 года согласно Указанию N 3025-У ЦБР. |
| IncomeTypeCode | string (1) | [0-1] | Код вида дохода (поле 20). Согласно Указанию N 5286-У ЦБРФ. |
| Purpose | string (210) | [1] | Назначение платежа (поле 24). |
Тип edo:PaymentOrderApp (1C-Bank_Exch-Common.xsd)
- Базовый тип: PaymentDataType
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| TransitionContent | string (до 16) | [0-1] | Содержание операции (поле 70) |
| PartialPaymentNo | string (до 3) | [0-1] | Номер частичного платежа (поле 38) |
| PartialTransitionKind | string (2) | [0-1] | Шифр платежного документа (поле 39) |
| SumResidualPayment | SumType | [0-1] | Сумма остатка платежа (поле 42) |
| PartialDocNo | string (до 6) | [0-1] | Номер платежного документа (поле 40) |
| PartialDocDate | DateString | [0-1] | Дата платежного документа (поле 41) |
| BudgetPaymentInfo | BudgetPaymentInfoType | [0-1] | Реквизиты бюджетного документа. См. правила заполнения платежных поручений, утвержденные приказом Минфина России |
Тип edo:PayRequest (1C-Bank_PayRequest.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор требования |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | CustomerPartyType | [1] | Отправитель |
| Recipient | BankPartyType | [1] | Получатель |
| Data | PayRequestApp | [1] | Данные платежного требования |
| Digest | DigestType | [0-1] | Дайджест электронного документа |
Тип edo:PayRequestApp (1C-Bank_Exch-Common.xsd)
- Базовый тип: PaymentDataType
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| PaymentCondition | string (1) | [1] | Условие оплаты (поле 35): 1 — заранее данный акцепт плательщика; 2 — требуется получение акцепта плательщика |
| AcceptTerm | byte | [0-1] | Срок для акцепта (поле 36): количество дней. |
| DocDispatchDate | DateString | [0-1] | Дата отсылки (вручения) плательщику предусмотренных договором документов (поле 37). |
Тип edo:Probe (1C-Bank_Probe.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор запроса |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | CustomerPartyType | [1] | Отправитель |
| Recipient | BankPartyType | [1] | Получатель |
| Digest | DigestType | [0-1] | Дайджест электронного документа |
Тип edo:ResultBank (1C-Bank_ResultBank.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Success | SuccessResultType | выбор [1] |
Успешный ответ банка |
| Error | ErrorType | выбор [1] |
Ответ банка в случае возникновения ошибки |
Тип edo:ResultStatusType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Error | ErrorType | [0-1] | Ответ в случае возникновения ошибки |
| Status | StatusType | [0-1] | Успешный ответ |
Тип edo:SendPacketResponseType (1C-Bank_ResultBank.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| ID | IDType | [1] | идентификатор транспортного контейнера (GUID), который был ему назначен на стороне банка |
Тип edo:Settings (1C-Bank_Settings.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор набора данных |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | BankPartyType | [1] | Отправитель |
| Recipient | CustomerPartyType | [1] | Получатель. Атрибуты inn и kpp (при наличии) обязательны к заполнению |
| Data | Data | [1] | Параметры обмена |
Data:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| CustomerID | IDCustomerType | [1] | Уникальный идентификатор клиента в банке |
| BankServerAddress | string (от 1) | [1] | Адрес ресурса банка |
| FormatVersion | FormatVersionType | [1] | Актуальная версия формата обмена данными |
| Encoding | string | [1] | Кодировка файлов обмена. По умолчанию: «UTF-8» |
| Compress | boolean | [0-1] | Признак сжатия электронных документов при обмене. По умолчанию: false |
| Logon | Logon | [1] | Способ аутентификации на ресурсе банка |
| CryptoParameters | CryptoParameters | [0-1] | Настройки криптографии |
| Document | Document | [1-n] | Настройки по видам электронных документов, которыми возможен обмен с банком |
| ReceiptStatement | ReceiptStatement | [0-1] | Параметры получения выписки в автоматическом режиме |
| Letters | Letters | [0-1] | Параметры обмена письмами |
Logon:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Login | Login | выбор [1] |
По логину и паролю |
| Certificate | Certificate | выбор [1] |
По сертификату электронной подписи |
Login:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| User | string (до 50) | [1] | Логин пользователя |
Certificate:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| EncryptingAlgorithm | string (до 50) | [1] | Алгоритм шифрования, например, GOST 28147-89 |
CryptoParameters:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| CSPName | string (до 256) | [1] | Имя CSP (cryptographic service provider) |
| CSPType | int | [1] | Тип CSP (cryptographic service provider) |
| SignAlgorithm | string (до 50) | [1] | Алгоритм подписи, например, GOST R 34.10-2001 |
| HashAlgorithm | string (до 50) | [1] | Алгоритм хэширования, например, GOST R 34.11-94 |
| Encrypted | Encrypted | [0-1] | Применение шифрования данных на прикладном уровне |
| BankTrustedRootCertificate | base64Binary | [0-1] | Доверенный корневой сертификат УЦ банка |
| BankCertificate | base64Binary | [0-1] | Сертификат электронной подписи банка |
| CustomerSignature | CustomerSignature | [1] | Карточка электронных подписей клиента |
| URLAddinInfo | string | [0-1] | Адрес-ссылка, откуда будет загружаться файл описания внешн.модуля, если он используется в обмене |
Encrypted:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| EncryptAlgorithm | string (до 50) | [1] | Алгоритм шифрования, например, GOST 28147-89 |
CustomerSignature:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| numberGroup | integer | [1] | Номер группы электронных подписей |
| GroupSignatures | GroupSignatures | [1-n] | Группа электронных подписей |
GroupSignatures:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Certificate | base64Binary | [1-9] | Алгоритм шифрования, например, GOST 28147-89 |
Document:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| docKind | DocKindType | [1] | Код вида электронного документа, как он задан в описании к стандарту |
| Signed | Signed | [0-1] | Применение электронной подписи для данного вида электронного документа |
Signed:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| RuleSignatures | string | [1] | Правило, задающее наличие электронных подписей для данного вида электронного документа. Сложные правила подписания применяются только для платежных поручений и требований. Все запросы подписываются одной подписью. Правила формируются следующим образом: 1) при описании правила используется цифровой шифр; 2) шифр содержит столько символов, сколько групп подписантов (GroupSignatures) обозначено в настройках; 3) каждая цифра в шифре означает количество подписантов из группы N, где N — номер места цифры в шифре. Значение не может превышать 1. 4) каждый шифр заключает в скобки «()» (без кавычек); 5) для вида документа можно указать несколько правил, каждое из них описывается отдельно между собой правила отделяются символами «||» (без кавычек). Примеры: а) Шифр «(110)» означает, что для этого вида документа требуется «подпись из 1-й группы подписантов», «подпись из 2-й группы подписантов» и «не требуется подпись подписантов из 3-ей группы». б) Шифр «(110)||(111)» означает, что для этого вида документа может быть использовано любое из 2-х правил: см. п. (а) или требуется «подпись из 1-й группы подписантов», «подпись из 2-й группы подписантов», «подпись из 3-й группы подписантов». |
ReceiptStatement:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Login | string (до 50) | [1] | Логин, по которому можно получать только выписку банка |
| Instructions | string | [1] | Инструкция по получению пароля для вышеуказанного логина |
Letters:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| AttachmentsLimit | decimal | [1] | Максимальный объем прикрепленных к письму файлов в байтах |
| LetterType | LetterType | [1-n] | Типы писем, которые принимает банк |
LetterType:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Code | string | [1] | Код типа письма |
| Name | string | [1] | Представление типа письма для отображения пользователю |
Тип edo:SignatureType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| x509IssuerName | string | [1] | Имя издателя сертификата открытого ключа ЭП (значение атрибута «CN») |
| x509SerialNumber | hexBinary | [1] | Серийный номер сертификата открытого ключа ЭП |
| SignedData | base64Binary | [1] | Электронная подпись |
Тип edo:Statement (1C-Bank_Statement.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор выписки |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | BankPartyType | [1] | Отправитель |
| Recipient | CustomerPartyType | [1] | Получатель |
| Data | Data | [1] | Данные выписки по лиц. счету |
| ExtIDStatementRequest | IDType | [0-1] | ID исходного запроса на выписку, если такой был |
Data:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| StatementType | StatementKindType | [1] | Тип выписки |
| DateFrom | dateTime | [0-1] | Начало периода выписки |
| DateTo | dateTime | [1] | Конец периода выписки |
| Account | AccNumType | [1] | Номер лиц. счета |
| Bank | BankType | [1] | Банк, в котором открыт счет |
| OpeningBalance | SumType | [0-1] | Остаток на счете на начало периода |
| TotalDebits | SumType | [0-1] | Общая сумма документов по дебету счета (списание). Обязательно заполняется при наличии расходных операций за период выписки. |
| TotalCredits | SumType | [0-1] | Общая сумма документов по кредиту счета (поступление). Обязательно заполняется при наличии приходных операций за период выписки. |
| ClosingBalance | SumType | [1] | Остаток на счете на конец периода |
| OperationInfo | OperationInfo | [0-n] | Информация об одной операции по лицевому счету в выписке |
| Stamp | Stamp | [0-1] | Данные штампа банка по выписке в целом |
OperationInfo:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| PayDoc | PayDoc | [1] | Данные платежного документа |
| DC | string (1) | [1] | Признак дебета/кредита: 1 — Операция по дебету (списание со счета), 2 — Операция по кредиту (поступление на счет) |
| Date | date | [1] | Дата проводки документа по лиц. счету |
| ExtID | IDType | [0-1] | ID исходного платежного документа плательщика. Обязателен для заполнения для исходящих платежей. |
| Stamp | OperationInfo_Stamp | [0-1] | Данные штампа банка по каждому платежному документу |
Stamp:
- Базовый тип: BankType
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Branch | string (до 255) | [0-1] | Отделение банка |
PayDoc:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | ID платежного документа в банке |
| docKind | DocKindType | [1] | Код вида электронного документа, как он задан в описании к стандарту |
| PayDocRu | PayDocRuApp | выбор [1] |
Данные платежного поручения |
| PayRequest | PayRequestApp | выбор [1] |
Данные платежного требования |
| CollectionOrder | CollectionOrderApp | выбор [1] |
Данные инкассового поручения |
| PaymentOrder | PaymentOrderApp | выбор [1] |
Данные платежного ордера |
| BankOrder | BankOrderApp | выбор [1] |
Данные банковского ордера |
| MemOrder | MemOrderApp | выбор [1] |
Данные мемориального ордера |
| InnerDoc | OtherPaymentDataType | выбор [1] |
Данные внутр.банковского документа |
| CashContribution | CashContributionType | выбор [1] |
Данные объявления на взнос наличными |
| Check | CheckType | выбор [1] |
Данные денежного чека |
InnerDoc:
- Базовый тип: OtherPaymentDataType
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| InnerDocKind | string (255) | [1] | Название типа внутр.банковского документа |
OperationInfo_Stamp:
- Базовый тип: BankType
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Branch | string (до 255) | [0-1] | Отделение банка |
| Status | StatusType | [1] | Статус платежного документа в банке |
Тип edo:StatementRequest (1C-Bank_StatementRequest.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор запроса |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | CustomerPartyType | [1] | Отправитель |
| Recipient | BankPartyType | [1] | Получатель |
| Data | Data | [1] | Данные запроса |
| Digest | DigestType | [0-1] | Дайджест электронного документа |
Data:
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| StatementType | StatementKindType | [1] | Тип выписки |
| DateFrom | dateTime | [1] | Начало периода формирования выписки |
| DateTo | dateTime | [1] | Конец периода формирования выписки |
| Account | AccNumType | [1] | Номер счета, по которому производится запрос |
| Bank | BankType | [1] | Банк, в котором открыт счет |
Тип edo:StatusPacketNotice (1C-Bank_StatusPacketNotice.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор извещения |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | ParticipantType | [1] | Отправитель |
| Recipient | ParticipantType | [1] | Получатель |
| IDResultSuccessResponse | IDType | [1] | ID, который сервис вернул в ответ после получения транспортного контейнера |
| Result | ResultStatusType | [1] | Состояние электронного документа |
| ExtIDPacket | IDType | [0-1] | ID исходного транспортного контейнера, по которому возвращается состояния |
Тип edo:StatusDocNotice (1C-Bank_StatusDocNotice.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор извещения |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | ParticipantType | [1] | Отправитель |
| Recipient | ParticipantType | [1] | Получатель |
| ExtID | IDType | [1] | ID исходного электронного документа, по которому возвращается состояния |
| Result | ResultStatusType | [1] | Состояние электронного документа |
| ExtIDStatusRequest | IDType | [0-1] | ID запроса о состоянии электронного документа, если был такой |
Тип edo:StatusType (1C-Bank_Exch-Common.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| Code | string (2) | [1] | Код статуса, как он задан в описании к стандарту (см. таблицу) |
| Name | string (до 25) | [0-1] | Наименование статуса на стороне банка |
| MoreInfo | string | [0-1] | Дополнительная информация к статусу |
Тип edo:StatusRequest (1C-Bank_StatusRequest.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| id | IDType | [1] | Идентификатор запроса |
| formatVersion | FormatVersionType | [1] | Версия формата |
| creationDate | dateTime | [1] | Дата и время формирования |
| userAgent | UserAgentType | [0-1] | Наименование и версия программы |
| Sender | CustomerPartyType | [1] | Отправитель |
| Recipient | BankPartyType | [1] | Получатель |
| ExtID | IDType | [1] | ID исходного электронного документа, статус которого требуется получить |
(1C-Bank_ResultBank.xsd)
| Параметр | Тип | Кратность | Описание |
|---|---|---|---|
| SendPacketResponse | SendPacketResponseType | выбор [1] |
Отправка транспортного контейнера в банк |
| GetPacketListResponse | GetPacketListResponseType | выбор [1] |
Список ID транспортных контейнеров, готовых к передачи клиенту |
| GetPacketResponse | Packet | выбор [1] |
Транспортный контейнер с данными электронных документов для получения клиентом |
| LogonResponse | LogonResponseType | выбор [1] |
Аутентификация по логину + ОТР (опционально) |
| LogonCertResponse | LogonCertResponseType | выбор [1] |
Аутентификация по сертификату |
| GetSettingsResponse | GetSettingsResponseType | выбор [1] |
Получение настроек обмена в автоматическом режиме |
| GenSMSSignResponse | GenSMSSignResponseType | выбор [1] |
Ответ на запрос подписания по SMS |
Типы W3C Простые типы edo Комплексные типы edo Тип edo:BankPartyType (1C-Bank_Exch-Common.xsd) Тип edo:BankType (1C-Bank_Exch-Common.xsd) Тип edo:CashContributionType (1C-Bank_Exch-Common.xsd) Тип edo:CheckType (1C-Bank_Exch-Common.xsd) Тип edo:BudgetPaymentInfoType (1C-Bank_Exch-Common.xsd) Тип edo:CancelationRequest (1C-Bank_CancelationRequest.xsd) Тип edo:CollectionOrderApp (1C-Bank_Exch-Common.xsd) Тип edo:CustomerDetailsType (1C-Bank_Exch-Common.xsd) Тип edo:CustomerPartyType (1C-Bank_Exch-Common.xsd) Тип edo:DigestType (1C-Bank_Exch-Common.xsd) Тип edo:DocumentType (1C-Bank_Packet.xsd) Тип edo:ErrorType (1C-Bank_Exch-Common.xsd) Тип edo: GenSMSSign (1C-Bank_GenSMSSign.xsd) Тип edo: GenSMSSignResponseType (1C-Bank_ResultBank.xsd) Тип edo: SigningURLType (1C-Bank_Exch-Common.xsd) Тип edo:GetPacketListResponseType (1C-Bank_ResultBank.xsd) Тип edo:GetSettingsResponseType (1C-Bank_ResultBank.xsd) Тип edo:LetterType (1C-Bank_Letter.xsd) Тип edo:LogonCertResponseType (1C-Bank_ResultBank.xsd) Тип edo:LogonResponseType (1C-Bank_ResultBank.xsd) Тип edo:BankOrderApp (1C-Bank_Exch-Common.xsd) Тип edo:MemOrderApp (1C-Bank_Exch-Common.xsd) Тип edo:OtherCustomerDetailsType (1C-Bank_Exch-Common.xsd) Тип edo:OtherPaymentDataType (1C-Bank_Exch-Common.xsd) Тип edo:Packet (1C-Bank_Packet.xsd) Тип edo:ParticipantType (1C-Bank_Exch-Common.xsd) Тип edo:PayDocRu (1C-Bank_PayDocRu.xsd) Тип edo:PayDocRuApp (1C-Bank_Exch-Common.xsd) Тип edo:PaymentDataType (1C-Bank_Exch-Common.xsd) Тип edo:PaymentOrderApp (1C-Bank_Exch-Common.xsd) Тип edo:PayRequest (1C-Bank_PayRequest.xsd) Тип edo:PayRequestApp (1C-Bank_Exch-Common.xsd) Тип edo:Probe (1C-Bank_Probe.xsd) Тип edo:ResultBank (1C-Bank_ResultBank.xsd) Тип edo:ResultStatusType (1C-Bank_Exch-Common.xsd) Тип edo:SendPacketResponseType (1C-Bank_ResultBank.xsd) Тип edo:Settings (1C-Bank_Settings.xsd) Тип edo:SignatureType (1C-Bank_Exch-Common.xsd) Тип edo:Statement (1C-Bank_Statement.xsd) Тип edo:StatementRequest (1C-Bank_StatementRequest.xsd) Тип edo:StatusPacketNotice (1C-Bank_StatusPacketNotice.xsd) Тип edo:StatusDocNotice (1C-Bank_StatusDocNotice.xsd) Тип edo:StatusType (1C-Bank_Exch-Common.xsd) Тип edo:StatusRequest (1C-Bank_StatusRequest.xsd) (1C-Bank_ResultBank.xsd)
- Прикладной уровень взаимодействия
- API взаимодействия с банком
- Схемы данных
- Классификаторы
- Описание типов
Проверка на «пустое» значение 1С
1. Значение «Неопределено» и значение типа “NULL” 2. Вариации проверок на пустое значение Приветствую, коллеги! В данной статье поговорим о том, как сделать проверку на «пустое» значение в 1С. Ведь бывает, что программисту, когда он описывает алгоритм по обработке, нужно узнать есть ли что-то в переменной или эта переменная «пустая». Далее будет приведена классификация «пустых» значений и функции для проверки их наличия или отсутствия.
1. Значение «Неопределено» и значение типа “NULL”
Если разбираться по-научному, то в системе 1С не существует понятия «пустое» значение. Правильнее называть его значением «Неопределено» (переменная такого типа). Вышеупомянутый тип используют в качестве значения переменных (реквизитов, столбцов таблиц и так далее), у которых, согласно стандартным настройкам, тип является составным. То есть когда в одной переменной содержится какое-то количество типов значений, то данная переменная будет иметь тип «Неопределено». То есть, данной переменной можно присваивать вышеуказанное значение, как то, которое обозначает не принадлежность значения любому иному доступному типу. Данный тип остаётся, пока внутри переменной значение не переменится. Из всех утверждений выше следует, что тип «Неопределено» предупреждает о том, что в переменной отсутствует значение любого из определённых типов, простым слогом – оно «пустое».
Следует рассмотреть ещё значение типа «NULL» – его наличие означает, что значение отсутствует.
Подытожим: два данных значения – это специальные типы, предназначены для особых случаев.
В большем количестве типов есть стандартные значения, которые были установлены в системе по умолчанию, по сути это то значение, которое автоматически присваивается переменной даже в случае, когда её не заполнили. Как пример: для чисел – это будет значение «0», для даты – дата «00010101», для строк – строка без символов.
Замечание: для типа «ссылка» есть значение пустой ссылки.
2. Вариации проверок на пустое значение
Универсальный метод проверки применим в случаях, когда тип переменной известен или не известен.
В случае, когда разработчик знает тип переменной, которая подлежит проверке, проводится сравнение значения переменной с пустым значением для заданного типа. Чтобы узнать пустое значение у типа, используется функция «ПолучитьПустоеЗначение()». На скриншоте ниже приведён пример проверки с известным типом переменной:
Рис. 1 Проверка на пустое значение с известным типом переменной
Если разработчику не известен тип переменной, но проверить на пустое значение нужно, используется функция «ПустоеЗначение()», как показано на скриншоте ниже:
Рис. 2 Проверка на пустое значение с неизвестным типом переменной
Функция «ЗначениеЗаполнено()» используется для проверки содержания значения, которое ей передали. Это можно увидеть по общей форме функции:
Рис. 3 Функция ЗначениеЗаполнено
Для типа «ссылка» проверка немного отличается от тех, которые были описаны выше. Чтобы узнать содержится ли в ссылке «пустое» значение нужно воспользоваться методом «ПустаяСсылка()». Работает он аналогично функции «ЗначениеЗаполнено()», только для ссылок.
В данной статье было рассмотрены общие понятия «пустое» значение в 1С и то, каким типам оно соответствует. Также были приведены 4 разных способа проверки на «пустое» значение, из которых можно легко избрать самый сподручный для конкретного типа и конкретного кода программы.
Специалист компании «Кодерлайн» Айдар Фархутдинов
Вас могут заинтересовать следующие статьи:
94 [PROP_CODE] => TAGS2 [TITLE] => Вас могут заинтересовать следующие семинары: ) —> 95 [PROP_CODE] => TAGS [TITLE] => Вас могут заинтересовать следующие вебинары: ) —> Как сделать в 1С [1] => 1С: Конвертация данных [2] => Конвертация данных [3] => Обмен между базами [4] => Закрытие месяца [5] => Оценка задач [6] => Отчеты в 1С [7] => Моделирование [8] => HTTP [9] => Управление проектами [10] => БУ [11] => com-объекты [12] => 1С: WMS Управление складом [13] => РСБУ [14] => 1С: Сценарное тестирование [15] => Запросы 1С [16] => LINUX [17] => WEB [18] => Оптимизация [19] => 1С:Зарплата и Управление Персоналом [20] => Excel [21] => 1С: ERP [22] => ADO [23] => 1С:Управление производственным предприятием [24] => Внедрение [25] => Продажи [26] => Отчетность [27] => 1С: Розница [28] => 1С: CRM [29] => 1С:Бухгалтерия [30] => 1С:Комплексная автоматизация [31] => Производство [32] => Интеграция 1С [33] => Налоги [34] => Отпуск [35] => MS SQL Server [36] => Расширение конфигурации [37] => МСФО [38] => СКД [39] => Word [40] => WEB-сервисы 1С [41] => Внедрение ERP [42] => Перенос данных [43] => Торговое оборудование [44] => Лизинг [45] => 1С:Управление нашей фирмой [46] => Администрирование 1С [47] => 1С: Колледж [48] => Правила обмена [49] => 1С: Платформа ) —>
Примитивные типы данных и некоторые их функции (бесплатная статья по программированию в 1С)
из цикла статей «Первые шаги в разработке на 1С»
Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». В ней пойдет речь о примитивных типах данных и наиболее распространенных функциях при работе с ними. Прочитав материал, вы узнаете:
- Какие типы данных являются примитивными?
- Как можно работать со строками и какие особенности следует учесть?
- Какие тонкости работы есть с числовыми выражениями?
- Как описать дату конкретным значением? Как задать пустую дату?
- Как работает преобразование типов?
- Null и Неопределенно – что это и в чем отличия?
- Как определить, какой тип у объекта/переменной?
Применимость
Статья написана для платформы 1С версии 8.3.4.496, поэтому информация актуальна и для текущей версии платформы. Однако следует заметить, что в версии 8.3.6.1977 были добавлены новые функции работы со строками. Поэтому, когда будете повторять действия из статьи, не удивляйтесь, если в соответствующем разделе Синтакс-помощника вы увидите какие-то функции, которые не показаны у нас на скриншоте. Также рекомендуем ознакомиться с новым методом СтрокаСЧислом(), добавленным в платформе 8.3.10.
Примитивные типы данных и некоторые их функции
Выделяют следующие примитивные типы даннных:
- Строковые константы
- Числовые выражения
- Булевские значения
- Литералы типа Дата
- Преобразования примитивных типов данных
- Значения типа NULL и Неопределено
- Тип данных Тип
Строковые константы
Примитивный тип данных Строка (строковая константа) состоит из различных символов. Строка всегда обрамляется кавычками. Пример строковой константы:
Сообщение.Текст = “Присутствуют незаполненные данные”;
Т.е. строка “Присутствуют незаполненные данные” присваивается реквизиту Текст объекта Сообщение. Все, что обрамлено в кавычки, считается строкой.
Строка может состоять из любых символов. Строки могут быть многострочными. При этом каждую новую строку необходимо определять в кавычки. Например:
Текст = “Неверно заполнен реквизит”
“Проведение документа невозможно”;
Точка с запятой ставится только в конце последней строки.
Существует еще один способ – весь текст обрамлять только в одни кавычки, но каждая новая строка должна начинаться с вертикальной полосы.
Такой синтаксис наиболее часто используется в типовых конфигурациях. В частности, в языке запросов. Например:
Запрос.Текст =
“ВЫБРАТЬ
| Сотрудники.Наименование КАК Сотрудник,
| Сотрудники.ДатаРождения КАК ДатаРождения
|ИЗ
| Справочник.Сотрудники КАК Сотрудники
|ГДЕ
| НЕ Сотрудники.ЭтоГруппа”;
Следует отметить, что для строк определена операция сложения. Это не арифметическая операция, ее называют операцией конкатенации.
Т.е. нужно объединить, например, две строки, при этом между строками ставится знак сложения «+»:
Текст = “Неверно заполнен реквизит” + “Проведение документа невозможно”;
Таким образом, происходит склеивание строк. Операция конкатенации, естественно, применима и для большего количества строк. Другие операции (вычитание, умножение, деление) для строк не допустимы.
Если внутри строки какое-то слово нужно обрамлять в кавычки, то кавычку внутри строки нужно определять двойной кавычкой. Например:
Текст = “Ошибка в модуле “”Общий модуль1”””;
В данном примере первая кавычка открывает строку. Рядом стоящие вторая и третья кавычки обозначают знак кавычки.
А в конце получается три кавычки: самая последняя кавычка закрывает строку, две предыдущие обозначают знак кавычки.
Над строками возможны различные операции преобразования строк, определение нескольких первых левых символов, определение нескольких крайних правых символов, поиск подстроки внутри строки и т.д.
Все эти функции доступны в любом месте конфигурации.
В синтакс-помощнике они находятся в разделе Общее описание встроенного языка – Встроенные функции – Функции работы со значениями типа Строка.
Функций достаточно большое количество и их обычно достаточно для работы со строковыми константами.

Разберем пример решения задачи с использованием строковых функций.
Требуется разработать функцию. В качестве параметра в функцию передается произвольная строка. Символами в строке могут быть в том числе и цифры.
Последовательность цифр (от одной и больше), ограниченная от других знаков пробелами, составляет целое положительное число.
Например, строка “72 АВС 6АП 31 54ф -22” содержит два целых положительных числа: 72 и 31. Кроме пробелов, другие незначащие символы (такие как табуляция, возврат каретки) не используются. Функция должна возвращать количество целых положительных чисел.
Она должна размещаться в модуле управляемого приложения. Необходимо обеспечить ее вызов при запуске системы. Строку определить с помощью переменной.
Итак, отроем модуль управляемого приложения и выберем в поле выбора из списка в панели конфигуратора Модуль стандартный обработчик ПриНачалеРаботыСистемы().

Внутри обработчика определим переменную Строка, например:
Строка = “72 АВС 6АП 31 54ф -22”;
Далее оформим вызов функции, которую предстоит разработать:
Оформим передачу сообщения о количестве целых чисел:
Сообщить(“Строка содержит ” + Количество + ” целых числа”);
При этом переменная Количество будет неявно преобразована к типу Строковая константа. Затем будет совершена операция конкатенации для трех строк и передано сообщение.
Определим начало и конец (т.е. шаблон) функции КоличествоЦелыхЧисел(Строка).

Теперь рассмотрим один из возможных вариантов разработки функции КоличествоЦелыхЧисел(Строка). При этом познакомимся с некоторыми встроенными функциями, предназначенными для работы со строками.
Прежде всего, следует познакомиться с функцией КодСимвола. Эта функция получает код символа, расположенного в переданной строке в позиции с указанным номером.
(необязательный) – это номер символа в строке, код которого необходимо получить. Нумерация символов в строке начинается с 1.
Возвращаемое значение:
Код переданного символа. Код возвращается в соответствии с кодировкой Unicode.
Обратите внимание, что у параметра есть значение по умолчанию 1.
Строка тоже может состоять из одного символа. Таким образом, есть возможность определить код 0 и код 9, а коды всех остальных цифр находятся, как известно, в интервале между ними.
Определим соответствующие переменные и их значения:
Код0 = КодСимвола(“0”);
Код9 = КодСимвола(“9”);
Для решения задачи выберем следующую схему:
- Если в строке присутствуют начальные или конечные пробелы в любом количестве, то избавимся от них специальной функцией. Далее нас будут интересовать группы символов между внутренними пробелами. Если группа состоит из одних цифр, то это целое число. Есть специальная функция, с помощью которой можно определить позицию первого пробела.
- Получив позицию первого пробела, с помощью другой функции можно получить группу символов (подстроку) слева от пробела.
- Проанализируем символы, составляющие группу и определим: является ли она целым числом. Выявленные целые числа будем суммировать в специальной переменной.
- Укоротим начальную строку, выбрав с помощью еще одной функции все символы теперь уже справа от пробела. Данный пробел мог быть не один, а целая серия пробелов, идущих подряд, поэтому в оставшейся строке специальной функцией избавимся от всех крайних левых пробелов (идущих подряд) и вернемся к пункту 2. Будем повторять действия от пункта 2 до пункта 4, пока не достигнем состояния, что в строке не останется пробелов. В этом случае укороченная строка будет составлять последнюю группу анализируемых символов.
Теперь разберем функции, которые нам понадобятся для решения задачи.
СокрЛП
Синтаксис: СокрЛП( )
Параметры: (обязательный).
Отсекает пробелы (незначащие символы), стоящие слева от первого значащего символа в строке, и стоящие справа от последнего значащего символа в строке.
Найти
Синтаксис: Найти( , )
Параметры: (обязательный), (обязательный).
Возвращает позицию первого знака найденной подстроки.
Нумерация символов в строке начинается с 1. Если строка не содержит указанной подстроки, то возвращается 0. В нашем случае в качестве подстроки будем использовать пробел (« »).
Лев
Синтаксис: Лев( , )
Параметры: (обязательный), (обязательный).
Выбирает первые слева символы строки. С помощью этой функции будем определять группы символов для анализа (слева до первого пробела).
СтрДлина
Синтаксис: СтрДлина( )
Параметры: (обязательный).
Получает количество символов в строке. Будем использовать для определения длины строки.
Функция КодСимвола, которую будем использовать для выявления групп символов, являющихся целыми числами, описана ранее.
Прав
Синтаксис: Прав( , )
Параметры: (обязательный), (обязательный).
Выбирает крайние справа символы строки. С помощью этой функции будем выделять еще необработанную часть строки.
СокрЛ
Синтаксис: СокрЛ( )
Параметры: (обязательный).
Отсекает пробелы (незначащие символы), стоящие слева от первого значащего символа в строке. Эту функцию используем для удаления возможных пробелов слева оставшейся части строки.
Ниже представлен возможный алгоритм функции с комментариями.

Числовые выражения
Числовыми могут быть переменные модулей и реквизиты объектов базы данных.
Для числа существует ограничение разрядности. Для числового реквизита длина целой части не может превышать 32 символов.
Точность дробной части не может превышать 10 цифр. Когда описывается переменная и присваивается ей числовое значение, то нигде не фиксируется ее разрядность. Тем не менее, для переменных тоже существуют ограничения.
В синтаксис-помощнике сказано, что максимально допустимая разрядность для числа – это 38 знаков. Такое ограничение не препятствует решению любых экономических задач, т.е. любую денежную величину можно описать с помощью этих чисел.
Тем не менее, если все-таки потребуется описать большие величины для решения каких-то математических задач, то в теории программирования есть алгоритмы, позволяющие описать числа с любой размерностью на основании существующих ограничений.
Операции, применимые для чисел:
- обычные арифметические операции (-, +, *, /). У умножения и деления приоритет больше, чем у сложения и вычитания. Скобки имеют наивысший приоритет. Есть еще унарные операции + и -, у которых приоритет идет сразу за скобками;
- операция “остаток от деления” (%). Например, 12%5=2;
- математические функции, которые можно применять для чисел (тригонометрические функции, возведение в степень, извлечение квадратного корня, округление до указанной разрядности, выбор целой части числа)

Если говорить о точности числовых значений, что касается реквизитов базы данных, то здесь присутствуют естественные ограничения.
Но что касается переменных, то здесь есть особенность. На самом деле, в переменных можно оперировать очень большими числами, но в информационную базу будут сохраняться значения с длиной целой части не больше 32 знаков.
Булевские значения
Что касается типа данных Булево, то здесь существует только два значения Истина и Ложь, которые могут быть получены различными способами.
Можно, например, использовать операции сравнения чисел или дат. В итоге будет получаться некое булевское значение, которое в дальнейшем наиболее часто используется в условных операторах и в операторах цикла.
Литералы типа Дата
Для описания даты существует два способа. Один из них с использованием литерала. Литерал пишется в одинарных кавычках.
Сначала пишется год, потом месяц и затем день.
При необходимости, можно указать и время, т.к. в системе 1С:Предприятие 8 любая дата содержит в себе и дату и время. Например:
Если время не указано, то по умолчанию оно равно нулю. В описании даты можно использовать любой разделитель. Например:
Второй способ определения даты – это использование функции глобального контекста Дата( ). В этом случае мы передаем в качестве параметров этой функции тоже самое: год, месяц, день через запятую.
Также можно указать время. Если его не указывать, тогда оно будет равно по умолчанию началу дня.
В системе 1С:Предприятие 8 пустая дата – это самое начало календаря. Варианты записи:
ПустаяДата = ‘00010101’;
ПустаяДата = Дата(1,1,1);
И та и другая запись вернет одинаковый результат, и эта дата будет считаться пустой.
Удобство функции Дата( ) в том, что мы можем передавать в нее не конкретные значения, а какие-то переменные. Т.е., иногда мы дату конструируем, собирая разные переменные.
Для даты применима операция сложения. Операция сложения прибавляет к дате указанное количество секунд.
Преобразования примитивных типов данных
В операторе присваивания, где суммируется несколько переменных (например, Переменная = А + В + С), возможно преобразование примитивных типов данных. Преобразование типа данных осуществляется по значению первого типа данных.
Таким образом, если первый тип данных строка, то система будет пытаться сделать из всего этого выражения строку. Если первый тип данных число, то, соответственно, система попытается получить числовой тип данных.
И так, строка + число = строка. Иногда число можно сложить со строкой, в том случае, если из строки можно выделить какое-то числовое значение (например, 123 + “456”).
Для логического типа данных применимы выражения:
Истина И 1 = Истина;
Истина И 0 = Ложь.
Любое число больше нуля преобразуется в Истина, 0 преобразуется в Ложь.
Дату можно, как отмечалось раньше, складывать с числом. Дату можно также складывать с булевым типом данных.
В этом случае Истина преобразуется в 1, а Ложь в 0.
Кроме преобразования типов в операторах возможно явное преобразование типов с использованием соответствующих функций: Строка( ), Число( ), Дата( ), Булево( ).
К Строке конвертируется любой тип данных.
Число может быть получено из Строки или из Булево. Булево конвертируется: Истина в 1, Ложь в 0.
К Дате можно привести строку, если там будет содержаться значение даты. Например, Дата(“20140315”). Как отмечалось ранее, возможно преобразование по позициям:
В Булево можно преобразовать Число и само значение Булево.
Данные функции можно использовать в программном коде для того, чтобы выполнить явное преобразование типов.
Примитивные типы данных Число, Строка, Дата и Булево могут выступать в качестве полей базы данных.
Значения типа NULL и Неопределено
NULL – это литерал. Применяется он, как правило, в запросах к базе данных, когда соединяются две и более таблиц.
Именно отсутствующие записи во второй таблице и заполняются значением типа NULL. Т.е. это некое отсутствующее значение.
В дальнейшем, при обработке получившегося результата это нужно учитывать, так как NULL – это не ноль, а соответствующий тип данных.
Для того, чтобы значение обработать, нужно NULL привести к какому-либо обычному типу данных, который можно выводить или использовать в арифметических операциях.
Значение типа NULL можно получить и во встроенном языке. Можно определить некоторую переменную и присвоить ей это самое значение NULL. Однако подобное присваивание в программном коде практически никогда не используется.
Т.е. NULL – это действительно тот тип данных, который получается при работе с запросами. Значение NULL именно на языке запросов нужно отрабатывать по-особенному.
А именно, на уровне запросов не будет работать сравнение A=NULL, нужно будет применять специализированные функции. Однако во встроенном языке сравнение со значением NULL будет корректно отработано.
Тип данных Неопределено – это не пустое значение какого-либо реквизита.
Например, если реквизит справочника имеет в качестве типа данных ссылку на какой-либо другой справочник, то пустое значение этого реквизита не будет равно Неопределено.
Данный тип (Неопределено) появляется, во-первых, если у нас есть некая переменная и она не инициализировна (тип данных не определен).
Второй пример: тип данных Неопределено возвращают многие функции встроенного языка, если действие не может быть выполнено.
Например, поиск элемента справочника по наименованию в том случае, если у какого-либо справочника нет такого наименования элемента. Метод НайтиПоНаименованию будет возвращать значение Неопределено.
При этом Неопределено является ключевым словом, оно подсвечивается красным цветом. Это тоже литерал, для написания Неопределено не нужно использовать никаких кавычек, запятых, скобок и т.д.
Если имеется список документов, и этот список пустой (в нем, соответственно нет ни одной строки), то текущая строка будет принимать значение Неопределено.
Если в информационной базе есть реквизит с составным типом данных, то пустое значение данного реквизита будет равно Неопределено.
Но если тип данных будет не составным, то пустое значение будет соответствовать пустому значению данного типа (для даты – это первая секунда первого часа первого дня первого месяца первого года).
NULL и Неопределено – это и типы данных и значения в этих типах, причем одно единственное. Для NULL – это значение NULL, для Неопределено – Неопределено.
Тип данных Тип
Основное применение этого типа данных заключается в том, чтобы сравнить значение некой переменной или реквизита базы данных с конкретным типом.
Т.е. в алгоритме нужно понять, какой тип у данного объекта.
Примечательно, что этот тип данных не имеет литерала. Мы не можем его написать, как например, NULL или Неопределено, но мы можем получить значение этого типа с помощью двух функций Тип и ТипЗнч.
Для того, чтобы получить тип некоторого объекта (это может быть переменная, либо реквизит базы данных, либо реквизит формы), используется функция ТипЗнч.
В эту функцию передается тот объект, для которого требуется получить тип данных.
В качестве возвращаемого значения эта функция возвращает именно тип типа тип.
В дальнейшем следует его сравнить с каким-либо интересующим типом. Например:
Если ТипЗнч(Элемент) = Тип (“СправочникСсылка.Номенклатура”) Тогда
Сообщить(“Это товар”);
КонецЕсли;
В заключение давайте подведем итог по всему пройденному материалу.
Мы рассмотрели базовые конструкции встроенного языка 1С, научились использовать переменные и операторы, разобрались, для чего и как использовать процедуры и функции. Заметим, что в основном весь наш программный код до этого момента был самодостаточным – мы всё писали сами с нуля и по минимуму использовали какие-то объекты конфигурации или встроенного языка.
В следующей статье мы изучим эти объекты более детально, поэтому не переключайтесь! 😉

PDF-версия статьи для участников группы ВКонтакте
Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.
Статья в PDF-формате
Вы можете скачать эту статью в формате PDF по следующей ссылке: Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Если Вы уже участник группы – нужно просто повторно авторизоваться в ВКонтакте, чтобы скрипт Вас узнал. В случае проблем решение стандартное: очистить кеш браузера или подписаться через другой браузер.
Комментарии / обсуждение (8):
Артем, спасибо за эту статью и другие тоже. Считаю их хорошим дополнением (апгрейдом) к нулевому блоку “Базового курса по программированию”. Понравилось Ваше решение задачи из “Быстрого старта”, оно здесь оказалось очень кстати т.к. в нем максимально использовались встроенные функции платформы по работе со строками. Хотелось бы видеть продолжение.