Как выровнять код в 1с

Обновлено: 07.07.2024

Пример 1. Создадим числовую переменную

Преобразование значений другого типа в число

Преобразовать в число можно значения строкового типа, либо логического типа (Булево). Значение типа Булево преобразуется в число по следующим правилам:

  • Ложь преобразуется в 0;
  • Истина преобразуется в 1.

Значение типа Строка преобразуется в число в том случае, если оно является строковым представлением литерала численного типа.

После выполнения данного кода в переменной ПолученноеЧисло будет содержаться числовое значение 1.25

Функции работы со значениями типа Число в 1с 8.3

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

Цел(<Число>). Возвращает целую часть числа переданного в параметре.

Пример 4. Определить делится ли число 121 на 11.

Окр(<Число>, <Разрядность>, <РежимОкругления>). Функция округляет число, переданное в первом параметре, до знака после запятой переданного во втором параметре. Значение разрядности может быть и нулевым (округление до целого) и отрицательным (округление до соответствующего разряда целой части). Параметр РежимОкругления может принимать значения:

  • 0 (или РежимОкругления.Окр15как10). Округляет в меньшую сторону, то есть при округлении 1.5 будет возвращено 1;
  • 1 (или РежимОкругления.Окр15как20). Округляет в большую сторону, то есть при округлении 1.5 будет возвращено 2;

Пример 5. Для того чтобы лучше разобраться с принципами округления рассмотрим округление до целого в меньшую и большую стороны, на ряде чисел от 1.1 до 1.9

Pow(<Основание>, <Показатель>). Возводит число переданное в первом параметре в степень переданную во втором параметре.

Пример 6. Извлечь квадратный корень из числа 144, а затем возвести его в квадрат, в итоге снова должно получится число 144.

Форматирование (выравнивание) кода 1С 8. Навигация по тексту модуля.

1. Выравнивает выделенный текст по знакам "="
2. Выравнивает выделенный текст по инструкции " КАК " (в тексте запроса).
3. Поиск (фильтр при наборе) по тексту модуля.

Программа висит в памяти и по нажатию комбинации клавиш ALT-F12 вы равнивает выделенный блок текста.

Не происходит выравнивания операторов, аналогичного типовому форматированию, т.е. обработку нужно использовать только в дополнении к основному форматированию.

Для работы необходимо зарегистрировать svcsvc.dll (Набрать в командной строке "regsvr32 svcsvc.dll ") ( svcsvc.dll прилагается).

1. Быстрый поиск объектов в дереве метаданных.

Принимаются заявки на разработку нового функционала !

P.S. Просьба по возможности не применять вне окна кода 1С. Возможны непредвиденные последствия .

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Знак "равно" в первой строке блока размещает на один символ дальше, чем в остальных. А так - плюс, мне пригодится!
Все, догнал. Если перед первой строкой есть табуляция, то нужно выделять прям с самого начала строки вместе с ней - тогда нормально. "Плюс" конечно.Вот еще бы циклы и условия выравнивать. ;)

"Плюс" конечно.Вот еще бы циклы и условия выравнивать.

Вроде их 1С сама выравнивает.

Здорово. Еще бы и "структуру" вырвнивала бы:
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата",_______Дата);
ПараметрыЗаполнения.Вставить("Деталь",_____Деталь);
ПараметрыЗаполнения.Вставить("Количество",_Количество);
ПараметрыЗаполнения.Вставить("Автор",______глТекущийПользователь);

В работающем коде конечно место _ стоят пробелы.

IDija пишет:
"Плюс" конечно.Вот еще бы циклы и условия выравнивать

А чем не нравиться Alt+Shift+F ?

+
Добавить форматирование в запросы
поле________КАК
ваолоыпрлва_КАК
алвыодао____КАК
лываж_______КАК

Это - оооочень бета версия. То, что закрылась именно успешно, уже прогресс . :)

Это уже обновленная закрылась ?

(9) Из 4-х попыток выравнивания кода запроса - 4 раза вылетела по ошибке, трижды сообщила, что "Не удалось создать компонент ActiveX", один - "Программа выполнила недопустиую операцию. "

(9) Из 4-х попыток выравнивания кода запроса - 4 раза вылетела по ошибке, трижды сообщила, что "Не удалось создать компонент ActiveX", один - "Программа выполнила недопустиую операцию. "

Не удалось создать компонент ActiveX - в описании сказано: "Зарегистрировать svcsvc.dll"

(11) Значит плохо читал - извиняй. :D Я все больше как-то по первой версии ориентировался. (0) Ты знаешь, зарегил я библиотеку, тока видно это действительно пока очень уж бета. При форматировании блока с равенствами из 4 попыток, отформатировала только один раз нормально и то со сдвигом первой строки на лишний пробел. В других случаях, прога делала вообще непонятно что: то удаляла блок вообще, то вытягивала его в одну строку с удалением знаков равенства. Если не трудно, положи первую версию вторым файлом - она как-то постабильнее будет. Вроде работает =) Спасибо, +! Выравнивание различных структур языка не помешало бы.

Ждем более стабильную версию.
А идея очень нужная, полезная и т-д.

Вот бы еще автор подключил бы туда работу с регулярными выражениями - поиск, замену.

И пополняемый список правил, на основе этих же самых регулярных выражений,
тогда сама разработка утилиты была бы отдельно, а правила - отдельно,
и было бы удобней в том плане что стабильную версию самой обработки мог бы автор делать, сосредоточившись только на этом,
а правила выравнивания - все совместно и лучшие (или каждому кажущиеся полезные) включать к себе в файл настроек.

И с регулярными выражениями, можно еще много всяких фичь добавлять.

Ждем более стабильную версию.

А идея очень нужная, полезная и т-д.

Вот бы еще автор подключил бы туда работу с регулярными выражениями - поиск, замену.

И пополняемый список правил, на основе этих же самых регулярных выражений,

тогда сама разработка утилиты была бы отдельно, а правила - отдельно,

и было бы удобней в том плане что стабильную версию самой обработки мог бы автор делать, сосредоточившись только на этом,

а правила выравнивания - все совместно и лучшие (или каждому кажущиеся полезные) включать к себе в файл настроек.

И с регулярными выражениями, можно еще много всяких фичь добавлять.

(0) Ты знаешь, зарегил я библиотеку, тока видно это действительно пока очень уж бета. При форматировании блока с равенствами из 4 попыток, отформатировала только один раз нормально и то со сдвигом первой строки на лишний пробел. В других случаях, прога делала вообще непонятно что: то удаляла блок вообще, то вытягивала его в одну строку с удалением знаков равенства. Если не трудно, положи первую версию вторым файлом - она как-то постабильнее будет.


Можт быть проблема в паузе между сендкеями на медленных машинах. Сей прикручу настройку пауз - может быть поможет. (18) Вряд ли, у меня с машиной все в порядке. Ну давай попробуем. antonrost пишет:
Приведи парочку примеров - попробую прикрутить.

alex_4x пишет:
REGEXP Википедия smile;-)

Здесь же, на Инфостарте про regexp

Я имел ввиду примеры применения для 1С. Не КАК делать, а ЧТО делать.

Вот здесь Автор использует регулярные выражения для выделения лексем языка.
Конечная цель у него отличная от твоей, но принцип выделения лексем - одинаков.

например ты собираешь все лексемы содержащие Переменная = Значение;
Выравнивать по Началу первой лексемы, знака " clear">

alex_4x пишет:
Вот здесь Автор использует регулярные выражения для выделения лексем языка. Конечная цель у него отличная от твоей, но принцип выделения лексем - одинаков.

например ты собираешь все лексемы содержащие Переменная = Значение; Выравнивать по Началу первой лексемы, знака " clear">

Да, странное форматирование :(
Взял одну процедуру, весь ее текст прижал к левому краю, далее Альт+Ф12 и Форматировать блок.
Результат повеселил :( -
1. у комментария // появился/вставился лишний пробел / / :(
2. текст внутри строк выровнялся по знакам равно, т.е все что справа от знака равно, на одной колонке, но левая-то осталась как есть, прижатой влево :(
ИМХО в описании нужно специальным образом указать, что не происходит выравнивания операторов, аналогичного типовому форматированию, т.е. обработку нужно использовать только в дополнении к основному форматирования или для небольших блоков кода.

Вопрос - как смог получить только выделенный текст в окне 1С?
Используешь посылку символов для работы через буфер обмена или другим способом?
Поделишься? очень нужно!

Форматирование (выравнивание) кода 1С 8. Навигация по тексту модуля.

1. Выравнивает выделенный текст по знакам " КАК " (в тексте запроса).
3. Поиск (фильтр при наборе) по тексту модуля.

Знак "равно" в первой строке блока размещает на один символ дальше, чем в остальных. А так - плюс, мне пригодится!
Все, догнал. Если перед первой строкой есть табуляция, то нужно выделять прям с самого начала строки вместе с ней - тогда нормально. "Плюс" конечно.Вот еще бы циклы и условия выравнивать. ;)

"Плюс" конечно.Вот еще бы циклы и условия выравнивать.

Вроде их 1С сама выравнивает.

Здорово. Еще бы и "структуру" вырвнивала бы:
ПараметрыЗаполнения = Новый Структура;
ПараметрыЗаполнения.Вставить("Дата",_______Дата);
ПараметрыЗаполнения.Вставить("Деталь",_____Деталь);
ПараметрыЗаполнения.Вставить("Количество",_Количество);
ПараметрыЗаполнения.Вставить("Автор",______глТекущийПользователь);

В работающем коде конечно место _ стоят пробелы.

IDija пишет:
"Плюс" конечно.Вот еще бы циклы и условия выравнивать

А чем не нравиться Alt+Shift+F ?

+
Добавить форматирование в запросы
поле________КАК
ваолоыпрлва_КАК
алвыодао____КАК
лываж_______КАК

Это - оооочень бета версия. То, что закрылась именно успешно, уже прогресс . :)

Это уже обновленная закрылась ?

(9) Из 4-х попыток выравнивания кода запроса - 4 раза вылетела по ошибке, трижды сообщила, что "Не удалось создать компонент ActiveX", один - "Программа выполнила недопустиую операцию. "

(9) Из 4-х попыток выравнивания кода запроса - 4 раза вылетела по ошибке, трижды сообщила, что "Не удалось создать компонент ActiveX", один - "Программа выполнила недопустиую операцию. "

Не удалось создать компонент ActiveX - в описании сказано: "Зарегистрировать svcsvc.dll"

(11) Значит плохо читал - извиняй. :D Я все больше как-то по первой версии ориентировался. (0) Ты знаешь, зарегил я библиотеку, тока видно это действительно пока очень уж бета. При форматировании блока с равенствами из 4 попыток, отформатировала только один раз нормально и то со сдвигом первой строки на лишний пробел. В других случаях, прога делала вообще непонятно что: то удаляла блок вообще, то вытягивала его в одну строку с удалением знаков равенства. Если не трудно, положи первую версию вторым файлом - она как-то постабильнее будет. Вроде работает =) Спасибо, +! Выравнивание различных структур языка не помешало бы.

Ждем более стабильную версию.
А идея очень нужная, полезная и т-д.

Вот бы еще автор подключил бы туда работу с регулярными выражениями - поиск, замену.

И пополняемый список правил, на основе этих же самых регулярных выражений,
тогда сама разработка утилиты была бы отдельно, а правила - отдельно,
и было бы удобней в том плане что стабильную версию самой обработки мог бы автор делать, сосредоточившись только на этом,
а правила выравнивания - все совместно и лучшие (или каждому кажущиеся полезные) включать к себе в файл настроек.

И с регулярными выражениями, можно еще много всяких фичь добавлять.

Ждем более стабильную версию.

А идея очень нужная, полезная и т-д.

Вот бы еще автор подключил бы туда работу с регулярными выражениями - поиск, замену.

И пополняемый список правил, на основе этих же самых регулярных выражений,

тогда сама разработка утилиты была бы отдельно, а правила - отдельно,

и было бы удобней в том плане что стабильную версию самой обработки мог бы автор делать, сосредоточившись только на этом,

а правила выравнивания - все совместно и лучшие (или каждому кажущиеся полезные) включать к себе в файл настроек.

И с регулярными выражениями, можно еще много всяких фичь добавлять.

(0) Ты знаешь, зарегил я библиотеку, тока видно это действительно пока очень уж бета. При форматировании блока с равенствами из 4 попыток, отформатировала только один раз нормально и то со сдвигом первой строки на лишний пробел. В других случаях, прога делала вообще непонятно что: то удаляла блок вообще, то вытягивала его в одну строку с удалением знаков равенства. Если не трудно, положи первую версию вторым файлом - она как-то постабильнее будет.


Можт быть проблема в паузе между сендкеями на медленных машинах. Сей прикручу настройку пауз - может быть поможет. (18) Вряд ли, у меня с машиной все в порядке. Ну давай попробуем. antonrost пишет:
Приведи парочку примеров - попробую прикрутить.

alex_4x пишет:
REGEXP Википедия smile;-)

Здесь же, на Инфостарте про regexp

Я имел ввиду примеры применения для 1С. Не КАК делать, а ЧТО делать.

Вот здесь Автор использует регулярные выражения для выделения лексем языка.
Конечная цель у него отличная от твоей, но принцип выделения лексем - одинаков.

например ты собираешь все лексемы содержащие Переменная = Значение;
Выравнивать по Началу первой лексемы, знака " clear">

alex_4x пишет:
Вот здесь Автор использует регулярные выражения для выделения лексем языка. Конечная цель у него отличная от твоей, но принцип выделения лексем - одинаков.

например ты собираешь все лексемы содержащие Переменная = Значение; Выравнивать по Началу первой лексемы, знака " clear">

Да, странное форматирование :(
Взял одну процедуру, весь ее текст прижал к левому краю, далее Альт+Ф12 и Форматировать блок.
Результат повеселил :( -
1. у комментария // появился/вставился лишний пробел / / :(
2. текст внутри строк выровнялся по знакам равно, т.е все что справа от знака равно, на одной колонке, но левая-то осталась как есть, прижатой влево :(
ИМХО в описании нужно специальным образом указать, что не происходит выравнивания операторов, аналогичного типовому форматированию, т.е. обработку нужно использовать только в дополнении к основному форматирования или для небольших блоков кода.

Вопрос - как смог получить только выделенный текст в окне 1С?
Используешь посылку символов для работы через буфер обмена или другим способом?
Поделишься? очень нужно!

Строки в 1С 8.3 во встроенном языке 1с представляют собой значения примитивного типа Строка. Значения данного типа содержат строку в формате Unicode произвольной длины. Переменные строкового типа являются набором символов заключенных в кавычки.

Пример 1. Создадим строковую переменную с текстом.

Функции работы со строками в 1с 8.3

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

СтрДлина

СтрДлина(<Строка>). Возвращает количество символов содержащихся в строке, переданной в параметре.

Итогом выполнения данного кода будет вывод на экран количества символов строки: 11.

СокрЛ

СокрЛ(<Строка>). Отсекает незначащие символы, стоящие слева от первого значащего символа в строке.
Незначащие символы:

  • пробел;
  • неразрывный пробел;
  • табуляция;
  • возврат каретки;
  • перевод строки;
  • перевод формы (страницы).

СокрП

СокрП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке.

СокрЛП

СокрЛП(<Строка>). Отсекает незначащие символы, стоящие справа от первого значащего символа в строке, также отсекает незначащие символы, стоящие слева от первого значащего символа в строке. Данная функция используется чаще предыдущих двух, так как она более универсальна.

Пример 5. Убрать незначащие символы стоящие слева и справа в наименовании контрагента.

Лев(<Строка>, <ЧислоСимволов>). Получает первые символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Пример 6. Пусть в структуре Сотрудник содержаться имя, фамилия и отчество сотрудника. Получить строку с фамилией и инициалами.

Прав(<Строка>, <ЧислоСимволов>). Получает последние символы строки, число символов указывается в параметре ЧислоСимволов. Если указанное количество символов превышает длину строки, то возвращается вся строка.

Сред(<Строка>, <НачальныйНомер>, <ЧислоСимволов>). Получает подстроку из строки переданной в параметре Строка, начиная с символа номер которого указан в параметре НачальныйНомер и длиной переданной в параметр ЧислоСимволов. Нумерация символов в строке начинается с 1. Если в параметре НачальныйНомер указано значение, меньшее или равное нулю, то параметр принимает значение 1. Если параметр ЧислоСимволов не указан, то выбираются символы до конца строки.

Пример 8. Пусть в строковой переменной начиная с девятой позиции содержится код региона, следует получить его и записать в отдельную строку.

СтрНайти

СтрНайти(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>). Осуществляет поиск указанной подстроки в строке, возвращает номер позиции первого символа найденной подстроки. Рассмотрим параметры данной функции:

  • Строка. Исходная строка;
  • ПодстрокаПоиска. Искомая подстрока;
  • НаправлениеПоиска. Указывает направление поиска подстроки в строке. Может принимать значения:
    • НаправлениеПоиска.СНачала;
    • НаправлениеПоиска.СКонца;

    ВРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к верхнему регистру.

    НРег(<Строка>). Преобразует все символы указанной строки в 1с 8 к нижнему регистру.

    ТРег(<Строка>). Преобразует строку следующим образом: первый символ каждого слова переводится в верхний регистр, остальные символы слова переводятся в нижний регистр.

    Символ

    Символ(<КодСимвола>). Получает символ по его коду в кодировке Unicod.

    КодСимвола

    КодСимвола(<Строка>, <НомерСимвола>). Получает код символа в кодировке Unicode из строки указанной в первом параметре, расположенного в позиции указанной во втором параметре.

    ПустаяСтрока

    ПустаяСтрока(<Строка>). Проверяет состоит ли строка только из незначащих символов, то есть является ли она пустой.

    Пример 15. Проверить является ли пустой строка состоящая из трех пробелов.

    СтрЗаменить

    СтрЗаменить(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>). Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.

    СтрЧислоСтрок

    СтрЧислоСтрок(<Строка>). Позволяет посчитать количество строк в многострочной строке. Для перехода на новую строку в 1с 8 используется символ ПС (символ перевода строки).

    Итогом выполнения данного кода будет вывод на экран количества строк в тексте: 3

    СтрПолучитьСтроку

    СтрПолучитьСтроку(<Строка>, <НомерСтроки>). Получает строку в многострочной строке по ее номеру. Нумерация строк начинается с 1.

    СтрЧислоВхождений

    СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>). Возвращает число вхождений указанной подстроки в строку. Функция чувствительна к регистру.

    Итогом выполнения данного кода будет вывод на экран числа вхождений: 2.

    СтрНачинаетсяС

    СтрНачинаетсяС(<Строка>, <СтрокаПоиска>). Проверяет начинается ли строка переданная в первом параметре, со строки во втором параметре.

    Пример 20. Определить начинается ли ИНН выбранного контрагента с цифры 1. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.

    СтрЗаканчиваетсяНа

    СтрЗаканчиваетсяНа(<Строка>, <СтрокаПоиска>). Проверяет заканчивается ли строка переданная в первом параметре, на строку во втором параметре.

    Пример 21. Определить заканчивается ли ИНН выбранного контрагента на цифру 2. Пусть в переменной Контрагент хранится ссылка на элемент справочника Контрагенты.

    СтрРазделить

    СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>). Разделяет строку на части по указанным символам-разделителям и записывает полученные строки в массив. В первом параметре хранится исходная строка, во втором строка содержащая разделитель, в третьем указывается, нужно ли записывать в массив пустые строки (по умолчанию Истина).

    В результате выполнения будет получен массив с числами от 1 до 3-х.

    СтрСоединить

    СтрСоединить(<Строки>, <Разделитель>). Преобразует массив строк из первого параметра в строку, содержащую все элементы массива через разделитель, указанный во втором параметре.

    Пример 23. Используя массив чисел из предыдущего примера, получить исходную строку.

    Прочитайте статью про работу с числами: Число в 1С 8.3 — функции работы с числами

    Читайте также: