1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2024-11-24 08:02:20 +02:00
1c-homeworks/homework-4-1.md

56 lines
7.5 KiB
Markdown
Raw Normal View History

2020-05-03 13:44:22 +02:00
# Задание к занятию "Справочники"
2020-05-03 12:52:51 +02:00
2020-05-03 13:44:22 +02:00
## Задача 1 "Контактная информация"
2020-05-03 12:52:51 +02:00
### Описание задачи
2020-05-03 13:44:22 +02:00
Добавить в справочник "Контрагенты" табличную часть "Контактная информация" для хранения адресов, телефонов и т.п.
2020-05-03 12:52:51 +02:00
### Требования к результату
2020-05-03 13:44:22 +02:00
Конфигурация из диплома блока А, в которой:
2020-05-03 12:52:51 +02:00
2020-05-03 13:44:22 +02:00
* Присутствует справочник ВидыКонтактнойИнформации с четырьмя предопределенными элементами: ЮридическийАдресКонтрагента, ПочтовыйАдресКонтрагента, ФактическийАдресКонтрагента, ТелефонКонтрагента, EMailКонтрагента.
2020-05-03 13:46:39 +02:00
* В справочнике Контрагенты присутствует табличная часть КонтактнаяИнформация, данные которой выведены на форму контрагента таблицей (а прежные реквизиты, напротив, имеют префикс Удалить и скрыты).
2020-05-03 13:44:22 +02:00
* Присутствует константа ВерсияКонфигурации, скрытая из командного интерфейса.
* Присутствует код, при начале работы системы сравнивающий версию из метаданных и версию из константы, и:
2020-05-03 13:46:39 +02:00
* при переходе на версию 1.0.0.1 (а также при первом запуске) инициирующий заполнение типов предопределенных элементов справочника ВидыКонтактнойИнформации.
* при переходе на версию 1.0.0.2 (а также при первом запуске) инициирующий перенос контактной информации из реквизитов Удалить<...> в ТЧ КонтактнаяИнформация.
2020-05-03 12:52:51 +02:00
### Процесс выполнения
2020-05-03 13:44:22 +02:00
#### Версия конфигурации
* Создать константу ВерсияКонфигурации типа Строка, которая будет хранить текущую версию конфигурации. Скрыть ее из командного интерфейса, сняв флажок "Использовать стандартные команды".
* Создать общий модуль ОбновлениеИнформационнойБазыВызовСервера с экспортной процедурой ПриНачалеРаботыСистемы, которая:
2020-05-03 13:44:55 +02:00
* Проверит, совпадает ли версия конфигурации (Метаданные.Версия) со значением константы.
* При совпадении ничего не сделает.
* При выявлении разницы вызовет ОбновлениеИнформационнойБазы.ПриИзмененииВерсии(СтараяВерсия, НоваяВерсия).
* И установит значение константы равным новой версии из метаданных.
2020-05-03 13:44:22 +02:00
#### Виды контактной информации
* Создать перечисление ТипыКонтактнойИнформации со значениями: Адрес, Телефон, EMail.
* Создать справочник ВидыКонтактнойИнформации с реквизитом Тип (ПеречислениеСсылка.ТипыКонтактнойИнформации).
* Создать предопределенные виды контактной информации: ЮридическийАдресКонтрагента, ПочтовыйАдресКонтрагента, ФактическийАдресКонтрагента, ТелефонКонтрагента, EMailКонтрагента.
* В модуле менеджера справочника создать экспортную процедуру ЗаполнитьПредопределенныеЭлементы(), которая заполнит тип у всех предопределенных элементов этого справочника.
* Установить версию конфигурации в метаданных на произвольное значение (напримере, 1.0.0.1).
* В процедуре ОбновлениеИнформационнойБазы.ПриИзмененииВерсии:
2020-05-03 13:44:55 +02:00
* Проверить, не находится ли версия 1.0.0.1 между значениями параметров СтараяВерсия и НоваяВерсия, включая границы (если старая версия пуста - значит, она меньше любой текущей).
* Если версия 1.0.0.1 находится между старой и новой версией, включая границы - вызвать процедуру ЗаполнитьПредопределенныеЭлементы().
2020-05-03 13:44:22 +02:00
* Таким образом, и при первом запуске, и при обновлении будут заполнены предопределенные элементы.
#### Контрагенты
* Нужно использовать справочник Контрагенты из диплома блока А.
* Стандартному реквизиту Наименование дать синоним "Краткое наименование".
* Добавить табличную часть КонтактнаяИнформация с реквизитами Вид (СправочникСсылка.ВидыКонтактнойИнформации) и Значение (Строка).
* Прежним реквизитам, отвечавшим за контактную информацию, нужно дать префикс Удалить (УдалитьЮридическийАдресКонтрагента и т.д.) и скрыть их из форм.
* Добавить в форму контрагента (лучше на отдельную закладку) новую табличную часть.
* В модуле менеджера справочника создать экспортную процедуру ЗаполнитьТабличнуюЧастьКонтактнаяИнформация(), которая:
2020-05-03 13:44:55 +02:00
* Откроет выборку всех элементов справочника.
* Для каждого элемента очистит ТЧ КонтактнаяИнформация и заполнит ее значениями старых реквизитов (с префиксом Удалить).
* Запишет каждый элемент.
2020-05-03 13:44:22 +02:00
* В процедуре ОбновлениеИнформационнойБазы.ПриИзмененииВерсии при обновлении на версию 1.0.0.2 вызвать процедуру ЗаполнитьТабличнуюЧастьКонтактнаяИнформация().
* Взвести версию в метаданных на 1.0.0.2.
* Запустить программу и удостовериться, что ранее введенная контактная информация не утеряна и доступна теперь уже через новую табличную часть.