Оглавление
2.1 Создание демо-базы для опытов
2.2 Создание пустой обработки для опытов
3.6 Использование форм для ввода/вывода данных
3.6.1 Создание формы обработки
3.6.2 Добавление элементов управления
3.6.3 Настройка элементов управления
3.6.4 Настройка поведения формы
3.6.5 Элементы для вывода данных
3.7.1 Запись строковых констант
4 Классическое программирование
6.1 Общие принципы работы с объектами
7.5 Группировка, агрегатные функции и псевдонимы имен
Если даже вы не знакомы с программированием, то благодаря этому руководству постепенно, за шагом шаг, сможете изучить 1С.
Для начала работы вам нужно создать рабочую среду. Для этого вы должны:
1. Создать любую из типовых демо-баз БП, УТ, где вы будете упражняться.
2. Научиться заходить в 1С в режиме Предприятие и Конфигуратор.
Демо-база должна быть с заполненными документами и справочниками, чтобы вам не заниматься вводом данных, а сосредоточиться на изучении программирования., чтобы вам не заниматься вводом данных, а сосредоточиться на изучении программирования.
!!!дописать
Пока что раздел не написан. Предполагается, что создавать новую базу вы умеете или попросите знакомых.
В Конфигураторе создайте новую внешнюю обработку через меню «Файл – Новый – Внешняя обработка». Откроется форма настройки новой внешней обработки.
Код для опытов будем писать непосредственно в модуле обработки. Модуль можно открыть через меню «Действия – Открыть модуль объекта» в форме настройки обработки.
После внесения изменений в код не забывайте сохранить обработку. Для этого активизируйте форму настройки внешней обработки и нажмите «Действия – Открыть модуль объекта».
Обработку можно запустить на выполнение, открыв ее файл в режиме 1С-предприятия через «Файл – Открыть». Она сразу же выполнится.
Для вывода сообщения нужно написать следующий код:
Сообщить("Hello Wold");
Вместо Hello World можно написать произвольный текст.
Напишите код, который выводит последовательно следующие два сообщения:
1. Hello World
2. Привет 1С
Сообщить выводит не только текст, но и перевод строки, поэтому каждое сообщение выводится в новой строке.
Если вы не увидели сообщения, возможно у вас скрыто окно сообщений, его можно показать через «Сервис – Служебные окна – Служебные сообщения».
Если запустить обработку несколько раз, можно увидеть, что старые сообщения не удаляются. Чтобы старые сообщения удалялись, нужно использовать код:
ОчиститьСообщения();
Обратите внимание, что код состоит из операторов, каждый из которых заканчивается точкой с запятой.
Сообщить и ОчиститьСообщения – это функции. Оператор, вызывающий функцию состоит из имени функции, за которым следует круглая скобка, затем параметры функции, закрывающая круглая скобка и обязательная точка с запятой в конце.
В одной строке можно размещать несколько операторов, но так не принято у программистов 1С:
Сообщить("Hello Wold"); Сообщить("И снова привет!");
Рассмотрим использование переменных в 1С.
Модифицируем обработку «Hello World» следующим образом:
Сообщение = "Hello Wold";
Сообщить(Сообщение);
В коде создалась переменная Сообщение, ей присвоилось значение с помощью оператора равно и вызов Сообщить вывел уже не просто строку, а значение переменной.
Значение переменной можно менять многократно, посмотрите как работает этот код:
Сообщение = "Hello Wold";
Сообщить(Сообщение);
Сообщение = "Привет 1С";
Сообщить(Сообщение);
В коде можно использовать комментарии. Они не выполняются, а просто содержат описание того, что выполняется в коде или служат для заметок, чтобы не забыть какие-либо важные вещи. Комментарии важны, чтобы другой человек, или вы сами, спустя какое-то время могли разобраться, что и зачем вы делали в коде.
Изменим предыдущий код:
//Выводим приветствие миру
Сообщение = "Hello Wold";
Сообщить(Сообщение); //Собственно, сам вызов функции
Сообщение = "Привет 1С";
Сообщить(Сообщение);
Комментарий начинается с символов // и длится до конца строки. Начинать комментарий можно в любом месте.
Комментарии можно использовать, чтобы какой-то участок кода не выполнялся. Для этого нужно просто закомментировать этот участок.
Попробуйте выделить следующие строки с помощью мышки или курсорных клавиш, а затем выбрать команду «Текст – Блок – Добавить комментарий»:
Сообщение = "Hello Wold";
Сообщить(Сообщение); //Собственно, сам вызов функции
Вы увидите, что текст изменится на:
//Сообщение = "Hello Wold";
//Сообщить(Сообщение); //Собственно, сам вызов функции
Соответственно, можно выделить участок кода и выполнить обратную команду «Текст – Блок – Удалить комментарий», при этом текст раскомментируется.
Рассмотрим использование арифметических операций в 1С.
Числа в 1С записываются интуитивно понятным образом:
А = 1; //Единица
Б = 10.2; //Десять целых, ноль десятых
В = -0.123; //Минус ноль целых сто двадцать три тысячных
Порядки вещественных чисел и отличные от десятичной системы счисления числа не используются.
Математические операции выполняются тоже просто:
А = 4/2; //4 разделить на 2
Б = А * 10; //Значение из переменной А умножаем на 10
В = А % 10; //Берем остаток от деления из переменной А на 2
Г = А + Б - В; //В Г помещаем А + Б – В
Д = (А+Б) * Б //Сначала вычисляем А + Б, затем полученное значение умножаем на Б
Е = ((А+Б)-Г) * Б //Сначала вычисляем А + Б, затем от полученного значения отнимаем Г, затем полученное значение умножаем на Б
Можно использовать также арифметические функции:
А = 1;
Б = Окр(А/3); //Округление при делении А на 3
У обработки можно создать форму. Для этого в форме настройки обработки нужно ПКМ на пункте «Формы» и выбрать «Добавить», затем нажать «Готово». Будет создана основная форма обработки и открыта в Конфигураторе для редактирования.
Если щелкнуть на синем заголовке формы, откроются свойства формы.
Команда «Форма – Вставить элемент управления» позволяет разместить на форме элемент управления.
Попробуем разместить на форме поле для ввода целого числа, и заголовок для него.
Команда «Форма – Вставить элемент управления – Поле ввода – ОК» добавляет новое поле ввода.
Команда «Форма – Вставить элемент управления – Надпись – ОК» добавляет надпись.
Разместим надпись справа от поля ввода.
Если щелкнуть на элементе управления, открываются его свойства.
Для надписи установим заголовок «Число».
Для поля ввода установим значение свойств «Имя» и «Данные» в «Число». Обычно «Имя» и «Данные» всегда совпадают.
В низу формы есть три закладки «Диалог», «Модуль» и «Реквизиты».
Перейдем на закладку «Модуль». Мы увидим код модуля формы. В модуле есть только такой код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.
КонецПроцедуры
Изменим его следующим образом:
Процедура КнопкаВыполнитьНажатие(Кнопка)
Сообщить(Число*2);
КонецПроцедуры
Сохраним обработку, откроем ее в режиме Предприятия. Введем значение в поле «Число», нажмем кнопку «Выполнить». В окно сообщений выведется значение, умноженное на два.
Так происходит потому, что у кнопки «Выполнить» в свойстве «Действие» указано «КнопкаВыполнитьНажатие».
Неудобно, что результат выводится в окне сообщений, а не в форме.
Добавим еще одно поле, дадим ему имя «Результат». В свойствах укажем «Только просмотр» в «Истина». Теперь это поле доступно только для просмотра.
Изменим процедуру на такую:
Процедура КнопкаВыполнитьНажатие(Кнопка)
Результат = Число*2;
КонецПроцедуры
Теперь при нажатии кнопки «Выполнить» результат выводится не в окно сообщений, а в поле «Результат».
В дальнейшем все задачи решаются с применением форм. Данные вводятся в форму и выводятся на форму или в окно сообщений.
В реальных формах может быть очень много полей. Чтобы постоянно не вводить все значения, в свойствах формы поставим галочку «Сохранять значения» и в списке «Сохраняемые значения» выберем поле «Число».
Теперь зайдем в 1С, введем в поле «Число» значение 2. Выполним «Действия – Сохранить значения». Сохраним в настройку «Основная», установим галочку «Использовать при открытии».
Теперь закроем обработку и откроем ее еще раз. В поле «Число» окажется значение 2. Таким образом, можно сохранять значения для любого количества элементов формы, чтобы не заполнять их повторно.
Можно использовать несколько настроек и перезаписывать существующие настройки.
Рассмотрим работу со строками в 1С.
Строки записываются в двойных кавычках, пример мы уже видели: "Hello World!"
Если нужно записать кавычку внутри строки, она повторяется два раза: "Я использую для бизнеса программы фирм ""1С"" и ""Микрософт""".
Строка может быть помещена в переменную так:
А = "Привет мир";
Если в строке встречается перевод строки, то она записывается с помощью символа вертикальной черты:
С =
"Съешь конфеточку, дружок!
|Или хочешь пирожок?";
Простейшая операция над строками – склейка (конкатенация).
А = "Привет ";
Б = "мир";
В = А + Б;
Сообщить(В);
В результате в переменную В будет помещена строка "Привет мир".
Рассмотрим основные строковые функции:
С = "Привет мир";
Длина = СтрДлина(С); //10 - длина строки
С1 = Лев(С, 2); //Пр - левые 2 символа
С2 = Прав(С, 3); //мир - правые 3 символа
С3 = Сред(С, 5, 2); //ет - два символа, начиная с 5-й позиции
Задача:
Используя только функции Лев, Прав и Сред, получите из строки «Привет мир» строки «веер», «Пирр» и «ветер ветер».
Не все символы можно включать в строку. Некоторые символы можно получить только по их коду.
В данном примере мы выводим символ табуляции между строками «Поз1» и «Поз2».
Сообщить("Поз1" + Символ(9) + "Поз2");
Но для наиболее часто используемых служебных символов в 1С существуют специальные константы:
Сообщить("Поз1" + Символы.Таб + "Поз2"); //Табуляция
Сообщить("Поз1" + Символы.ПС + "Поз2"); //Перевод строки
Задача:
Выведите строки «Хлеб», «Батон», «Булочка», «Пирожок», каждую с новой строки. Решить задачу двумя способами – с помощью символа вертикальной черты и конкатенацией с символом перевода строки.
В разделе будут рассмотрены классические задачи по программированию.
В разделе будет рассмотрена работа с коллекциями – списками, структурами, соответствиями, таблицами, деревьями.
После завершения курса по прикладным объектам у Вас будет демо-база, где будет некоторый набор товаров и документов по ним. Если вы пропустили этот курс, можете вместо этой демо-базы использовать любую типовую демо-базу от 1С.
Для работы с запросами скачайте Консоль запросов. Это внешняя обработка, которая позволяет писать запросы непосредственно в режиме 1С: Предприятия. Все задачи в этом разделе только извлекают, но не меняют данные, поэтому экспериментировать можно даже в рабочей базе.
В консоли запроса напишите текст запроса, как на картинке. Затем нажмите кнопку «Выполнить». Запрос выполнится и результат будет выведен на закладке «Результат»:
Сохраните свой первый запрос в файле с расширением SEL.
Наш первый запрос был обращен к справочнику «Номенклатура».
Рассмотрим, из чего он состоит.
ВЫБРАТЬ – первое ключевое слово, указывает, что мы будем выбирать информацию. В 1С все запросы начинаются с этого слова, потому что запросов на изменение (ИЗМЕНИТЬ) или удаление данных (УДАЛИТЬ) нет.
Наименование – поле или список полей, разделенных запятыми, которые нужно выбрать из таблицы.
Справочник.Номенклатура – таблица, из которой излекать данные.
Результат запроса – таблица с несколькими колонками. В нашем случае в таблице получилась одна колонка «Наименование».
Чтобы извлечь несколько полей, перепишем запрос так:
ВЫБРАТЬ Код, Артикул, Наименование ИЗ Справочник.Номенклатура
Задание: Напишите запрос, который извлекает наименование, код и ИНН из справочника Контрагенты.
Для отбора используется ключевое слово ГДЕ. Построим запрос, который извлекает наименования и артикул товаров, которые начинаются на русскую букву «а»:
ВЫБРАТЬ Наименование, Артикул ИЗ Справочник.Номенклатура ГДЕ Наименование Подобно "а%"
Подобно – это функция, которая сравнивает строку с заданным шаблоном.
Как видно, в результат запроса попали значения с прописной и строчной буквы А, отбор по функции Подобно не делает различий между ними.
Для того, чтобы упорядочить запрос, используется ключевое слово УПОРЯДОЧИТЬ ПО.
Выполните запрос:
ВЫБРАТЬ ВидНоменклатуры, Наименование ИЗ Справочник.Номенклатура
УПОРЯДОЧИТЬ ПО ВидНоменклатуры Убыв, Наименование Возр
Как видно, результирующую таблицу можно сортировать по нескольким полям.
Убыв – означает сортировку по Убыванию, Возр – по возрастанию. Можно не писать порядок сортировки, тогда сортировка идет по возрастанию.
Задание: Переберите различные варианты сортировки предыдущего запроса, посмотрите, в каком порядке сортируются данные:
· ВидНоменклатуры Убыв, Наименование
· ВидНоменклатуры Возр, Наименование Возр
· ВидНоменклатуры, Наименование Убыв
Запросы удобно использовать для группировки данных и подсчета сумм и других агрегатных функций.