Когда программисты первый раз видят прикладной язык 1С, многие впадают в ступор. Несмотря на то, что родной русский язык в любом случае ближе и понятнее, читать код на русском языке и понимать, что происходит в нем (когда это в новинку) не так-то просто.
Опытный программист сразу увидит определенные знакомые конструкции (условия, циклы, вызовы функций), но многие моменты в коде все равно будут непонятными и непривычными. А уж если код был написан программистом с даром красивого именования переменных и функций, то процесс первого знакомства с 1С обещает быть еще более ярким. Впрочем, последнее справедливо не только для 1С.
![Пример кода от любителя красивого синтаксиса Пример кода от любителя красивого синтаксиса](https://habrastorage.org/getpro/habr/upload_files/b3c/b0b/139/b3cb0b139d437522f4210d9bbfca45e7.png)
Сейчас процесс перевода 1С на английский язык идет полным ходом. К существующим ранее решениям (таким как 1C:Drive) недавно добавился 1С:ERP World Edition, а разработка на английском языке (более привычном и понятном для многих начинающих или не связанных с 1С программистов) стала еще более актуальной.
Как же человеку, уже прикипевшему к русскому языку в коде и / или со знаниями английского на уровне «London is the capital of Great Britain… Microsoft…Coca-Cola…Ok» быстро перестроиться на кодирование на английском языке?
Есть несколько способов:
1. Первое и самое банальное – подтянуть знания английского языка. Даже если удастся запомнить, как писать все нужные конструкции, названия объектов и переменных все равно желательно давать понятными англоговорящему кодеру. И чтобы не сидеть все время в обнимку с гугл-переводчиком, лучше потратить некоторое время на освоение нового языка, благо ресурсов сейчас для этого предостаточно.
Вот пример кода, как не нужно делать:
![](https://habrastorage.org/getpro/habr/upload_files/390/bb7/e8a/390bb7e8a4d7de29b2c7a4fe68cbd834.png)
2. Второй способ – открыть любую типовую конфигурацию и искать название на английском нужной конструкции с помощью синтаксис-помощника. Как правило, там это название будет приведено подобным образом:
![Пример типовой конфигурации Пример типовой конфигурации](https://habrastorage.org/getpro/habr/upload_files/87a/475/810/87a475810df89512dc7231da7ae9c443.png)
3. Ну и третий способ – воспользоваться материалом данной статьи, где я приведу примеры наиболее популярных конструкций в стандартном виде и их аналогов на английском языке.
Поехали!
Условный оператор:
Если … Тогда ИначеЕсли … Тогда Иначе КонецЕсли; | If … Then ElsIf … Then Else EndIf; |
Циклы:
Для Счетчик = 1 По 10 Цикл КонецЦикла; | For Counter = 1 To 10 Do EndDo; |
Для Каждого … Из … Цикл КонецЦикла; | For Each … In … Do EndDo; |
Пока … Цикл КонецЦикла; | While … Do EndDo; |
Инструкции препроцессора и директивы компиляции:
#Область | #Region |
Клиент | Client |
Сервер | Server |
МобильноеПриложениеКлиент | MobileAppClient |
МобильноеПриложениеСервер | MobileAppServer |
ТолстыйКлиентОбычноеПриложение | ThickClientOrdinaryApplication |
ТолстыйКлиентУправляемоеПриложение | ThickClientManagedApplication |
ВнешнееСоединение | ExternalConnection |
ТонкийКлиент | ThinClient |
ВебКлиент | WebClient |
&НаКлиенте &НаСервере &НаСервереБезКонтекста &НаКлиентеНаСервереБезКонтекста | &AtClient &AtServer &AtServerNoContext &AtClientAtServerNoContext |
Логические и вспомогательные операторы:
И Или Не | And Or Not |
Продолжить | Continue |
Прервать | Break |
Возврат | Return |
Экспорт | Export |
Знач | Val |
Новый | New |
Перем | Var |
ВызватьИсключение | Raise |
Попытка / исключение:
Попытка Исключение КонецПопытки; | Try Except EndTry; |
Работа с транзакциями:
НачатьТранзакцию | BeginTransaction |
ОтменитьТранзакцию | RollbackTransaction |
ЗафиксироватьТранзакцию | CommitTransaction |
ТранзакцияАктивна | TransactionActive |
Функции / процедуры:
Функция КонецФункции | Function EndFunction |
Процедура КонецПроцедуры | Procedure EndProcedure |
Популярные конструкторы:
Массив | Array |
Структура | Structure |
Соответствие | Map |
СписокЗначений | ValueList |
ТаблицаЗначений | ValueTable |
ДеревоЗначений (Строки, Колонки) | ValueTree (Rows, Columns) |
Запрос | Query |
МенеджерВременныхТаблиц | TempTablesManager |
ТабличныйДокумент | SpreadsheetDocument |
ТекстовыйДокумент | TextDocument |
FTPСоединение HTTPСоединение | FTPConnection HTTPConnection |
COMОбъект | COMObject |
WSПрокси | WSProxy |
БлокировкаДанных | DataLock |
Граница | Boundary |
ДвоичныеДанные | BinaryData |
Диаграмма | Chart |
ДиаграммаГанта | GanttChart |
ДиалогВыбораФайла | FileDialog |
ДокументDOM ДокументHTML | DOMDocument HTMLDocument |
ЗаписьDOM, ЗаписьJSON, … | DOMWriter, JSONWriter, … |
ЧтениеHTML, ЧтениеJSON, … | HTMLReader, JSONReader, … |
ИнтернетПочтовоеСообщение | InternetMailMessage |
Картинка | Picture |
КвалификаторыДаты, КвалификаторыЧисла, … | DateQualifiers, NumberQualifiers, … |
КоллекцияДвижений | RegisterRecordsCollection |
КомпоновщикМакетаКомпоновкиДанных | DataCompositionTemplateComposer |
КомпоновщикНастроекКомпоновкиДанных | DataCompositionSettingsComposer |
МакетКомпоновкиДанных | DataCompositionTemplate |
МоментВремени | PointInTime |
ОписаниеОповещения | NotifyDescription |
ОписаниеТипов | TypeDescription |
ОтборКомпоновкиДанных | DataCompositionFilter |
ПараметрКомпоновкиДанных | DataCompositionParameter |
ПолеКомпоновкиДанных | DataCompositionField |
ПараметрыЗаписиJSON | JSONWriterSettings |
ПараметрыЗаписиXML ПараметрыЧтенияXML | XMLWriterSettings XMLReaderSettings |
ПочтовоеСообщение | MailMessage |
ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений | DataCompositionResultValueCollectionOutputProcessor |
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент | DataCompositionResultSpreadsheetDocumentOutputProcessor |
ПроцессорКомпоновкиДанных | DataCompositionProcessor |
РеквизитФормы | FormAttribute |
СериализаторXDTO | XDTOSerializer |
ФабрикаXDTO | XDTOFactory |
СообщениеПользователю | UserMessage |
СхемаКомпоновкиДанных | DataCompositionSchema |
Файл | File |
ХранилищеЗначения | ValueStorage |
Цвет | Color |
Шрифт | Font |
УникальныйИдентификатор | UUID |
Популярные методы объектов:
Выполнить | Execute |
ВыполнитьПакет | ExecuteBatch |
УстановитьПараметр | SetParameter |
Выбрать | Select |
СоздатьНаборЗаписей | CreateRecordSet |
Прочитать | Read |
Вставить | Insert |
Выгрузить | Unload |
Загрузить | Load |
Добавить | Add |
Записать | Write |
Заполнить | Fill |
Итог | Total |
Количество | Count |
Метаданные | MetaData |
Очистить | Clear |
Получить | Get |
ПроверитьЗаполнение | CheckFilling |
Удалить | Delete |
Переместить | Move |
Найти | Find |
НайтиСтроки | FindRows |
Сортировать | Sort |
Скопировать | Copy |
ПолучитьМакет | GetTemplate |
ПолучитьОбласть | GetArea |
СрезПервых, СрезПоследних | SliceFirst, SliceLast |
НайтиПоНаименованию | FindByDescription |
НайтиПоКоду | FindByCode |
НайтиПоРеквизиту | FindByAttribute |
Популярные функции и процедуры глобального контекста:
НачалоДня, НачалоМесяца, … | BegOfDay, BegOfMonth, … |
КонецДня, КонецМесяца, … | EndOfDay, EndOfMonth, … |
ОписаниеОшибки | ErrorDescription |
ФоновыеЗадания | BackgroundJobs |
ПолучитьИзВременногоХранилища | GetFromTempStorage |
ТекущаяДата | CurrentDate |
ТекущаяДатаСеанса | CurrentSessionDate |
Дата | Date |
ПоказатьВводДаты, ПоказатьВводСтроки, … | ShowInputDate, ShowInputString, … |
ПоказатьВопрос | ShowQueryBox |
ПоказатьЗначение | ShowValue |
ТипЗнч | TypeOf |
Тип | Type |
Вычислить | Eval |
Формат | Format |
ЗаполнитьЗначенияСвойств | FillPropertyValues |
ПолучитьОбщуюФорму | GetCommonForm |
ПолучитьОбщийМакет | GetCommonTemplate |
ПолучитьФорму | GetForm |
ОткрытьФорму | OpenForm |
РольДоступна | IsInRole |
ПустаяСтрока | IsBlankString |
Лев, Прав, Сред | Left, Right, Mid |
Мин, Макс | Min, Max |
Оповестить, ОповеститьОВыборе | Notify, NotifyChanged |
ПредопределенноеЗначение | PredefinedValue |
УстановитьПривилегированныйРежим | SetPrivilegedMode |
ПрочитатьJSON, ПрочитатьXML | ReadJSON, ReadXML |
Окр | Round |
СтрДлина, СтрЗаменить, СтрНайти, … | StrLen, StrReplace, StrFind, … |
ВРег, НРег | Upper, Lower |
ЗначениеЗаполнено | ValueIsFilled |
Популярные системные перечисления:
ВариантЗаписиДатыJSON | JSONDateWritingVariant |
ВариантСтандартногоПериода | StandardPeriodVariant |
ВидГраницы | BoundaryType |
ВидГруппыФормы | FormGroupType |
ВидДвиженияБухгалтерии | AccountingRecordType |
ВидДвиженияНакопления | AccumulationRecordType |
ВидКнопкиФормы | FormButtonType |
ВидПоляФормы | FormFieldType |
ВидСравнения | ComparisonType |
ВидСравненияКомпоновкиДанных | DataCompositionComparisonType |
ДопустимаяДлина | AllowedLength |
ДопустимыйЗнак | AllowedSign |
ДоступКФайлу | FileAccess |
КодВозвратаДиалога | DialogReturnCode |
КодировкаИменФайловВZipФайле | FileNamesEncodingInZipFile |
КодировкаТекста | TextEncoding |
МетодСжатияZIP | ZIPCompressionMethod |
МетодШифрованияZIP | ZIPEncryptionMethod |
ОбходРезультатаЗапроса | QueryResultIteration |
ПротоколИнтернетПочты | InternetMailProtocol |
РежимБлокировкиДанных | DataLockMode |
РежимДиалогаВопрос | QuestionDialogMode |
РежимДиалогаВыбораФайла | FileDialogMode |
РежимЗаписиДокумента | DocumentWriteMode |
РежимПроведенияДокумента | DocumentPostingMode |
РежимОкругления | RoundMode |
РежимСохраненияПутейZIP | ZIPStorePathMode |
РежимУправленияБлокировкойДанных | DataLockControlMode |
Символы | Chars |
СостояниеФоновогоЗадания | BackgroundJobState |
СпособSMTPАутентификации | SMTPAuthenticationMode |
СпособPOP3Аутентификации | POP3AuthenticationMode |
ТипВнешнейКомпоненты | AddInType |
ТипГруппыЭлементовОтбораКомпоновкиДанных | DataCompositionFilterItemsGroupType |
ТипЗначенияJSON | JSONValueType |
ТипТекстаПочтовогоСообщения | InternetMailTextType |
ТипУзлаDOM | DOMNodeType |
ТипУзлаXML | XMLNodeType |
ТипФайлаТабличногоДокумента | SpreadsheetDocumentFileType |
ТипФайлаФорматированногоДокумента | FormattedDocumentFileType |
УровеньЖурналаРегистрации | EventLogLevel |
ЧастиДаты | DateFractions |
Популярные объекты метаданных, упоминаемые в коде:
Справочники | Catalogs |
Документы | Documents |
РегистрыСведений | InformationRegisters |
РегистрыНакопления | AccumulationRegisters |
РегистрыБухралтерии | AccountingRegisters |
РегистрыРасчета | CalculationRegisters |
ПланыВидовХарактеристик | ChartsOfCharacteristicTypes |
ПланыСчетов | ChartsOfAccounts |
ПланыВидовРасчета | ChartsOfCalculationTypes |
Перечисления | Enums |
Константы | Constants |
(Внешние) Обработки | (External) DataProcessors |
(Внешние) Отчеты | (External) Reports |
РегламентныеЗадания | ScheduledJobs |
ПланыОбмена | ExchangePlans |
ПараметрыСеанса | SessionParameters |
ВнешниеИсточникиДанных | ExternalDataSources |
Популярные функции в языке запросов:
ДОБАВИТЬКДАТЕ | DATEADD |
РАЗНОСТЬДАТ | DATEDIFF |
НАЧАЛОПЕРИОДА, КОНЕЦПЕРИОДА | BEGINOFPERIOD, ENDOFPERIOD |
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ) | COUNT(DISTINC) |
ЗНАЧЕНИЕ | VALUE |
ТИП | TYPE |
ЕСТЬNULL | ISNULL |
ПРЕДСТАВЛЕНИЕ | PRESENTATION |
ПРЕДСТАВЛЕНИЕССЫЛКИ | REFPRESENTATION |
ТИПЗНАЧЕНИЯ | VALUETYPE |
В (ИЕРАРХИИ) | IN (HIERARCHY) |
ДАТАВРЕМЯ | DATETIME |
ПОДОБНО | LIKE |
МЕЖДУ … И … | BETWEEN … AND … |
ВЫРАЗИТЬ | CAST |
ВЫБОР КОГДА ТОГДА ИНАЧЕ КОНЕЦ | CASE WHEN THEN ELSE END |
Все аналоги, конечно, невозможно описать в рамках одной статьи, но наиболее популярные синтаксические конструкции были отражены. Надеюсь, это поможет начинающим программистам и тем, кто только знакомиться с разработкой в 1С на английском языке, чувствовать себя уверенней и писать код быстрее.