Операнд это в 1с
Область применения: управляемое приложение, мобильное приложение, обычное приложение.
Методическая рекомендация (полезный совет)
1. Если в операции деления заранее известны порядки числителя и знаменателя, то следует по возможности избегать выполнения деления числа заведомого маленького порядка на число заведомо большого порядка. Например, вместо:
0.02 / 28346 * 9287492
0.02 * 9287492 / 28346
2. При выполнении арифметических операций в запросах к базе данных платформа 1С:Предприятия поддерживает точность вычислений до 8 разрядов дробной части. Однако, из-за особенностей работы различных СУБД в некоторых ситуациях точность результатов может отличаться от 8. Более подробно о вычислении разрядности результатов можно почитать в статье ИТС Разрядность результатов выражений и агрегатных функций в языке запросов.
Если точность результата выполнения запроса к базе данных, содержащего
- арифметические операции деления,
- агрегатные функции СРЕДНЕЕ ,
- арифметические операции умножения, если каждый из множителей может иметь дробную часть,
различается на различных СУБД, то рекомендуется к операндам и/ или результатам этих операций применять оператор явного приведения разрядности и точности числовых данных:
ВЫРАЗИТЬ(. КАК Число(m, n))
Оператор ВЫРАЗИТЬ следует применять к операндам, если на какой-нибудь СУБД точность получаемого результата недостаточна. Например, требуется 10 разрядов после запятой, а получается 6.
При этом указанная общая разрядность операндов должна быть минимальной, но не меньше той, которая достаточна для представления значений каждого из операндов. Неоправданное завышение разрядности может привести к потере точности последующих вычислений и несколько снизить скорость выполнения запроса.
ВЫБРАТЬ
ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель КАК Число(25,10)) / ВЫРАЗИТЬ(Таблица.Знаменатель КАК Число(15,10)) КАК Результат
ИЗ Таблица КАК Таблица
Оператор ВЫРАЗИТЬ следует применять к результату, если точность вычислений на всех СУБД достаточна, но на некоторых она больше, а на других меньше. При этом указанная общая разрядность результата должна быть минимальной, но не меньше той, которая достаточна для представления значений результата. Если в приведенном примере известно, что Знаменатель не может быть меньше 0.00001, то для представления результата достаточно 20 разрядов целой части. В этом случае выражение может быть записано так:
ВЫБРАТЬ
ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель / Таблица.Знаменатель КАК Число(30,10)) КАК Результат
ИЗ Таблица КАК Таблица
Иногда может быть целесообразно выполнить приведения к требуемой точности как операндов, так и результата. Например:
ВЫБРАТЬ
ВЫРАЗИТЬ(ВЫРАЗИТЬ(Таблица.Множитель * Таблица.Числитель КАК Число(25,10)) / ВЫРАЗИТЬ(Таблица.Знаменатель КАК Число(15,10)) КАК Число(30,10)) КАК Результат
ИЗ Таблица КАК Таблица
В языке определены следующие виды арифметических операций.
- Сложение (Оп1 + Оп2)
- Вычитание (Оп1 — Оп2)
- Умножение (Оп1 * Оп2)
- Деление (Оп1 / Оп2)
- Остаток от деления (Оп1 % Оп2)
- Унарный минус (-Оп1)
Арифметические операции имеют один или два операнда, в зависимости от типа которых операция имеет ту или иную семантику. Тот или иной семантический вариант операции определяется по первому операнду. В случае несовпадения типа второго операнда с требуемым значение преобразуется к требуемому типу в соответствии с правилами преобразования типов. Если тип первого операнда не соответствует ни одному из допустимых типов, то в зависимости от ситуации может производиться преобразование типов или возбуждаться состояние ошибки выполнения.
Сложение определено для следующих типов операндов:
Дата + Число (к дате прибавляется число секунд)
Вычитание определено для следующих типов операндов:
Дата — Число (от даты отнимается число секунд)
Дата — Дата (результатом является разница между двумя датами, измеренная в секундах)
Математические выражения – выражения, содержащие знаки арифметических операций и подчиняющиеся при вычислении арифметическим правилам. Результатом вычисления таких выражений является значение одного из простых (базовых) типов языка.
Математические выражения используются в правой части оператора присваивания, а также в качестве параметров процедур и функций
Во встроенном языке определены арифметические операции двух видов:
Унарные арифметические операции
Унарный минус
Данная арифметическая операция выполняет получение отрицательного (противоположного) значения.
Унарный минус определен только для типа Число . Во всех остальных случаях будет выдано исключение « Операция получения отрицательного значения не определена для строковой величины »
Бинарные арифметические операции
Операция сложения
Данная арифметическая операция выполняет добавление значения второго операнда к значению первого. При этом тип значения получаемого результата определяется типом первого операнда. Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов.
Применимость операции сложения:
ОперандА | ОперандБ | Результат | Комментарий |
---|---|---|---|
Число | Число, Строка, Дата | Число | |
Дата | Число | Дата | К исходной дате добавляется количество дней, заданное вторым оператором |
Строка | Строка, Число, Дата | Строка | К исходной строке добавляются все символы второй. Длина конечной строки определяется суммой длин обеих строк. Такую операцию называют еще конкатенацией строк |
Операция вычитания
Данная арифметическая операция выполняет вычитание значения второго операнда из значения первого. При этом тип значения получаемого результата определяется типом первого операнда. Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов.
Применимость операции вычитания:
ОперандА | ОперандБ | Результат | Комментарий |
---|---|---|---|
Число | Число, Строка, Дата | Число | |
Дата | Число | Дата | От исходной даты отнимается количество дней, заданное вторым оператором |
Дата | Дата | Число | Вычисляется количество дней на которое первая дата больше второй |
Операция умножения
Данная арифметическая операция выполняет умножение значения первого операнда на значение второго. Операция применима только для типа Число . Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов.
Операция деления
Данная арифметическая операция выполняет деление значения первого операнда на значение второго. Операция применима только для типа Число . Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов.
Остаток от деления
Данная арифметическая операция вычисляет остаток от деления значения первого операнда на значение второго. Операция применима только для типа Число . Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов. Следует учитывать, что оба операнда операции округляются до целого значения.
Приоритет выполнения арифметических операций
При вычислении результата математических выражений, программа руководствуется приоритетом арифметических операций (в порядке убывания):
- Унарный минус;
- Умножение, деление, остаток от деления;
- Сложение и вычитание;
Для того, чтобы повлиять на порядок вычислений можно использовать круглые скобки.
Математические выражения – выражения, содержащие знаки арифметических операций и подчиняющиеся при вычислении арифметическим правилам. Результатом вычисления таких выражений является значение одного из простых (базовых) типов языка.
Математические выражения используются в правой части оператора присваивания, а также в качестве параметров процедур и функций
Во встроенном языке определены арифметические операции двух видов:
-
– операции с одним значением; – операции с двумя значениями;
Унарные арифметические операции
Унарный минус
Данная арифметическая операция выполняет получение отрицательного (противоположного) значения.
Унарный минус определен только для типа Число . Во всех остальных случаях будет выдано исключение « Операция получения отрицательного значения не определена для строковой величины »
Бинарные арифметические операции
Операция сложения
Данная арифметическая операция выполняет добавление значения второго операнда к значению первого. При этом тип значения получаемого результата определяется типом первого операнда. Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов.
Применимость операции сложения:
ОперандА | ОперандБ | Результат | Комментарий |
---|---|---|---|
Число | Число, Строка, Дата | Число | |
Дата | Число | Дата | К исходной дате добавляется количество дней, заданное вторым оператором |
Строка | Строка, Число, Дата | Строка | К исходной строке добавляются все символы второй. Длина конечной строки определяется суммой длин обеих строк. Такую операцию называют еще конкатенацией строк |
Операция вычитания
Данная арифметическая операция выполняет вычитание значения второго операнда из значения первого. При этом тип значения получаемого результата определяется типом первого операнда. Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов.
Применимость операции вычитания:
ОперандА | ОперандБ | Результат | Комментарий |
---|---|---|---|
Число | Число, Строка, Дата | Число | |
Дата | Число | Дата | От исходной даты отнимается количество дней, заданное вторым оператором |
Дата | Дата | Число | Вычисляется количество дней на которое первая дата больше второй |
Операция умножения
Данная арифметическая операция выполняет умножение значения первого операнда на значение второго. Операция применима только для типа Число . Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов.
Операция деления
Данная арифметическая операция выполняет деление значения первого операнда на значение второго. Операция применима только для типа Число . Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов.
Остаток от деления
Данная арифметическая операция вычисляет остаток от деления значения первого операнда на значение второго. Операция применима только для типа Число . Если тип второго операнда не совпадает с типом первого, выполняется неявное преобразование типов. Следует учитывать, что оба операнда операции округляются до целого значения.
Приоритет выполнения арифметических операций
При вычислении результата математических выражений, программа руководствуется приоритетом арифметических операций (в порядке убывания):
- Унарный минус;
- Умножение, деление, остаток от деления;
- Сложение и вычитание;
Для того, чтобы повлиять на порядок вычислений можно использовать круглые скобки.
Наконец, мы дошли до самого интересного. Написания типовой. Быстрый взгляд на таблицу рабочей части вкладки "Проводки" для того, чтобы понимать, что и как:
Колонка 1 - пометка отключения. Проводка с пометкой отключения не будет формироваться даже если условие формирования выполнено.
Колонка 2 - пометка предопределенности. В скопированных операциях ее не будет.
Колонка 3 - установлено условие. Эта колонка говорит нам о том, что проводка формируется при достижении определенного условия.
Колонка 4 "Наименование" - Чисто служебное наименование. Его стоит заполнять осознанно, как и наименование типовой операции.
Колонка 5 "Источник данных" - Место, откуда будут тянуться данные используемые в проводке. Если вы видите надпись "(доп. источник)" в конце, значит используется источник данных, автоматически формируемый самой программой (3 вкладка "Источники данных"). Они заведомо прописаны, и ничего с них вы не получите и не измените без вмешательства в код. Если же вы не видите надписи про дополнительный источник - значит, проводка берет данные из одноименной таблицы в документе.
Колонка 6 "Код" - Служебный код операции. Не будет нас интересовать.
Также я бы хотел заострить ваше внимание на том, что вы видите в таблице проводки, но также видите своеобразные папочки (группировки) - это группа проведения. Еще одно важное замечание - это то, что проводки стоят в определенном порядке, но вы не можете поменять данный порядок на этой странице. К сожалению, раздел типовых операций не адаптирован под пользовательские цели, поэтому многие вещи придется делать самим. Рекомендую добавить отдельную колонку "Порядковый номер в группе" в таблицу, чтобы вы видели в каком порядке формируются ваши проводки.
Для чего это нужно? Например, отделить определенную группу проводок от другой. Сейчас если я опишу, вряд ли это будет доступно, поэтому коснемся этого чуть позже. Сейчас вам нужно знать только то, что проводки в группе будут проводиться от наименьшего к большему и так пока не закончатся источники проведения, далее алгоритм проведения перейдет к новой группе.
Перейдем наконец внутрь операции
Группа и Номер в группе - только что разобрали, далее будем смотреть на практике
Галочка Откл. - пометка отключения операции. Вы можете пометить проводку как отключенную (например, если вы пишете новую проводку - то старую можно отключить, но чаще всего я сам пользуюсь этой галкой больше для отладки процесса, или для ускоренного отсечения лишнего функционала).
Источник данных - про них мы уже говорили чуть выше. Простыми словами - это любая табличная часть, имеющаяся в документе или сформированная программой в разделе "Источники данных" (здесь они будут называться "Дополнительные источники данных". Сейчас быстро пробежимся по окнам, и я задержусь на этой теме подольше.
Иерархия операндов формул - это то, из чего мы будем компоновать операцию
Справа видим три вкладки:
Общие реквизиты проводки - реквизиты проводки, которые не принадлежат конкретно дебету или кредиту, а принадлежат строке проводки непосредственно
Реквизиты дебета и Реквизиты кредита - как понятно после написанного выше - реквизиты, принадлежащие либо кредиту, либо дебету.
Внутри каждой вкладки есть множество строчек. Каждая из этих строк имеет ряд полей. Заполняя их, мы будем задавать правила поведения нашей типовой операции.
Возвращаемся к источникам данных.
Если вы были внимательны, вы заметили, что на скриншоте слишком много таблиц. Сильно больше, чем в документе. И у них нет пометок дополнительного источника. Все верно, разработчики решили не перегружать нас этой информацией и просто бросили все в одну кучу. Как же определить, что и откуда будет браться?
Давайте представим, что мы хотим с вами делать проводку по приемке МЗ. Что нам для этого нужно?
Попытаемся прикинуть проводки, для начала на глаз:
ДТ КТ
105.36 302.34
Тоесть уже 2 счета.
11030000000000000 11030000000000244
*Допустим, мы будем спортивным учреждением (поэтому код главы 1103)*
По инструкции ведения бухгалтерского учета нам понадобятся 2 КПС, в данном случае оба КРБ
346 73*
2 КОСГУ (КЭК), один из которых оборотный
Один КФО
Одна сумма
Одно количество
Одно наименование первичного документа
Один номер и одна дата первичного документа
Один номер ЖО
Возможно характеристика движения
Но однозначно, еще субконто от счетов. В моем случае субконто от счета 105.36:
Номенклатура
ЦМО
И субконто от счета 302.34
Контрагент
Договор
Для тех, кто не понял хоть что-то из того, что я описал выше - все это вы должны либо знать самостоятельно, либо просить это все у ваших бухгалтеров. Как сориентироваться, что будет необходимо вам для проводки - берите структуру проводки (см. скриншоты), берите структуру счета в плане счетов (субконто) и идите к вашим бухгалтерам. Так как в данном случае я исполняю роль и внедренца, и бухгалтера - ставлю задачу сам себе.
На скриншоте вы можете заметить, что не все реквизиты верные, в рамках этой статьи мы разберемся со всеми вопросами и рассмотрим типичные багфиксы стандартных методов.
Так вот, где же взять все эти позиции?
Для начала рассмотрим документ. У нас есть сразу счет расчетов, и КПС к нему, контрагент с договором и получатель (ЦМО). Если покопаемся во вкладках, то найдем во вкладке дополнительно еще и информацию о документе поставщика. Не хватает только номенклатуры с ее реквизитами.
Если мы внимательно посмотрим, то очень удобно в табличной части у нас расположилось множество строчек и как раз наш вариант. На каждой строке есть КФО, КПС , счет дебета, номенклатура, количество, сумма, а это уже почти половина.
Так вот, возвращаясь к нашим источникам данных. Если мы выберем источник данных <проводка по документу>, это будет значить, что все реквизиты мы возьмем, не пользуясь ни одной из табличных частей. У нас будет доступ к любым его частям, кроме таблиц. Это хорошо иллюстрируется, если мы посмотрим на иерархию операндов формул. Все реквизиты документа у нас стоят черными (активными) кроме таблиц документа. Также заметьте, что таблицы полностью соответствуют таблицам документа (так как мы открыли именно документ).
Если же мы, к примеру, выберем источник данных "Материалы" вы увидите, что в иерархии операндов таблица перестанет быть неактивной, раскрасится в черный и ее структура будет 1 в 1 наша таблица из документа. К сожалению, не все поля полностью соответствуют своему наименованию в документе, поэтому будьте внимательны, читайте, что написано справа в скобочках. Нередко бывает, что у документа есть реквизит "Контрагент", а вызываем мы его обращаясь к полю "Получатель".
Все таблицы, которых по каким то причинам нет в документе, находятся в другом разделе "Дополнительные источники данных". Принцип такой же, если выбираете соответствующую таблицу - она становится активной, и мы можем работать с ее строками.
У вас уже, наверное, назрел вопрос, а что если мне будет необходимо формировать одну проводку используя 2 таблицы одновременно? Этот вопрос меня тоже мучал первое время, но потом, проанализировав, как собираются проводки в типовой операции, я пришел к выводу, что это невозможно, и единственное правильное здесь решение то, что сделали разработчики 1С. Объяснять почему - не буду. Давайте перейдем к более интересным вещам. Просто запомните - ТОЛЬКО ОДНА ТАБЛИЧНАЯ ЧАСТЬ МОЖЕТ УЧАСТВОВАТЬ В ПРОВОДКЕ.
Наши с вами созданные реквизиты тихонько уселись в раздел "Дополнительные реквизиты" (помните, мы об этом говорили во второй части, пришел момент). Именно отсюда мы и будем их выцеплять.
Агрегатные функции - с данными функциями нужно быть очень осторожным. Они собирают и агрегируют данные с любого поля в любой табличной части, но посчитанная сумма пойдет во все проводки, сделанные с помощью этой схемы.
Функции общего модуля - это самый важный раздел в проводках. С помощью них и небольших знаний СКД мы и будем формировать проводки. Думаю, этому будет посвящена следующая часть этой статьи.
Касательно раздела макросов - отлично расписано на ИТС, пока вкратце, вы просто ставите эту команду рядом с реквизитом, и программа сигнализирует вам, что вы что-то не заполнили. Очень удобная функция, так как мы не можем поставить проверку заполнения на реквизитах, не являющихся дополнительными.
Ну и собственно раздел ТекущаяПроводка позволяет нам использовать значения уже заполненных реквизитов проводки (удобно, чтобы не переписывать формулы и не дублировать их в других окнах)
Давайте сейчас еще вкратце рассмотрим с вами пример окна реквизитов дебета.
Как вы видите, у нас есть окна с формулами заполнения и есть поля, в которых мы можем заполнить операции вручную. Так вот, сразу хочу сказать, понравится вам это или нет, но если вы хотите писать типовые операции, которые будут универсальные, которые не отломятся после обновления, которые буду импортироваться-экспортироваться без глобального переписывания - вы ДОЛЖНЫ вытаскивать все реквизиты по формулам. У нас не должно быть ни единого реквизита, заполненного вручную. Только формулы и дополнительные реквизиты! Другого быть не должно! В зависимости от ситуации могут быть совершенно редкие исключения, но поверьте, шанс того, что у вас именно то самое исключение, стремится к нулю!
Все формулы в окошке для формул - есть ничто иное как интерпретация языка СКД с дополнительными функциями из модуля. Именно на языке (чем-то схожем на язык запросов) СКД мы будем с вам направлять нашу типовую операцию.
Теперь стоит поговорить немного о теории программирования. Так как СКД имеет своеобразный язык, мы должны понимать, что мы можем сделать, что мы можем ему дать. Об этом рекомендую почитать у вас в конфигурации. Для этого зайдите в F1 - > Поиск -> В поле поиска вводим "Язык выражений системы компоновки данных". Именно так, как там и описано, мы будем взаимодействовать с СКД. Скажу честно, я начал писать и написал почти половину всего этого в статье, а потом понял, что всем будет удобнее, если вы научитесь пользоваться тем, что у вас под рукой, поэтому научитесь пользоваться поисковиком. Если у вас возникнут какие-либо вопросы по прочтению - можете смело писать комментарии, но в перспективе я покажу все варианты применения (ну или большую их часть) и распишу вам их.
Сразу заострю ваше внимание на том, что я сам заметил на сразу. В самом низу статьи "Язык выражений системы компоновки данных" есть тип ЗНАЧЕНИЕ() и работает он только с перечислениями и предопределенными данными. Если то, что я написал, непонятно - мы это будем рассматривать в следующей части статьи.
Сколько же всего сложного и таинственного нас окружает.
Черные дыры и сновидения. Темная материя и подсознание. Корпускулярно-волновой дуализм и 1С.
И ведь думаешь, что знаешь эту "1Ску" как свои пять пальцев, но стоит случайно копнуть глубже. И очередная багофича. Да ешё и какая!
В этой статье рассмотрим секретный оператор ?
О нём мало кто знает, хоть он и существует как минимум с версии 8.0.
В последнее время я публикую на своём телеграм-канале разные хитрые задачки с подвохом для программистов 1С. Какие-то беру "по памяти", а какие-то "рождаю" в результате экспериментов. Об этом скоро выйдет отдельная статья. И вот в очередном тесте адекватности платформы случайно натыкаюсь на такую конструкцию:
Синтаксис-проверка прошла успешно. Никаких ошибок не высветилось. И, казалось бы, ошибка тогда должна произойти в момент выполнения.
Код успешно выполнился. Удивительно, но сработало! И тут меня понесло.
Как оказалось, знак ? ведёт себя крайне странно. Давайте посмотрим ещё раз прошлый пример.
Мы создаём новую переменную и назначаем ей значение - ?. И в переменной находится Неопределенно. И, казалось бы, это и есть ответ на вопрос. Знак ? означает Неопределено.
Но что же тогда это:
В данном коде сначала идёт объявление переменной "А". И в А установлено числовое значение "1". А далее идёт наше сравнение с ?. Если бы под знаком вопроса скрывалось Неопределено, то мы бы не попали внутрь условия. А по скрину видно, что попали.
Очень странная ошибка. "Переменная не определена (Сообщить)". Ну допустим. Добавим тогда такую переменную:
Данный код компилируется без ошибок. И при выполнении в 1С сообщает "ТЕСТ". То есть значение переменной Сообщить
Выходит, что символ ? указывает на предыдущее слово в коде. В данном случае, перед ? было слово Сообщить. И поэтому 1С изначально поругалась, что такая переменная не определена. А когда мы добавили переменную Сообщить, то всё стало на свои места.
То есть наш код для 1С выглядит так:
А теперь вернемся к нашим предыдущим примерам и разберём что и как сработало.
В данном коде предыдущее слово перед ? - Если. Но оно является ключевым для 1С. Как "Цикл", "Процедура" и так далее. Поэтому, его оператор ? не учитывает и берет в качестве источника значения переменную А.
Скорректируем же этот код так, как его видит 1С:
Теперь всё логично. А = А и поэтому условие выполняется.
А что с нашим самым первым примером?
На самом деле всё так же. Просто заменяем знак вопроса на предыдущее слово.
Да, такой код тоже странный, но в рамках 1С всё логично. Сначала объявляется переменная и в ней Неопределено. А затем происходит присвоение переменной значения из её самой. То есть опять же Неопределено. Можете проверить такой код - это хоть и выглядит странно, но работает. А почитать чуть подробнее можно в статье на ИТС: МояПеременная = 0; МояПеременная = ? + 1; //1 МояПеременная = ? + 1; //2 МояПеременная = ? * 5; //10 МояПеременная = ? / 2; //5 МояПеременная = ? - 6; //-1
А самое интересное, что такая возможность существовала как минимум ещё с версии 8.0 . Специально скачал старую платформу и проверил.
На самом деле такой код можно ещё упросить:
Но такой вариант становится менее надежным. Ведь всё работает до тех пор, пока перед ? находится МояПеременная. Если же вставить после этого какое-то другое "слово", то всё порушится.
Но вот ещё пример:
Мы же помним, что знак ? берет предыдущее слово. Так вот в нашей строке кода это слово "А". Именно так - без "Структура".
Поэтому 1С в таком коде вместо знака вопроса вставит "А"
Но зато появляется новая возможность применения:
В данном коде мы создали структуру и наполнили её объявленными ранее переменными. Тоже бывает удобно, когда нужно передать какой-то набор переменных метода в другой метод через структуру.
А вот ещё пример. Можно передать в какой-то метод или конструктор одно значение несколько раз:
Передавать знак ? можно даже в условный тернарный оператор. Например, этот код приводит отрицательные числа к 0:
А этот приводит отрицательные числа к положительным:
Подобным образом можно присваивать дефолтные значения необязательным параметрам:
Главное помнить, что знак ? берет именно предыдущее слово, поэтому вот так работать НЕ будет:
1С поругается, что Переменная не определена (Структура). Ведь перед последним знаком ? слово Структура
Но что если использовать символ ? в параметрах?
Сделаем процедуру с параметром ? :
Такую процедуру действительно возможно создать. И можно вызывать. Причем 1С понимает, что параметр обязательный и его необходимо передать.
Но мы можем сделать его необязательным:
И параметр не обязан быть единственным. Можно делать разными способами:
А можно использовать Знач
Но вот незадача, ? в параметре метода не использует предыдущее слово (как во всех других случаях). Как обратиться к этому параметру - неизвестно.
В стеке вызовов он отображается:
А попробуем добавить второй параметр ?
1С ругается так:
Формальный параметр с указанным именем уже определен (?)
Опираясь на текст ошибки, мы можем предположить, что 1С объявляет параметр с именем "?"
И когда мы пытаемся добавить ещё один такой параметр, то платформа ругается.
Как обратиться к параметру с именем "?" - неизвестно. Методы Вычислить() и Выполнить() не помогли.
Но, возможно, это всё те вопросы, которые нам ещё предстоит разгадать. Секреты и загадки этой таинственной платформы под кодовым названием 1С.
Понравилась статья?
Поставьте лайк плюс. Пишите свои идеи и комментарии по теме. Статья будет дополняться.
Читайте также: