Команды в 1с на английском
Язык 1С весьма прост в изучении по сравнению с любым другим языком программирования.
Мы изучим язык 1С между делом сейчас, за пять минут.
Общие принципы программирования
Программирование – это написание программного кода на программном языке.
Программный код – это последовательность команд (слов), которые поддерживает этот язык программирования.
Команды делятся на:
- Переменные
- Операторы
- Функции и процедуры.
Рассмотрим их в первом приближении.
Переменные
Есть цифра 12. Это значение. Сама по себе эта цифра нигде не хранится. Подули и ее уже нет 🙂 Она должна где-то храниться. Переменные – это место хранения значений. Переменная может называться любым словом.
Например:
Чтото = 12;
Чтото = Чтото + 10;
Сообщить(Чтото); //будет выведено «22»
Переменная, которая является частью объекта 1С (например поле справочника) и хранится в базе данных – называется реквизит.
В 1С переменные не типизированы, это значит, что одной и той же переменной сначала можно назначить значение одного типа (например цифру), а потом другого типа (например строку) и ошибки не будет.
Однако реквизиты объектов – типизированы. Но проверки на типы при этом не происходит. Мы можем попытаться назначить реквизиту значение не того типа. 1С попытается его преобразовать (например из цифры в строку), но если не получится, то значение реквизита останется пустым.
Длина строки в переменной – неограниченная. Длина строки реквизита – задается точно, но можно задать неограниченную (поставив длину строки 0).
По буквам к строке обращаться нельзя. Но можно искать или выделять части (Найти(), Лев(), Прав(), Сред()).
Сложные переменные
Если значение одно – это просто. А когда значений – много?
Это одна колонка Excel. В каждой ячейке – переменная. У нее одно название, так же как и у обычной переменной. А к ячейке можно обратиться по номеру.
То же, что и массив, только к каждой ячейке можно подписать комментарий.
Обратите внимание – нумерация ячеек в 1С начинается не с 1, а с 0.
Строки программы
Строки заканчиваются на точку с запятой «;».
Значение строк нужно указывать в кавычках «Значение». Если нужно указать в значении кавычку, то она удваивается – «Значение ««а»»!».
Значение строки может быть с включением переноса строки, тогда в начале следующей строки должен стоять «|», например:
«Это начало
| и продолжение значения»
Если нужно указать специальные символы в значении строки, для этого есть специальный объект: «Символы.», например:
«Это начало» + Символы.ПС + «и продолжение значения» //ПС – перенос строки
Операторы
Это конструкции языка, которые заложены в нем самом и позволяют создавать простейшую последовательность выполнения программы.
Определенные строки кода будут выполнены если будет выполнено условие.
Определенные строки кода будут выполнены указанное количество раз.
//считаем по-одному
Для Чтото = 1 по 20 Цикл
Сообщить(Чтото);
КонецЦикла;
//считаем по-другому
Чтото = 1;
Пока Чтото
//если у нас список значений, то можно обойти каждое из его значений
Чтото = Новый СписокЗначений;
Для каждого ЗначениеСписка из Чтото Цикл
Сообщить(ЗначениеСписка.Значение);
КонецЦикла;
//обратите внимание, что «ЗначениеСписка» - это переменная, она может называться как угодно
Работа с объектами
Все объекты, с которыми мы работаем в языке – является полноценными объектами, то есть могут иметь свои данные и свои методы.
Объекты языка создаются с помощью команды «Новый», например:
Чтото = Новый Массив();
Чтото = Новый СписокЗначений();
И т.п.
Объекты 1С нельзя создать – доступ к ним можно получить с помощью так называемых менеджеров, названных соответственно по веткам конфигурации: Справочники, Документы и т.п. Методы менеджера можно расширять (см. урок по модулям 1С, модуль менеджера объекта).
Свои объекты программировать нельзя, как и наследовать или переопределять типовые.
Ошибки
Программист не всегда может догадаться, будет ли ошибка при выполнении определенной строчки кода.
Например если написать в коде внешней обработки:
Справочники.Номенклатура.НайтиПоКоду(«…») и открыть эту обработку в базе, где нет справочника с названием Номенклатура, то будет ошибка.
Чтобы этого не произошло, можно использовать следующую конструкцию:
Попытка
Справочники.Номенклатура.НайтиПоКоду(«…»);
Исключение
Чтото = ОписаниеОшибки();
Сообщить(«Ой-ой-ой»);
Сообщить(Чтото);
КонецПопытки;
Если в момент выполнения строчек программы между Попытка и Исключение возникнет ошибка, то выполнение будет прервано и перейдет на строчки между Исключение и КонецПопытки. Если не будет ошибки – эти строчки не будут выполнены.
Функция ОписаниеОшибки() работает только между Исключение и КонецПопытки и возвращает описание произошедшей ошибки.
Функции и Процедуры
Функции и Процедуры – это способ взять несколько строчек кода и назвать их каким-то словом, как переменную. Когда мы потом напишем ее название в другом месте – будет вызвана эта функция (то есть выполнены эти строки кода).
Мы неоднократно обсуждали методы объектов и обработчики событий. Функции и процедуры и являются этими методами и обработчиками.
//Программируем
Процедура КакоетоДействие()
Сообщить(«Чтото»);
КонецПроцедуры
Функция отличается от процедуры тем, что она может вернуть значение, которое было вычислено в результате выполнения этих строк когда.
Функция Посчитать(Переменная1, Переменная2)
Возврат Переменная1 + Переменная2;
КонецФункции
Как программировать
Программирование проводится в модуле. Соответственно Вы должны найти нужный модуль и написать там код программы.
- Создаем внешнюю обработку – будет выполнен по открытию обработки в режиме Предприятие и по нажатию кнопки
- Или открываем модуль объекта обработка и пишем код там – будет выполнен сразу при открытии в режиме Предприятие.
Программированию конкретных объектов языка 1С мы коснемся в ближайших уроках.
Откройте ее в конфигураторе и Вы можете посмотреть программу или изменить ее.
Когда программисты первый раз видят прикладной язык 1С, многие впадают в ступор. Несмотря на то, что родной русский язык в любом случае ближе и понятнее, читать код на русском языке и понимать, что происходит в нем (когда это в новинку) не так-то просто.
Опытный программист сразу увидит определенные знакомые конструкции (условия, циклы, вызовы функций), но многие моменты в коде все равно будут непонятными и непривычными. А уж если код был написан программистом с даром красивого именования переменных и функций, то процесс первого знакомства с 1С обещает быть еще более ярким. Впрочем, последнее справедливо не только для 1С.
Пример кода от любителя красивого синтаксиса
Сейчас процесс перевода 1С на английский язык идет полным ходом. К существующим ранее решениям (таким как 1C:Drive) недавно добавился 1С:ERP World Edition, а разработка на английском языке (более привычном и понятном для многих начинающих или не связанных с 1С программистов) стала еще более актуальной.
Как же человеку, уже прикипевшему к русскому языку в коде и / или со знаниями английского на уровне «London is the capital of Great Britain… Microsoft…Coca-Cola…Ok» быстро перестроиться на кодирование на английском языке?
Есть несколько способов:
1. Первое и самое банальное – подтянуть знания английского языка. Даже если удастся запомнить, как писать все нужные конструкции, названия объектов и переменных все равно желательно давать понятными англоговорящему кодеру. И чтобы не сидеть все время в обнимку с гугл-переводчиком, лучше потратить некоторое время на освоение нового языка, благо ресурсов сейчас для этого предостаточно.
Вот пример кода, как не нужно делать:
2. Второй способ – открыть любую типовую конфигурацию и искать название на английском нужной конструкции с помощью синтаксис-помощника. Как правило, там это название будет приведено подобным образом:
Пример типовой конфигурации
3. Ну и третий способ – воспользоваться материалом данной статьи, где я приведу примеры наиболее популярных конструкций в стандартном виде и их аналогов на английском языке.
Особенно это актуально для многоязычных конфигураций, содержащих несколько языков.
В интернете достаточно много инструкций о том, где именно расположен выбор языка. По запросу "как изменить язык в 1с" гугл выдает 33 тысячи инструкций. Причем совершенно разных
Но проблема в том, что настроек достаточно много и не всегда ясно, какую именно нужно менять. Иногда инструкция помогает в решении проблемы, иногда нет.
Кажется, что 1С работает криво, запутанно и глючно. На самом деле настройка языка очень проста и работает понятно и четко. Просто языков несколько. И нужно учитывать, какой именно в каких случаях нужно менять.
Ниже краткая инструкция со всеми основными настройками, который могут влиять на язык отображения в 1С.
Какие виды языков есть в 1С, зачем они нужны.
Язык на самом деле не один, а целых три:
- Язык разработки;
- Язык интерфейса платформы;
- Язык интерфейса конфигурации;
А кроме языков, есть еще и региональные настройки, от которых зависит формат чисел, дат и времени.
Из этих пяти настроек на интерфейс влияют три:
Несмотря на многообразие инструкций и способов выполнения настроек, самих способов указания настроек достаточно мало. Их можно свести всего к пяти.
Язык разработки
Язык разработки (Вариант встроенного языка) - язык используемый для написания исходного кода конфигурации.
Выбирается основной язык программирования ("Русский" или "Английский").
Назначение: Выбор определяет, на каком языке будут формироваться языковые конструкции в модулях и выдаваться информация о базовых типах данных. От него зависит, шаблоны какого языка будут использовать при добавлении данных или использовании конструкторов.
При этом независимо от выбранного языка разработки, код можно писать на любом. В том числе и вперемешку на русском и английском.
Настройка: Язык разработки указывается в свойствах конфигурации в поле "Вариант встроенного языка"
Для определения встроенного языка конфигурации из кода 1С можно обратиться к метаданным командой Метаданные.ВариантВстроенногоЯзыка.
Менять данный язык после начала разработки нельзя. Никаких изменений в интерфейсе это не принесет, но может сделать неработоспособным написанный ранее код.
Язык интерфейса платформы.
В стандартный дистрибутив платформы входят следующие языки интерфейса платформы:
английский, азербайджанский, болгарский, венгерский, вьетнамский, китайский, грузинский, казахский, латышский, литовский, немецкий, польский, румынский, русский, турецкий, украинский, французский.
Соответственно, для работы пользователя можно использовать лишь один из них. Теоретически существует "Механизм быстрого частичного перевода ресурсов платформы", позволяющий для отдельного клиента/партнера в ограниченном варианте самостоятельно добавить в платформу новый язык. Но о реальных случаях использования не слышала.
При необходимости мы можем определить текущий язык интерфейса платформы с помощью функции ТекущийЯзыкСистемы().
Настройка: Есть несколько способов установить язык платформы. Наиболее простой и наиболее часто используемый это указать язык платформы в целом для всех баз 1С на данном компьютере, прописав его в файле conf.cfg.
Способ 1. Данную настройку проще всего прописать при установке платформы. Для этого достаточно на этапе "Язык интефейса по умолчанию" указать нужный язык.
Способ 2. Если платформа уже установлена, то можно перезапустить установку параметров. Для этого выбираем "Пуск"-"Панель управления"-"Программы и компоненты". Находим нужную установку 1С и нажимаем "Изменить"
Способ 3. Еще можно напрямую прописать настройку в файл. Обычно он лежит по адресу "C:\Program Files (x86)\1cv8\conf\conf.cfg". Открываем файл, добавляем строчку "SystemLanguage=RU", сохраняем.
Способ 4. Если язык платформы не прописан, то используются настройки операционной системы по умолчанию. Для их изменения выбираем "Пуск"-"Панель управления"-"Язык и региональные стандарты".
Способ 5. При работе в веб-клиенте по умолчанию используется язык, установленный как "предпочитаемый язык" в браузере. Соответственно и менять его нужно в настройках браузера.
Все прошлые способы устанавливают язык платформы в целом для всех баз на компьютере пользователя. Рассмотрим указание языка для конкретного сеанса.
Способ 6. Если для разных баз нужно использовать разные языки интерфейса, то нужный код языка можно указать в строке запуска 1C после ключа /L.
Способ 7. Если при запуске информационной базы выполняется выбор базы через типовой стартер. То ключ запуска /L можно указать в окне "Редактирование информационной базы" в поле "Дополнительные параметры запуска"
Способ 8. При запуске отладки из конфигуратора язык запуска можно указать в параметрах конфигуратора. "Сервис" - "Параметры" - "Запуск 1С:Предприятия" - "Дополнительные" - "Яык интерфейса системы".
Способ 9. При работе в браузере язык, отличный от языка по умолчанию, можно указать суффиксом адресной строки вида "/en_US/"
Способ 10. На самом деле указание кода языка в строке запуска это самый надежный вариант. Он работает всегда. Если он не сработал, значит, нужный язык просто не установлен в платформе. Возвращаемся на этап установки платформы и выбираем нужный язык.
Язык интерфейса конфигурации
Язык интерфейса конфигурации - это языки интерфейса, созданные пользователем. При разработке конфигурации разработчик продумывает, какие языки нужны пользователю данной конкретной конфигурации и для каждого языка прописывает свой вариант всех текстов, синонимов, заголовков. В отличии от языков интерфейса платформы (жестко прописанных разработчиками платформы), языки интерфейса конфигурации могут быть любыми. В том числе мы можем создать язык, не существующий в реальности. Количество языков ничем не ограничено.
Коды языков никак не связаны с кодами интерфейса платформы. Мы можем использовать любой удобный код языка. Язык интерфейса также никак не связан с настройками операционной системы. Он зависит только от разработчика конфигурации и администратора.
Единственное исключение, это разработка приложения для мобильных устройств. В этом случае рекомендуется указывать коды языков в соответствии соТекущийЯзыкСистемы() .
Есть всего два способа установки языка интерфейса.
Способ 1. Указать язык для конкретного пользователя в свойствах пользователя информационной базы.
Способ 2. Если у пользователя язык по умолчанию не указан, то будет использоваться язык, указанный в свойствах конфигурации в реквизите "Основной язык".
При работе в конфигураторе для полей, в которых поддерживается многоязычный ввод, появляется значок лупы. При нажатии на данный значок мы можем корректировать тексты на нескольких языках одновременно. Однако также можем и просто корректировать тексты в любом многоязычном поле напряму без нажатия лупы. В этом случае мы редактируем текст текущего языка, не затрагивая второй язык. Чтобы переключить текущий язык в конфигураторе есть следующие способы:
Способ 3: Выбрать в меню пункт "Конфигурация" - "Язык редактирования конфигурации". Выбрать язык, со значениями которого мы хотим работать в ближайшее время.
Способ 4: Также язык можно переключить мышкой в строке статуса в правом нижнем углу окна конфигуратора.
Способ 5: Для множественного редактирования полезно использовать режим конфигуратора "Правка" - "Редактирование текстов интерфейсов"
Региональные настройки.
Ну и последними стоит упомянуть региональные настройки. Есть региональные настройки Информационной базы в целом и региональные установки текущего сеанса. Режим настройки региональных установок информационной базы позволяет управлять форматом отображения даты, времени, чисел, логических констант и влияет на порядок сортировки строк в списках информационной базы данных.
Варианты языков региональных настроек не зависят от платформы или конфигурации. Они зависят только от возможностей операционной системы. Полный список допустимых вариантов языка региональных настроек можно получить с помощью функции ПолучитьДопустимыеКодыЛокализации()
Лично у меня в Windows 254 варианта языков, которые можно использовать как основу региональных настроек.
Используемые базой региональные настройки можно определить с пощью функции КодЛокализацииИнформационнойБазы()
Региональные настройки ИБ можно установить:
Способ 1: При создании базы. На этапе "Добавление информационной базы" необходимо выбрать язык, который будт использоваться для хранения данных.
Способ 2. Из конфигуратора. В пункте меню Администрирование – Региональные установки ИБ. Для смены языка информационной базы обязательно использование монопольного режима.
Примечания: Если в качестве СУБД используется PostgreSQL, то для существующей информационной базы изменение языка (страны) не может быть выполнено произвольным образом. Установленное значение языка (страны) можно изменить только на такое, которое будет использовать тот же порядок сортировки строк (collation) СУБД, что и существующее значение. Например, русский (Россия) может быть изменен на белорусский (Беларусь), но не может быть изменен на украинский (Украина).
Если в качестве СУБД используется IBM DB2, то смена значения языка (страны) не поддерживается.
Региональные установки конкретного сеанса влияют на отображение дат, чисел, времени при работе с ИБ. Есть несколько способов установки настройки для конкретного сеанса.
Способ 1: Установка общих настроек для всех сеансов. Для вызова режима нужно выбрать пункт Администрирование – Региональные установки ИБ и указать региональные параметры.
Способ 2. Если общие значения по умолчанию не установлены, то используются настройки операционной системы. Поэтому можно установить нужные настройки, сменив язык операционной системы.
Способ 3. Если для разных баз нужно использовать разные региональные настройки, то нужный код языка можно указать в строке запуска 1C после ключа /VL.
Способ 4. Если при запуске информационной базы выполняется выбор базы через типовой стартер. То ключ запуска /VL можно указать в окне "Редактирование информационной базы" в поле "Дополнительные параметры запуска"
Способ 5. При запуске отладки из конфигуратора язык запуска можно указать в параметрах конфигуратора. "Сервис" - "Параметры" - "Запуск 1С:Предприятия" - "Дополнительные" - "Код локализации сеанса".
В процессе работы региональные настройки текущего сеанса можно определить с помощью функции ТекущийКодЛокализации()
Итоги.
Я попыталась собрать в одном месте разнородную информацию о настройке языка в 1С. Думаю, эта статья отлично показывает принцип использования языков и послужит хорошей шпаргалкой при необходимости настройки.
В целом все варианты работы с языками в 1С можно представить следующим образом:.
Редактирование текстов интерфейса … (перевод интерфейса конфигурации на другой язык английский – немецкий – китайский – японский и многие другие).
У вас есть стандартная конфигурация, в которой надо перевести интерфейс на другой язык, легко! А вот со справкой придется немного помучаться. Просьба не путать с данными, которые хранятся в реквизитах объектов.
О том, что надо сделать (в примере будет Английский язык):
1) Добавить язык в конфигурацию «Общие»-«Языки»-«Английский» с кодом «en».
Рекомендации по выбору кода языка, лучше брать из стандартов, например ISO 639-1 (ссылка от Google -
Выбрать интересующие вас объекты конфигурации, например Справочники.Контрагенты (можно выбрать и всю конфигурацию, но не желательно, на больших объемах конфигуратор может самопроизвольно закрыться или вылететь с ошибкой).
На закладке модули поставить галочку «Искать в функциях «НСтр» («NStr») в модулях».
3) Выгружаем таблицу соответствий в файл.
Снимаем обе галочки, ВАЖНО. И выбираем имя файла для выгрузки.
После выгрузки файл автоматически откроется в конфигураторе, его надо сохранить в формате Excel, «Файл»-«Сохранить копию…» меняем тип файла «Лист Excel 97».
4) В полученном файле есть все фразы на русском, надо получить на английском. Как переводить дело личное каждого, я предлагаю это сделать через «Переводчик Google» из «Диск Google».
Для этого надо загрузить файл «xls» на диск Google.
Зайти через web интерфейс на этот диск.
Найти свой файл и открыть его.
Выполнить экспорт в таблицу Google.
В колонке с английским языком в первую свободную строчку вставить функцию
У меня указана A2 так как я стоял на 2-ой строке.
После надо скопировать эту функцию на все строки - берез за нижний-правый угол ячейки и тянем вниз.
Вуаля, весь файл переведен. Обратите внимание, иногда перевод появляется не сразу, может быть надпись «Loading…» или что-то похожее, не переживайте перевод появиться, надо просто подождать.
Теперь файл можно скачивать к себе на компьютер.
5) Подготовка файла к загрузке в 1С.
В первой строке должны быть только коды языков, больше ничего. У меня в первой колонки получилось «ru» во второй «en».
Теперь надо проверить файл перевода на ошибки, ведь такой перевод не идеален. Проверка делиться на 2 вида:
А) синтаксические, тут все просто, исправляем, что нам не понравилось в переводе, а можем оставить как есть;
Б) которые могут влиять на работоспособность, вы спросите как так? А очень просто в НСтр могут быть использованы параметры, которые указываются в тексте как «%1», «%2» и т.д., что после перевода может превратиться в «1 %» или «% 1». Так дело не пойдет, надо все это исправлять в Excel, да поможет вам поиск.
6) Открываем файл в Excel, копируем в буфер обмена.
В 1С открываем созданный ранее файл «ru-eng.xml» и вставляем в него буфер обмена.
Сохраняем, файл готов.
7) Наконец-то файл готов. Теперь надо загружать.
Для этого надо повторить пункт 2).
Ищем наш файл xml выбираем по какому язуку заполнять, в нашел случае «Русский (ru)», в язык «Английский (en)».
8) Наслаждаемся, перевод готов.
Проблемы, с которыми сталкивался при переводе:
- иногда съедается текст между двумя НСтр, лечиться копирование кода из копии конфигурации до перевода.
- конечно, же обновление. Лекарство ниже.
Может возникнуть рациональный вопрос, как это будет сосуществовать с обновлениями?
Просто, ну или не сложно. При обновлении устанавливаем фильтр «только дважды измененные». Потом повторяем пункт 7) только ставим галочку «заполнять только незаполненные». Как вы сами понимаете файл с соответствием перевода надо сохранить. Потом повторяем пункт 1) и если есть, что то без перевода повторяем весь цикл, только для новых слов и еще раз напоминаю при загрузки надо ставить галочку «заполнять только незаполненные».
На сколько языков можно одновременно перевести конфигурацию? Какие языки поддерживает 1С?
Одновременно можно перевести на много языков, был опыт перевода самописной небольшой конфы на 26 языков, я уверен, многим этого хватит. 1С поддерживаем кодировку UTF-8 – это почти все языки. Другое дело в том, что в 1С часть интерфейса типа «Файл» «Справка» и т.д. зависит не от того языка что выбрали в конфигурации, а от того какой язык установили при установки платформы. Если установлено несколько, то можно указать ключ в ярлыке запуска. Но печальное не это, а то, что список языков включенных пока только
Поэтому приходилось для каждого языка перевода, приходилось подбирать наиболее понятный язык платформы из этого списка.
Но что же делать с реквизитами?
Идей было много, но чаще останавливался на одном. В стандартные реквизиты записываем оба значения через какой-нибудь спец. символ, например «/». И все видят значение реквизита на обоих языках. Если сильно хочется, то можно разбирать строку до спец. символа и после, и в зависимости от языка интерфейса отображать нужное. Так же можно добавить свою форму для заполнения реквизита на разных языках и самим формировать строку со спец. символом. Так же можно предусмотреть возможность заполнять реквизит только на одном языке, а на втором формировать автоматически использую транслитерацию или перевод, через какой-нибудь сервис, может быть и веб, может быть и google :-)
ДОБАВЛЕНО:
В статью не попала информация перевод справки на другой язык.
Делать надо ручками каждую справку индивидуально.
Пример, для справочника "Контрагенты" Алгоритм следующий:
1) На объекте нажимаем правой кнопкой "Справочная информация".
Откроется текст справки, переводим как нам больше нравиться, но куда её вставлять.
2) Тут есть небольшая тонкость текущий "язык редактирования конфигурации" (при переводе большого количества объектов легко запутаться какой язык активный). Этот замечательный пункт меню располагается в меню "Конфигурация". В окне выбираем язык. Вставляем переведенную справку. Вот и всё.
Читайте также: