Первоначальная загрузка данных
This commit is contained in:
2021-11-15 23:59:23 +04:00
parent 8f06d05495
commit c014f355cf
76 changed files with 1262 additions and 0 deletions

View File

@@ -0,0 +1,43 @@
# Задание к занятию "Модули"
## Задача 1 "Обработчики событий модуля приложения"
### Описание задачи
Создать обработчик события **ПриНачалеРаботыСистемы**, выводящий простейшее приветствие.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией, при запуске выводящей простейшее приветствие.
### Процесс выполнения
1. Используйте конфигурацию **УправлениеИТФирмой**.
2. В модуле приложения создайте обработчик события **ПриНачалеРаботыСистемы**.
3. В его коде выведите простейшее приветствие вызовом **Сообщить()** или **ПоказатьПредупреждение()**.
## Задача 2 "Обработчики событий модуля формы"
### Описание задачи
Создать обработчик события **ПриИзменении** элемента **Наименование** формы справочника **Контрагенты**, заполняющий полное наименование - измененным наименованием.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией, в которой есть справочник **Контрагенты** с реквизитом **ПолноеНаименование**, который заполняется значением стандартного реквизита **Наименование** при его изменении.
### Процесс выполнения
1. Используйте конфигурацию **УправлениеИТФирмой** со справочником **Контрагенты** (https://github.com/netology-code/1c-homeworks/blob/master/homework-1-3.md).
2. Выберите в форме элемента стандартный реквизит **Наименование** и создайте обработчик события **ПриИзменении** этого элемента.
* Проще всего - выбрать это событие из контекстного меню элемента.
3. В коде обработчика присвойте реквизиту **Объект.ПолноеНаименование** значение наименования.
4. В режиме Предприятия удостоверьтесь, что любое изменение наименования отражается в полном наименовании, но не наоборот.
## Задача 3 "Обработчики событий модуля объекта"
### Описание задачи
Создать обработчик заполнения справочника **Контрагенты**, назначающий по умолчанию тип **ЮридическоеЛицо**.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией, в которой есть справочник **Контрагенты** с реквизитом **ЮридическоеФизическоеЛицо**, который при создании заполняется автоматически значением **ЮридическоеЛицо**.
### Процесс выполнения
1. Используйте конфигурацию **УправлениеИТФирмой** со справочником **Контрагенты** и перечислением **ЮридическоеФизическоеЛицо** (https://github.com/netology-code/1c-homeworks/blob/master/homework-1-3.md).
2. Откройте модуль справочника **Контрагенты** и создайте в нем обработчик события **ОбработкаЗаполнения**.
3. Присвойте значению реквизита **ЮридическоеФизическоеЛицо** значение **Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо**.
4. В режиме Предприятия удостоверьтесь в том, что новым контрагентам сразу назначается тип **ЮридическоеЛицо**.

View File

@@ -0,0 +1,58 @@
# Задание к занятию "Переменные и параметры сеанса"
## Задача 1 "Развитие Калькулятора"
### Описание задачи
Добавить в обработку "Калькулятор":
- команду, меняющую местами значения реквизитов Значение и Результат.
- команды добавления значения к памяти, вычитания из памяти, очистки и вывода памяти в значение.
### Требования к результату
Обработка "Калькулятор" из задания (https://github.com/netology-code/1c-homeworks/blob/master/homework-1-6.md), в которой есть:
* реквизит и поле формы **Память**;
* кнопки:
* меняющие местами **Значение** и **Результат**.
* добавляющие и вычитающие **Значение** из **Памяти**.
* очищающие **Память** и выводящие **Память** в **Значение**.
### Процесс выполнения
1. Добавляем в обработку реквизит **Память** (Число разумной точности) и переносим его на форму как поле ввода или поле надписи.
2. Добавляем команды:
* **ОбменятьЗначениеРезультат** ("Значение <-> Результат");
* **ДобавитьЗначениеКПамяти** ("Память+");
* **ВычестьЗначениеИзПамяти** ("Память-");
* **ОчиститьПамять** ("Память Х");
* **ПамятьВЗначение** ("Память -> Значение");
3. Команды перетаскиваем на форму кнопками и создаем обработчики, вызвав комаду "<Действие команды>" из контекстного меню кнопки.
4. В обработчиках команд реализуем очевидный код. Для обмена значениями понадобится временная переменная, которую можно объявить заранее.
## Задача 2 "Параметр сеанса"
### Описание задачи
Создать параметр сеанса **ЭтоВебКлиент**, который хранил бы на сервере сведения о типе запущенного клиента.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией, в которой был бы булевский параметр сеанса **ЭтоВебКлиент**, который после запуска клиентского сеанса хранил бы значение **Истина** (веб-клиент) или **Ложь** (другие типы клиентов или вообще без клиента).
### Процесс выполнения
1. Добавляем параметр сеанса **ЭтоВебКлиент** типа **Булево**.
2. В модуле сеанса создаем обработчик **УстановкаПараметровСеанса**, в коде которого инициализируем его значением **Ложь** (здесь мы еще не знаем, каков клиент).
3. Создаем общий модуль с флажком **Вызов сервера**, а в нем - экспортную процедуру **ЭтоВебКлиент**, которая присваивает параметру сеанса значение **Истина**.
4. В модуле приложения создаем обработчик **ПередНачаломРаботыСистемы**, в коде которого, используя инструкцию препроцессора **#Если ВебКлиент Тогда <...> #КонецЕсли**, вызываем **ЭтоВебКлиент()** при работе из веб-клиента (в иных случаях можно ничего не вызывать).
## Задача 3 "Имена переменных"
### Описание задачи
Выберите хорошие названия:
- глобальной переменной модуля приложения, хранящей дату последней проверки уведомлений пользователя.
- локальной переменной обработчика события **ПриНачалеРаботыСистемы**, хранящей имя текущего пользователя.
- реквизита формы элемента справочника Сотрудники, хранящего сведения о том, что соответствующий сотруднику пользователь информационной базы существует.
### Требования к результату
В комментарии к решению описаны три полных, точных и понятных названия, удовлетворяющих требованиям к именам реквизитов и переменных.
### Процесс выполнения
Придумать и дать три полных, точных и понятных названия, удовлетворяющих требованиям к именам реквизитов и переменных.

View File

@@ -0,0 +1,41 @@
# Задание к занятию "Типы данных"
## Задача 1 "Булевский калькулятор"
### Описание задачи
Создать обработку-булевский калькулятор, в которой значение и результат обрабатывались бы операциями **И**, **НЕ**, **ИЛИ**.
### Требования к результату
Обработка, аналогичная созданной в задании (https://github.com/netology-code/1c-homeworks/blob/master/homework-1-6.md), где значения и операции были бы булевскими. Операций должно быть три: бинарные **И**, **ИЛИ** и унарная **НЕ** (со значением реквизита **Значение**).
### Процесс выполнения
1. Вызовем команду "Новый" из подменю "Файл" и выберем вид документа "Внешняя обработка".
2. Дадим ей имя **БулевскийКалькулятор** и создадим форму, нажав на кнопку с лупой.
3. На форму обработки добавим два реквизита типа "Булево": **Значение** и **Результат**.
4. Перетащим их на форму, где они станут полями ввода.
5. Добавим команды **ОперацияИли**, **ОперацияИ** и **ОперацияНе**.
6. Перетащим команды на форму, чтобы они стали кнопками.
7. Из контекстного меню каждой кнопки создадим обработчик, выбрав пункт "<Действие команды>" с вариантом "Создать на клиенте".
8. В коде каждого обработчика (в процедурах с именами "ОперацияИли", "ОперацияИ", "ОперацияНе") напишем код, проводящий соответствующую операцию со значениями реквизитов **Результат** и **Значение** (операция НЕ - унарная и проводится только со значением реквизита **Результат**);
9. Сохраним обработку как файл "БулевскийКалькулятор.epf".
## Задача 2 "Реквизиты справочника Сотрудники"
### Описание задачи
Создать справочник **Сотрудники** с описанными ниже реквизитами, типы которых соответствуют их смыслу и назначению.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией **УправлениеИТФирмой**, в которой был бы справочник **Сотрудники** с реквизитами, типы которых соответствуют их смыслу и назначению.
### Процесс выполнения
1. Используйте конфигурацию **УправлениеИТФирмой** из предыдущих заданий (https://github.com/netology-code/1c-homeworks/blob/master/homework-1-3.md).
2. Справочник **Сотрудники** измените так, чтобы в нем были реквизиты:
* **ДатаРождения**, **ДатаПриема** и **ДатаУвольнения**.
* **ИдентификаторПользователяИнформационнойБазы**.
* **ИНН** (какова длина ИНН физического лица)?
* **Комментарий** (подумайте, нужно ли ограничивать длину комментария).
* **Недействителен**.
* **Оклад** и **СтавкаЧаса** (Число разумной длины и точности или определяемый тип; можно оставить из предыдущего задания).
* **Пол**.
* **Фотография** для хранения данных фотографии.
Реквизиты, созданные в ходе выполнения предыдущего задания, можно не трогать.

View File

@@ -0,0 +1,36 @@
# Задание к занятию "Даты и строки"
## Задача 1 "Приветствие"
### Описание задачи
При начале работы программы приветствовать пользователя, подставляя в приветствие текущую дату и время в минутах, прошедшее с начала рабочего дня.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией, при запуске приветствующей пользователя выводом сообщения или предупреждения, подставляя в приветствие текущую дату в разумном формате и время в минутах, прошедшее с начала рабочего дня (например, с 9:00). Запуск до начала рабочего дня можно никак специально не обрабатывать.
### Процесс выполнения
1. Используйте произвольную конфигурацию.
2. В модуле приложения создайте обработчик **ПриНачалеРаботыСистемы**, если его еще нет.
3. В обработчике:
* Соберите приветствие в локальную переменную, используя функцию **СтрШаблон()**.
* Для получения даты используйте функцию **ТекущаяДата()**.
* Не забудьте отформатировать ее функцией **Формат()**.
* При расчете времени, прошедшего с начала рабочего дня, считайте началом 9:00 текущего дня.
* Запуск до начала рабочего дня можно никак специально не обрабатывать (результат будет отрицательным).
* Выведите приветствие (например, "Сегодня 31.12 (минут с начала рабочего дня: 15)") вызовом **Сообщить()** или **ПоказатьПредупреждение()**.
## Задача 2 "Нестрогое сравнение строк"
### Описание задачи
Создать обработку, выводящую "Да" или "Нет" в зависимости от того, равны ли две введенные строки без учета регистра и пробелов.
### Требования к результату
Внешняя обработка, в которой есть два строковых реквизита и поля ввода, а также кнопка "Сравнить", при нажатии на которую обработка выводит "Да", если строки равны без учета регистра (разряда) и пробелов, и Ложь в противном случае.
### Процесс выполнения
1. Создайте внешнюю обработку с именем, например, **НестрогоеСравнениеСтрок**.
2. Добавьте в нее два реквизита (строки неограниченной длины) и перетащите их на форму, сделав многострочными полями ввода.
3. Добавьте команду **Сравнить** и перетащите ее кнопкой на форму.
4. В обработчике команды:
* Сохраните результат сравнения строк в локальную булевскую переменную так, чтобы сравнение игнорировало разряд букв и пробелы (например, "ПРИВЕТмир" и "Привет мир" считаются равными).
* Выведите результат сравнения, **Истина** или **Ложь**, вызовом **Сообщить()**.

View File

@@ -0,0 +1,34 @@
# Задание к занятию "Условия"
## Задача 1 "Поздравления"
### Описание задачи
При начале работы программы поздравлять пользователя с одной из праздничных дат, если она приходится на сегодня или на завтра.
### Требования к результату
Выгрузка информационной базы (.dt), при запуске поздравляющая пользователя выводом сообщения или предупреждения, если сегодняшний или завтрашний день приходится на одну из нескольких праздничных дат (набор праздников - произвольный). Приветствие должно содержать название праздника и собираться функцией **СтрШаблон()**.
### Процесс выполнения
1. Используйте произвольную конфигурацию.
2. В модуле приложения создайте обработчик **ПриНачалеРаботыСистемы**, если его еще нет.
3. В обработчике:
* Проверьте условиями, приходится ли сегодняшняя или завтрашняя дата на праздник из небольшого произвольного набора.
* Соберите поздравление в локальную переменную, используя функцию **СтрШаблон()**, название праздника и указание на день ("сегодня" или "завтра").
* Выведите поздравление (например, "Поздравляем, сегодня - День монгольского флота!") вызовом **Сообщить()** или **ПоказатьПредупреждение()**.
## Задача 2 "Проверка введенных данных"
### Описание задачи
Реализовать проверку на заполненность и длину ИНН и КПП перед записью справочника **Контрагенты**.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией, в которой есть справочник **Контрагенты** с ИНН, КПП и видом контрагента ("Юридическое лицо", "Физическое лицо"). Перед записью формы должна выполняться проверка на заполненность и длину ИНН и КПП в зависимости от вида контрагента.
### Процесс выполнения
1. Используйте конфигурацию **УправлениеИТФирмой** со справочником **Контрагенты** из предыдущего задания (https://github.com/netology-code/1c-homeworks/blob/master/homework-1-3.md).
2. В форме создайте обработчик события **ПередЗаписью**, в коде которого реализуйте проверку на заполненность и длину ИНН и КПП в зависимости от вида контрагента:
* Для юридического лица ИНН и КПП должны быть заполнены; ИНН должен быть длиной 10 знаков, КПП - 9 знаков.
* Для физического лица ИНН должен быть длиной 12 знаков, КПП - не заполнен.
* Контрольную сумму ИНН и наличие только цифр в ИНН и КПП проверять пока не нужно.
* Для получения значения перечисления на клиенте используйте функцию **ПредопределенноеЗначение()**.
* При выявлении ошибок устанавливайте параметр обработчика **Отказ** в **Истина** и выводите разумное сообщение вызовом **Сообщить**.

View File

@@ -0,0 +1,39 @@
# Задание к занятию "Циклы"
## Задача 1 "Подсчет числа дней"
### Описание задачи
Создать обработку, подсчитывающую число рабочих и выходных дней в указанном пользователем интервале.
### Требования к результату
Внешняя обработка с двумя реквизитами и полями ввода, задающими начало и конец интервала, и кнопкой "Подсчитать", по нажатию на которую подсчитывается и выводится пользователю число рабочих и выходных дней в указанном интервале дат.
### Процесс выполнения
1. Создайте внешнюю обработку с именем, например, **ПодсчетЧислаДней**.
2. Добавьте в нее два реквизита типа Дата - например, **ДатаНач** и **ДатаКон** - и перетащите их на форму.
3. Добавьте команду **Подсчитать** и перетащите ее кнопкой на форму.
4. В обработчике команды:
* Объявите две переменных-счетчика числа рабочих и выходных дней.
* Обойдите в цикле все даты от начальной до конечной включительно.
* В зависимости от дня недели даты прибавьте единицу к одному из двух счетчиков.
* Выведите результаты вызовом **Сообщить()** или **ПоказатьПредупреждение()**, формируя строку с помощью **СтрШаблон()**.
## Задача 2 "Обработка текста"
### Описание задачи
Создать обработку, находящую во введенном тексте самое длинное и самое короткое слово.
### Требования к результату
Внешняя обработка с реквизитом и многострочным полем ввода для текста и кнопкой "Найти", по нажатию на которую определяется и выводится пользователю самое длинное и самое короткое слово.
### Процесс выполнения
1. Создайте внешнюю обработку с именем, например, **ОбработкаТекста**.
2. Добавьте в нее реквизит типа **Строка** - например, **Текст** - и перетащите его на форму, сделав многострочным полем ввода.
3. Добавьте команду **НайтиСлова** и перетащите ее кнопкой на форму.
4. В обработчике команды:
* Объявите две переменных для самого длинного и самого короткого слова.
* Разделите текст на слова вызовом **СтрРазделить()**.
* Обойдите в цикле все слова.
* В зависимости от длины сохраните текущее слово как самое длинное или самое короткое.
* Выведите результаты вызовом **Сообщить()** или **ПоказатьПредупреждение()**, формируя строку с помощью **СтрШаблон()**.

View File

@@ -0,0 +1,36 @@
# Задание к занятию "Универсальные коллекции"
## Задача 1 "Универсальное поздравление"
### Описание задачи
Переделать поздравления из задания (https://github.com/netology-code/1c-homeworks/blob/master/homework-2-5.md) на поиск даты в массиве структур.
### Требования к результату
Выгрузка информационной базы (.dt), при начале работы системы выводящая подравление с сегодняшней или завтрашней праздничной датой, находя ее в заранее подготовленном массиве структур.
### Процесс выполнения
1. Используйте конфигурацию из прошлого задания (https://github.com/netology-code/1c-homeworks/blob/master/homework-2-5.md).
2. Объявите переменную-массив праздничных дат.
3. Добавьте в него несколько праздничных дат в виде структур со свойствами **День**, **Месяц**, **Название**.
4. Определите, не является ли текущая дата праздничной или предпраздничной, обходя в цикле этот заранее подготовленный массив структур, и покажите соответствующее поздравление.
## Задача 2 "Подсчет числа уникальных слов"
### Описание задачи
Создать обработку, подсчитывающую число уникальных слов во введенном пользователем тексте.
### Требования к результату
Внешняя обработка с реквизитом и многострочным полем ввода для текста и кнопкой "Подсчитать", по нажатию на которую определяется и выводится пользователю число уникальных слов в тексте без учета регистра. Иначе говоря, слово, встречающееся в тексте несколько раз, учитывается в итоговом результате лишь однажды.
_Например: для текста "Привет привет ПрИвЕт Нетология" результат должен быть 2_
### Процесс выполнения
1. Создайте внешнюю обработку с именем, например, **ПодсчетЧислаУникальныхСлов**.
2. Добавьте в нее реквизит типа **Строка** - например, **Текст** - и перетащите его на форму, сделав многострочным полем ввода.
3. Добавьте команду **Подсчитать** и перетащите ее кнопкой на форму.
4. В обработчике команды:
* Создайте **Соответствие** для хранения уникальных слов.
* Разделите текст на слова вызовом **СтрРазделить()**.
* Обойдите в цикле все слова.
* Вставляйте в соответствие слово, приведя его к верхнему или нижнему регистру.
* Выведите результат - число элементов соответствия - вызовом **Сообщить()** или **ПоказатьПредупреждение()**, формируя строку с помощью **СтрШаблон()**.

View File

@@ -0,0 +1,33 @@
# Задание к занятию "Объекты платформы"
## Задача 1 "Случайный ИНН"
### Описание задачи
Создать обработку, генерирующую случайный 10-значный ИНН с верным контрольным разрядом.
### Требования к результату
Внешняя обработка с кнопкой **Сгенерировать**, по нажатию выводящая случайный 10-значный ИНН с верным контрольным разрядом.
### Процесс выполнения
1. Создайте внешнюю обработку с названием, например, **СлучайныйИНН**.
2. Добавьте команду **Сгенерировать** и перетащите ее кнопкой на форму.
3. В обработчике команды:
* Создайте новый **ГенераторСлучайныхЧисел**.
* Объявите переменную для хранения ИНН.
* В цикле добавьте к ИНН 9 случайных цифр, подсчитывая контрольный разряд.
* Контрольный разряд определяется получением остатка от деления контрольной суммы на 11 (остаток 10 - разряд 0).
* Контрольная сумма определяется сложением произведений разрядов ИНН последовательно на 2, 4, 10, 3, 5, 9, 4, 6, 8.
* Добавьте к ИНН контрольный разряд и выведите ИНН.
## Задача 2 "Текстовый документ"
### Описание задачи
Переделать обработку "Подсчет числа уникальных слов" (https://github.com/netology-code/1c-homeworks/blob/master/homework-2-7.md) на работу с текстовым документом.
### Требования к результату
Внешняя обработка с реквизитом типа "Текстовый документ" и полем текстового документа, в которой есть кнопка "Подсчитать", по нажатию на которую определяется и выводится пользователю число уникальных слов в текстовом документе без учета регистра.
### Процесс выполнения
1. Используйте обработку из прошлого задания (https://github.com/netology-code/1c-homeworks/blob/master/homework-2-7.md).
2. Вместо строкового реквизита **Текст** добавьте в нее реквизит **Текст** типа "Текстовый документ" и перетащите его на форму.
3. Переделайте код, подсчитывающий число уникальных слов, на работу с содержимым этого текстового документа.

View File

@@ -0,0 +1,40 @@
# Задание к занятию "Процедуры и функции"
## Задача 1 "Поздравление с днем рождения"
### Описание задачи
Дополнить поздравления (https://github.com/netology-code/1c-homeworks/blob/master/homework-2-7.md, https://github.com/netology-code/1c-homeworks/blob/master/homework-2-3.md) поздравлением сотрудников с днем рождения.
### Требования к результату
Выгрузка информационной базы (.dt), в которой есть справочник **Сотрудники** с датами рождения, и которая, определив сотрудника поиском по полному наименованию текущего пользователя, поздравляет его с днем рождения, если он приходится на текущую дату.
### Процесс выполнения
1. Используйте конфигурацию **УправлениеИТФирмой** из прошлых заданий, в которой есть справочник **Сотрудники** с датой рождения и механизм поздравлений.
2. Создайте параметр сеанса **СотрудникТекущегоПользователя** типа **СправочникСсылка.Сотрудники**.
3. В модуле сеанса создайте обработчик **УстановкаПараметровСеанса**, в коде которого:
* Определите полное имя текущего пользователя (**ПользователиИнформационнойБазы.ТекущийПользователь().ПолноеИмя**).
* Найдите соответствующего сотрудника в справочнике поиском по наименованию (**Справочники.Сотрудники.НайтиПоНаименованию()**). **Обратите внимание**: это сработает, лишь если наименование элемента справочника и полное имя пользователя ИБ совпадают до символа.
* Проинициализируйте найденным сотрудником параметр сеанса.
4. Создайте общий модуль **СотрудникиСервер**, в котором реализуйте экспортные функции:
* **СотрудникТекущегоПользователя()**, возвращающую значение одноименного параметра сеанса.
* **ДеньРожденияТекущегоПользователя()**, возвращающую значение реквизита **ДеньРождения** сотрудника текущего пользователя. К реквизиту за значением можно просто обратиться через точку.
5. Создайте общий модуль **СотрудникиВызовСервера**, в котором реализуйте экспортную функцию-интерфейс для функции **СотрудникиСервер.ДеньРожденияТекущегоПользователя()**.
6. В обработчике **ПриНачалеРаботыСистемы** модуля приложения определите день рождения текущего пользователя вызовом **СотрудникиВызовСервера.ДеньРожденияТекущегоПользователя()**, и, если он совпадает с текущей датой - выведите поздравление.
## Задача 2 "Проверка ИНН контрагента"
### Описание задачи
Дополнить проверку реквизитов контрагента из задания (https://github.com/netology-code/1c-homeworks/blob/master/homework-2-5.md) проверкой контрольной суммы 10-значного ИНН.
### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией **УправлениеИТФирмой**, в которой реализована проверка ИНН контрагента-юридического лица вызовом отдельной функции **ИННВерен()**, изолированной от контекста формы.
### Процесс выполнения
1. Используйте конфигурацию из задания (https://github.com/netology-code/1c-homeworks/blob/master/homework-2-5.md).
2. В модуле формы реализуйте функцию **ИННВерен()**:
* С директивой компиляциии **&НаКлиентеНаСервереБезКонтекста**.
* В качестве параметра принимающую ИНН.
* Возвращающую Истина, если ИНН верен, и Ложь в противном случае.
* Проверяющую контрольный разряд 10-значного ИНН аналогично задаче "Случайный ИНН" (https://github.com/netology-code/1c-homeworks/blob/master/homework-2-8.md).
* 12-значный ИНН для простоты можно не проверять (например, считать верным).
3. Дополните проверку на заполненность и длину ИНН вызовом функции **ИННВерен**.

Binary file not shown.