1
0
mirror of https://github.com/netology-code/1c-homeworks.git synced 2025-02-10 18:10:35 +02:00

Update homework-4-1.md

This commit is contained in:
shumapolina 2023-01-18 19:33:12 +03:00 committed by GitHub
parent 98f439e6fe
commit 44b7f89c10
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,67 +1,66 @@
# Задание к занятию "Справочники" # Задание к занятию «Справочники»
## Задача 1 "Версия конфигурации" ## Задача 1. «Версия конфигурации»
### Описание задачи ### Описание задачи
Добавить константу **ВерсияКонфигурации**, которая будет хранить версию конфигурации из свойств метаданных, с которой программа запускалась в последний раз. Хранение версии в данных позволит обнаружить запуск программы с измененной версией и запустить код, заполняющий недостающие данные при обновлении версии. Добавить константу **ВерсияКонфигурации**, которая будет хранить версию конфигурации из свойств метаданных, с которой программа запускалась в последний раз. Хранение версии в данных позволит обнаружить запуск программы с изменённой версией и запустить код, заполняющий недостающие данные при обновлении версии.
### Требования к результату ### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией из диплома блока А, в которой: Выгрузка информационной базы (.dt) с конфигурацией из диплома блока А, в которой:
* Присутствует константа ВерсияКонфигурации, скрытая из командного интерфейса. * присутствует константа ВерсияКонфигурации, скрытая из командного интерфейса;
* Присутствует код, при начале работы системы сравнивающий версию из метаданных и версию из константы, и, при обнаружении отличий, устанавливающий значение константы равным версии из свойств метаданных. * присутствует код, при начале работы системы сравнивающий версию из метаданных и версию из константы и при обнаружении отличий устанавливающий значение константы равным версии из свойств метаданных.
### Процесс выполнения ### Процесс выполнения
* Создать константу **ВерсияКонфигурации** типа **Строка**, которая будет хранить текущую версию конфигурации. Скрыть ее из командного интерфейса, сняв флажок "Использовать стандартные команды". 1. Создать константу **ВерсияКонфигурации** типа **Строка**, которая будет хранить текущую версию конфигурации. Скрыть её из командного интерфейса, сняв флажок «Использовать стандартные команды».
* Создать общий модуль **ОбновлениеИнформационнойБазыВызовСервера** с экспортной процедурой **ПриНачалеРаботыСистемы**, которая: 2. Создать общий модуль **ОбновлениеИнформационнойБазыВызовСервера** с экспортной процедурой **ПриНачалеРаботыСистемы**, которая:
* Проверит, совпадает ли версия конфигурации (Метаданные.Версия) со значением константы (Константы.ВерсияКонфигурации.Получить()). * проверит, совпадает ли версия конфигурации (Метаданные.Версия) со значением константы (Константы.ВерсияКонфигурации.Получить());
* При совпадении ничего не сделает. * при совпадении ничего не сделает;
* При выявлении разницы вызовет ОбновлениеИнформационнойБазы.ПриИзмененииВерсии(СтараяВерсия, НоваяВерсия). * при выявлении разницы вызовет ОбновлениеИнформационнойБазы.ПриИзмененииВерсии(СтараяВерсия, НоваяВерсия);
* И установит значение константы равным новой версии из метаданных. * установит значение константы равным новой версии из метаданных.
* Таким образом, при обновлении информационной базы старой версии на конфигурацию новой версии будут выполнены обработчики обновления, необходимые новой версии. Сами обработчики обновления писать пока не нужно (процедура ПриИзмененииВерсии будет пустой). 3. Таким образом, при обновлении информационной базы старой версии на конфигурацию новой версии будут выполнены обработчики обновления, необходимые новой версии. Сами обработчики обновления писать пока не нужно, процедура ПриИзмененииВерсии будет пустой.
* Проверьте, что при изменении версии в метаданных и запуске программы значение константы обновляется. Открыть константу можно через режим технического специалиста. 4. Проверьте, что при изменении версии в метаданных и запуске программы значение константы обновляется. Открыть константу можно через режим технического специалиста.
## Задача 2 "Контактная информация" ## Задача 2. «Контактная информация»
### Описание задачи ### Описание задачи
Добавить в справочник "Контрагенты" табличную часть "Контактная информация" для хранения адресов, телефонов и т.п. в разрезе видов контактной информации, так, как это делается в реальных прикладных решениях, вместо хранения каждого вида контактной информации в отдельном реквизите, как мы это делали раньше. Заполнить предопределенные виды контактной информации недостающими данными и сделать обработчик переноса контактной информации из отдельных реквизитов в табличную часть - так, как это делается при обновлении в реальных прикладных решениях. Добавить в справочник «Контрагенты» табличную часть «Контактная информация» для хранения адресов, телефонов и т. п. в разрезе видов контактной информации так, как это делается в реальных прикладных решениях, вместо хранения каждого вида контактной информации в отдельном реквизите, как мы это делали раньше. Заполнить предопределенные виды контактной информации недостающими данными и сделать обработчик переноса контактной информации из отдельных реквизитов в табличную часть так, как это делается при обновлении в реальных прикладных решениях.
**Важно!** Чтобы проверить успешность переноса, не забудьте предварительно заполнить контактную информацию некоторых контрагентов в отдельных реквизитах. **Важно!** Чтобы проверить успешность переноса, не забудьте предварительно заполнить контактную информацию некоторых контрагентов в отдельных реквизитах.
### Требования к результату ### Требования к результату
Выгрузка информационной базы (.dt) с конфигурацией из диплома блока А, в которой: Выгрузка информационной базы (.dt) с конфигурацией из диплома блока А, в которой:
* присутствует справочник ВидыКонтактнойИнформации с пятью предопределенными элементами: ЮридическийАдресКонтрагента, ПочтовыйАдресКонтрагента, ФактическийАдресКонтрагента, ТелефонКонтрагента, EMailКонтрагента и реквизитом Тип (ПеречислениеСсылка.ТипыКонтактнойИнформации);
* Присутствует справочник ВидыКонтактнойИнформации с пятью предопределенными элементами: ЮридическийАдресКонтрагента, ПочтовыйАдресКонтрагента, ФактическийАдресКонтрагента, ТелефонКонтрагента, EMailКонтрагента и реквизитом Тип (ПеречислениеСсылка.ТипыКонтактнойИнформации). * в справочнике Контрагенты присутствует табличная часть КонтактнаяИнформация, данные которой выведены на форму контрагента таблицей, а прежние реквизиты, напротив, имеют префикс Удалить и скрыты;
* В справочнике Контрагенты присутствует табличная часть КонтактнаяИнформация, данные которой выведены на форму контрагента таблицей (а прежние реквизиты, напротив, имеют префикс Удалить и скрыты). * присутствует код, при начале работы системы сравнивающий версию из метаданных и версию из константы, и:
* Присутствует код, при начале работы системы сравнивающий версию из метаданных и версию из константы, и: * при переходе на версию 1.0.0.1 или более новую, а также при первом запуске инициирующий заполнение типов предопределенных элементов справочника ВидыКонтактнойИнформации;
* при переходе на версию 1.0.0.1 или более новую, а также при первом запуске инициирующий заполнение типов предопределенных элементов справочника ВидыКонтактнойИнформации.
* при переходе на версию 1.0.0.2 или более новую, а также при первом запуске инициирующий перенос контактной информации из реквизитов Удалить<...> в ТЧ КонтактнаяИнформация. * при переходе на версию 1.0.0.2 или более новую, а также при первом запуске инициирующий перенос контактной информации из реквизитов Удалить<...> в ТЧ КонтактнаяИнформация.
### Процесс выполнения ### Процесс выполнения
#### Виды контактной информации #### Виды контактной информации
* Создать перечисление ТипыКонтактнойИнформации со значениями: Адрес, Телефон, EMail. 1. Создать перечисление ТипыКонтактнойИнформации со значениями: Адрес, Телефон, EMail.
* Создать справочник ВидыКонтактнойИнформации с реквизитом Тип (ПеречислениеСсылка.ТипыКонтактнойИнформации), включив его в роль БазовыеПрава на просмотр и чтение. Справочник будет расширяемым для пользователей, а значение реквизита Тип позволит программе понять, как работать с этим видом КИ. 2. Создать справочник ВидыКонтактнойИнформации с реквизитом Тип (ПеречислениеСсылка.ТипыКонтактнойИнформации), включив его в роль БазовыеПрава на просмотр и чтение. Справочник будет расширяемым для пользователей, а значение реквизита Тип позволит программе понять, как работать с этим видом КИ.
* Создать предопределенные виды контактной информации: ЮридическийАдресКонтрагента, ПочтовыйАдресКонтрагента, ФактическийАдресКонтрагента, ТелефонКонтрагента, EMailКонтрагента. 3. Создать предопределённые виды контактной информации: ЮридическийАдресКонтрагента, ПочтовыйАдресКонтрагента, ФактическийАдресКонтрагента, ТелефонКонтрагента, EMailКонтрагента.
* В модуле менеджера справочника создать экспортную процедуру ЗаполнитьПредопределенныеЭлементы(), которая заполнит реквизит Тип у всех предопределенных элементов этого справочника (в Конфигураторе можно задать только код и наименование предопределенных элементов, но не другие реквизиты). 4. В модуле менеджера справочника создать экспортную процедуру ЗаполнитьПредопределенныеЭлементы(), которая заполнит реквизит Тип у всех предопределённых элементов этого справочника. В Конфигураторе можно задать только код и наименование предопределённых элементов, но не другие реквизиты.
* Установить версию конфигурации в метаданных на произвольное значение (напримере, 1.0.0.1). 5. Установить версию конфигурации в метаданных на произвольное значение (например, 1.0.0.1).
* В процедуре ОбновлениеИнформационнойБазы.ПриИзмененииВерсии: 6. В процедуре ОбновлениеИнформационнойБазы.ПриИзмененииВерсии:
* Проверить, не находится ли версия 1.0.0.1 между значениями параметров СтараяВерсия и НоваяВерсия, включая границы (если старая версия пуста - значит, она меньше любой текущей). * проверить, не находится ли версия 1.0.0.1 между значениями параметров СтараяВерсия и НоваяВерсия, включая границы. Если старая версия пуста, значит, она меньше любой текущей;
* Если версия 1.0.0.1 находится между старой и новой версией, включая границы - вызвать процедуру ЗаполнитьПредопределенныеЭлементы(). * если версия 1.0.0.1 находится между старой и новой версией, включая границы, — вызвать процедуру ЗаполнитьПредопределенныеЭлементы().
* Таким образом, и при первом запуске, и при обновлении будут заполнены предопределенные элементы. 7. Таким образом, и при первом запуске, и при обновлении будут заполнены предопределённые элементы.
#### Контрагенты #### Контрагенты
* Нужно использовать справочник Контрагенты из диплома блока А. 1. Нужно использовать справочник Контрагенты из диплома блока А.
* Стандартному реквизиту Наименование дать синоним "Краткое наименование". 2. Стандартному реквизиту Наименование дать синоним «Краткое наименование».
* Добавить табличную часть КонтактнаяИнформация с реквизитами Вид (СправочникСсылка.ВидыКонтактнойИнформации) и Значение (Строка). 3. Добавить табличную часть КонтактнаяИнформация с реквизитами Вид (СправочникСсылка.ВидыКонтактнойИнформации) и Значение (Строка).
* Прежним реквизитам, отвечавшим за контактную информацию, нужно добавить к наименованию префикс "Удалить" (Например: УдалитьЮридическийАдресКонтрагента) и скрыть их из форм. Совсем удалять их нельзя, чтобы можно было перенести старые данные. 4. Прежним реквизитам, отвечавшим за контактную информацию, нужно добавить к наименованию префикс «Удалить» (Например: УдалитьЮридическийАдресКонтрагента) и скрыть их из форм. Совсем удалять их нельзя, чтобы можно было перенести старые данные.
* Добавить в форму контрагента (лучше на отдельную закладку) новую табличную часть. 5. Добавить в форму контрагента, лучше на отдельную закладку, новую табличную часть.
* В модуле менеджера справочника создать экспортную процедуру ЗаполнитьТабличнуюЧастьКонтактнаяИнформация(), которая: 6. В модуле менеджера справочника создать экспортную процедуру ЗаполнитьТабличнуюЧастьКонтактнаяИнформация(), которая:
* Откроет выборку всех элементов справочника (Справочники.Контрагенты.Выбрать()). * откроет выборку всех элементов справочника (Справочники.Контрагенты.Выбрать());
* Для каждого элемента очистить ТЧ КонтактнаяИнформация и заполнит ее значениями старых реквизитов (с префиксом Удалить). * для каждого элемента очистит ТЧ КонтактнаяИнформация и заполнит её значениями старых реквизитов (с префиксом Удалить);
* Запишет каждый элемент. * запишет каждый элемент.
* В процедуре ОбновлениеИнформационнойБазы.ПриИзмененииВерсии при обновлении на версию 1.0.0.2 вызвать процедуру ЗаполнитьТабличнуюЧастьКонтактнаяИнформация(). 7. В процедуре ОбновлениеИнформационнойБазы.ПриИзмененииВерсии при обновлении на версию 1.0.0.2 вызвать процедуру ЗаполнитьТабличнуюЧастьКонтактнаяИнформация().
* Взвести версию в метаданных на 1.0.0.2. 8. Взвести версию в метаданных на 1.0.0.2.
* Запустить программу и удостовериться, что ранее введенная контактная информация не утеряна и доступна теперь уже через новую табличную часть, как в реальных прикладных решениях. 9. Запустить программу и удостовериться, что ранее введенная контактная информация не утеряна и доступна теперь уже через новую табличную часть, как в реальных прикладных решениях.