1с параметр не опциональный

Обновлено: 04.07.2024

Параметры процедур и функций

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

2. Не следует использовать вместо параметров функций другие средства конфигурирования (переменные модулей, реквизиты формы и т.п.)

3. Параметры в функции должны идти в логической последовательности. Рекомендуется располагать параметры по принципу от общего к частному.
Например, неправильно:

правильно сначала расположить основные параметры ДокументОбъект и Форма :

4. Необязательные параметры (параметры со значениями по умолчанию) должны располагаться после обязательных параметров (без значений по умолчанию).
Например:

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

При необходимости передавать в функцию большое число параметров рекомендуется:

  • группировать однотипные параметры в один или несколько составных параметров типа Структура . Например, в структуры могут быть объединены параметры, описывающие состав и значения полей некоторого объекта ( ДанныеЗаполнения , ПараметрыПроведения, ДанныеФайла и т.п.);
  • либо полностью пересмотреть логику работы функции, например, разделив ее на несколько разных, более простых функций.

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

Другой пример. Неправильно:

Правильно сгруппировать параметры, описывающие значения реквизитов номенклатуры, в структуру ЗначенияРеквизитов :

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

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

Правильно разбивать такие вызовы на отдельные операторы с помощью вспомогательных локальных переменных:

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

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

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

Частой причиной ошибок при обмене выступает разрыв между обновлениями конфигураций ЗУП 3.1 и БП 3.0.

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

2) Проверка корректности подключения

Заходим в раздел Администрирование – Синхронизация данных – Настройка синхронизации данных.

Встаем мышкой на нужный обмен - кнопка Настроить – кнопка Ещё – Настройки подключения:

1.jpg

В открывшемся окне производим проверку подключения по одноименной кнопке:

2.jpg

Данную проверку следует произвести как в ЗУП 3.1, так и в БП 3.0.

Распространенные ошибки подключения:

При подключении через сетевой каталог – разные папки для обмена в ЗУП 3.1 и БП 3.0 (в данном случае нужно проверить оба пути и указать верный); отсутствие доступа до папки (обратиться к системному администратору для настройки общего доступа);

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

Обмен проходит, документы не переносятся

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

1) Убедиться, что нужный документ по дате попадает в период, с которого начинается обмен данными:

3.jpg

Если необходимо, следует провести корректировку настроек обмена.

2) Проверить Предупреждения при обмене, раздел Непринятые по дате запрета:

4.jpg

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

3) Зарегистрировать документ к обмену вручную

Для этого необходимо перейти по кнопке Состав отправляемых данных, выбрать нужный вид документа, затем по кнопке Зарегистрировать или правой кнопкой мыши в соседней табличной части зарегистрировать нужный документ к обмену:

5.jpg

6.jpg

7.jpg

Затем следует повторить проведение обмена между конфигурациями.

8.jpg

9.jpg

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

Статью подготовила старший консультант «ИнфоСофт» Анастасия Ткаченко

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

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

Во встроенном языке 1С:Предприятие 7.7 определены два варианта реализации вспомогательных вычислений:

  1. Реализация вычислений через процедуры, не возвращающие каких-либо значений;
  2. Реализация вычислений через функции, возвращающие результат вычислений в точку вызова;

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

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

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

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

Параметры исполняемых операторов

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

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

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

Необязательные (опциональные) параметры

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

Передача параметров по значению. Передача параметров по ссылке

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

Предварительное объявление процедур и функций

При этом следует учесть, что предварительное описание должно включать все параметры исходных процедур и функций, включая ключевые слова Знач и Экспорт

Досрочное завершение исполняемого оператора

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


Начиная с версии платформы 8.3.15 в расширениях можно использовать аннотацию &ИзменениеИКонтроль. При этом важна именно версия платформы, а не режим совместимости. То есть, если у Вас платформа 8.3.15, а режим совместимости установлен 8.3.12, то аннотация &ИзменениеИКонтроль будет работать.


Для примера использования создадим простую обработку с одной командой на форме и со следующим программным кодом в модуле:



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

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

Автоматическое обновление модуля в расширении можно выполнить только если настроено сравнение/объединение с помощью внешних программ.

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

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

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