Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added reverse assignment #88

Merged
merged 8 commits into from
Aug 5, 2024
Merged
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
52 changes: 40 additions & 12 deletions docs/ПодпискиНаСобытия.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,49 @@
# Подсистема "Подписки на события"

Подписки на события применяются для реализации дополнительной постобработки или проверок, которые активируются после определённых событий в типовых объектах или модулях менеджера.
В случае отстутствия типовой подписки, используется подсистема **"Подписки на события"**. Если нужно внести изменения в типовую логику работы подписки, используется заимствование методов в расширении с аннотацией &ИзменениеИКонтроль.
В случае отсутствия типовой подписки используется подсистема **"Подписки на события"**. Если нужно внести изменения в типовую логику работы подписки, используется заимствование методов в расширении с аннотацией &ИзменениеИКонтроль.

**Общая структура подписок на события:**
- Для каждого класса **общий модуль** (пример: "пбп_ДокументыОбработкаСобытий")
- В каждом общем модуле распологаются процедуры-обработчики для данного класса (пример: "ОбработкаПроведения", "ПриЗаписи")
- В области **СлужебныйПрограммныйИнтерфейс** добавляются одноименные процедуры для обработки конкретных событий (пример: "СписаниеБезналичныхДенежныхСредствПриЗаписи")
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** необходимо добавить соответствие типа объекта и вызываемой процедуры в одноименной функции **(Указывать только имя процедуры!)**

Comment on lines +6 to +11
Copy link

Choose a reason for hiding this comment

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

Fix unordered list indentation.

The unordered list items should be indented consistently.

- **Общая структура подписок на события:**
-  - Для каждого класса **общий модуль** (пример: "пбп_ДокументыОбработкаСобытий")
-    - В каждом общем модуле распологаются процедуры-обработчики для данного класса (пример: "ОбработкаПроведения", "ПриЗаписи")
-    - В области **СлужебныйПрограммныйИнтерфейс** добавляются одноименные процедуры для обработки конкретных событий (пример: "СписаниеБезналичныхДенежныхСредствПриЗаписи")
-    - В общем модуле **пбп_ОбщегоНазначенияПовтИсп** необходимо добавить соответствие типа объекта и вызываемой процедуры в одноименной функции **(Указывать только имя процедуры!)**
+**Общая структура подписок на события:**
+  - Для каждого класса **общий модуль** (пример: "пбп_ДокументыОбработкаСобытий")
+    - В каждом общем модуле распологаются процедуры-обработчики для данного класса (пример: "ОбработкаПроведения", "ПриЗаписи")
+    - В области **СлужебныйПрограммныйИнтерфейс** добавляются одноименные процедуры для обработки конкретных событий (пример: "СписаниеБезналичныхДенежныхСредствПриЗаписи")
+    - В общем модуле **пбп_ОбщегоНазначенияПовтИсп** необходимо добавить соответствие типа объекта и вызываемой процедуры в одноименной функции **(Указывать только имя процедуры!)**
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Общая структура подписок на события:**
- Для каждого класса **общий модуль** (пример: "пбп_ДокументыОбработкаСобытий")
- В каждом общем модуле распологаются процедуры-обработчики для данного класса (пример: "ОбработкаПроведения", "ПриЗаписи")
- В области **СлужебныйПрограммныйИнтерфейс** добавляются одноименные процедуры для обработки конкретных событий (пример: "СписаниеБезналичныхДенежныхСредствПриЗаписи")
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** необходимо добавить соответствие типа объекта и вызываемой процедуры в одноименной функции **(Указывать только имя процедуры!)**
**Общая структура подписок на события:**
- Для каждого класса **общий модуль** (пример: "пбп_ДокументыОбработкаСобытий")
- В каждом общем модуле распологаются процедуры-обработчики для данного класса (пример: "ОбработкаПроведения", "ПриЗаписи")
- В области **СлужебныйПрограммныйИнтерфейс** добавляются одноименные процедуры для обработки конкретных событий (пример: "СписаниеБезналичныхДенежныхСредствПриЗаписи")
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** необходимо добавить соответствие типа объекта и вызываемой процедуры в одноименной функции **(Указывать только имя процедуры!)**
Tools
Markdownlint

7-7: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


8-8: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


9-9: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)


10-10: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)

**Важно!**
- В одноимённых обработчиках событий необходимо после выполнения метода конфигурации делать обратное присвоение параметров из массива "ПараметрыМетода", так как они могут быть изменены в выполняемом методе.
- В обработчиках, указанных в подписках на события, реализован возврат параметра **Отказ** согласно концепции фирмы 1С. При необходимости ускорить работу и избежать выполнения кода при условии **Отказ = Истина**, добавьте проверку этого условия в место проверки **ОбменДанными.Загрузка**.
**Пример:**
```1C (BSL)
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
Если Источник.ОбменДанными.Загрузка Или Отказ Тогда
Возврат;
КонецЕсли;
КонецПроцедуры
```

Общая структура подписок на события:
- Для каждого класса **общий модуль** (пример: "пбп_ДокументыОбработчики")
- В каждом общем модуле распологаются процедуры-обработчики класса (пример: "пбп_ДокументыОбработкаПроведения", "пбп_СправочникиПриЗаписи")
- В области **СлужебныйПрограммныйИнтерфейс** добавляются одноименные процедуры (пример: "СписаниеБезналичныхДенежныхСредствПриЗаписи")
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** добавить в соответствие тип объекта и вызываемую процедуру в одноименной функции **(Указывать только имя процедуры!)**
**Пример обратного присвоения:**
```1C (BSL)
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
// ...
ПараметрыМетода = Новый Массив;
ПараметрыМетода.Добавить(Источник);
ПараметрыМетода.Добавить(Отказ);

пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);

Источник = ПараметрыМетода[0];
Отказ = ПараметрыМетода[1];
// ...
КонецПроцедуры
Comment on lines +24 to +37
Copy link

Choose a reason for hiding this comment

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

Replace hard tabs with spaces.

Hard tabs should be replaced with spaces for consistent formatting.

-			
+            
-			
+            
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Пример обратного присвоения:**
```1C (BSL)
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
// ...
ПараметрыМетода = Новый Массив;
ПараметрыМетода.Добавить(Источник);
ПараметрыМетода.Добавить(Отказ);
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
Источник = ПараметрыМетода[0];
Отказ = ПараметрыМетода[1];
// ...
КонецПроцедуры
**Пример обратного присвоения:**
```1C (BSL)
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
// ...
ПараметрыМетода = Новый Массив;
ПараметрыМетода.Добавить(Источник);
ПараметрыМетода.Добавить(Отказ);
пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);
Источник = ПараметрыМетода[0];
Отказ = ПараметрыМетода[1];
// ...
КонецПроцедуры
Tools
Markdownlint

31-31: Column: 1
Hard tabs

(MD010, no-hard-tabs)


33-33: Column: 1
Hard tabs

(MD010, no-hard-tabs)

Comment on lines +26 to +37
Copy link

Choose a reason for hiding this comment

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

Replace hard tabs with spaces.

Hard tabs should be replaced with spaces for consistent formatting.

-			
+            
-			
+            

Committable suggestion was skipped due to low confidence.

Tools
Markdownlint

31-31: Column: 1
Hard tabs

(MD010, no-hard-tabs)


33-33: Column: 1
Hard tabs

(MD010, no-hard-tabs)

```

Порядок действий при работе с подсистемой:
- Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **пбп_ДокументыОбработкаПроведения**, **пбп_СправочникиПриЗаписи** и так далее.
Недопускается смешение типов объектов и событий в одной подписке. Если подписки не существует, нужно её добавить, а так же общий модуль с аналогичным названием (напр. **пбп_ДокументыОбработчики** - и подписка, и общий модуль).
**Порядок действий при работе с подсистемой:**
- Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **ОбработкаПроведения**, **ПриЗаписи** и так далее.
**Важно!** Не допускается смешение типов объектов и событий в одной подписке. Если подписка не существует, нужно её создать, а так же добавить общий модуль с аналогичным названием (напр. **пбп_ДокументыПриЗаписи** - подписка, **пбп_ДокументыОбработкаСобытий** - общий модуль).
Добавить их в подсистему **пбп_ПодпискиНаСобытия**.
- Если создана новая подписка и модуль, то в модуле создается обработчик для подписки и выбрать его в подписке. У каждого события свой набор параметров.
- Структура общего модуля обработчиков:
- В области **СлужебныйПрограммныйИнтерфейс** располагать обработчики объектов, в ней располагаются подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс**, для группировки по подсистемам.
- В области **СлужебныйПрограммныйИнтерфейс** располагаются обработчики объектов. Внутри этой области могут быть подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс** для группировки по подсистемам.
Comment on lines +40 to +46
Copy link

Choose a reason for hiding this comment

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

Fix unordered list indentation.

The unordered list items should be indented consistently.

-**Порядок действий при работе с подсистемой:**
- - Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **ОбработкаПроведения**, **ПриЗаписи** и так далее.  
-**Важно!** Не допускается смешение типов объектов и событий в одной подписке. Если подписка не существует, нужно её создать, а так же добавить общий модуль с аналогичным названием (напр. **пбп_ДокументыПриЗаписи** -  подписка, **пбп_ДокументыОбработкаСобытий** - общий модуль).
-Добавить их в подсистему **пбп_ПодпискиНаСобытия**.
- - Если создана новая подписка и модуль, то в модуле создается обработчик для подписки и выбрать его в подписке. У каждого события свой набор параметров.
- - Структура общего модуля обработчиков:
-   - В области **СлужебныйПрограммныйИнтерфейс** располагаются обработчики объектов. Внутри этой области могут быть подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс** для группировки по подсистемам.
+**Порядок действий при работе с подсистемой:**
+  - Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **ОбработкаПроведения**, **ПриЗаписи** и так далее.  
+**Важно!** Не допускается смешение типов объектов и событий в одной подписке. Если подписка не существует, нужно её создать, а так же добавить общий модуль с аналогичным названием (напр. **пбп_ДокументыПриЗаписи** -  подписка, **пбп_ДокументыОбработкаСобытий** - общий модуль).
+Добавить их в подсистему **пбп_ПодпискиНаСобытия**.
+  - Если создана новая подписка и модуль, то в модуле создается обработчик для подписки и выбрать его в подписке. У каждого события свой набор параметров.
+  - Структура общего модуля обработчиков:
+    - В области **СлужебныйПрограммныйИнтерфейс** располагаются обработчики объектов. Внутри этой области могут быть подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс** для группировки по подсистемам.
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Порядок действий при работе с подсистемой:**
- Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **ОбработкаПроведения**, **ПриЗаписи** и так далее.
**Важно!** Не допускается смешение типов объектов и событий в одной подписке. Если подписка не существует, нужно её создать, а так же добавить общий модуль с аналогичным названием (напр. **пбп_ДокументыПриЗаписи** - подписка, **пбп_ДокументыОбработкаСобытий** - общий модуль).
Добавить их в подсистему **пбп_ПодпискиНаСобытия**.
- Если создана новая подписка и модуль, то в модуле создается обработчик для подписки и выбрать его в подписке. У каждого события свой набор параметров.
- Структура общего модуля обработчиков:
- В области **СлужебныйПрограммныйИнтерфейс** располагать обработчики объектов, в ней располагаются подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс**, для группировки по подсистемам.
- В области **СлужебныйПрограммныйИнтерфейс** располагаются обработчики объектов. Внутри этой области могут быть подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс** для группировки по подсистемам.
**Порядок действий при работе с подсистемой:**
- Необходимо проверить, существует ли общая подписка на нужный тип объекта и событие. Например: **ОбработкаПроведения**, **ПриЗаписи** и так далее.
**Важно!** Не допускается смешение типов объектов и событий в одной подписке. Если подписка не существует, нужно её создать, а так же добавить общий модуль с аналогичным названием (напр. **пбп_ДокументыПриЗаписи** - подписка, **пбп_ДокументыОбработкаСобытий** - общий модуль).
Добавить их в подсистему **пбп_ПодпискиНаСобытия**.
- Если создана новая подписка и модуль, то в модуле создается обработчик для подписки и выбрать его в подписке. У каждого события свой набор параметров.
- Структура общего модуля обработчиков:
- В области **СлужебныйПрограммныйИнтерфейс** располагаются обработчики объектов. Внутри этой области могут быть подобласти по обработчикам. Допустимо добавлению произвольных областей внутри **СлужебныйПрограммныйИнтерфейс** для группировки по подсистемам.
Tools
Markdownlint

41-41: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


44-44: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


45-45: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


46-46: Expected: 2; Actual: 3
Unordered list indentation

(MD007, ul-indent)

```1C (BSL)
#Область ПрограммныйИнтерфейс

Expand Down Expand Up @@ -50,7 +78,7 @@
#КонецОбласти
```

**Пример обработчика общего модуля "пбп_ДокументыОбработчики":**
**Пример обработчика общего модуля "пбп_ДокументыОбработкаСобытий":**
```1C (BSL)
Процедура ПриЗаписи(Источник, Отказ) Экспорт

Expand All @@ -77,7 +105,7 @@
КонецПроцедуры
```

- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** найти функцию с названием объекта и события и добавить в соответствие тип объекта и вызываемую процедуру **(Указывать только имя процедуры!)**. Если функции для данного набора нет, создать её, перед возвратом добавить вызов заранее созданной процедуры:
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** найдите функцию с названием объекта и события, и добавить в соответствие тип объекта и вызываемую процедуру **(Указывать только имя процедуры!)**. Если функции для данного набора нет, создать её, перед возвратом добавить вызов заранее созданной процедуры:
Copy link

Choose a reason for hiding this comment

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

Fix unordered list indentation.

The unordered list items should be indented consistently.

- - В общем модуле **пбп_ОбщегоНазначенияПовтИсп** найдите функцию с названием объекта и события, и добавить в соответствие тип объекта и вызываемую процедуру **(Указывать только имя процедуры!)**. Если функции для данного набора нет, создать её, перед возвратом добавить вызов заранее созданной процедуры:  
+  - В общем модуле **пбп_ОбщегоНазначенияПовтИсп** найдите функцию с названием объекта и события, и добавить в соответствие тип объекта и вызываемую процедуру **(Указывать только имя процедуры!)**. Если функции для данного набора нет, создать её, перед возвратом добавить вызов заранее созданной процедуры:  
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** найдите функцию с названием объекта и события, и добавить в соответствие тип объекта и вызываемую процедуру **(Указывать только имя процедуры!)**. Если функции для данного набора нет, создать её, перед возвратом добавить вызов заранее созданной процедуры:
- В общем модуле **пбп_ОбщегоНазначенияПовтИсп** найдите функцию с названием объекта и события, и добавить в соответствие тип объекта и вызываемую процедуру **(Указывать только имя процедуры!)**. Если функции для данного набора нет, создать её, перед возвратом добавить вызов заранее созданной процедуры:
Tools
Markdownlint

108-108: Expected: 0; Actual: 1
Unordered list indentation

(MD007, ul-indent)


**Пример вызова процедуры для заполнения соответствия:**
```1C (BSL)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@

пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);

Источник = ПараметрыМетода[0];

Исключение
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
КонецПопытки;
Expand Down Expand Up @@ -79,6 +81,9 @@
ПараметрыМетода.Добавить(ТекстЗаполнения);
ПараметрыМетода.Добавить(СтандартнаяОбработка);

Источник = ПараметрыМетода[0];
СтандартнаяОбработка = ПараметрыМетода[3];

пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);

Исключение
Expand All @@ -99,7 +104,7 @@
//
Процедура ПередЗаписью(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт

Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Expand All @@ -115,6 +120,11 @@

пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);

Источник = ПараметрыМетода[0];
Если ПараметрыМетода[1] Тогда
Отказ = Истина;
КонецЕсли;

Исключение
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
КонецПопытки;
Expand All @@ -131,7 +141,7 @@
//
Процедура ПриЗаписи(Источник, Отказ) Экспорт

Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Expand All @@ -146,6 +156,10 @@

пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);

Если ПараметрыМетода[1] Тогда
Отказ = Истина;
КонецЕсли;

Исключение
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
КонецПопытки;
Expand All @@ -154,7 +168,8 @@
КонецПроцедуры

// Возникает при проведении документа.
// Основное назначение процедуры-обработчика данного события - генерация движений по документу. Выполняется в транзакции записи.
// Основное назначение процедуры-обработчика данного события - генерация движений по документу.
// Выполняется в транзакции записи.
//
// Параметры:
// Источник - ДокументОбъект - Объект, обрабатываемый подпиской на события.
Expand All @@ -163,7 +178,7 @@
//
Процедура ОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт

Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Expand All @@ -179,6 +194,10 @@

пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);

Если ПараметрыМетода[1] Тогда
Отказ = Истина;
КонецЕсли;

Исключение
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
КонецПопытки;
Expand All @@ -187,7 +206,8 @@
КонецПроцедуры

// Возникает при записи документа.
// Основное назначение процедуры-обработчика данного события - проверка правильности заполнения значений реквизитов объекта.
// Основное назначение процедуры-обработчика данного события -
// проверка правильности заполнения значений реквизитов объекта.
//
// Параметры:
// Источник - ДокументОбъект - Объект, обрабатываемый подпиской на события.
Expand All @@ -196,7 +216,7 @@
//
Процедура ОбработкаПроверкиЗаполнения(Источник, Отказ, ПроверяемыеРеквизиты) Экспорт

Если Отказ Или Источник.ОбменДанными.Загрузка Тогда
Если Источник.ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;

Expand All @@ -212,6 +232,11 @@

пбп_ОбщегоНазначенияСервер.ВыполнитьМетодКонфигурации(ИмяМетода, ПараметрыМетода);

Если ПараметрыМетода[1] Тогда
Отказ = Истина;
КонецЕсли;
ПроверяемыеРеквизиты = ПараметрыМетода[2];

Исключение
ВызватьИсключение СтрШаблон("%1%2Имя метода: %3", ОписаниеОшибки(), Символы.ПС, ИмяМетода);
КонецПопытки;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт

Описание.Имя = "ПроектнаяБиблиотекаПодсистем";
Описание.Версия = "1.0.0.2";
Описание.Версия = "1.0.1.2";

// Требуется библиотека стандартных подсистем.
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
Expand Down
Loading
Loading