diff --git a/homework-4-1.md b/homework-4-1.md index 8e85f88..186c11b 100644 --- a/homework-4-1.md +++ b/homework-4-1.md @@ -1,9 +1,31 @@ # Задание к занятию "Справочники" -## Задача 1 "Контактная информация" +## Задача 1 "Версия конфигурации" ### Описание задачи -Добавить в справочник "Контрагенты" табличную часть "Контактная информация" для хранения адресов, телефонов и т.п. в разрезе видов контактной информации, так, как это делается в реальных прикладных решениях, вместо хранения каждого вида контактной информации в отдельном реквизите, как мы это делали раньше. Заполнить предопределенные виды контактной информации недостающими данными и сделать обработчик переноса контактной информации из отдельных реквизитов в табличную часть - так, как это делается при обновлении в реальных прикладных решениях. +Добавить константу **ВерсияКонфигурации**, которая будет хранить версию конфигурации из свойств метаданных, с которой программа запускалась в последний раз. Хранение версии в данных позволит обнаружить запуск программы с измененной версией и запустить код, заполняющий недостающие данные при обновлении версии. + +### Требования к результату +Конфигурация из диплома блока А, в которой: +* Присутствует константа ВерсияКонфигурации, скрытая из командного интерфейса. +* Присутствует код, при начале работы системы сравнивающий версию из метаданных и версию из константы, и, при обнаружении отличий, устанавливающий значение константы равным версии из свойств метаданных. + +### Процесс выполнения +* Создать константу **ВерсияКонфигурации** типа **Строка**, которая будет хранить текущую версию конфигурации. Скрыть ее из командного интерфейса, сняв флажок "Использовать стандартные команды". +* Создать общий модуль **ОбновлениеИнформационнойБазыВызовСервера** с экспортной процедурой **ПриНачалеРаботыСистемы**, которая: + * Проверит, совпадает ли версия конфигурации (Метаданные.Версия) со значением константы (Константы.ВерсияКонфигурации.Получить()). + * При совпадении ничего не сделает. + * При выявлении разницы вызовет ОбновлениеИнформационнойБазы.ПриИзмененииВерсии(СтараяВерсия, НоваяВерсия). + * И установит значение константы равным новой версии из метаданных. +* Таким образом, при обновлении информационной базы старой версии на конфигурацию новой версии будут выполнены обработчики обновления, необходимые новой версии. Сами обработчики обновления писать пока не нужно (процедура ПриИзмененииВерсии будет пустой). +* Проверьте, что при изменении версии в метаданных и запуске программы значение константы обновляется. Открыть константу можно через режим технического специалиста. + +## Задача 2 "Контактная информация" + +### Описание задачи +Добавить в справочник "Контрагенты" табличную часть "Контактная информация" для хранения адресов, телефонов и т.п. в разрезе видов контактной информации, так, как это делается в реальных прикладных решениях, вместо хранения каждого вида контактной информации в отдельном реквизите, как мы это делали раньше. Заполнить предопределенные виды контактной информации недостающими данными и сделать обработчик переноса контактной информации из отдельных реквизитов в табличную часть - так, как это делается при обновлении в реальных прикладных решениях. + +**Важно!** Чтобы проверить успешность переноса, не забудьте предварительно заполнить контактную информацию некоторых контрагентов в отдельных реквизитах. ### Требования к результату @@ -11,23 +33,12 @@ * Присутствует справочник ВидыКонтактнойИнформации с пятью предопределенными элементами: ЮридическийАдресКонтрагента, ПочтовыйАдресКонтрагента, ФактическийАдресКонтрагента, ТелефонКонтрагента, EMailКонтрагента и реквизитом Тип (ПеречислениеСсылка.ТипыКонтактнойИнформации). * В справочнике Контрагенты присутствует табличная часть КонтактнаяИнформация, данные которой выведены на форму контрагента таблицей (а прежние реквизиты, напротив, имеют префикс Удалить и скрыты). -* Присутствует константа ВерсияКонфигурации, скрытая из командного интерфейса. * Присутствует код, при начале работы системы сравнивающий версию из метаданных и версию из константы, и: * при переходе на версию 1.0.0.1 или более новую, а также при первом запуске инициирующий заполнение типов предопределенных элементов справочника ВидыКонтактнойИнформации. * при переходе на версию 1.0.0.2 или более новую, а также при первом запуске инициирующий перенос контактной информации из реквизитов Удалить<...> в ТЧ КонтактнаяИнформация. ### Процесс выполнения -#### Версия конфигурации - -* Создать константу ВерсияКонфигурации типа Строка, которая будет хранить текущую версию конфигурации. Скрыть ее из командного интерфейса, сняв флажок "Использовать стандартные команды". -* Создать общий модуль ОбновлениеИнформационнойБазыВызовСервера с экспортной процедурой ПриНачалеРаботыСистемы, которая: - * Проверит, совпадает ли версия конфигурации (Метаданные.Версия) со значением константы (Константы.ВерсияКонфигурации.Получить()). - * При совпадении ничего не сделает. - * При выявлении разницы вызовет ОбновлениеИнформационнойБазы.ПриИзмененииВерсии(СтараяВерсия, НоваяВерсия). - * И установит значение константы равным новой версии из метаданных. -* Таким образом, при обновлении информационной базы старой версии на конфигурацию новой версии будут выполнены обработчики обновления, необходимые новой версии. - #### Виды контактной информации * Создать перечисление ТипыКонтактнойИнформации со значениями: Адрес, Телефон, EMail.