В данной статье кратко затрону сразу несколько тем по языку программирования РусскийФокс. Более подробно можно почитать в руководстве по РусскийФокс и попробывать примеры во вложении к данной статье. Особо интересно будет почитать про создание объектов в РусскийФокс, так как я декларирую РусскийФокс, как пока единственный русскоязычный объектно-ориентированный язык программирования.
Желающие ускорить разработку могут проголосовать за мой доклад о РусскомФоксе 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 можно будет создавать объекты, то разработчики воспользуются моим синтаксисом, чтоб мне не переписывать свой синтаксис под них ;-)