Функция 1: Описание процедур и функций (Раздел обновлен!) – Функции 1С и процедуры 1С

Содержание

функции и процедуры в 1С часть 1

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

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

Внутренний язык программирования 1С 8.3 для начинающих программистов: функции и процедуры в 1С часть 1

Автор уроков и преподаватель школы: Владимир Милькин

Сегодня мы приступаем к изучению того, без чего не может обойтись ни одна более менее серьезная программа — функций и процедур.

Функции и процедуры в языке 1С 8.3

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

Пусть нам требуется написать программу, которая вычисляет произведение суммы и разности двух введенных чисел. Выглядеть она будет так:

А = 0;
ВвестиЧисло(А);
Б = 0;
ВвестиЧисло(Б);
Результат = (А + Б) * (А - Б);
ОткрытьЗначение(Результат);

В данном случае формула вычисления результата достаточно проста, но она могла бы быть гораздо сложнее. А что если нам нужно вычислять её не один раз, а несколько? Причем в разных местах программы.

Неужели нам снова и снова придётся писать код для её вычисления:

Результат = (А + Б) * (А - Б);

Это никуда не годится. Нам придётся повторять один и тот же код, что приведёт к раздутости программы. И кроме того, переписывая его очередной раз мы можем допустить ошибку по невнимательности.

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

Пусть этим именем будет ПроизведениеСуммыИРазности.

Получается теперь мы можем написать:

Результат = ПроизведениеСуммыИРазности;

И всё? Нет, конечно! Ведь непонятно произведение суммы и разности каких именно чисел нужно считать. Гораздо лучше будет передать эти числа нашему имени в качестве параметров, как мы обычно делаем при вызове команды:

Результат = ПроизведениеСуммыИРазности(А, Б);

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

Давайте, наконец, определим нашу функцию, чтобы компьютер, встретив её вызов, не растерялся, а выполнил то, что мы хотим:

Функция ПроизведениеСуммыИРазности(А, Б)
    Результат = (А + Б) * (А - Б);
    Возврат Результат;
КонецФункции

Что включает в себя определение этой функции?

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

Затем следуют имена параметров, заключенные в круглые скобки. Параметры — это данные, которые мы передадим в нашу функцию при её вызове. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Она с ними что-то сделает и возвратит результат. Каждый параметр имеет своё имя, которое мы также придумываем сами. Это имя можно использовать только внутри функции.

Дальше идёт тело. Это команды компьютеру, которые будут выполняться в тот момент, когда мы сделаем вызов нашей функции. Тело заканчивается ключевым словом КонецФункции.

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

Возврат Результат;

Где вместо Результат может быть любое выражение, которое вернётся из функции в качестве её результата.

Мы можем вызывать функцию столько раз в программе сколько нам потребуется.

цепочка-вызовов-2

определение и вызов функции

Процедуры это те же самые функции, но они не возвращают результат и объявляются при помощи других ключевых слов: Процедура и КонецПроцедуры.

определение процедуры

вызов процедуры

цепочка-вызовов

Но функции и процедуры не следует писать лишь бы где! Для определения наших функций мы будем использовать новый модуль. Чтобы его добавить следуйте инструкциям ниже.

1. Раскройте список «Общие» в дереве конфигурации.

цепочка-вызовов

2. Найдите в нём пункт «Общие модули» и нажмите на нём правой кнопкой мыши. Выберите «Добавить».

Написание процедур 02

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

Написание процедур 02

 Внимание! Пожалуйста, ещё раз убедитесь, что вы поставили галки (Клиент, Сервер, Внешнее соединение) также, как на рисунке выше. 

4. Перейдите в этот модуль. Всё! Здесь можно писать наши функции и процедуры. Напишите процедуру с именем Привет, без параметров, после вызова которой компьютер просто здоровается с нами.

Написание процедур 04

Обратите внимание на ключевое слово Экспорт, которое идёт следом за круглыми скобками. Его наличие обязательно, так как мы определяем функцию в одном модуле (Уроки), а использовать будем совсем в другом (модуль управляемого приложения).

5. Теперь вернитесь в модуль управляемого приложения.

Написание процедур 05

6. И сделайте вызов нашей процедуры. Так как она находится в другом модуле к её имени добавляется «

Уроки.«.

Написание процедур 06

7. Запустите 1С и убедитесь, что всё работает!

Написание процедур 07

Пройдите тестирование

Процедуры и функции – Проект ‘Курсы 1С’

О чем эта статья

Эта статья продолжает цикл статей «Первые шаги в разработке на 1С». В ней будут рассмотрены следующие вопросы:

  • Что такое процедуры и функции и когда их нужно использовать?
  • В чем отличие процедуры от функции?
  • Что такое параметр процедуры (функции) и как его передать?
  • В каком случае передавать параметр по ссылке, а в каком по значению?
  • Как быстро посмотреть список процедур текущего модуля?
Применимость

Материал полностью актуален для платформы «1С:Предприятие 8» редакций 8.2. и 8.3.

Процедуры и функции

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

При этом мы избавляемся от дублирования кода, заменив его вызовом процедуры (функции). Если возникает потребность внести изменения в алгоритм, то эти изменения будет достаточно внести в одном месте.

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

В итоге облегчается сопровождение прикладного решения.

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

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

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

Процедура, в отличии от функции, не может иметь возвращаемое значение. Она просто вызывается и выполняет какие-то действия.

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

Процедура или функция начинает описываться со слова Процедура (Функция). Далее следует Имя процедуры (функции). После имени обязательно указываются круглые скобки. Внутри скобок могут находиться описываемые параметры.

Данные параметры нужно будет передавать при вызове (при обращении к процедуре). После круглых скобок может стоять слово Экспорт (экспортная функция).

Потом следует тело процедуры (функции), т.е. последовательность из любого количества операторов.

В теле могут находиться вызовы других процедур и функций данного модуля или других модулей, которые доступны из текущего программного модуля. Обязательным является наличие заключительного слова КонецПроцедуры (КонецФункции).

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

Однако со временем эта процедура (функция) в результате действий программиста может стать не последней, и тогда будет выдаваться сообщение об ошибке. Примерный вид процедуры и функции представлен на рисунке.

Описание процедур и функций

Параметры, переданные в процедуру (функцию) при ее вызове, могут быть использованы при формировании возвращаемого результата функцией или при выборе используемого алгоритма в процедуре.

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

В том случае, если при вызове процедуры (функции) значение параметра будет не задано, то оно примет значение, используемое по умолчанию.

Таким образом, параметры, для которых указано значение по умолчанию, являются необязательными для указания при вызове. В описании процедуры(функции) вначале следуют обязательные параметры, а потом необязательные.

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

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

Т.е. при вызове процедуры (функции) мы передавали параметр с одним значением, а после отработки вызываемой процедуры (функции) значение параметра изменилось.

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

В этом случае вызывается новая область памяти, отличная от предыдущей, и меняется именно она. Исходное значение параметра не меняется.

По умолчанию все параметры передаются по ссылке. Чтобы передать параметр по значению, в описании процедуры перед параметром нужно поставить ключевое слово Знач.

Следует сказать, что в некоторые процедуры-обработчики передается такой параметр, как Отказ. Значение данного параметра по умолчанию – Ложь.

Если в теле процедуры-обработчика установить данному параметру значение Истина, то процедура не отработает.

Порядок следования процедур и функций в модуле 1С:Предприятие 8 значения не имеет. Из любой процедуры (функции) модуля можно вызывать любую другую процедуру или функцию данного модуля.

Чтобы обратиться к списку процедур текущего модуля в панели конфигуратора можно нажать на кнопку в виде лупы с надписью «PROC» или использовать горячие клавиши (Ctrl+Alt+P).

Откроется диалоговое окно, в котором описаны функции F(x) и процедуры P( ). К ним возможно обращаться.

Список может быть отсортирован в алфавитном порядке (для этого устанавливается галочка «Сортировка»).

При снятой галочке процедуры и функции в списке размещены в соответствии с их следованием в модуле.

Список процедур в панели конфигуратора

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

Если в диалоговом окне «Процедуры и функции» выбрать процедуру и нажать на кнопку Перейти, то мы окажемся в начале выбранной процедуры (функции).

Справа от кнопки с надписью «PROC» располагается поле. В этом поле указано имя текущей процедуры (функции).

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

Список процедур в панели конфигуратора

PDF-версия статьи

Мы ведем группу ВКонтакте – http://vk.com/kursypo1c.

Если Вы еще не вступили в группу – сделайте это сейчас и в блоке ниже (на этой странице) появятся ссылка на скачивание материалов.


Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)
Ссылка доступна для зарегистрированных пользователей)

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

функции и процедуры в 1С часть 2

Внимание! Перед вами ознакомительная версия урока, материалы которого могут быть неполными.

Войдите на сайт как ученик

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

Внутренний язык программирования 1С 8.3 для начинающих программистов: функции и процедуры в 1С часть 2

Автор уроков и преподаватель школы: Владимир Милькин

На прошлом уроке мы начали знакомство с функциями и процедурами в языке 1С 8.3. Так как это действительно важная тема посвятим ей и это занятие.

Функции в 1С 8.3 — продолжение…

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

А функции — это способ группировки этих команд точно также как, например, папки на компьютере — способ группировки для файлов.

Ещё функцию можно рассматривать как чёрный ящик, внутри которого лежат какие-то команды для компьютера. Чёрный ящик имеет имя. И чтобы заставить компьютер выполнить команды из этого ящика нам нужно указать его имя, например, так:

Как видите, вызов «чёрного ящика» сам по себе является командой. При вызове чёрного ящика — выполнятся все команды, которые находятся внутри него.

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

Но чёрные ящики (функции) имеют такую особенность:

  1. Они могут содержать входные отверстия (одно или несколько) для того, чтобы мы в них могли что-то положить (параметры).
  2. И они обязательно содержат одно выходное отверстие, из которого мы сможем забрать результат работы ящика.
  3. Ящик-функция просто обязан вернуть нам хотя бы какой-то результат в выходное отверстие.

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

  1. Придумываем имя для этого ящика — «СуммаЧисел«.
  2. Придумываем имена для входных отверстий этого ящика (параметров). Их два (числа), поэтому пусть будет — «ЧислоА» и «ЧислоБ«.
  3. Пишем объявление самого ящика (функции):
    Функция СуммаЧисел(ЧислоА, ЧислоБ)
    КонецФункции
  4. Теперь нам осталось поместить внутри ящика команды, которые посчитают сумму входных параметров (ЧислоА и ЧислоБ) и вернут их в выходное отверстие (команда Возврат):
    Функция СуммаЧисел(ЧислоА, ЧислоБ)
        Результат = ЧислоА + ЧислоБ;
        Возврат Результат;
    КонецФункции
  5. Отлично! Теперь мы можем использовать этот чёрный ящик в своей работе. Вызывается он так:
    ЧислоС = СуммаЧисел(10, 25);
    Сообщить(ЧислоС); // выведет 35

    Обращаю ваше внимание, что при вызове мы указали имя ящика (СуммаЧисел), а затем его входные параметры в круглых скобках. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Ящик выполнил свою работу и вернул результат в переменную ЧислоС, значение которой мы вывели командой Сообщить.

А вот как выглядит ящик, который принимает всего одно число и возвращает квадрат этого числа:

Функция КвадратЧисла(ЧислоА)
    Результат = ЧислоА * ЧислоА;
    Возврат Результат;
КонецФункции

Вызывается он так:

Сообщить(КвадратЧисла(10)); // выведет 100

Функции (ящики) могут принимать и один, и два и три и гораздо больше входных параметров. А могут и совсем не принимать.

Для примера давайте напишем функцию, которая всегда возвращает в качестве результата работы строку «Привет»:

Функция Привет()
    Возврат "Привет";
КонецФункции

Так как функция (ящик) совсем не содержит входных параметров (отверстий), то внутри круглых скобок при вызове писать ничего не нужно:

Строка = Привет();
Сообщить(Строка);

Процедуры в языке 1С 8.3 — продолжение …

С функциями более менее должно быть понятно теперь думаю всем. А что же такое процедуры? Да те же чёрные ящики:

  1. И входные отверстия (параметры) у них имеются.
  2. И команды они в себе также могут содержать.
  3. И другие ящики они также в себя могут включать.

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

Таким образом, если нам нужно объединить группу команд, которая что-то сделает и вернёт нам результат (например, сумму чисел), то используем функции.

А если обратного результата не будет — то процедуры. Процедуры являются как бы укороченными функциями. Более простыми. Они могут принимать входные параметры и что-то с ними делать, но они не возвращают нам обратный результат после своей работы. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.

Давайте в качестве примера напишем такой ящик-процедуру, который будет принимать на вход число и, если это число больше или равно нулю, то прямо внутри ящика будет выводится сообщение «положительное число», иначе «отрицательное число».

  1. Определим имя нашего ящика — «ОписаниеЧисла».
  2. Определим имя входного параметра — «ЧислоА«;
  3. Определим описание нашего ящика:
    Процедура ОписаниеЧисла(ЧислоА)
    КонецПроцедуры
  4. Теперь поместим внутрь ящика команды, которые выведут описание числа, в зависимости от его знака:
    Процедура ОписаниеЧисла(ЧислоА)
        Если ЧислоА >= 0 Тогда
            Сообщить("положительное число");
        Иначе
            Сообщить("отрицательное число");
        КонецЕсли;
    КонецПроцедуры
  5. А вызывать наш ящик будем так:
    ОписаниеЧисла(-3);

Выполните тест по следующему примеру

Процедура Привет(Число)
    Сообщить("Привет!");
    Сообщить("Я процедура и меня только что вызвали.");
    Сообщить("У меня всего один параметр и его имя Число.");
    Сообщить("При моём вызове его значение указали равным " + Число);
КонецПроцедуры

Оператор Функция — 1С 7.7

Описывает функцию для повторного использования

Синтаксис

Описание функции во встроенном языке 1С:Предприятие 7.7 имеет следующий синтаксис:

Функция ИмяФункции([[Знач]Параметр1[ = ЗначениеПоУмолчанию],...,[Знач]ПараметрN[ = ЗначениеПоУмолчанию]])[Экспорт][Далее]
    //блок описания локальных переменных функции
    //блок операторов функции
    [Возврат Значение;]
КонецФункции

А также альтернативный англоязычный синтаксис:

Function FinctionName([[Val]Attr1[ = DefaultValue],...,[Val]AttrN[ = DefaultValue]])[Export][Forward]
    //local variables definition
    //function operators
    [Return Value;]
EndFunction

Описание

Конструкция Функция...КонецФункции позволяет разработчику определить собственный исполняемый оператор, возвращающий результат вычисления в точку вызова. Определение функции начинается с ключевого слова Функция и заканчивается ключевым словом КонецФункции. За ключевым словом Функция обязательно следует идентификатор функции и блок определения формальных параметров. Описывать параметры функции вовсе не обязательно. Обязательно лишь указать обязательный атрибут функции — круглые скобки.

Ключевое слово Экспорт используется в глобальном модуле для расширения области видимости функции. Функция, определенная как экспортная, будет доступна в любом другом программном модуле конфигурации.

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

Сразу за блоком формальных параметров и до ключевого слова КонецФункции располагается тело функции — объявления локальных переменных функции и последовательность исполняемых операторов. Переменные можно объявлять до первого исполняемого оператора. В случае нарушения этого требования, синтаксический анализатор выдаст ошибку: «Объявления переменных должны быть расположены в начале модуля, процедуры или функции».

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

Также в теле функции можно использовать оператор Возврат, который прекращает выполнение функции и возвращает произвольное значение в точку вызова функции.

Обратите внимание, что после ключевого слова КонецФункции нет разделителя операторов ; (точка с запятой). Так вышло потому, что конструкция Функция...КонецФункции является по своей природе операторными скобками, а не оператором. Нарушение этого требования может привести к синтаксической ошибке: «Определения процедур и функций должны размещаться перед операторами основной программы».

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

  1. Исполняемые операторы встроенного языка
  2. Оператор Возврат

Процедуры и функции 1С для выполнения SQL-запросов и обработки результата


[8] AdminITD — 2018-12-01 03:00:00

V81, V82, V83, Управляемое приложение, Обычное приложение

Введение


Любой разработчик, обслуживающий информационные базы большого объема, рано или поздно сталкивается с необходимостью использования SQL запросов к базе 1С. Использовать эти возможности или нет — личное дело специалиста, обслуживающего БД. На мой взгляд, знание внутреннего устройства базы хранения данных на порядок повышает качество разработки, умение обращаться к ней напрямую существенно расширяет возможности разработчика, а в ряде случаев эти навыки просто незаменимы. Конечно, это не значит, что нужно переводить обработку данных исключительно на прямые запросы, платформа 1С на текущий момент предоставляет инструменты, позволяющие качественно решать большинство возникающих задач типовыми средствами. Большинство, но не все, к сожалению. Список задач, выполнение которых существенно упрощается при привлечении средств SQL достаточно широк. Вот некоторые из них:
  • Быстрое получение данных из сторонних информационных систем, сайтов и пр.
  • Получение сводных актуальных данных одновременно из любого количества различных БД, в том числе территориально удаленных. К примеру реальное общее количество определенного товара на всех складах и магазинах на текущий момент, текущая сумма выручки и любая подобная актуальная информация.
  • Быстрая сверка данных в различных ИБ. SQL позволяет произвести подобную сверку одним запросом сразу к нескольким базам;
  • Быстрая параллельная загрузка справочной информации в несколько БД. К примеру при создании или изменении номенклатуры в одной базе, прямое сохранение этих изменений в нескольких связанных базах без планов обмена, формирования промежуточных файлов обмена и пр.
  • Быстрая выгрузка/загрузка данных;
  • Свертывание и очистка БД большого объема;
  • Быстрая реструктуризация больших объектов базы 1С при обновлении.
  • Анализ и оптимизация работы 1С.

Главный плюс использования прямых SQL запросов — скорость. Это самый быстрый способ получения и обработки данных в серверных системах 1С из всех возможных. Во вторых — полная независивость от состояния и работоспособности сервера 1С. В третьих — на сервере БД выполняются Ваши запросы, а не запросы, построенные программой по универсальным алгоритмам, зачастую не самым оптимальным.
Основное требование к разработчику — хорошее знание внутренней структуры базы хранения данных, языка запросов SQL и правил построения конструкций MS T-SQL. Изучение внутреннего устройства базы хранения 1С занимает не так уж и много времени, зато когда возможности доступа к данным и их обработки далеко за рамками возможностей, предоставленных платформой 1С, решение многих задач переходит на качественно новый уровень.

Функции и процедуры

//Функция возвращает объект ссылочного типа 1С по описанию в виде структуры ОписаниеЗначения("Тип,Вид,СсылкаSQL"), где
//Тип - тип объекта 1С (справочник, документ и т.д.)
//Вид - вид объекта 1С (справочник "Валюты", "Пользователи" и т.п.)
//строковое представление внутреннего ID может быть получено в запросе SQL с помощью SQL-Функции CONVERT:
//SELECT
//  convert(char(34), Справочники_Валюты._IDRRef,1) AS Ссылка
//  -- ...
//FROM
//  ZuP.dbo._Reference19 Справочники_Валюты (nolock)
Функция СсылкаИзSQL(ОписаниеЗначения) Экспорт
	Перем Ссылка_;
	Попытка
		Если ОписаниеЗначения.Тип = "Документ" Тогда 
			Ссылка_ = Документы[ОписаниеЗначения.Вид].ПустаяСсылка();
		ИначеЕсли	ОписаниеЗначения.Тип = "Справочник" Тогда
			Ссылка_ = Справочники[ОписаниеЗначения.Вид].ПустаяСсылка();
		ИначеЕсли	ОписаниеЗначения.Тип = "Перечисление" Тогда 
			Ссылка_ = Перечисления[ОписаниеЗначения.Вид].ПустаяСсылка();
		ИначеЕсли	ОписаниеЗначения.Тип = "ПланОбмена" Тогда
			Ссылка_ = ПланыОбмена[ОписаниеЗначения.Вид].ПустаяСсылка();
		Иначе	
			Возврат Неопределено;
		КонецЕсли;
		Если Ссылка_ > Неопределено Тогда
			Строка_ = ЗначениеВСтрокуВнутр( Ссылка_ );
			Строка_ = СтрЗаменить(Строка_,"00000000000000000000000000000000",Прав(СокрЛП(ОписаниеЗначения.СсылкаSQL),32));
			Ссылка_ = ЗначениеИзСтрокиВнутр(Строка_);
		КонецЕсли;
	Исключение
		Ссылка_ = Неопределено;
	КонецПопытки;
    Возврат	Ссылка_;	
КонецФункции

//Функция возвращает шестнадцатиричное представление внутреннего ID объекта1С по объекту ссылочного типа 1С
Функция СсылкаВSQL(Ссылка1с) Экспорт
	SQL_ID = "0x00000000000000000000000000000000";
	Если Ссылка1с > Неопределено Тогда
		ВнСТР = ЗначениеВСтрокуВнутр(Ссылка1с);
		SQL_ID = "0x"+ВРЕГ(Сред(ВнСТР, Найти(ВнСТР, ":") + 1, 32));
	КонецЕсли;
    Возврат	SQL_ID;		
КонецФункции

//Функция возвращает структуру параметров подключения к базе SQL
//Если в конфигурации присутствует справочник "Базы данных" и передана ссылка на элемент этого справочника, то структура заполняется из справочника,
//иначе структура формируется из строковых параметров функции
//При вызове без параметров возвращае структуру подключения к текущей базе
Функция ВернутьСтруктуруПодключения(БД=Неопределено,СерверБазыSQL="",ИмяБазыSQL="",ИмяПользователяSQL="",ПарольПользователяSQL="") Экспорт
	Перем СтруктураПодключения;
	
	Если БД>Неопределено или СерверБазыSQL="" Тогда
		СтруктураПодключения = Новый Структура("СерверБазыSQL,ИмяБазыSQL,ПользовательSQL,ПарольПользователяSQL");
		Запрос = Новый Запрос;
		Запрос.Текст = "
		|ВЫБРАТЬ ПЕРВЫЕ 1 РАЗРЕШЕННЫЕ
		|	БД.ИмяБазыSQL,
		|	БД.СерверБазыSQL,
		|	БД.ПользовательSQL,
		|	БД.ПарольПользователяSQL
		|ИЗ Справочник.БазыДанных КАК БД
		|ГДЕ БД.Ссылка = &БД";
		
		ПараметрБазаДанных  =  ?(БД = Неопределено, Константы.ТекущаяБД.Получить(), БД);
		Запрос.УстановитьПараметр("БД",ПараметрБазаДанных);
		
		Выборка = Запрос.Выполнить().Выбрать();
		Если Выборка.Следующий() Тогда
			ЗаполнитьЗначенияСвойств(СтруктураПодключения,Выборка);
			СтруктураПодключения.ПарольПользователяSQL  = ПрочитатьПароль(Выборка.ПарольПользователяSQL);
		КонецЕсли;
	Иначе	
		СтруктураПодключения = Новый Структура("СерверБазыSQL,ИмяБазыSQL,ПользовательSQL,ПарольПользователяSQL",СерверБазыSQL,ИмяБазыSQL,ИмяПользователяSQL,ПарольПользователяSQL);
	КонецЕсли;
	
	Возврат СтруктураПодключения;           
КонецФункции	

//Функция возвращает строку подключения к базе SQL
Функция  ВернутьСтрокуПодключения(ПараметрыПодключения) Экспорт
	СтрокаПодключения = "Provider=SQLOLEDB.1;
	|Password="+СокрЛП(ПараметрыПодключения.ПарольПользователяSQL)+";
	|User;
	|Persist Security Info=True;
	|Initial Catalog="+СокрЛП(ПараметрыПодключения.ИмяБазыSQL)+";
	|Data Source="+СокрЛП(ПараметрыПодключения.СерверБазыSQL);
	
	Возврат СтрокаПодключения;
КонецФункции

//Функция выполняет SQL-запрос и возвращает результирующий набор данных в виде объекта ADO RecordSet, либо "Неопределено" в случае ошибки
Функция ВернутьRecordSet(ТекстЗапроса, ПараметрыПодключения, Ошибка = "") Экспорт
	Перем Connection,Command,RecordSet;

	RecordSet = Неопределено;
	Попытка
		Connection = Новый COMОбъект("ADODB.Connection");
		Connection.Open(ВернутьСтрокуПодключения(ПараметрыПодключения));
		
		RecordSet = Новый COMОбъект("ADODB.Recordset");
		RecordSet.Open(ТекстЗапроса, Connection);
		Пока (НЕ RecordSet.State) Цикл
			RecordSet = RecordSet.NextRecordset();
		КонецЦикла;
	Исключение
		Ошибка = ОписаниеОшибки();
		RecordSet = Неопределено;
	КонецПопытки;
	Возврат RecordSet;
КонецФункции 

//Функция преобразовывает ADO RecordSet в таблицу значений 1С
//RS - набор данных(RecordSet)
//ТЗ - таблица значений, в которую необходимо выгрузить RS
//РасшифровкаСсылок - ТЗ вида {Имя,Тип,Вид},
// где Имя (стр) - имя поля, содержащего ссылку
//     Тип (стр) - тип объекта ("Справочник","Документ" и т.д.)
//     Вид (стр) - вид объекта ("Склад","РеализацияТиУ" и т.п.)
//ЭлементФормы - соответствующее табличное поле на форме, которое необходимомзаполнить данными полученной таблицы
Процедура ВыгрузитьRS_В_ТЗ(RS, ТЗ, ЭлементФормы = Неопределено, РасшифровкаСсылок=Неопределено) Экспорт
	Перем СчКолонок, РасшифровкаКолонок ;
	
	Если  RS = Неопределено Тогда
		#ЕСЛИ КЛИЕНТ ТОГДА
			Сообщить("Набор данных пуст!");
		#КОНЕЦЕСЛИ	
		Возврат;
	КонецЕсли;
	
	ОписаниеСсылки = Новый Структура("Тип,Вид,СсылкаSQL");
	
	Если ТипЗнч(ТЗ)> Тип("ТаблицаЗначений") Тогда
		#ЕСЛИ КЛИЕНТ ТОГДА
			Сообщить("Не определена таблица результата!"); 
		#КОНЕЦЕСЛИ
		Возврат;
	КонецЕсли;
	Если  РасшифровкаСсылок > Неопределено и ТипЗнч(РасшифровкаСсылок)> Тип("ТаблицаЗначений")  Тогда
		РасшифровкаСсылок = Неопределено;
	Иначе 
		РасшифровкаКолонок = Новый ТаблицаЗначений;
		РасшифровкаКолонок.Колонки.Добавить("Номер");
		РасшифровкаКолонок.Колонки.Добавить("Тип");
		РасшифровкаКолонок.Колонки.Добавить("Вид");
	КонецЕсли;
	  
	СчКолонок = (RS.Fields.Count - 1);
		
	Если НЕ ТЗ.Колонки.Количество() Тогда
		НаборКолонок = ТЗ.Колонки;
		НаборКолонок.Очистить();
		Для Сч = 0 По СчКолонок Цикл
			ТекИмя = RS.Fields(Сч).Name;
			НаборКолонок.Добавить(ТекИмя, , ТекИмя, 15);
			Если  РасшифровкаСсылок > Неопределено  Тогда
				ТекСоответствие = РасшифровкаСсылок.Найти(ТекИмя,"Имя");
				Если ТекСоответствие > Неопределено Тогда 
					 СтрСоотв = РасшифровкаКолонок.Добавить();
					 СтрСоотв.Номер = Сч;
					 СтрСоотв.Тип = ТекСоответствие.Тип;
					 СтрСоотв.Вид = ТекСоответствие.Вид;
				КонецЕсли;	
			КонецЕсли;		
		КонецЦикла;
	Иначе
		Если  РасшифровкаСсылок > Неопределено  Тогда
			Для Сч = 0 По СчКолонок Цикл
			    ТекИмя = RS.Fields(Сч).Name;
				ТекСоответствие = РасшифровкаСсылок.Найти(ТекИмя,"Имя");
				Если ТекСоответствие > Неопределено Тогда 
					 СтрСоотв = РасшифровкаКолонок.Добавить();
					 СтрСоотв.Номер = Сч;
					 СтрСоотв.Тип = ТекСоответствие.Тип;
					 СтрСоотв.Вид = ТекСоответствие.Вид;
				КонецЕсли;	
			КонецЦикла;
        КонецЕсли;	
	КонецЕсли;
	
	Если (НЕ ((RS.EOF()) ИЛИ (RS.BOF()))) Тогда
		csaМассив = RS.GetRows();
		Для Сч = 0 По csaМассив.GetLength(0) - 1 Цикл
			СтрокаТЗ = ТЗ.Добавить();
			Для ТекСч = 0 По СчКолонок Цикл
				ТекЗначение = csaМассив.GetValue(Сч, ТекСч);
				
				Если  РасшифровкаСсылок > Неопределено  Тогда
					СтрРасшифровки = РасшифровкаСсылок.Найти(ТекСч,"Номер");
					Если СтрРасшифровки>Неопределено Тогда 
						ЗаполнитьЗначенияСвойств(ОписаниеСсылки,СтрРасшифровки);
						ОписаниеСсылки.Вставить("СсылкаSQL",ТекЗначение);
						ТекЗначение = СсылкаИзSQL(ОписаниеСсылки);
					КонецЕсли;	
				КонецЕсли;	
	
				СтрокаТЗ[ТекСч] = ТекЗначение;
			КонецЦикла;
		КонецЦикла;
	КонецЕсли;
	
	Если ЭлементФормы > Неопределено Тогда
		ЭлементФормы.СоздатьКолонки();			
	КонецЕсли;	
КонецПроцедуры

//Функция выполняет SQL-запрос и возвращает результат в виде таблицы значений 1С
//Колонки таблицы значений соответствуют обозначениям полей в запросе
Функция СоздатьЗаполнитьТаблицуРезультата(ТекстЗапроса, ПараметрыПодключения)Экспорт
	Перем ТаблицаРезультата;
	ТаблицаРезультата = Новый ТаблицаЗначений;
	
	Попытка
		Connection = Новый COMОбъект("ADODB.Connection");
		Connection.Open(ВернутьСтрокуПодключения(ПараметрыПодключения));
		
		ADOCommand = Новый COMОбъект("ADODB.Command");
		ADOCommand.ActiveConnection = Connection;
		ADOCommand.CommandTimeout = 300;
		ADOCommand.CommandText = ТекстЗапроса;
	Исключение
		Ошибка = ОписаниеОшибки();
		#ЕСЛИ КЛИЕНТ ТОГДА
			Сообщить("Не удалось подключить ADO: " + Ошибка);
		#КОНЕЦЕСЛИ
	КонецПопытки;
	
	Попытка
		RecordSet = ADOCommand.Execute();
	Исключение
		ФлЕстьОшибкиОбработки = Истина;
		Возврат ТаблицаРезультата;
	КонецПопытки;
	
	Пока (НЕ RecordSet.State) Цикл
		RecordSet = RecordSet.NextRecordset();
	КонецЦикла;
	
	Если (НЕ ((RecordSet.EOF()) ИЛИ (RecordSet.BOF()))) Тогда
		//Выгрузка результата запроса в COMSafeArray
		csaМассивРезультата = RecordSet.GetRows();
	Иначе 
		Возврат ТаблицаРезультата;
	КонецЕсли;	
	
	//Заполнение колонок таблицы рез. по полям результата запроса
	СчКолонок = (RecordSet.Fields.Count - 1);
	НаборКолонок = ТаблицаРезультата.Колонки;
	Для Сч = 0 По СчКолонок Цикл
		ТекИмя = RecordSet.Fields(Сч).Name;
		НаборКолонок.Добавить(ТекИмя);	
	КонецЦикла;
	
	//Выгрузка результата запроса в таблицу результата
	Для СчСтрок = 0 По csaМассивРезультата.GetLength(0) - 1 Цикл
		СтрокаДанных = ТаблицаРезультата.Добавить();
		Для СчПолей = 0 По СчКолонок Цикл
			СтрокаДанных[СчПолей] = csaМассивРезультата.GetValue(СчСтрок, СчПолей);	 
		КонецЦикла;
	КонецЦикла;	
	
	Попытка
		RecordSet.Close();
		RecordSet = "";
	Исключение
	КонецПопытки;
	
	Возврат ТаблицаРезультата;	
КонецФункции

//Функция формирует строковое представление набора значений отбора для использования в тексте SQL-запроса
Функция  СформироватьФильтрSQL(ИсточникЗначений) Экспорт
	Перем Фильтр, ИсточникМассив;
	Фильтр = "";
	
	Если ТипЗнч(ИсточникЗначений) = Тип("Массив") Тогда 
		ИсточникМассив = ИсточникЗначений;
	ИначеЕсли ТипЗнч(ИсточникЗначений) = Тип("СписокЗначений") Тогда 
		ИсточникМассив = ИсточникЗначений.ВыгрузитьЗначения();
	ИначеЕсли ТипЗнч(ИсточникЗначений) = Тип("ТаблицаЗначений") Тогда 
		ИсточникМассив = ИсточникЗначений.ВыгрузитьКолонку(0);	
	Иначе
		Возврат "("+ЗначениеВSQL(ИсточникЗначений)+")";
	КонецЕсли;
	
	Если ИсточникМассив.Количество()=0 Тогда
		Возврат "('?')";
	КонецЕсли;
	
	Для Каждого ТекЗначение из ИсточникМассив Цикл 
		Фильтр = Фильтр + "," + ЗначениеВSQL(ТекЗначение);
	КонецЦикла;

	Возврат "("+Сред(Фильтр,2)+")";
КонецФункции

//Функция формирует строковое представление таблицы значений 1С для использования в тексте SQL-запроса
Функция  ТаблицаВSQL(ИсточникЗначений) Экспорт
	Перем СчСтрок, СчКол, ТаблицаSQL;
	ТаблицаSQL = "";
	СтрокаОбъединенияСтрок = Символы.ПС+"UNION ALL"+Символы.ПС;
	
	КоличествоСтрок = ИсточникЗначений.Количество();
	Колонки = ИсточникЗначений.Колонки;
	КоличествоКолонок = Колонки.Количество();
	
	Для СчСтрок = 0 По КоличествоСтрок-1 Цикл
		ТаблицаSQL = ТаблицаSQL + ?(СчСтрок=0,"",СтрокаОбъединенияСтрок);
		Для СчКол = 0 По КоличествоКолонок-1 Цикл
		    ТаблицаSQL = ТаблицаSQL + ?(СчКол=0,"SELECT ",",") + ЗначениеВSQL(ИсточникЗначений[СчСтрок][СчКол]) + ?(СчСтрок=0," AS "+Колонки[СчКол].Имя, "");
		КонецЦикла;	
	КонецЦикла;

	Возврат "("+ТаблицаSQL+")";
КонецФункции

//Функция формирует строковое представление переданного значения для использования в тексте SQL-запроса
Функция ЗначениеВSQL(Значение1С) Экспорт 
	Если ТипЗнч(Значение1С) = Тип("Дата") Тогда
		Возврат "'"+Формат(Значение1С,Формат("ДФ='yyyy-MM-dd HH:mm:ss'"))+"'";
	ИначеЕсли ТипЗнч(Значение1С) = Тип("Число") Тогда 
		Возврат Формат(Значение1С,Формат("ЧРД=.; ЧГ=0"));
	ИначеЕсли ТипЗнч(Значение1С) = Тип("Булево") Тогда
		Возврат ?(Значение1С,"0x01","0x00");
	ИначеЕсли ТипЗнч(Значение1С) = Тип("Строка") Тогда
		Возврат "'"+Значение1С+"'";		
	ИначеЕсли ТипЗнч(Значение1С) = Тип("Массив") ИЛИ ТипЗнч(Значение1С) = Тип("СписокЗначений") Тогда
		Возврат СформироватьФильтрSQL(Значение1С);	
	ИначеЕсли ТипЗнч(Значение1С) = Тип("ТаблицаЗначений") Тогда
		Возврат ТаблицаВSQL(Значение1С);
	ИначеЕсли ЭтоСсылка(Значение1С) Тогда
		Возврат СсылкаВSQL(Значение1С);	
	Иначе
		Возврат "";
	КонецЕсли;	
КонецФункции 

//Функция определяет, является ли параметр ссылкой
Функция ЭтоСсылка(Значение1С) Экспорт	
	Попытка
		Значение1С=Значение1С.Ссылка;
		Возврат Истина;
	исключение
		Возврат Ложь;
	КонецПопытки;
КонецФункции	

//Получение объекта adoConnection
Функция  ВернутьAdoConnection(ПараметрыПодключения, Ошибка="")Экспорт	
    Попытка
		Connection = Новый COMОбъект("ADODB.Connection");
		Connection.Open(ВернутьСтрокуПодключения(ПараметрыПодключения));
	Исключение
		Connection = Неопределено;
		#ЕСЛИ КЛИЕНТ ТОГДА
			Сообщить("Не удалось подключить ADO: " + ОписаниеОшибки());
		#КОНЕЦЕСЛИ
	КонецПопытки;		
	Возврат Connection;		
КонецФункции

//Получение объекта ADOCommand
Функция ПолучитьRecordSet(ADOCommand, ТекстЗапроса)Экспорт
	ADOCommand.CommandText = ТекстЗапроса;	
	Попытка
		Возврат ADOCommand.Execute();
	Исключение
		ФлЕстьОшибкиОбработки = Истина;
		Возврат Неопределено;
	КонецПопытки;
КонецФункции	
	
Функция ПолучитьADOCommand(ПараметрыПодключения) Экспорт
	Перем ADOCommand;
	Попытка
		Connection = Новый COMОбъект("ADODB.Connection");
		Connection.Open(ВернутьСтрокуПодключения(ПараметрыПодключения));
		
		ADOCommand = Новый COMОбъект("ADODB.Command");
		ADOCommand.ActiveConnection = Connection;
		ADOCommand.CommandTimeout = 300;
	Исключение
		ADOCommand = Неопределено;		
		#ЕСЛИ КЛИЕНТ ТОГДА
			Сообщить("Не удалось подключить ADO: " + ОписаниеОшибки());
		#КОНЕЦЕСЛИ
	КонецПопытки;
	Возврат ADOCommand;
КонецФункции	

//Функция выполнения произвольной команды SQL, включая запросы изменения данных
Функция ВыполнитьКомандуSQL(ТекстКоманды, ADOCommand) Экспорт
	ADOCommand.CommandText = ТекстКоманды;
	Попытка
		ADOCommand.Execute();
		Возврат Истина;
	Исключение
		Возврат Ложь;
	КонецПопытки;
КонецФункции	

//Простое кодирование пароля для справочника "БазыДанных"
Функция ПрочитатьПароль(стрИсточник = "") Экспорт
	стрРезультат = "";
	Для Ном = 0 По СтрДлина(стрИсточник) / 3 - 1 Цикл
		стрРезультат = стрРезультат + 
			Символ(Из_Любой_В_10(Сред(стрИсточник, 1 + Ном * 3, 3), 16));
	КонецЦикла;
	Возврат стрРезультат;
КонецФункции

Функция КодироватьПароль(стрИсточник) Экспорт
	СтрПароль = стрИсточник;
	стрРезультат = "";
	Для Ном = 1 По СтрДлина(СтрПароль) Цикл
		стрРезультат = стрРезультат + Прав("000" + 
		Из_10_В_Любую(Формат(КодСимвола(Сред(СтрПароль, 
		Ном, 1)), "ЧЦ=6;ЧРД=.;ЧН=;ЧВН=;ЧГ=0"), 16), 3);
	КонецЦикла;
	Возврат стрРезультат;
КонецФункции

// Пересчет между системами счисления
Функция Из_10_В_Любую(Знач Значение = 0, Нотация = 36) Экспорт
	
	Если Нотация = 0 Тогда
		Возврат("");
	КонецЕсли;
	
	Значение = Число(Значение);
	Если Значение = 0 Тогда 
		Возврат("00"); 
	КонецЕсли;
	
	Значение = Цел(Значение);
	Результат = "";
	Пока Значение > 0 Цикл
		Результат = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ-. $/+%", Значение % Нотация + 1, 1) + Результат;
		Значение = Цел(Значение / Нотация);
	КонецЦикла;
	Результат = ?(СтрДлина(Результат) = 1, "0" + Результат, Результат);
	
	Возврат Результат;
	
КонецФункции

Функция Из_Любой_В_10(Знач Значение = "0", Нотация = 36) Экспорт
	
	Если Нотация = 0 Тогда
		Возврат(0);
	КонецЕсли;
	Значение = СокрЛП(Значение);
	Если Значение = "0" Тогда
		Возврат(0);
	КонецЕсли;
	Результат = 0;
	Длина = СтрДлина(Значение);
	Для Х = 1 По Длина Цикл
		М = 1;
		Для У = 1 По Длина - Х Цикл
			М = М * Нотация 
		КонецЦикла;
		Результат = Результат + (Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", 
		ВРег(Сред(Значение, Х, 1))) - 1) * М;
	КонецЦикла;
	Возврат Окр(Результат);
	
КонецФункции

● Файлы для скачивания:

для получения доступа требуется авторизация размер: 5.5 кб, скачиваний: 9. cодержимое архива: Процедуры и функции 1С для SQL.txt — 17,7 кб.



Нет комментариев

Все функции в 1С 8.2 и 8.3

«Все функции»  — аналог «Операций» в управляемых формах. Пункт меню, с помощью которого пользователь может получить доступ к общему списку объектов системы. Эта кнопка по умолчанию отключена в настройках и недоступна пользователю, рассмотрим, как сделать ее доступной для пользователей.

Все функции в 1С

Включение аналога «Операций» — «Все функции» в ролях

С появлением управляемых форм в ролях появился флаг «Режим «Все Функции», все функции будут доступны только при наличии этого права:

роли все функции

Получите 267 видеоуроков по 1С бесплатно:

В некоторых конфигурациях даже создают специальную роль «ВсеФункции».

Включение Все функции в платформе

После того как Вы убедились, что достаточно прав, необходимо включить настройки отображения в режиме 1С: Предприятие. Для этого необходимо зайти в меню программы, выбрав Сервис — Параметры:

параметры 1С

В параметрах необходимо установить флаг «Отображать команду «Все функции»:

включение все функции

Вот и всё, настройка готова.

Обратите внимание! Если настройка «Все функции» так и не отобразилась, значит, она запрещена в правах пользователя. Для этого необходимо создать новый профиль прав доступа и включить в неё роль «Режим «Все функции».

Другие статьи по 1С:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Функция формат в 1С — дата, время, числа, булево, строка

Функция Формат в 1С 8.3 предоставляет достаточно интересный инструмент разработчику для форматирования значений. Особенно часто эта функция используется для вывода примитивных типов данных (даты, времени, чисел, строки, булево) в нужном формате.

Рассмотрим подробнее функцию и способ составления форматной строки.

функция формат в 1С

Функция Формат()

Синтаксис функции достаточно прост:

Формат(<Значение>,<Форматная строка>)

Значение — форматируемое значение, Форматная строка — строка, заданная определенным образом, из которой формируется правило обработки формата.

Самое интересное — форматная строка. Рассмотрим её подробнее.

Конструктор форматной строки

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

Для запуска конструктора достаточно вызвать контекстное меню (правая кнопка мыши) и выбрать в списке «Конструктор форматной строки»:

конструктор форматной строки

Сам конструктор выглядит следующим образом:

Получите 267 видеоуроков по 1С бесплатно:

конструктор форматной строки внутри

Где необходимо выбрать нужную Вам вкладку в зависимости от типа данных — Число, Дата или Булево.

Рассмотрим использование функции на примерах.

Формат даты в 1С на примере месяца: прописью, без времени

Получить формат даты без времени:

Формат(ТекущаяДата(), "ДФ=dd.MM.yyyy") // "25.02.2015"

Формат даты 1С, где месяц прописью:

Формат(ТекущаяДата(), "ДЛФ=DD") // "25 февраля 2015"

Формат времени без даты, только час, минута и секунда:

Формат(ТекущаяДата(), "ДЛФ=T") // "20:15:43"

Примеры формата числа

Получим формат числа с двумя точками после запятой:

Формат(100500, "ЧДЦ=2") // "100 500,00"

Число без неразрывных пробелов:

Формат(100500, "ЧГ=") // "100500"

Использование запятой вместо точки для дробной части:

Формат(100500, "ЧДЦ=2; ЧРД=,") // "100 500,00"

Округление числа (не математическое) до целых:

Формат(100500.99, "ЧДЦ=") // "100 500"

Вывод лидирующих нулей без неразрывных пробелов:

Формат(100500, "ЧЦ=9; ЧВН=; ЧГ=") // "000100500"

Читайте также другие статьи по конфигурированию 1С.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *