From 58aa9a90310bc14dec0055df0968c0c8caad7242 Mon Sep 17 00:00:00 2001
From: Artem Iliukhin <20300020+iArtemv@users.noreply.github.com>
Date: Mon, 20 Mar 2023 01:34:33 -0700
Subject: [PATCH] =?UTF-8?q?#1200=20=D0=A0=D0=B5=D0=BA=D0=BE=D0=BC=D0=B5?=
=?UTF-8?q?=D0=BD=D0=B4=D1=83=D0=B5=D1=82=D1=81=D1=8F=20=D0=B8=D1=81=D0=BF?=
=?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=A0?=
=?UTF-8?q?=D0=B5=D0=BA=D0=B2=D0=B8=D0=B7=D0=B8=D1=82=D0=A4=D0=BE=D1=80?=
=?UTF-8?q?=D0=BC=D1=8B=D0=92=D0=97=D0=BD=D0=B0=D1=87=D0=B5=D0=BD=D0=B8?=
=?UTF-8?q?=D0=B5=20(#1201)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
CHANGELOG.md | 1 +
.../markdown/ru/using-form-data-to-value.md | 27 +++++++
.../markdown/using-form-data-to-value.md | 27 +++++++
bundles/com.e1c.v8codestyle.bsl/plugin.xml | 4 +
.../e1c/v8codestyle/bsl/check/Messages.java | 6 ++
.../bsl/check/UsingFormDataToValueCheck.java | 71 ++++++++++++++++
.../v8codestyle/bsl/check/messages.properties | 6 ++
.../bsl/check/messages_ru.properties | 6 ++
.../resources/using-form-data-to-value.bsl | 3 +
.../itests/UsingFormDataToValueCheckTest.java | 81 +++++++++++++++++++
10 files changed, 232 insertions(+)
create mode 100644 bundles/com.e1c.v8codestyle.bsl/markdown/ru/using-form-data-to-value.md
create mode 100644 bundles/com.e1c.v8codestyle.bsl/markdown/using-form-data-to-value.md
create mode 100644 bundles/com.e1c.v8codestyle.bsl/src/com/e1c/v8codestyle/bsl/check/UsingFormDataToValueCheck.java
create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/resources/using-form-data-to-value.bsl
create mode 100644 tests/com.e1c.v8codestyle.bsl.itests/src/com/e1c/v8codestyle/bsl/check/itests/UsingFormDataToValueCheckTest.java
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0831c8c2..a4a75f75 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -20,6 +20,7 @@
#### Код модулей
+- Проверка использования метода ДанныеФормыВЗначение вместо РеквизитФормыВЗначение
- В проверку использования нерекомендуемых методов (use-non-recommended-method) добавлен метод ПолучитьФорму(GetForm)
- Использование устаревшего метода Найти
- Отсутствует комментарий к экспортной процедуре (функции)
diff --git a/bundles/com.e1c.v8codestyle.bsl/markdown/ru/using-form-data-to-value.md b/bundles/com.e1c.v8codestyle.bsl/markdown/ru/using-form-data-to-value.md
new file mode 100644
index 00000000..d10c7d1c
--- /dev/null
+++ b/bundles/com.e1c.v8codestyle.bsl/markdown/ru/using-form-data-to-value.md
@@ -0,0 +1,27 @@
+# Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение
+
+В большинстве случаев в модулях форм следует использовать метод формы РеквизитФормыВЗначение вместо метода ДанныеФормыВЗначение.
+
+Рекомендация обусловлена соображениями унификации прикладного кода и тем, что синтаксис метода РеквизитФормыВЗначение проще,
+чем у ДанныеФормыВЗначение (а следовательно, меньше вероятность ошибки).
+В ДанныеФормыВЗначение необходимо дополнительно передавать тип значения, а для РеквизитФормыВЗначение это не обязательно,
+а в практическом плане - избыточно.
+
+Наличие в платформе 1С:Предприятие метода формы РеквизитФормыВЗначение (наряду с методом глобального контекста ДанныеФормыВЗначение)
+объясняется только удобством его применения. С точки зрения эффективности и результата методы работают одинаково.
+
+## Неправильно
+
+```bsl
+ТаблицаПодписей = ДанныеФормыВЗначение(ТаблицаПодписей, Тип("ТаблицаЗначений"));
+```
+
+## Правильно
+
+```bsl
+ТаблицаПодписей = РеквизитФормыВЗначение("ТаблицаПодписей");
+```
+
+## См.
+
+- [Использование РеквизитФормыВЗначение и ДанныеФормыВЗначение](https://its.1c.ru/db/v8std#content:409:hdoc)
diff --git a/bundles/com.e1c.v8codestyle.bsl/markdown/using-form-data-to-value.md b/bundles/com.e1c.v8codestyle.bsl/markdown/using-form-data-to-value.md
new file mode 100644
index 00000000..135c0783
--- /dev/null
+++ b/bundles/com.e1c.v8codestyle.bsl/markdown/using-form-data-to-value.md
@@ -0,0 +1,27 @@
+# Using FormAttributeToValue and FormDataToValue
+
+In most cases, FormAttributeToValue is preferable to FormDataToValue.
+
+Sticking to this recommendation will help you to keep the code consistent with other 1C:Enterprise applications. Also,
+FormAttributeToValue has simpler syntax, that is, less chance to make a code mistake.
+FormDataToValue requires the data type to be specified explicitly.
+
+In contrast, FormAttributeToValue doesn't require data type to be specified.
+
+1C:Enterprise supports both the FormAttributeToValue and FormDataToValue methods,
+but the last-mentioned is considered more usable. In terms of efficiency and output, the methods are equal.
+
+## Noncompliant Code Example
+
+```bsl
+SignaturesTable = FormDataToValue(SignaturesTable, Type("ValueTable"));
+```
+
+## Compliant Solution
+
+```bsl
+SignaturesTable = FormAttributeToValue("SignaturesTable");
+```
+
+## See
+[Using FormAttributeToValue and FormDataToValue](https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_Development_Standards/Code_conventions/Using_applied_objects_and_universal_value_collections/Using_FormAttributeToValue_and_FormDataToValue)
diff --git a/bundles/com.e1c.v8codestyle.bsl/plugin.xml b/bundles/com.e1c.v8codestyle.bsl/plugin.xml
index 82234e66..0a72b6df 100644
--- a/bundles/com.e1c.v8codestyle.bsl/plugin.xml
+++ b/bundles/com.e1c.v8codestyle.bsl/plugin.xml
@@ -347,6 +347,10 @@
category="com.e1c.v8codestyle.bsl"
class="com.e1c.v8codestyle.internal.bsl.ExecutableExtensionFactory:com.e1c.v8codestyle.bsl.check.DeprecatedProcedureOutsideDeprecatedRegionCheck">
+
+