РусскийФокс. Настройка NotePad++, 1C-подобные функции и операторы и создание объектов

06.07.18

Разработка - Языки и среды

Новый объектно-ориентированный русскоязычный 1С-подобный язык программирования РусскийФокс. Создание объектов и настройка NotePad++. GitHub https://github.com/UfaScript/RusFox

Скачать исходный код

Наименование Файл Версия Размер
РусскийФокс. Настройка NotePad++, 1C-подобные функции и операторы и создание объектов.:
.rar 5,40Mb
1
.rar 2.0 5,40Mb 1 Скачать

В данной статье кратко затрону сразу несколько тем по языку программирования РусскийФокс. Более подробно можно почитать в руководстве по РусскийФокс и попробывать примеры во вложении к данной статье. Особо интересно будет почитать про создание объектов в РусскийФокс, так как я декларирую РусскийФокс, как пока единственный русскоязычный объектно-ориентированный язык программирования.

Желающие ускорить разработку могут проголосовать за мой доклад о РусскомФоксе https://event.infostart.ru/2018/agenda/?sort=new. Чем больше сторонников данной разработки, тем выше мотивация.

Кратко расскажу, как настроить Notepad++ для работы (подробное описание в руководстве по РускийФокс см.вложение). В настройках перечислены все основные операторы и функции. Я умышлено 1С-подобные функции и операторы выделил в отдельную группу, так как их описание и метод работы вы можете изучать по документации и учебникам 1С. При желании 1С-подобные операторы и функции вы можете выделять особым цветом. Умышлено не предлагаю закачать готовую настройку, так как полезней научиться настраивать NotePad++ под свои нужды. Лично я не нашел в интернете нормального описания для самостоятельной настройки последней версии.

Для настройки выделения цветом в NotePad++ следует выбрать меню «Синтаксисы» - «Задать свой синтаксис». Назовем его «RusFox».

Начнем с последней вкладки «Операторы и разделители». Разделитель 1 ставим символ двойные кавычки в поле «Открытие» и в поле «Закрытие». Разделитель 2 аналогично ставим одинарные кавычки. Для строковых значений вы можете применять одинарные или двойные кавычки. По кнопке «Стиль» настраиваем шрифт и цвет фона и символов. В Операторы один заносим строку «- " ( ) * , ; [ \ ] + < = > %» и настраиваем стиль.

На вкладке «Комментарии и числа» Комментарий строки в поле «Открытие» заносим «//» и настраиваем стиль.

Больше всего настроек на вкладке «Ключевые слова». 1-ая группа включить Префикс режим и копируем туда 1С-подобные операторы:

Список 1С-аналогов ключевых операторов (24 оператора);

КОНЕЦЕСЛИ; ЕСЛИ ИНАЧЕ КОНЕЦПРОЦЕДУРЫ КОНЕЦФУНКЦИИ ТОГДА ПРОЦЕДУРА ФУНКЦИЯ ВОЗВРАТ ДЛЯ ПО КОНЕЦЦИКЛА; ЦИКЛ И ИЛИ НЕ ПЕРЕМ ПОКА КОНЕЦПОКА; ПРЕРВАТЬ; ПРОДОЛЖИТЬ; ПОПЫТКА ИСКЛЮЧЕНИЕ КОНЕЦПОПЫТКИ;

Настраиваем стили для всех групп с 1-ой по 6-ую.

2-ая группа включить префикс режим и скопировать те же операторы, только в привычном для 1С-ников виде, которые поддерживаются РусскийФоксом:

КонецЕсли; Если Иначе КонецПроцедуры КонецФункции Тогда Процедура Функция Возврат Для По КонецЦикла; Цикл Пока Мин( Макс(

3-я группа и далее префикс режим выключен, в нее копируем список 1С-подобных функций, которые понимает РусскийФокс. Я их выделяю синим цветом. Список аналогов функций 1С (44 функции):

СокрЛП Сообщить СтрНачинаетсяС СтрЗаканчиваетсяНа Строка Вопрос Число ВРег НРег КодСимвола Символ ТекущийКаталог ФайлСуществует ЗакрытьФайл СтрНайти ТекущаяДата ДобавитьМесяц ДеньНедели ДеньГода НеделяГода Год Месяц День Дата Час Минута Секунда НачалоГода НачалоКвартала НачалоМесяца НачалоНедели НачалоДня НачалоЧаса НачалоМинуты КонецГода КонецКвартала КонецМесяца КонецНедели КонецДня КонецЧаса КонецМинуты ВвестиЗначение Цел Окр

4-ая группа — это операторы, которые не имеют аналогов в 1С. Пояснения по данным операторам см.в руководстве «РусскийФокс»

НАБОР_УСЛОВИЙ ЛПЕРЕМ ПАРАМЕТРЫ ЛОЖЬ ИСТИНА ОПИСАНИЕ_МАССИВА КАК ЗАЩИЩЕННОЕ_СВОЙСТВО ОПРЕДЕЛИТЬ_ОБЪЕКТ ЭТОТ_ОБЪЕКТ КОНЕЦ_ОПРЕДЕЛЕНИЯ_ОБЪЕКТА БАЗОВЫЙ_ОБЪЕКТ _ПРИ_ПОЛУЧЕНИИ_ЗНАЧЕНИЯ_СВОЙСТВА _ПРИ_ИЗМЕНЕНИИ_ЗНАЧЕНИЯ_СВОЙСТВА КОНСТАНТА ОТМЕНИТЬ_КОНСТАНТУ МЕТОД_РОДИТЕЛЯ СКРЫТОЕ_СВОЙСТВО ПРИ_ИНИЦИАЛИЗАЦИИ_ОБЪЕКТА ПРИ_УДАЛЕНИИ_ОБЪЕКТА

5-ая и 6-ая группа — это функции, которые не имеют аналогов в 1С. Пояснения по данным операторам см.в руководстве «РусскийФокс»

ОбратнаяСтрока СтрокуМеждуРазделителями СтрЧислоВхождений СравнитьСтрокуПоМаске ОткрытьФайлДляЧтения ЧитатьСтрокуИзФайла ВернутьКоличествоДнейВМесяце НазваниеМесяца СтрокаЗаПериод ПолучитьТекущуюРазрядностьЧисел УстановитьРазрядностьЧисел ГрадРад РадГрад Тангенс Арктангенс Арксинус Синус Косинус Арккосинус Экспонента ЧислоПи ПсевдоСлучайноеЧисло КоличествоВМассиве КоличествоСтрокВМассиве КоличествоКолонокВМассиве ВставитьСтрокуВМассив СодержимоеМассиваВСтроку СортироватьМассив УдалитьСтрокуИзМассива ВыборИзМассива СписокФайловВМассив НовыйМассив

НовыйОбъект УдалитьОбъект КонецФайла ПоследняяЗапись

На вкладке «Стандартный» можно настроить сворачивание строк, а так же указать расширение «rus», чтоб при открытии файлов с таким расширением подключался стиль «RusFox».

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

Множество более редких функций РусскийФокса содержатся в объектах, но этот список будет слишком обширным потому смотрите его в руководстве «РусскийФокс».

Методы работы с массивами в РусскомФоксе отличаются от 1С.

А теперь я расскажу, как создавать и наследовать объекты на языке программирования РусскийФокс.

Описание объекта начинается с оператора ОПРЕДЕЛИТЬ_ОБЪЕКТ, а заканчивается оператором КОНЕЦ_ОПРЕДЕЛЕНИЯ_ОБЪЕКТА

ОПРЕДЕЛИТЬ_ОБЪЕКТ Объект1 КАК БАЗОВЫЙ_ОБЪЕКТ

    ЗАЩИЩЕННОЕ_СВОЙСТВО Свойство2 // К этому совойству нельзя обратиться извне, но можно из потомков

    СКРЫТОЕ_СВОЙСТВО Свойство4 // К этому совойству нельзя обратиться извне и нельзя из потомков

Свойство1 = 'Любой текст'

Свойство2 = 2 // Это защищенное свойство

Свойство3 = 3

Свойство4 = 4 // Это скрытое свойство

 

ФУНКЦИЯ КтоЭто()

КОНЕЦФУНКЦИИ "Это Объект1"

 

ФУНКЦИЯ ПростаяФункцияОбъекта

КОНЕЦФУНКЦИИ 'Это простая функция'

 

ФУНКЦИЯ Свойство3_ПРИ_ПОЛУЧЕНИИ_ЗНАЧЕНИЯ_СВОЙСТВА

Сообщить('Это особая функция, которая вызывается, если вы пытаетесь получить значение свойства Свойство3')

ВОЗВРАТ ЭТОТ_ОБЪЕКТ.Свойство3 // вы можете не возвращать свойство и его значение извне нельзя будет получить

КОНЕЦФУНКЦИИ

 

ФУНКЦИЯ Свойство3_ПРИ_ИЗМЕНЕНИИ_ЗНАЧЕНИЯ_СВОЙСТВА(Значение)

Сообщить('Это особая функция, которая вызывается, если вы пытаетесь присвоить значение свойству Свойство3')

ЭТОТ_ОБЪЕКТ.Свойство3 = Значение // Вы можете не присваивать, тогда изменить свойство извне будет невозможно

КОНЕЦФУНКЦИИ

 

ФУНКЦИЯ ИзменитьСвойство2(Значение)

ЭТОТ_ОБЪЕКТ.Свойство2 = Значение

КОНЕЦФУНКЦИИ

 

ФУНКЦИЯ ПрочитатьСвойство2

КОНЕЦФУНКЦИИ ЭТОТ_ОБЪЕКТ.Свойство2

КОНЕЦ_ОПРЕДЕЛЕНИЯ_ОБЪЕКТА

Оператор ЗАЩИЩЕННОЕ_СВОЙСТВО запрещает доступ и изменение перечисленных после него свойств за пределами класса, сам класс и потомки доступ имеют.

Оператор СКРЫТОЕ_СВОЙСТВО запрещает доступ вне класса даже потомкам.

Оператор _ПРИ_ПОЛУЧЕНИИ_ЗНАЧЕНИЯ_СВОЙСТВА вынуждает вызывать данную функцию для свойства, которое названо вначале названия функции (в данном случае Свойство3). Когда кто-то извне пытается прочитать значение свойства, будет вызвана данная функция.

Оператор _ПРИ_ИЗМЕНЕНИИ_ЗНАЧЕНИЯ_СВОЙСТВА вынуждает вызывать данную функцию для свойства, если кто-то извне пытается записать значение в свойство.

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

Создадим потомка объекта «Объект1»

ОПРЕДЕЛИТЬ_ОБЪЕКТ Объект2 КАК Объект1

ФУНКЦИЯ ПРИ_ИНИЦИАЛИЗАЦИИ_ОБЪЕКТА()

Сообщить("При создании объекта вызывается данная функция")

КОНЕЦФУНКЦИИ

ФУНКЦИЯ КтоЭто()

КОНЕЦФУНКЦИИ "Это Объект2, который создан от "+МЕТОД_РОДИТЕЛЯ()

ФУНКЦИЯ ПРИ_УДАЛЕНИИ_ОБЪЕКТА()

Сообщить("При удалении объекта вызывается данная функция")

КОНЕЦФУНКЦИИ

КОНЕЦ_ОПРЕДЕЛЕНИЯ_ОБЪЕКТА

В объекте потомке мы переопределили метод КтоЭто(), но внутри его вызвали метод родителя оператором МЕТОД_РОДИТЕЛЯ()

В объекте потомке мы создали функцию ПРИ_ИНИЦИАЛИЗАЦИИ_ОБЪЕКТА(), которая будет вызываться всякий раз при создании объекта2. Еще мы создали функцию ПРИ_УДАЛЕНИИ_ОБЪЕКТА(), которая будет вызываться при удалении объекта.

Возможно, когда в 1С или в 1Script можно будет создавать объекты, то разработчики воспользуются моим синтаксисом, чтоб мне не переписывать свой синтаксис под них ;-)

РусскийФокс FoxPro ООП

См. также

Как вызвать скрипты на python в 1С по технологии NativeAPI

Языки и среды Платформа 1С v8.3 Бесплатно (free)

Будем писать свои скрипты на питоне и запускать их на 1С.

15.04.2024    1283    YA_418728146    11    

48

Зачем нам 1С:Элемент

Мобильная разработка Языки и среды Бесплатно (free)

Flutter может быть использован с 1С:Предприятием для разработки кроссплатформенных мобильных приложений, обеспечивая единый интерфейс и функциональность на устройствах под управлением iOS и Android. Это позволяет создавать приложения с высокой производительностью благодаря использованию собственного движка рендеринга Flutter. Интеграция Flutter с 1С:Предприятием позволяет создавать мобильные приложения любого уровня сложности, интегрировать их в корпоративные информационные системы, а также реализовывать бизнес-логику

19.03.2024    9313    ROk_dev    67    

41

(Не) Строгая типизация 1С

Языки и среды Платформа 1С v8.3 Бесплатно (free)

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

16.01.2024    4549    SeiOkami    21    

55

Простое приложение на Dart

Языки и среды Бесплатно (free)

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

08.08.2023    3346    acvatoris    6    

14

Статический анализатор кода 1С на Си

Языки и среды Платформа 1С v8.3 Россия Бесплатно (free)

Написание статического анализатора для 1С традиционным способом на Си.

30.06.2023    3044    prohorp    15    

12

Сквозная задача на Исполнителе - часть первая (IMAP)

Языки и среды Абонемент ($m)

Поставили нам задачу - вынести на отдельный сервер функционал получения заказов от клиентов по электронной почте, парсинг полученных XLS в приемлемый вид и трансформация заказов в красивый JSON, понятный нашей учетной системе на 1С. Всю эту красоту желательно запустить в отдельном докер - контейнере, по возможности не тратя лицензии, поэтому отдельно стоящую конфигурацию на БСП отвергаем сразу. Можно было бы собрать всё на Apache Airflow или Apache NiFi, но решили попробовать реализовать всю логику без Open Source, будем делать свой ETL, с Исполнителем, который в версии 3.0 научился взаимодействовать с электронной почтой по IMAP. Начнем с середины - сначала напишем скрипты, а потом соберем их в рабочую конструкцию

1 стартмани

01.06.2023    1940    0    kembrik    2    

7

1С# - Расширяем код 1С кодом на C#

Языки и среды Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Вставки кода на C# внутри кода на 1С.

7 стартмани

07.04.2023    9452    4    SerVer1C    56    

43

Независимая разработка совместимых компонент на ORM 1С – миф или истина где-то в аннотациях Java?

Языки и среды Платформа 1С v8.3 Бесплатно (free)

При работе с 1С ORM (object relation mapping) все время преследует ощущение постоянного создания монолитного приложения — один раз привязался к какой либо сущности (например, справочник Контрагенты), и весь код заполнен ссылками на эту конкретную реализацию. Можно ли независимо разрабатывать в ORM совместимые между собой справочник «Контрагентов» и использующий его документ «Платежное поручение», но при этом избежать жестких зависимостей? Спасут ли нас микросервисы? Пример на аннотациях Java демонстрирует, как это возможно делать.

13.03.2023    1066    1CUnlimited    0    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Timur.V 78 06.07.18 11:29 Сейчас в теме
Интересно, легко ли будет найти работу школьнику, программирующем на этом языке?
+
2. andreosh 103 06.07.18 13:00 Сейчас в теме
Это же 1С-подобный язык. Научившись программировать на Русском Фоксе, он легко перейдет на 1С. Но реально это будет самый удобный язык для системных админов, так как будут реализован язык командной строки Windows. Он станет русскоязычным ООП языком программирования подобием Ruby. https://ru.wikipedia.org/wiki/Ruby
cleaner_it; +1
7. blackhole321 1305 06.07.18 18:32 Сейчас в теме
(2)
о же 1С-подобный язык. Научившись программировать на Русском Фоксе, он легко перейдет на 1С. Но реально это будет самый удобный язык для системных админов, так как будут реализован язык командной строки Windows. Он станет русскоязычным ООП языком программирования подобием Ruby.

А язык PowerShell он будет реализовывать для тех админов, кто не осилил 1С?
+
8. andreosh 103 07.07.18 11:14 Сейчас в теме
PowerShell так же удобнее осваивать на русском языке. Пишешь на русском, а РусскийФокс запускает команды PowerShell и получает результаты.
+
9. nomadon 367 08.07.18 15:04 Сейчас в теме
(2) «так как будут реализован язык командной строки Windows» сколько видел админов - в винде gui в nix bash, это всеравно что сишника заставить именовать переменные по-русски
+
10. andreosh 103 08.07.18 15:36 Сейчас в теме
Я так же не пользовался русским языком, пока не начал программировать на 1С. Сначала казалось неудобно, а потом заметил, что гораздо комфортней и запоминается лучше.
Steelvan; +1
3. acsent 1200 06.07.18 13:15 Сейчас в теме
есть же 1сскрипт. В чем преимущество этого?
+
4. andreosh 103 06.07.18 13:30 Сейчас в теме
Хотя бы тем, что РусскийФокс реально ООП, а OneScript можно создавать только подобие объектов по технологии, которую я придумал см.мою статью "Как сделать OneScript ООП" К тому же в Русском Фоксе будут экранные формы со всеми элементами, включая объект Grid. А его недостаток в том, что он будет работать только под Windows. К тому же Русский Фокс, как и FoxPro реальный интерпретатор, способный выполнять куски собственного кода сгенерированного программно. Русский Фокс с DLL-файлами занимает всего около 15Мб и его не надо инсталлировать.
cleaner_it; +1
5. starik-2005 3036 06.07.18 13:56 Сейчас в теме
(4)
Русский Фокс с DLL-файлами занимает всего около 15Мб и его не надо инсталлировать.
А с .so он сколько занимает?
+
6. andreosh 103 06.07.18 14:39 Сейчас в теме
Все что надо для работы Русского Фокса + примеры и Руководство находится в архиве 5.5 Мб в закачке прилагаемой к данной статье
+
11. artbear 1522 17.07.18 10:20 Сейчас в теме
(4) я сам любитель ООП, но в OneScript отличная объектная модель, и не особо нужен весь набор ООП. часто хватает и "утиного" интерфейса.
В итоге превосходно обходимся без чистого ООП.
+
12. andreosh 103 17.07.18 11:33 Сейчас в теме
Подобие ООП можно использовать и в OneScript. Я писал статью по данной теме (см.мои статьи на ИнфоСтарте) и создавал библиотеку UfaScript для OneScript, но в onescript проблема с интерфейсом и в целом работать сложнее (уровень должен быть выше, чем для работы с РускийФокс). Для простых программ можно обходится без ООП, а для создания крупных проектов без ООП сложно. Это особенно хорошо видно по исходникам 1С, проект БСП. Они создают портянки взаимопересекающегося кода, потому что нет возможности создавать объекты.
+
Оставьте свое сообщение