Учебные Курсы Ярослава Рябинина
Санкт-Петербург

Обучение программистов и пользователей 1С индивидуально. Подбор и обучение персонала.
Подготовка к сертификации на уровень 1С:Профессионал и 1С:Специалист индивидуально.
Вакансии для программистов 1С в Санкт-Петербурге. Курсы 1С в СПб. Трудоустройство.
☎ +7 999 669 90 09; +7 908 290 11 19



Запись на индивидуальный курс обучения программированию 1С в Санкт-Петербурге: +7 999 669 90 09 (Ярослав Игоревич).


Программные модули в 1С, программный язык 1С:

Предназначены для написания выражений на языке 1С. Язык 1С - нечувствителен к регистру. Порядок определения процедур и функций в модуле - не имеет значения.
В меню конфигуратора введен признак "Встроенный язык" для включения режима выделения цветом синтаксических конструкций в тексте модуля и в текстовом документе


Особенности программного языка 1С:

Нечувствительность к регистру. Двуязычие. Все "слова" пишутся слитно, без разделов. Зарезервированные слова могут использоваться только по предназначению - их нельзя использовать для объявления процедур и переменных. Поясняющий фрагмент кода предваряется символами //. Аналогично код исключается из исполнения ("закомментить код"). Каждое логическое выражение в коде завершается знаком ;.
 

Зарезервированные слова языка 1С:

Если, If - Тогда, Then - ИначеЕсли, ElsIf - Иначе, Else - КонецЕсли, EndIf - Для, For - Каждого, Each - Из, In - По, To - Пока, While - Цикл, Do - КонецЦикла, EndDo - Процедура, Procedure - Функция, Function - КонецПроцедуры, EndProcedure - КонецФункции, EndFunction - Перем, Var - Перейти, Goto - Возврат, Return - Продолжить, Continue - Прервать, Break - И, And - Или, Or - Не, Not - Попытка, Try - Исключение, Except - ВызватьИсключение, Raise - КонецПопытки, EndTry - Новый, New - Выполнить, Execute.
 

Конструкции и ключевые слова языка 1С:

Процедура
Функция
Условный оператор
Цикл
Попытка
Вычисление (? вместо ИначеЕсли)
 

Структура программного модуля 1С:

Раздел объявления переменных
Раздел процедур и функций
Тело модуля
 

Форматирование программного кода 1С в модуле:

Форматирование в модуле предназначено для удобства просмотра и редактирования модуля и для выделения лидирующими пробелами (табуляцией) управляющих конструкций встроенного языка системы 1C.
Будут ли выделяться цветом ключевые слова "Процедура...КонецПроцедуры" при редактировании программных модулей, зависит от настроек параметров
Автоматическое форматирование текстов модулей используется для смещения вправо уже введенного текста, расположенного внутри управляющих конструкций, за счет добавления в начало строк необходимого количества знаков табуляции
Следующие синтаксические конструкции можно группировать: процедуры и функции, комментарии к процедурам и функциям, циклы и условия. Операции для ручного форматирования выделенных блоков текста модуля – это автоматическое форматирование, добавить/удалить комментарий, увеличить/уменьшить отступ
Группировка в модуле предназначена для объединения некоторых синтаксических конструкций языка в группы, сворачивания и разворачивания их и для лучшего восприятия различных частей текста, а также переноса и копирования группы целиком.
Выполнять редактирование текстов модулей можно в процессе создания формы объекта прикладного решения, непосредственно при разработке модулей объектов или всего приложения, и при редактировании внешнего текстового файла, содержащего текст модуля
Способы поиска нужной функции в текущем модуле - использование режима поиска процедур и функций, и через пункт меню "Правка - Найти"
Можно автоматически перейти к определению процедуры или функции, использованной в тексте модуля - установить курсор на имени нужной функции в теле модуля и нажать "F12" или установить курсор на имени нужной функции в теле модуля и выполнить команду контекстного меню "Перейти к определению"
Если установить курсор на имени функции в теле модуля и выполнить команду контекстного меню "Перейти к определению" (F12) - откроется текст функции (раскроется группировка)
Если курсор установлен на определении функции и группировка раскрыта, то установив курсор на имени функции в теле модуля и выполнив команду контекстного меню "Перейти к определению" то ничего не произойдет.

Группировка программного кода в модуле объекта 1С:

#Область НазваниеОбласти
#КонецОбласти
 

Контекстная подсказка:

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

Синтаксис-помощник:

Синтакс-помощник поддерживает поиск по первым символам функции или процедуры, поддерживает перетаскивание синтаксической конструкции в модуль объекта, при нахождении курсора на процедуре или функции в модуле по сочетанию клавиш Ctrl+F1 выдает её описание.
Можно обратиться к синтакс-помощнику: Сочетанием клавиш Ctrl + F1, Сочетанием клавиш Ctrl + Shift + F1, с помощью соответствующей иконки в Конфигураторе, Через меню "Справка" - "Синтакс-помощник"
Определение термину "Шаблон текста" - краткое имя часто используемого фрагмента текста для использования в автоподстановке
В программе производится настройка автоподстановки фрагментов текста с помощью шаблонов: для текста активизируется в меню "Сервис" - "Параметры" - "Тексты", для модулей "Сервис" - "Параметры" - "Тексты модулей"
 

Конструктор форматной строки:

Конструктор форматной строки используется для составления текста форматной строки данных имеющих тип Число, Дата или Булево
Конструктор форматной строки можно вызывать в поле ввода и ячейке табличного документа или можно использовать при написании текстов модулей
Для открытия окна конструктора форматной строки необходимо нажать кнопку выбора в палитре свойств элемента управления формы в свойстве Формат или установить курсор в текст модуля и выбрать пункт "Текст - Конструктор форматной строки"
Форматная строка, сформированная в палитре свойств элемента управления формы при помощи конструктора форматной строки может быть изменена вручную
 

Контекст выполнения программного модуля 1С:

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

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

Директива компиляции программного модуля 1С:

В модулях форм - всегда предваряем определение процедуры указанием на место её исполнения. Если директива не указана - то процедура пытается исполниться на сервере. Процедуры модулей объектов - всегда исполняются на сервере, директивы поэтому не указываем. В общих модулях - возможное место исполнения устанавливается в свойствах модуля, и поэтому процедуры общего модуля не предваряются директивами.
&НаКлиенте
&НаСервере
&НаСервереБезКонтекста
&НаКлиентеНаСервереБезКонтекста
 

Отладка программного модуля 1С:

Отладчик — инструмент, позволяющий:
маркированный список пройти исполняемый модуль по шагам;
маркированный список остановить выполнение кода на нужной строчке, и посмотреть значение переменной на этом этапе исполнения кода;
маркированный список выполнить замер производительности, и найти неоптимальные участки кода;
маркированный список остановиться при появлении ошибки, завершить исполнение кода при бесконечном цикле;

Горячие клавиши отладчика программного модуля 1С:

Начать/продолжить отладку - F5
Перезапуск приложения для отладки - Ctrl + Shift + F5
Прекратить отладку - Shift + F5
Шагнуть в - F11
Шагнуть через - F10
Шагнуть из - Shift + F11
Идти до курсора - Shift + F10
Установить/снять точку останова - F9
Отключить/включить точку останова - Ctrl + Shift + F9
Список точек останова  - Alt + F9
Вычислить выражение - Shift + F9
Открыть табло - Ctrl + Alt + W
Открыть стек вызовов - Ctrl + Alt + C
 

Точка останова:

Служебная метка в теле модуля. Устанавливается двойным щелчком мыши на левой серой полоске окна модуля (или через пункт меню "Отладка"). После этого при срабатывании процедуры модуля в пользовательском режиме при переходе к помеченной строчке - программа остановит исполнение кода, и автоматически переключит нас в Конфигуратор.
Точки останова разделяются на безусловные, когда остановка процесса выполнения (переход в режим отладки) производится каждый раз при переходе к данной строке, и условные, когда остановка происходит при наступлении определенных условий.
Для установки безусловной точки останова следует открыть отлаживаемый модуль, установить курсор на строку, на которой нужно остановить процесс выполнения и выбрать пункт "Отладка - Точка останова".
Для установки точки останова с условием выберите пункт "Отладка - Точка останова с условием" и в открывшемся диалоге укажите условие.
Если включен режим "Останавливаться по ошибке", то при возникновении ошибки Отладчик останавливает выполнение и переходит в строке модуля, вызвавшей ошибку.
Чтобы убрать все ранее расставленные точки останова во всех модулях выберите пункт "Отладка - Отключить все точки останова".
Отладчик позволяет установить на конкретную строку модуля специальный маркер - точку останова, - при достижении которой исполнение программного модуля останавливается и управление передается отладчику. Точки останова могут быть безусловными или с условием. При достижении безусловной точки останова исполнение программного модуля останавливается в любом случае
При достижении точки останова с условием, выполнение программного модуля останавливается только в том случае, если заданное условие истинно
Отладчик поддерживает возможность отключения точек останова. При этом строка модуля остается отмечена маркером, однако на ход исполнения модуля он никакого влияния не оказывает
При большом количестве точек останова удобно использовать отдельное окно для работы с точками останова, позволяющее просматривать и редактировать их в едином списке
После того, как при достижении точки останова управление прикладным решением передано отладчику, существует возможность дальнейшего исполнения модуля в нескольких режимах: пошаговое выполнения, исполнение вызова функции или процедуры, прерывание пошагового исполнения функции или процедуры, выполнения модуля до той строки, на которой стоит курсор или продолжение свободного выполнения модуля
Во время пошагового выполнения существует возможность просматривать значения переменных, содержащихся в модуле, и рассчитывать произвольные значения. Для этого используется специальное окно, отображающее результат расчета
Для объектов встроенного языка значения их свойств представляются в виде древовидной структуры. Для значений, являющихся строками, массивами и коллекциями значений также возможен просмотр в отдельном окне
Текущее значение переменной также можно просмотреть, подведя указатель мыши к этой переменной. Текущее значение будет показано в виде короткой подсказки рядом с переменной
 

Оптимизация кода программных модулей 1С:

В основном заключается в оптимизация клиент-серверного взаимодействия, но не только:
маркированный список уменьшение количества серверных вызовов с клиента;
маркированный список производить все объемные вычисления на сервере;
маркированный список использование директивы НаСервереБезКонтекста вместо НаСервере;
маркированный список определение часто используемых процедур в общих модулях;
 

Собственно виды программных модулей в 1С:

Модуль управляемого приложения:

Используется для определения предопределенных процедур "ПриНачалеРаботыСистемы". нет ограничений на описание переменных, процедур, функций. Используется для обработки событий, связанных с началом и завершением работы системы; для объявления глобальных переменных
Располагается в корневом разделе конфигурации. В нем располагаются процедуры-обработчики событий, которые инициализируются при старте и окончании работы системы с установленном в значение "Управляемое приложение" свойства Основной режим запуска. В модуле управляемого приложения возможно объявление переменных, а также объявление и описание процедур и функций, которые будут доступны в любом модуле конфигурации (кроме модуля внешнего соединения). Их доступность также обеспечивается для неглобальных общих модулей с установленным свойством Клиент (управляемое приложение). В контексте модуля управляемого приложения доступны экспортируемые процедуры и функции общих модулей.
 

Модуль сеанса:

Предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы, не содержит экспортируемых процедур и функций, в кластере серверов 1С:Предприятия 8 исполняется в привилегированном режиме, исполнение происходит после начала исполнения модуля приложения (модуля внешнего соединения)

Автоматически выполняется при старте системы 1С:Предприятие 8 в момент загрузки конфигурации.

Модуль сеанса предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы. Модуль сеанса всегда исполняется в привилегированном режиме в кластере серверов 1С:Предприятия 8.

Важно! Модуль сеанса может содержать только определения процедур и функций.

Модуль сеанса не содержит экспортируемых процедур и функций и может использовать процедуры из общих модулей конфигурации.

Модуль формы:

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

Модуль прикладного объекта:

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

Модуль менеджера прикладного объекта:

Каждый прикладной объект имеет менеджер, предназначенный для управления этим объектом, как объектом конфигурации. С помощью менеджера можно создавать объекты, работать с формами и макетами. Модуль менеджера позволяет расширить функциональность менеджеров за счет введения процедур и функций на встроенном языке. Фактически, это позволяет описать методы для объекта конфигурации (например, справочника), которые относятся не к конкретному экземпляру объекта базы данных, а к самому объекту конфигурации.
Контекст модуля менеджера образуется из:
- глобального контекста, в том числе экспортируемых функций общих модулей (если для модулей установлено свойство Клиент (обычное приложение), Клиент (управляемое приложение) или Сервер);
- экспортируемых переменных, процедур и функций модулей управляемого или обычного приложений;
- локальных и экспортируемых функций самого модуля.
Модуль менеджера не может иметь переменных и тела модуля.
Если функции или процедуры модуля менеджера объявлены как экспортируемые, к ним можно будет получить доступ через менеджер объекта..

 

Общий модуль:

Нельзя описывать переменные

Имя общего модуля может совпадать с именем свойства глобального контекста (например "Отчеты") только если модуль глобальный

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

В любом общем модуле возможно объявление и описание процедур и функций, которые будут доступны в любом модуле конфигурации.

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

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

Важно! Свойство Клиент (обычное приложение) показывается, если в настройках конфигурации режима запуска установлен режим "Управляемое приложение и обычное приложение".

Если установлено свойство Сервер, то все процедуры и функции общего модуля могут использоваться в клиент-серверном варианте.

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

Свойство Вызов сервера разрешает вызов сервера. Свойство доступно, если установлено свойство Сервер. Если не установлено, то процедуры и функции данного модуля доступны только на сервере. Если установлено, то процедуры и функции данного модуля доступны на клиенте.

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

Повторное использование возвращаемых значений. Свойство доступно, если общий модуль не является Глобальным. Это свойство может принимать следующие значения:

Не использовать – повторное использование возвращаемых значений для функций этого общего модуля не используется;
На время вызова и На время сеанса – для общего модуля используется метод определения повторного использования данных. Суть этого метода заключается в том, что в ходе выполнения кода система запоминает параметры и результат работы функций после первого вызова функции. При повторном вызове функции с такими же параметрами, происходит возврат запомненного значения (из первого вызова) без выполнения самой функции. Если функция во время своего выполнения меняет значения параметров, то повторный вызов функции не будет это делать.
Можно выделить следующие особенности сохранения результатов вызова:

если функция выполняется на сервере и вызывается из серверного кода, то значения параметров и результат вызова запоминаются для текущего сеанса на стороне сервера;
если функция выполняется на толстом или тонком клиенте, то значения параметров и результатов вызова запоминается на стороне клиента;
если функция выполняется на стороне сервера, а вызывается из клиентского кода, то значения параметров вызова запоминаются и на стороне клиента и на стороне сервера.
Сохраненные значения удаляются:

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

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

Модуль общего объекта:

Команды; Web-сервисы.
Модули располагаются в ветках конфигурации, в которых содержатся сами объекты и являются свойствами объектов. В этих модулях возможно объявление переменных, процедур и функций, которые будут доступны при работе с объектом извне во встроенном языке, дополняя контекст объекта.

.

Модуль внешнего соединения:


Расположен в корневом разделе конфигурации. Работает  только в сессии внешнего соединения. Содержит процедуры-обработчики событий, которые инициализируются при старте и окончании работы системы в режиме внешнего соединения (СОМ-соединения).

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

Объекты 1С:Предприятия, доступные извне через COM-соединение:

Экспортируемые переменные и процедуры/функции модуля внешнего соединения
Экспортируемые процедуры/функции общих модулей
Включение и исключение модулей целиком с помощью установки свойств общих модулей
Включение и исключение фрагментов общих модулей с помощью препроцессора
Глобальный контекст 1С:Предприятия 8
За исключением объектов, жестко связанных с клиентским приложением (ТекстовыйДокумент, ТабличныйДокумент, ...)
В данном режиме характерно полное отсутствие пользовательского интерфейса.

Модуль набора записей:

Такой модуль присутствует во всех регистрах.

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

Объект РегистрСведенийМенеджерЗаписи используется в тех случаях, когда необходимо выполнить операцию только над одной записью. При этом менеджер записи использует для выполнения записи два набора записей, устанавливая им соответствующие значения отборов. Поэтому обработчики событий набора записей вызываются и тогда, когда для записи данных используется менеджер записи.

основное назначение менеджера записи - обеспечить без дополнительных сложностей редактирование отдельных записей в интерактивных режимах.
С точки зрения производительности использование наборов записей будет максимально эффективным.
 

Модуль глобальный (свойство общего модуля):

Свойство Глобальный определяет, являются ли экспортируемые методы общего модуля частью глобального контекста.
Если свойство Глобальный установлено в значение Истина, то экспортируемые методы общего модуля доступны как методы глобального контекста.

Если свойство Глобальный установлено в значение Ложь, то в глобальном контексте создается свойство с именем, соответствующим имени общего модуля в метаданных. Данное свойство доступно ТОЛЬКО для чтения. Значением данного свойства является объект ОбщийМодуль. Через данный объект доступны экспортируемые методы данного общего модуля. Таким образом, обращение к методам неглобальных общих модулей выглядит как XXXXX.YYYYY, где XXXXX – это имя свойства общего модуля, а YYYYY – имя экспортируемого метода общего модуля.

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

Если установлено свойство Клиент (управляемое приложение), то все процедуры и функции общего модуля могут использоваться в режиме Управляемое приложения, в тонком клиенте, в веб-клиенте.

Модули с установленным свойством Клиент (обычное приложение), проверяются для режимов запуска:

Толстый клиент (обычное приложение);
Толстый клиент (обычное приложение) вариант клиент-сервер.
Модули с установленным свойством Клиент (управляемое приложение), проверяются для режимов запуска:

Толстый клиент (управляемое приложение);
Толстый клиент (управляемое приложение) вариант клиент-сервер;
Тонкий клиент;
Веб-клиент.

Ответы на некоторые вопросы по встроенному языку 1С и использованию модулей - из теста уровня 1С:Профессионал по основным механизмам платформы 1С:

Если в конструкторе печати указано имя процедуры, которая будет выполнять построение печатной формы, и такая процедура уже присутствует в модуле, то конструктор перепишет ее заново, при этом введенный ранее в тело процедуры текст будет потерян

Если процедура с именем "ОбработкаЗаполнения" уже определена в модуле документа, то возможно в этом случае использование конструктора ввода на основании, но при этом система попросит подтверждение на полное замещение уже существующей процедуры "ОбработкаЗаполнения" новой процедурой

Если процедура с именем "ОбработкаПроведения" уже определена в модуле документа, то возможно в этом случае использование конструктора движений, но при этом система попросит подтверждение на замещение алгоритма проведения уже существующей процедуры "ОбработкаПроведения" новым
В конструкторе движений регистра можно произвести автозаполнение выражений – в элементе формы "Табличная часть" выбрать табличную часть "Состав" документа и нажать кнопку "Заполнить выражения"
В конструкторе движений регистра можно значение ресурса "Количество" задать произвольным выражением, т.к. правильность написания формулы конструктор не проверяет

Изменённый текст модулей в основной конфигурации при объединении с приоритетом загружаемой конфигурации будет закомментирован, из загружаемой конфигурации текст будет добавлен
Текст модулей в основной конфигурации при объединении с приоритетом загружаемой, в которой аналогичные тексты модулей удалены, превратится в комментарий

В окне «Настройка объединения модулей» реквизит "Порядок" определяет порядок следования процедур и функций в модуле, исходя из основной конфигурации или загружаемого файла 

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


© 2019. Учебный центр Ярослава Рябинина в Санкт-Петербурге.

Яндекс цитирования