[Alimir_BootModal_Login]

Создание конфигураций 1С: пишем "Крестики-нолики" часть 2/3

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

Продолжаем разработку "Крестиков-ноликов" на 1С. После пятого шага мы krestiki-nolikiвернулись в конфигуратор, чтобы создать визуальное представление (форму) для нашей игры.

Если вы прерывались (закрывали конфигуратор) после предыдущей части - просто выполните шаг №2 (открытие конфигуратора) и шаг №3 (открытие дерева конфигурации) и уже после переходите к шагу №7.

Шаг №7: создание формы

В дереве конфигурации (оно должно быть уже открыто) в разделе обработки выберем (двойным щелчком) "КрестикиНолики":

16

В открывшейся форме обработки перейдём на закладку Формы и нажмём на зелёный плюсик, чтобы добавить новую форму:

17

В следующем окне оставим все поля без изменения, нас всё устраивает. Нажмём кнопку "Готово":

18

Перед нами откроется визуальное представление обработки (форма), но мы пока закроем его (кнопка крестик справа вверху):

08

Теперь снова запустим 1С в режиме Предприятие (меню "Отладка"->"Начать отладку") и увидим, что на желтой панели появилось меню "Сервис", в котором находится наша обработка "Крестики нолики":

19

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

Закроем режим 1С:Предприятие и вернёмся в конфигуратор, чтобы продолжить разработку.

 
 

Шаг №8: добавление команд для формы

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

Снова перейдём к нашей обработке "КрестикиНолики" в дереве конфигурации и выберем в ней закладку "Формы". В этой закладке найдём и откроем форму (двойным щелчком), которую мы добавили ранее:

64

В верхней панели открывшейся формы выберем сначала закладку "Команды":

04

А затем выберем закладку "Команды формы". В этой закладке нажмём на зелёный плюсик, чтобы добавить новую команду на форму:

20

В списке команд появится команда с именем "Команда1":

21

Выделим её (двойным щелчком), справа откроется окно со свойствами этой команды:

21.1

В свойствах команды найдём пункт "Имя" и изменим его с "Команда1" на "НажатиеНаКнопку":

22.1

Отлично, мы изменили имя команды:

22

 
 

Шаг №9: превращаем команды в кнопки

Теперь проделаем следующий фокус: зажмем команду "НажатиеНаКнопку" левой кнопкой мыши и перетащим её на левую часть окна, в которой написано "Форма":

23

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

24

Но для игры крестики-нолики одной кнопки мало. Для поля 3 на 3 нам потребуется целых 9 кнопок. Перетащите ту же самую команду в окно с элементами формы ещё 8 раз:

25

В результате у нас на форме получилось 9 кнопок, каждая из которых связана с одной и той же командой "НажатиеНаКнопку":

26

Попробуем запустить 1С:Предприятие (меню "Отладка"->"Начать отладку") и откроем нашу обработку ("Сервис"->"Крестики нолики").

Как видим кнопки есть, но при нажатии на них пока ничего не происходит. Это всё потому, что мы не задали никакого обработчика для команды "НажатиеНаКнопку":

27

 
 

Шаг №10: создаем обработчик (процедуру) для нашей команды

Вернёмся в конфигуратор. Выделим (двойным щелчком) команду "НажатиеНаКнопку":

28

В окне свойств команды (справа) найдём пункт "Действие" и нажмём на кнопку с лупой возле него:

28.1

Программа предлагает нам создать обработчик для нашей команды. Вся логика игры у нас будет выполняться на клиентском компьютере (с которого запущена база), поэтому выберем первый пункт "Создать на клиенте" и нажмём "ОК":

29

Нас перенесёт в программный модуль формы (место где пишется код программы, связанный с визуальным представлением) в автоматически созданную процедуру "НажатиеНаКнопку":

30

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

Обратите внимание на то, что переключаться между визуальным представлением формы и программным кодом модуля можно используя закладки в самом низу (Форма<->Модуль):

31

Вернёмся в процедуру "НажатиеНаКнопку" в модуле формы и напишем в ней следующую команду:

32

Теперь запустим 1С в режиме Предприятие ( меню "Отладка"->"Начать отладку"). Снова откроем обработку "Крестики нолики" и попробуем нажимать на кнопки. На этот раз на каждое наше нажатие будет появляться сообщение "Вы нажали на кнопку!". Замечательно.

33

 
 

Шаг №11: меняем заголовки наших кнопок на пробел

Вернёмся в конфигуратор, в визуальное представление формы (закладка внизу "Форма") и выделим (двойным щелчком) первую кнопку с именем "НажатиеНаКнопку":

35

В окне свойств этой кнопки установим в значение свойства "Заголовок" пробел (символ пробела):

36

Проделаем такой фокус со всеми кнопками на форме и получим кнопки с пустым заголовком:

37

 
 

Шаг №12: группируем наши кнопки по папкам

Затем нажмём правой кнопкой мыши на элемент "Форма" на закладке "Элементы" и выберем пункт "Добавить":

05

Нам будет предложено выбрать тип элемента, который мы планируем добавить на форму. Выберем "Группа - Обычная группа без отображения" и нажмём кнопку "ОК":

40

Добавим три такие группы:

41

Теперь перетащим кнопку "НажатиеНаКнопку" в "Группа1":

42

43

Все остальные кнопки также распихаем по группам так, как это представлено на рисунке ниже:

44

Выделим двойным щелчком элемент "Группа1":

45

И в его окне свойств (справа) установим свойство "Группировка" в значение "Горизонтальная".

46

Проделаем такой же фокус для "Группа2" и "Группа3":

47

Наши кнопки выстроились в поле 3х3 - то, что и требовалось!

 
 

Шаг №13: программируем первую реакцию на нажатие пользователя на кнопку

Вернёмся в модуль формы нашей обработки (закладка внизу "Модуль"). Обратите внимание на то, что процедура "НажатиеНаКнопку" представлена в свёрнутом состоянии:

34

Нажмите на плюсик слева,  чтобы раскрыть её. Вместо имеющейся команды "Сообщить", напишите следующий код:

48

Мы обращаемся к кнопке, которая была нажата в данный момент через имя "ТекущийЭлемент" и устанавливаем заголовок этой кнопки в строку "0".

Запустим 1С в режиме Предприятие (меню "Отладка"->"Начать отладку") и убедимся, что теперь при нажатии кнопок на них появляется заголовок с цифрой 0:

49

Пол дела сделано! Мы уже можем делать ходы. Осталось дело за малым - написать искусственный интеллект для компьютера, чтобы он смог нам отвечать. На самом деле не всё так страшно.

 
 

Шаг №14: добавляем пока пустую процедуру ХодКомпьютера

Вернёмся в конфигуратор в модуль формы (закладка "Модуль") и определим там пока ещё пустую процедуру "ХодКомпьютера". Затем сделаем вызов этой процедуры сразу после того как установили заголовок текущей кнопки в ноль, то есть после нашего хода.

Логика такая - сделали ход мы, вызвали процедуру "ХодКомпьютера", чтобы походил компьютер. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Должно получиться вот так:

50

Эталонная база, после выполнения всех шагов этого урока

Для учеников

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

На вопросы учеников — отвечаю по почте,  но прежде загляните в ЧАВО (ссылка) .

С уважением, Владимир Милькин