Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 9 additions & 5 deletions docs/product/framework-elements/010-component-declaration.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Объявление компонента
title: Объявление компонента (&Желудь)
---

# Объявление компонента
# Объявление компонента (&Желудь)

Как вы, наверное, догадались по словосочетанию "компонентное приложение", основой вашего приложения становится `Желудь`. Жёлудь - это всё, и всё есть жёлудь. `ОбновляторВерсии1С`? Жёлудь. `ПроверяторУстановленныхВерсий`? Тоже Жёлудь. И даже логин с паролем - это тоже в некотором роде жёлуди.

Expand All @@ -11,12 +11,16 @@ title: Объявление компонента
::: code-group

```bsl [Классы/ПроверяторВерсий.os]
&Желудь
Процедура ПриСозданииОбъекта()
&Желудь // [!code focus]
Процедура ПриСозданииОбъекта() // [!code focus]

КонецПроцедуры
КонецПроцедуры // [!code focus]

Процедура ЧтоНибудьПроверить()

... прочая очень нужная, но абсолютно не интересная логика класса.

КонецПроцедуры
```

:::
Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/020-component-instance.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Получение экземпляра компонента
title: Получение экземпляра компонента (Поделка)
---

# Получение экземпляра компонента
# Получение экземпляра компонента (Поделка)

Мы определили желудь, настало время его создать!

Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/030-components-binding.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Связывание компонентов между собой
title: Связывание компонентов между собой (&Пластилин)
---

# Связывание компонентов между собой
# Связывание компонентов между собой (&Пластилин)

Что нужно двум многоуважаемым Желудям для связи друг с другом? Правильно, пластилин. Каждый ребенок знает, что хорошая поделка - это желуди, пластилин и г... Мы немного отвлеклись.

Expand Down
2 changes: 1 addition & 1 deletion docs/product/framework-elements/040-components-factory.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
title: Фабрика компонентов
title: Фабрика компонентов (&Дуб, &Завязь)
---

# Фабрика компонентов
Expand Down
6 changes: 3 additions & 3 deletions docs/product/framework-elements/050-dependency-injection.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Внедрение зависимостей в поля и функции-сеттеры
title: Внедрение зависимостей в поля и функции-сеттеры (Установить)
---

# Внедрение зависимостей в поля и функции-сеттеры
# Внедрение зависимостей в поля и функции-сеттеры (Установить)

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

Expand All @@ -26,6 +26,6 @@ title: Внедрение зависимостей в поля и функции

:::

При получении желудя `Обновлятор1С` зависимость `Логин` будет внедрена в поле напрямую, а зависимость `Пароль` установлена через процедуру `УстановитьПароль`.
При получении желудя `Обновлятор1С` зависимость `Логин` будет внедрена в поле напрямую, а зависимость `Пароль` установлена через процедуру `УстановитьПароль`.

Как и в случае с подстановкой желудей в конструктор, имя конкретного желудя может быть переопределено в параметре аннотации `&Пластилин`. По умолчанию имя внедряемого желудя берется либо из имени поля ("Логин") либо из имени метода, из которого отбрасывается префикс "Установить": `УстановитьПароль` `->` `Пароль`.
4 changes: 2 additions & 2 deletions docs/product/framework-elements/060-app-settings-injection.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Внедрение настроек приложения
title: Внедрение настроек приложения (&Деталька, autumn-properties)
---

# Внедрение настроек приложения
# Внедрение настроек приложения (&Деталька, autumn-properties)

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

Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/070-custom-arguments.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Произвольные аргументы конструктора
title: Произвольные аргументы конструктора (&Блестяшка)
---

# Произвольные аргументы конструктора
# Произвольные аргументы конструктора (&Блестяшка)

Иногда понимание того, что же еще добавить в поделку, приходит в самый последний момент. Буквально после запуска приложения, кодом, на основании какой-то хитрой логики. Да, можно сделать хитрый `&Дуб`, передать в него в виде желудя расчетчик этой самой бизнес-логики, который выдаст нужную циферку, но порой хочется просто передать `42` в конструктор желудя.

Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/080-instance-generator.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Генератор экземпляров компонентов
title: Генератор экземпляров компонентов (&Табакерка)
---

# Генератор экземпляров компонентов
# Генератор экземпляров компонентов (&Табакерка)

Иногда возникает необходимость получить желудь-зависимость отложено. Например, по какому-то условию или с передачей произвольных параметров. Эту задачу можно решить через внедрение в желудь `Поделки` целиком, но умные книжки учат нас, что зависеть от глобального контекста приложения - это вообще-то фу-фу-фу и не надо так. Для уменьшения связывания полезного кода с инфраструктурным в ОСени есть дополнительная аннотация `&Табакерка`. Если ее навесить над полем или параметром метода, над которым уже висит `&Пластилин`, `&Деталька` или `&Блестяшка`, то вместо внедрения в поле или параметр непосредственно нужного значения будет внедрен специальный объект типа `Табакерка`, который позволяет достать желудь/детальку/блестяшку по требованию.

Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/090-aliases.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Алиасы компонентов
title: Алиасы компонентов (&Прозвище)
---

# Алиасы компонентов
# Алиасы компонентов (&Прозвище)

У желудей все как у людей. Есть свои увлечения, субкультуры и даже может быть `&Прозвище`. Желудь `Василий` в силу своего темного прошлого "у своих" зовется не иначе как `Васян`. Как это отразить в ОСени?

Expand Down
8 changes: 4 additions & 4 deletions docs/product/framework-elements/100-aliases-grouping.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Группировка компонентов по алиасу
title: Группировка компонентов по алиасу (&Прозвище)
---

# Группировка компонентов по алиасу
# Группировка компонентов по алиасу (&Прозвище)

Представьте себе компанию панков. Каждый из них уникален, каждый - личность. Но при этом у них есть и что-то общее - все они панки. К каждому можно обратиться как: "Эй, ты, панк!", и он не только отзовется громогласным "Хой!", но возможно даже предложит Вам пива.

Expand Down Expand Up @@ -75,11 +75,11 @@ title: Группировка компонентов по алиасу

По умолчанию, через `&Пластилин` внедряется единичный `Желудь`, а метод `НайтиЖелуди` возвращает `Массив`.

Помимо единичного желудя и массива, РокБэнд можно получить в виде соответствия (`"Соответствие"`), где ключом будет имя ~~панка~~ жёлудя, а значением - сам жёлудь, и в виде таблицы значений (`"ТаблицаЗначений"`), в каждой строке которой будет содержаться `Имя`, `ОпределениеЖелудя` и сам `Желудь`.
Помимо единичного желудя и массива, РокБэнд можно получить в виде соответствия (`"Соответствие"`), где ключом будет имя ~~панка~~ жёлудя, а значением - сам жёлудь, и в виде таблицы значений (`"ТаблицаЗначений"`), в каждой строке которой будет содержаться `Имя`, `ОпределениеЖелудя` и сам `Желудь`.

> И вообще, загляните в документацию библиотеки [autumn-collections](https://github.com/autumn-library/autumn-collections), там много вкусных типов!

И даже больше, РокБэнд можно получить своим собственным способом, для этого нужно создать у себя свой уникальный `СобирательПанков.os`, в котором нужно определить два метода, один который получает на входе панка и его описание, а второй который возвращает собранную банду
И даже больше, РокБэнд можно получить своим собственным способом, для этого нужно создать у себя свой уникальный `СобирательПанков.os`, в котором нужно определить два метода, один который получает на входе панка и его описание, а второй который возвращает собранную банду:

Comment on lines +78 to 83
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Пример кода содержит несуществующие переменные → падает на первом же запуске

В процедуре Добавить:

  • Используется Желудь, но параметр назван Панк.
  • На строке 103 фигурирует ОпределениеЖелудя, тогда как параметр — ОпределениеПанка.
  • Метод Коллекция.Добавить(...) обращается к не объявленной переменной Коллекция.

Предлагаемый минимальный фикс:

-Процедура Добавить(Панк, ОпределениеПанка) Экспорт
+Процедура Добавить(Панк, ОпределениеПанка) Экспорт

@@
-            Банда.Вставить(РольИИсполнитель.Ключ, Желудь);
+            Банда.Вставить(РольИИсполнитель.Ключ, Панк);

@@
-	Коллекция.Добавить(ОпределениеЖелудя.Имя());
+	Банда.Добавить(ОпределениеПанка.Имя());

Без этих правок пример вводит читателя в заблуждение.

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~82-~82: Избыточные определения. В правильно составленном предложении не должно быть больше одного придаточного определения.
Context: ...вой уникальный СобирательПанков.os, в котором нужно определить два метода, один который получает на входе панка и его описание,...

(OPREDELENIA)

🤖 Prompt for AI Agents
In docs/product/framework-elements/100-aliases-grouping.md around lines 78 to
83, the example code in the Добавить procedure uses inconsistent and undeclared
variable names causing runtime errors. Rename the parameter Желудь to Панк,
change ОпределениеЖелудя to ОпределениеПанка to match the parameter, and declare
or correctly reference the Коллекция variable before calling its Добавить
method. These changes will align variable names and declarations to prevent
immediate failures.

```bsl
// СобирательПанков.os
Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/110-components-sorting.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Упорядочивание компонентов при получении в виде сортированных коллекций
title: Упорядочивание компонентов при получении в виде сортированных коллекций (&Порядок)
---

# Упорядочивание компонентов при получении в виде сортированных коллекций
# Упорядочивание компонентов при получении в виде сортированных коллекций (&Порядок)

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

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Приоритизация компонентов с общим алиасом
title: Приоритизация компонентов с общим алиасом (&Верховный)
---

# Приоритизация компонентов с общим алиасом
# Приоритизация компонентов с общим алиасом (&Верховный)

Но давайте будем честны. Когда мы говорим про Sex Pistols, то в первую очередь вспоминаем Сида Вишеса, и только потом уже Джонни Роттена и остальных. А какой у него получился алко-my-way, ух! Аннотация `&Верховный` подскажет "ОСени", кого вы считаете панком "по умолчанию":

Expand All @@ -13,9 +13,9 @@ title: Приоритизация компонентов с общим алиа
&Прозвище("Панк")
Процедура ПриСозданииОбъекта()
КонецПроцедуры
```

---
// file: Классы/СидВишес.os
```bsl [Классы/СидВишес.os]

&Верховный
&Желудь
Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/130-component-overriding.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Переопределение компонента по имени
title: Переопределение компонента по имени (&Верховный)
---

# Переопределение компонента по имени
# Переопределение компонента по имени (&Верховный)

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

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
---
title: Пост-инициализация компонента
title: Пост-инициализация компонента (&ФинальныйШтрих)
---

# Пост-инициализация компонента
# Пост-инициализация компонента (&ФинальныйШтрих)

Если вы все еще внимательно следите за нитью документации, у вас мог возникнуть вопрос вида ~~"Что за херня тут происходит"~~ "В каком порядке внедряются зависимости желудя?". И это очень хороший вопрос.
Если вы все еще внимательно следите за нитью документации, у вас мог возникнуть вопрос вида ~~"Что за херня тут происходит?"~~ "В каком порядке внедряются зависимости желудя?". И это очень хороший вопрос.

Установить значения в поля несозданного объекта или вызвать в нем какой-либо метод довольно проблематично. Поэтому:

Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/150-component-uniqueness.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Уникальность экземпляров компонентов
title: Уникальность экземпляров компонентов (&Характер)
---

# Уникальность экземпляров компонентов
# Уникальность экземпляров компонентов (&Характер)

Желуди почти как люди. У каждого есть свой `&Характер`. Кто-то показывает его явно, а кто-то ведет себя "как все".

Expand Down
4 changes: 2 additions & 2 deletions docs/product/framework-elements/160-additional-processing.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Дополнительная обработка компонента
title: Дополнительная обработка компонента (&Напильник)
---

# Дополнительная обработка компонента
# Дополнительная обработка компонента (&Напильник)

Предположим, вы хотите сделать лошадку из желудей. Что для этого нужно? Для начала надо взять несколько желудей. Они будут немного отличаться друг от друга: тот, что покрупнее, пойдет на тело лошадки, тонкие желуди пойдут ноги, а вот этот смешной желудь в виде конуса будет мордой нашей лошадки. Конечно же, обмажем все пластилином, чтобы оно держалось вместе.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: Условная регистрация компонентов в контексте приложения
title: Условная регистрация компонентов в контексте приложения (&Заготовка)
---

# Условная регистрация компонентов в контексте приложения
# Условная регистрация компонентов в контексте приложения (&Заготовка)

Иногда вам может потребоваться выбирать, какие именно классы вы хотите добавлять в свою поделку. Например, вы хотите загружать определенный класс только при выполнении какого-нибудь условия (из-за конфликта имен, к примеру). На помощь придёт объект `&Заготовка`, который можно расценивать как готовый набор желудей, добавляемый в поделку.

Expand Down
Loading