Vvmebel.com

Новости с мира ПК
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Асинхронное программирование 1с

Асинхронное получение данных: программный интерфейс для разработчика 1С

Механизм асинхронного получения данных предназначен для создания API, позволяющих запросить и получить из приложения 1С данные, которые еще не существуют в приложении.

Для разработчика этот механизм позволяет не отвлекаться на механику транспорта. На вход прикладной разработчик получает идентификатор обработчика и двоичные данные, которые разбирает и формирует нужные данные в ответ. Если разработчику нужно получить асинхронно еще какие-то данные, то он может воспользоваться функцией паузы, также реализованной программном интерфейсе БТС.

Обработка для эмуляции асинхронного получения данных: АсинхронноеПолучениеДанных.epf

В механизме не используется ролевая модель платформы 1C:Предприятие, по этому данный транспорт может использоваться только в направлении «Внешняя система» → «Сервис 1С:Фреш», где пользователь , под которым инициируется получение данных является служебным, представляющим эту внешнюю систему, а не конкретного человека. При этом разработчик прикладного решения может реализовать свою собственную ролевую модель.

Схема работы

  1. Внешний сервис передает параметры получения данных в приложение 1С через сервис DataTransfer запросом POST в объектное хранилище асинхронного получения данных — async. В качестве id указывается идентификатор данных.
    • Параметры сохраняются в файловом хранилище и id настроек и id данных передаются в задание очереди.
    • Создается задание очереди.
    • В качестве результата на запрос возвращает идентификатор задания очереди.
    • В задании очереди выполняется обработчик формирования данных по переданным параметрам. Результаты помещаются в файловое хранилище.
  2. Внешний сервис периодически опрашивает приложение 1С по идентификатору задания очереди и получает ответ, что данные еще не сформированы (код 10202), и нужно подождать, или что данные сформированы (код 10200). В результате передается id файла.
  3. Внешний сервис получает запрошенные данные.

Программный интерфейс подсистемы

Методы программного интерфейса

Расположены в общем модуле АсинхронноеПолучениеДанных.

Функция НовыйОписаниеВозвращаемыхДанных

Возвращает новую структуру описания возвращаемых данных. Может использоваться при встраивании подсистемы для подготовки структуры описания отчета для метода АсинхронноеПолучениеДанныхПереопределяемый.УстановитьДоступныеВозвращаемыеДанные.

  • Структура — описание отчета:
    • МодульМенеджер — ОбщийМодуль, МодульМенеджераОбъекта — модуль менеджера модуль менеджера получения данных, из которого будет вызван метод ВозвращаемыеДанные .
    • Наименование — Строка — наименование возвращаемых данных.
    • Описание — Строка — подробное описание возвращаемых данных.
    • ТипыРезультата — Массив из Строка — типы возвращаемых данных.

Функция ДоступныеВозвращаемыеДанные

Возвращает перечень доступных данных.

  • Соответствие — перечень доступных возвращаемых данных.
    • Ключ — идентификатор данных
    • Значение — Структура — описание данных(см. АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных)

Переопределяемые методы программного интерфейса

Расположены в общем модуле АсинхронноеПолучениеДанныхПереопределяемый.

Процедура АвторизоватьЗапрос

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

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

  • ИдентификаторДанных — Строка — идентификатор данных. Может быть переопределено при обработке. Указывается в качестве имени файла, возвращаемом в результате.
  • Параметры — ДвоичныеДанные — переданные параметры получения данных.
  • Отказ — Булево — Возвращаемый параметр. Признак отказа в авторизации. При отказе в авторизации устанавливать в Отказ = Истина.
  • СообщениеОбОшибке — Строка — Возвращаемый параметр. Текст сообщения об ошибке при отказе в авторизации.

Процедура УстановитьДоступныеВозвращаемыеДанные

Вызывается при формировании списка доступных отчетов и при получении данных отчета. Определяет список отчетов, подключенных к подсистеме.

  • ДоступныеВозвращаемыеДанные — Соответствие — с полями:
    • Ключ — идентификатор данных
    • Значение — Структура — описание данных (см. АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных)

Методы, возвращающие стандартные кодов возвратов по имени метода

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

  • КодВозвратаОшибкаДанных
  • КодВозвратаВнутренняяОшибка
  • КодВозвратаВыполненоСПредупреждениями
  • КодВозвратаВыполнено
  • КодВозвратаНеНайдено
  • Число — стандартный код возврата по имени метода

Методы, возвращающие типы файлов возвращаемых данных

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

Реализация программного интерфейса в прикладной конфигурации

Подключение обработчиков получения данных к подсистеме реализуется 2-мя методами.

Процедура УстановитьДоступныеВозвращаемыеДанные

Заполняет перечень доступных возвращаемых данных. Процедура должна вызываться из переопределяемого модуля АсинхронноеПолучениеДанныхПереопределяемый.УстановитьДоступныеВозвращаемыеДанные.

  • ДоступныеВозвращаемыеДанные — Соответствие — с полями:
    • Ключ — идентификатор данных
    • Значение — Структура — описание данных (см. АсинхронноеПолучениеДанных.НовыйОписаниеВозвращаемыхДанных)

Функция ВозвращаемыеДанные

Возвращает данные по идентификатору данных
Параметры:

  • ИдентификаторДанных — Строка — идентификатор данных. Указывается в качестве имени файла, возвращаемом в результате. Может быть переопределен.
  • Параметры — ДвоичныеДанные — переданные параметры получения данных.

КодВозврата — Число — код возврата обработчика получения данных (по умолчанию — 10200).

Ошибка — Булево — признак ошибки (по умолчанию — Ложь)

СообщениеОбОшибке — Строка — подробности ошибки (по умолчанию не заполнено).

  • ДвоичныеДанные — возвращаемые данные.

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

Синхронные и асинхронные методы в 1С

С появлением управляемого приложения, web-клиентов и т.д. изменилась и философия программирования на платформе 1С:Предприятие. Если раньше все применяемые методы были синхронными, то теперь появляются еще и асинхронные. И если вы хотите, чтобы ваша конфигурация работала не только на толстом или тонком клиенте, но и на web-клиенте, мобильном приложении или в облаке 1С:Fresh, то придется пользоваться именно асинхронными методами.

В чем же разница? Если коротко, то:

  • Синхронные методы блокируют выполнение кода до их завершения.
  • Асинхронные методы позволяют коду выполняться дальше, при этом отслеживается момент их завершения.

Асинхронные методы на сегодняшний день существуют только для некоторых операций:

  • с блокирующими/диалоговыми окнами для пользователя;
  • с файлами;
  • с криптографией;
  • с внешними компонентами.

Асинхронные методы существуют только на клиенте. На сервере по-прежнему доступны синхронные методы (если они вообще существуют).

Общие принципы использования асинхронных методов

Асинхронные методы обычно имеют в своем названии слова Начать или Показать.

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

Рассмотрим наиболее часто встречающиеся задачи, выполняемые с помощью асинхронных методов.

Вызов диалогового окна асинхронно

  1. Создаем переменную с типом Оповещение. Первым параметром является имя экспортной процедуры, расположенной в модуле этой же формы, которую нужно выполнить после завершения работы диалогового окна. Вторым параметром передается управляемая форма, из которой был вызван диалог.

Таким образом, полный код будет выглядеть так:

&НаКлиенте
Процедура ВыполнитьОбмен ( Команда )

Оповещение = Новый ОписаниеОповещения ( «ПослеЗакрытияВопроса» , ЭтотОбъект ) ;
ПоказатьВопрос ( Оповещение ,
«Будет выполнена передача каталога товаров на web-сайт. Продолжить?» ,
РежимДиалогаВопрос . ДаНет ,
0 , // таймаут в секундах
КодВозвратаДиалога . Нет , // кнопка по умолчанию
«Подтверждение действия» ) ; // заголовок диалогового окна

&НаКлиенте
Процедура ПослеЗакрытияВопроса ( Результат , Параметры ) Экспорт

Если Результат = КодВозвратаДиалога . Да Тогда
ВыполнитьОбменНаСервере ( ) ;
КонецЕсли ;

Вызов диалога открытия файла асинхронно

Диалог выбора/открытия файлов создается аналогично:

  1. Создаем описание оповещения
  2. Вызываем диалоговое окно
  3. Создаем экспортную процедуру, которая будет выполняться после закрытия диалога.

Продемонстрируем это на примере открытия диалога выбора каталога.

&НаКлиенте
Процедура КаталогНаДискеНачалоВыбора ( Элемент , ДанныеВыбора , СтандартнаяОбработка )

Диалог = новый ДиалогВыбораФайла ( РежимДиалогаВыбораФайла . ВыборКаталога ) ;
ОписаниеОп = новый ОписаниеОповещения ( «КаталогВыбран» , ЭтотОбъект ) ;
Диалог . Показать ( ОписаниеОп ) ;

&НаКлиенте
Процедура КаталогВыбран ( ВыбранныеФайлы , ДополнительныеПараметры ) Экспорт

Если ВыбранныеФайлы <> Неопределено и ВыбранныеФайлы . Количество ( ) > 0 Тогда
КаталогНаДиске = ВыбранныеФайлы [ 0 ] ;
КонецЕсли ;

Более подробное описание диалогов выбора файлов смотрите в этой статье.

Синхронные и асинхронные методы в 1С : 2 комментария

Интересно, спасибо большое, но..Прежде чем опубликовать проверили б ошибки в листинге.

Вы бы написали, где у нас там ошибки 🙂

Одну ошибку нашли и исправили. Если есть еще где-то, укажите, пожалуйста.

Асинхронность в 1С

1С на управляемых формах теперь работает на большом количестве платформ – браузеры, мобильные телефоны, Windows , Mac , Linux .

Поэтому некоторые вещи пришлось исключать из 1С, чтобы обеспечить возможность выполнения на разных платформах. Среди этих вещей – синхронность выполнения.

Теперь код 1С должен писаться для асинхронного выполнения. Некоторые ошибочно воспринимают этот факт только в том ключе, что теперь в 1С запрещены модальные окна. Ничего подобного, модальные окна (блокирование всего интерфейса) по-прежнему доступны.

Асинхронность – это совершенно другое, оно затронуло даже то, что не касается интерфейса.

Синхронный и асинхронный код

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

В синхронном коде выполняется цикл ожидания завершения длительной операции:

В асинхронном коде выполнение отдается системе при старте длительной операции и возвращается назад программе при завершении этой операции:

В асинхронном коде появляется дробление кода на множество процедур. В-принципе, этого можно было бы избежать неявной генерацией процедур из кода. Т.е. код можно было бы писать как и раньше, система 1С сама бы генерировала процедуры на низком уровне:

Процедура Работа может содержать локальные переменные, и вызов длительной процедуры может происходить из середины цикла.

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

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

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

Асинхронное выполнение циклов

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

В синхронном режиме цикл можно было написать так:

Для Инд = 1 По Всего Цикл

//Операторы после длительн ых операци й

В асинхронном режиме цикл придется переписать так:

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

Переменная Инд для упрощения кода инкрементируется в процедуре итерации до вызова первой длительной операции. Поэтому Инд стартует со значения на единице меньше начального. Как вариант, можно инкрементировать Инд после сравнения с всего, а далее использовать не переменную мИнд, а переменную текущего элемента:

Модальные формы

Что касается модальных форм, то это лишь один из примеров асинхронности. Пожалуй, самый доступный.

Когда вызывается модальная форма, то в асинхронной реализации мы должны прекратить выполнение кода 1с.

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

На самом деле в управляемых формах 1С есть остались модальные окна, это окна которые показываются в режиме «Блокировка всего интерфейса», просто они обрабатываются асинхронным способом.

Плоды асинхронности

Увеличение объема кода

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

Соответственно, код будет часто разбиваться на маленькие кусочки, дробиться на процедуры. Что не будет способствовать прозрачности и удобству восприятия кода.

С другой стороны, программиста все больше и больше приучают к клиент-серверному программированию в парадигме – «послал запрос – жди ответ».

Т.е. классическое программирование последовательного выполнения кода в 1С изживает себя, полностью ломая восприятие программиста для программирования под клиент-серверную архитектуру.

Код в очередной раз усложнился без видимых преимуществ для программиста.

Однако ничего не поделаешь, с этим придется жить и страдать. Интересно, что никакие другие системы кроме 1с не переложили реализацию асинхронности на программиста.

Сохранение и восстановление контекста выполнения

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

Но программисту, так или иначе, придется заботиться о сохранении контекста, что повлечет необходимость написания дополнительного кода. Очередное увеличение трудозатрат.

Независающие формы

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

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

Пример асинхронного кода

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

Асинхронность в программировании

    Статьи, 20 декабря 2018 в 18:04

Традиционно в программировании используют синхронное программирование — последовательное выполнение инструкций с синхронными системными вызовами, которые полностью блокируют поток выполнения, пока системная операция, например чтение с диска, не завершится. В качестве примера ниже написан echo-сервер:

При вызове методов read() и write() текущий поток исполнения будет прерван в ожидании ввода-вывода по сети. Причём большую часть времени программа будет просто ждать. В высоконагруженных системах чаще всего так и происходит — почти всё время программа чего-то ждёт: диска, СУБД, сети, UI, в общем, какого-то внешнего, независимого от самой программы события. В малонагруженных системах это можно решить созданием нового потока для каждого блокирующего действия. Пока один поток спит, другой работает.

Но что делать, когда пользователей очень много? Если создавать на каждого хотя бы один поток, то производительность такого сервера резко упадёт из-за того, что контекст исполнения потока постоянно сменяется. Также на каждый поток создаётся свой контекст исполнения, включая память для стека, которая имеет минимальный размер в 4 КБ. Эту проблему может решить асинхронное программирование.

Асинхронность

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

Callbacks

Для написания асинхронной программы можно использовать callback-функции (от англ. callback — обратный вызов) — функции, которые будут вызваны асинхронно каким-либо обработчиком событий после завершения задачи. Переписанный пример сервера на callback-функциях:

В wait_connection() мы всё ещё ждём чего-то, но теперь вместе с этим внутри функции wait_connection() может быть реализовано подобие планировщика ОС, но с callback-функциями (пока мы ждём нового соединения, почему бы не обработать старые? Например, через очередь). Callback-функция вызывается, если в сокете появились новые данные — лямбда в async_read() , либо данные были записаны — лямбда в async_write() .

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

У такого подхода есть несколько проблем. Первую в шутку называют callback hell. Достаточно погуглить картинки на эту тему, чтобы понять, насколько это нечитаемо и некрасиво. В нашем примере всего две вложенные callback-функции, но их может быть намного больше.

Вторая проблема заключается в том, что код перестал выглядеть как синхронный: появились «прыжки» из wait_connection() в лямбды, например лямбда, переданная в async_write() , что нарушает последовательность кода, из-за чего становится невозможно предсказать, в каком порядке будут вызваны лямбды. Это усложняет чтение и понимание кода.

Async/Await

Попробуем сделать асинхронный код так, чтобы он выглядел как синхронный. Для большего понимания немного поменяем задачу: теперь нам необходимо прочитать данные из СУБД и файла по ключу, переданному по сети, и отправить результат обратно по сети.

Пройдём по программе построчно:

  • Ключевое слово async в заголовке функции говорит компилятору, что функция асинхронная и её нужно компилировать по-другому. Каким именно образом он будет это делать, написано ниже.
  • Первые три строки функции: создание и ожидание соединения.
  • Следующая строка делает асинхронное чтение, не прерывая основной поток исполнения.
  • Следующие две строки делают асинхронный запрос в базу данных и чтение файла. Оператор await приостанавливает текущую функцию, пока не завершится выполнение асинхронной задачи чтения из БД и файла.
  • В последних строках производится асинхронная запись в сокет, но лишь после того, как мы дождёмся асинхронного чтения из БД и файла.

Это быстрее, чем последовательное ожидание сначала БД, затем файла. Во многих реализациях производительность async / await лучше, чем у классических callback-функций, при этом такой код читается как синхронный.

Корутины

Описанный выше механизм называется сопрограммой. Часто можно услышать вариант «корутина» (от англ. coroutine — сопрограмма).

Далее будут описаны различные виды и способы организации сопрограмм.

Несколько точек входа

По сути корутинами называются функции, имеющие несколько точек входа и выхода. У обычных функций есть только одна точка входа и несколько точек выхода. Если вернуться к примеру выше, то первой точкой входа будет сам вызов функции оператором asynс , затем функция прервёт своё выполнение вместо ожидания БД или файла. Все последующие await будут не запускать функцию заново, а продолжать её исполнение в точке предыдущего прерывания. Да, во многих языках в корутине может быть несколько await ’ов.

Для большего понимания рассмотрим код на языке Python:

Программа выведет всю последовательность чисел факториала с номерами от 0 до 41.

Функция async_factorial() вернёт объект-генератор, который можно передать в функцию next() , а она продолжит выполнение корутины до следующего оператора yield с сохранением состояния всех локальных переменных функции. Функция next() возвращает то, что передаёт оператор yield внутри корутины. Таким образом, функция async_factorial() в теории имеет несколько точек входа и выхода.

Stackful и Stackless

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

Так как в корутинах мы можем в любом месте поставить оператор yield , нам необходимо где-то сохранять весь контекст функции, который включает в себя фрейм на стеке (локальные переменные) и прочую метаинформацию. Это можно сделать, например, полной подменой стека, как это делается в stackful корутинах.

На рисунке ниже вызов async создаёт новый стек-фрейм и переключает исполнение потока на него. Это практически новый поток, только исполняться он будет асинхронно с основным.

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

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

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

Будет преобразован в следующий псевдокод:

По сути здесь создаётся класс, который сохраняет всё состояние функции, а также последнюю точку вызова yield . У такого подхода есть проблема: yield может быть вызван только в теле функции-корутины, но не из вложенных функций.

Симметричные и асимметричные

Корутины также делятся на симметричные и асимметричные.

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

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

Вывод

Асинхронное программирование является очень мощным инструментом для оптимизации высоконагруженных программ с частым ожиданием системы. Но, как и любую сложную технологию, её нельзя использовать только потому, что она есть. Необходимо всегда задавать себе вопрос: а нужна ли мне эта технология? Какую практическую пользу она мне даст? Иначе разработчики рискуют потратить очень много сил, времени и денег, не получив никакого профита.

Асинхронное программирование 1с

Войдите как ученик, чтобы получить доступ к материалам школы

Внутренний язык программирования 1С 8.3 для начинающих программистов: установка 1С и ваша первая программа на языке 1С

Автор уроков и преподаватель школы: Владимир Милькин

Если вы не читали введение к урокам — пожалуйста, прочтите его: ссылка.

Установка учебной версии 1С

Для обучения программированию нам понадобится 1С 8.3 (не ниже 8.3.13.1644).

Если у вас есть установленная 1С версии 8.3 — используйте её. Если нет — скачайте и установите учебную версию, которую фирма 1С выпускает специально для образовательных целей.

Задание №1: скачать и установить учебную версию 1С 8.3.

Инструкция для выполнения: ссылка на инструкцию.

После выполнения Задания №1 на вашем рабочем столе должен появиться вот такой ярлык:

Поздравляю! Платформа 1С установлена и очень скоро вы сможете написать первую программу.

Первая программа

Это уже стало традицией для программистов — изучая новый язык, первое, что на нём пишут это программу, печатающую на экране фразу «Hello, World!».

Не станем исключением и мы. Но, будучи русскими программистами, заставим компьютер вывести на экран фразу «Привет, Мир!».

Задание №2: написать программу на языке 1С 8.3, которая при запуске выводит на экран фразу «Привет, Мир!».

Инструкция для выполнения:

1. Запустите ярлык «1С:Предприятие» на вашем рабочем столе.

2. Перед вами открылся список баз 1С. Как видите, он пуст. Давайте создадим учебную базу, в которой и будем программировать. Нажмите кнопку «Добавить«.

3. Выберите пункт «Создание новой информационной базы» и нажмите кнопку «Далее«.

4. Выберите пункт «Создание информационной базы без конфигурации . » и нажмите кнопку «Далее«.

5. В качестве имени базы укажите «Учебная» и нажмите кнопку «Далее«.

6. В качестве каталога базы укажите любую пустую папку (в данном случае это папка «Учебная» в моих документах). Нажмите кнопку «Далее».

7. Укажите вариант аутентификации «Выбирать автоматически«, режим запуска «Толстый клиент«. В качестве версии 1С:Предприятия ничего не указывайте, нажмите кнопку «Готово».

8. Как видите, в списке, наконец, появилась первая база, которую мы только что создали сами! Начнем писать код. Нажмите кнопку «Конфигуратор«.

9. В открывшемся окне, выберите через меню «Конфигурация«->»Открыть конфигурацию«.

10. В открывшейся слева панели нажмите правой кнопкой мыши на слове «Конфигурация» и выберите из списка «Открыть модуль управляемого приложения«.

11. Открылось окно с редактором. Сюда можно писать текст! С ним мы и будем работать в дальнейшем.

12. Теперь, не задумываясь, просто перепишите в это окно следующий текст:

13. Отлично! Код нашей первой программы готов. Запустим его на выполнение. Через меню «Отладка«->»Начать отладку» (или клавиша F5).

14. На вопрос ответим утвердительно.

15. Спустя секунду или две запустится 1С и в окне снизу появится надпись «Привет, Мир!». Мы добились от компьютера того, чего хотели. Поздравляю вас с первой программой!

Обращение преподавателя

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

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

Войдите как ученик, чтобы получить доступ к материалам школы

Читать еще:  Понятие класса в программировании
Ссылка на основную публикацию
Adblock
detector
×
×