You've already forked v8-code-style
mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2025-07-17 21:17:41 +02:00
исправил ошибки (#805)
This commit is contained in:
@ -183,7 +183,7 @@
|
||||
|
||||
## Сокращение типа локальной переменной или параметра
|
||||
|
||||
- Можно безопасно сократить (или фактически установить для статического анализатора) тип локальной переменной метода, входящего параметра или перменной модуля (объекта, формы) метода через проверку типа:
|
||||
- Можно безопасно сократить (или фактически установить для статического анализатора) тип локальной переменной метода, входящего параметра или переменной модуля (объекта, формы) метода через проверку типа:
|
||||
|
||||
```bsl
|
||||
Если ТипЗнч(МояПеременная) = Тип("СправочникОбъект.Товары") Тогда
|
||||
@ -395,7 +395,7 @@
|
||||
....
|
||||
```
|
||||
|
||||
- Исключением могут быть методы обрабатывающие произвольные таблицы, место создания которых неизвестно, но код метода рассчитывает на наличие определенных колонок. Все колонки, на которые расчитывает код, с их типами должны быть указаны в документирующем описании.
|
||||
- Исключением могут быть методы обрабатывающие произвольные таблицы, место создания которых неизвестно, но код метода рассчитывает на наличие определенных колонок. Все колонки, на которые рассчитывает код, с их типами должны быть указаны в документирующем описании.
|
||||
|
||||
НЕПРАВИЛЬНО:
|
||||
|
||||
@ -526,7 +526,7 @@
|
||||
|
||||
## Ссылка на Форму
|
||||
|
||||
Ссылка на форму казывается по полному имени формы
|
||||
Ссылка на форму указывается по полному имени формы
|
||||
|
||||
ПРАВИЛЬНО:
|
||||
|
||||
@ -585,7 +585,7 @@
|
||||
Процедура ОбработкаОбъекта(СтрокаТЗ)
|
||||
```
|
||||
|
||||
## Ссылка на тип парамета метода в модел менджера, объекта, общем модуле
|
||||
## Ссылка на тип параметра метода в модели менджера, объекта, общем модуле
|
||||
|
||||
Ссылка на тип параметра экспортного метода из модуля менеджера
|
||||
|
||||
@ -609,7 +609,7 @@
|
||||
|
||||
## Наследование типов параметров по сигнатуре метода
|
||||
|
||||
При размещении процедур в общих модулях (обычно "Переопределяемый") из общих процедуры могут быть вызваны наследники какого либо механизма библиотеки.
|
||||
При размещении процедур в общих модулях (обычно "Переопределяемый") из общих процедуры могут быть вызваны наследники какого-либо механизма библиотеки.
|
||||
|
||||
ПРАВИЛЬНО:
|
||||
|
||||
@ -624,7 +624,7 @@
|
||||
...
|
||||
```
|
||||
|
||||
В модуле менеджера соотвествующих объектов можно сослаться на сигнатуру параметров метода, чтобы не описывать полностью все типы.
|
||||
В модуле менеджера соответствующих объектов можно сослаться на сигнатуру параметров метода, чтобы не описывать полностью все типы.
|
||||
Необходимо указать только ссылку на метод, других комментариев или элементов документирующих комментариев быть не должно.
|
||||
|
||||
ПРАВИЛЬНО:
|
||||
@ -657,7 +657,7 @@
|
||||
|
||||
### Указание ссылки на функцию-конструктор данных
|
||||
|
||||
При описании параметра метода следует указывать ссылку на функцию-констроктор данных без указания исходного базового типа данных (структура, таблица значений и т.д.).
|
||||
При описании параметра метода следует указывать ссылку на функцию-конструктор данных без указания исходного базового типа данных (структура, таблица значений и т.д.).
|
||||
|
||||
НЕПРАВИЛЬНО 1:
|
||||
|
||||
@ -786,11 +786,11 @@
|
||||
|
||||
## Описание программных интерфейсов для реализации в прикладных объектах
|
||||
|
||||
Существует понятие "описания программного интерфейса объекта" и его реализация в прикладных объектах конфигурации. С применением библиотечного подхода к разработке конфигураций, библиотека может описывать некий программный интерфейс который должен быть реализован в прикладном объекте, для того чтобы библиотечный механизм имел достук к объкту.
|
||||
Существует понятие "описания программного интерфейса объекта" и его реализация в прикладных объектах конфигурации. С применением библиотечного подхода к разработке конфигураций, библиотека может описывать некий программный интерфейс который должен быть реализован в прикладном объекте, для того чтобы библиотечный механизм имел доступ к объекту.
|
||||
|
||||
Например, механизм "Свойства" из библиотеки БСП описывает интерфейс объекта: Наличие табличной части `ДополнительныеРеквизиты`, содержит колонки `Свойство`, `Значение`, `ТекстоваяСтрока` с определенными типами. Далее общий механизм библиотеки может обращаться к объекту например, при записи `УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);` объекта из формы.
|
||||
|
||||
Следует описывать интерфейс входящего объекта для той части объекта, которая требуется для работы механизма. При этом, следует учитывать что механизм расширений свойств в документирующих коментариях поддерживается для тех типов, у которых возможны пользовательские совойства. Например: элементы коллекции вместо самих коллекций - тип `ТабличнаяЧасть` не имеет пользовательских свойств, а тип `СтрокаТабличнойЧасти` может иметь; тип `ДанныеФормыКоллекция` не имеет пользовательских свойств, а тип `ДанныеФормыЭлементКоллекции` может иметь.
|
||||
Следует описывать интерфейс входящего объекта для той части объекта, которая требуется для работы механизма. При этом, следует учитывать, что механизм расширений свойств в документирующих коментариях поддерживается для тех типов, у которых возможны пользовательские совойства. Например: элементы коллекции вместо самих коллекций - тип `ТабличнаяЧасть` не имеет пользовательских свойств, а тип `СтрокаТабличнойЧасти` может иметь; тип `ДанныеФормыКоллекция` не имеет пользовательских свойств, а тип `ДанныеФормыЭлементКоллекции` может иметь.
|
||||
|
||||
|
||||
НЕПРАВИЛЬНО:
|
||||
@ -880,7 +880,7 @@
|
||||
....
|
||||
```
|
||||
|
||||
- Для функций общих модулей, расчитывающих на дополнительные свойства и методы расширения типа `ФормаКлиентскогоПриложения` следует использовать соответствующие типы расширений управляемой формы: `РасширениеУправляемойФормыДляОбъектов`, `РасширениеУправляемойФормыДляДокумента`, `РасширениеУправляемойФормыДляДинамическогоСписка` и так далее.
|
||||
- Для функций общих модулей, рассчитывающих на дополнительные свойства и методы расширения типа `ФормаКлиентскогоПриложения` следует использовать соответствующие типы расширений управляемой формы: `РасширениеУправляемойФормыДляОбъектов`, `РасширениеУправляемойФормыДляДокумента`, `РасширениеУправляемойФормыДляДинамическогоСписка` и так далее.
|
||||
|
||||
```bsl
|
||||
// Параметры:
|
||||
@ -909,6 +909,7 @@
|
||||
|
||||
```bsl
|
||||
Форма = ПолучитьФорму("Справочник.Номенклатура.Форма.ФормаЭлемента");
|
||||
// или
|
||||
Форма = Справочники.Номенклатура.ПолучитьФорму("ФормаЭлемента");
|
||||
```
|
||||
|
||||
@ -930,7 +931,7 @@
|
||||
Данные = ПолучитьИзВременногоХранилища(Адрес); // см. НовыйОбъектДанных
|
||||
```
|
||||
|
||||
- Аналогичный подход следует использовать при помещении пользовательского объекта внутрь другого объекта-контейнера, например `ДполнительныеПараметры` у объектов, или `Параметры` формы, пользовательские параметры элементов `СКД`, `ДополнительныеПараметры` у обработчиков оповещения и так далее.
|
||||
- Аналогичный подход следует использовать при помещении пользовательского объекта внутрь другого объекта-контейнера, например `ДополнительныеПараметры` у объектов, или `Параметры` формы, пользовательские параметры элементов `СКД`, `ДополнительныеПараметры` у обработчиков оповещения и так далее.
|
||||
|
||||
## Использование строковых литералов в качестве имен
|
||||
|
||||
@ -991,11 +992,11 @@
|
||||
|
||||
Реквизит формы с типом `Произвольный` в коде следует рассматривать как "черный ящик". Статический анализатор не отслеживает изменение типа реквизита формы, поэтому весь обслуживающий этот реквизит код должен использовать проверку типа значения.
|
||||
|
||||
В общем случае не следует использовать реквизит с типом `Произвольный` на форме, т.к. при этом разработчик самостоятельно несет ответственность за инициализацию значения в этом реквизите, за то, что все типы данных хранимые в реквизите могут быть сериализованы/десериализованы при передаче с клиента на сервер и обратно. Так же значение реквизита будет передаваться между клиентом и сервером всегда т.к. Платформа не контролирует модификацию значений например внутри структуры помещенной в произвольный реквизит.
|
||||
В общем случае не следует использовать реквизит с типом `Произвольный` на форме, т.к. при этом разработчик самостоятельно несет ответственность за инициализацию значения в этом реквизите, за то, что все типы данных хранимые в реквизите могут быть сериализованы/десериализованы при передаче с клиента на сервер и обратно. Так же значение реквизита будет передаваться между клиентом и сервером всегда т.к. Платформа не контролирует модификацию значений, например внутри структуры, помещенной в произвольный реквизит.
|
||||
|
||||
Реквизит с типом `Произвольный` следует заменять на честные реквизиты формы с определенными типами. Исключением может быть хранимые данные общих механизмов библиотек, которые через программный интерфейс инициализируют и обрабатывают хранимое в этом реквизите значение.
|
||||
|
||||
Если заменить реквизит с типом `Произвольный` нет возможности, следует использовать функцию-конструктор для ициализаци значения и дальнейших ссылок на типы. При этом не следует напрямую обращаться к реквизиту - для получения значения следует использовать функцию-получатель.
|
||||
Если заменить реквизит с типом `Произвольный` нет возможности, следует использовать функцию-конструктор для инициализации значения и дальнейших ссылок на типы. При этом не следует напрямую обращаться к реквизиту - для получения значения следует использовать функцию-получатель.
|
||||
|
||||
ПРАВИЛЬНО:
|
||||
|
||||
@ -1035,7 +1036,7 @@
|
||||
При типизации выборки/выгрузки из результата запроса следует использовать возможности:
|
||||
|
||||
1. Статическое описание всех полей выборки (полей таблицы значений выгрузки) в возвращаемом значении [функции-получателе данных](#функции-получатели-сложных-объектов-данных). Может применяться для функций, динамически формирующих текст запроса и выборку, а так же все экспортные функции, возвращающие выборку.
|
||||
2. Динамическая типизация полей выборк на основе текста запроса. В будущих версиях 1C:EDT может быть реализована возможность обращаться к полям запроса, при условии что текст запроса и выборка (результат запроса) находятся в одной процедуре, текст запроса не содержит ошибок (открыавется "Конструктором запросов"), выборка/выгрузка из результата запроса не передается в другой модуль для обработки.
|
||||
2. Динамическая типизация полей выборки на основе текста запроса. В будущих версиях 1C:EDT может быть реализована возможность обращаться к полям запроса, при условии что текст запроса и выборка (результат запроса) находятся в одной процедуре, текст запроса не содержит ошибок (открывается "Конструктором запросов"), выборка/выгрузка из результата запроса не передается в другой модуль для обработки.
|
||||
|
||||
НЕПРАВИЛЬНО:
|
||||
|
||||
|
Reference in New Issue
Block a user