Skip to content

Latest commit

 

History

History
234 lines (181 loc) · 21.1 KB

homework-12-1.md

File metadata and controls

234 lines (181 loc) · 21.1 KB

Домашнее задание к занятию «Базовые подсистемы»

Цель задания

Научиться подключать к новым объектам подсистемы: - работа с файлами, - структура подчинённости, - управление доступом.

Чеклист готовности к домашнему заданию

Инструкция к заданию

  1. Решите описанные задачи в конфигураторе.
  2. Протестируйте решение в пользовательском режиме.
  3. В личном кабинете Нетологии отправьте на проверку один общий файл базы данных (.dt), содержащий решение по всем 3 задачам. Файл прикрепите в раздел «решение» в практическом задании.

Задание 1. «Работа с файлами»

Описание задачи

По заданию заказчика вы добавляете в существующую конфигурацию возможность оформления доставки и сохранения скана подписанной маршрутной квитанции.

Требования к результату

В конфигурацию должен быть добавлен документ Доставка. Документ должен создаваться на основании документа Реализация товаров услуг. При создании документа Ответственный должен автоматически заполняться ссылкой на текущего пользователя. В документе должны быть реквизиты Организация, Контрагент, Договор, АдресДоставки, Основание, Ответственный, Комментарий и табличная часть Товары с колонками Номенклатура и Количество. Документ должен быть добавлен в подсистему ПокупкиИПродажи / Операции. К документу должна быть возможность прикреплять файлы.

Важно: если к конкретному документу присоединены файлы, то в строке этого документа в форме списка должна отображаться скрепочка.

Процесс выполнения

  1. Добавьте документ Доставка, создайте реквизиты и табличные части в соответствии с требованиями.
  2. Создайте форму документа, разместите элементы в соответствии с требованиями стандартов:
    • Дата и Номер располагаются в одной группе;
    • реквизиты шапки расположены в 2 колонках: слева — данные организации, справа — данные клиента;
    • Основание, Ответственный и Комментарий размещаются внизу формы.
  3. В настройках документа на закладке Ввод на основании укажите, что документ вводится на основании Реализации товаров и услуг.
  4. Воспользуйтесь конструктором ввода на основании, чтобы реализовать алгоритм заполнения документа.
  5. Реализуйте заполнение реквизита Ответственный текущим пользователем. Пример посмотрите в одном из существующих документов.
  6. Скопируйте один из справочников со строкой «ПрисоединенныеФайлы» в имени. Назовите новый справочник [ИмяВашегоДокумента]ПрисоединенныеФайлы. Поменяйте тип реквизита ВладелецФайла у нового справочника на ссылку на документ Доставка. Установите корректный Синоним и Представление объекта для нового справочника.
  7. Добавьте в определяемые типы ПрисоединенныйФайл и ПрисоединенныйФайлОбъект ссылку на новый справочник.
  8. Добавьте в определяемый тип ВладелецПрисоединенныхФайлов ссылку на документ Доставка.
  9. Создайте форму списка для документа Доставка с полным набором реквизитов документа.
  10. Включите у динамического списка Список Произвольный запрос.
  11. Добавьте в запрос Левое соединение с регистром сведений Наличие присоединенных файлов и поле ЕстьФайлы:
    ВЫБОР
		КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
			ТОГДА 0
		КОГДА НаличиеФайлов.ЕстьФайлы
			ТОГДА 1
		ИНАЧЕ 0
	КОНЕЦ КАК ЕстьФайлы
  1. Добавьте в таблицу форму колонку ЕстьФайлы, спрячьте заголовок, установите Вид — Поле картинки. В качестве Картинки значений выберите КоллекцияСкрепка.

Результат задания

  1. Запустите базу в пользовательском режиме.
  2. Убедитесь, что на форме документа Доставка в панели навигации есть гиперссылка Присоединенные файлы. Присоедините любой файл.
  3. Убедитесь, что если к документу присоединён файл, то на форме списка отображается скрепка.

Задание 2. «Связанные документы»

Описание задачи

В документе Доставка вы хотите отобразить информацию о связях документа с другими документами.

Требования к результату

В документе должна отображаться команда Отчеты / Связанные документы.

Процесс выполнения

  1. Для автоматического размещения кнопки в документе необходимо в форму документа и форму списка добавить участки кода для интеграции с подсистемой Подключаемые команды:

В форму документа, событие ПриСозданииНаСервере

	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

В форму документа, событие ПриОткрытии

	// СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

В форму документа, событие ПриЧтенииНаСервере

    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

В форму документа, событие ПослеЗаписи

    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

В форму документа в конце модуля формы

#Область ПодключаемыеКоманды

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
    ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

#КонецОбласти

В форму списка, событие ПриСозданииНаСервере

	// СтандартныеПодсистемы.ПодключаемыеКоманды
	ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
	// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

В форму списка, событие ПриАктивизацииСтроки

    // СтандартныеПодсистемы.ПодключаемыеКоманды
    ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
    // Конец СтандартныеПодсистемы.ПодключаемыеКоманды

В форму списка в конце модуля формы

#Область ПодключаемыеКоманды

// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
    ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
    ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры

&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
    ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список);
КонецПроцедуры

&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
    ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды

#КонецОбласти
  1. В данные критерия отбора Связанные документы добавьте документ Доставка.
  2. В состав критерия отбора Связанные документы добавьте реквизит Основание документа Доставка.

Результат задания

  1. Запустите базу в пользовательском режиме.
  2. Убедитесь, что у документа Доставка в форме списка и в форме объекта отображается команда Отчеты / Связанные объекты. При нажатию на команду открывается отчёт, показывающий связь документов.

Задание 3. «Управление доступом»

Описание задачи

Вы хотите, чтобы пользователи с ограниченными правами могли работать с новым документом.

Требования к результату

В системе должна быть добавлена новая роль, новый профиль и создан пользователь, который не является администратором и может создавать документ Доставка.

Процесс выполнения

  1. Создайте в конфигураторе роль ДобавлениеИзменениеДоставки, снимите все права, предоставьте все права на документ, кроме Интерактивного удаления. Проверьте, что установились права на реквизиты и табличной части документа. Так же не забудьте назначить права справочнику, в котором хранятся присоединённые файлы.
  2. Создайте в конфигураторе роль ЧтениеДоставки, снимите все права, предоставьте права Чтение, Просмотр, Ввод по строке. Проверьте, что установились права на реквизиты и табличной части документа. Также не забудьте назначить права справочнику, в котором хранятся присоединённые файлы.
  3. В пользовательском режиме зайдите в список профилей групп доступа (Администрирование / Настройка пользователей и прав / Профили групп доступа), создайте профиль Работа с доставками, добавьте в него роль ДобавлениеИзменениеДоставки, которую создали ранее.
  4. Если в базе ещё не создан пользователь Администратор, создайте его (Администрирование / Настройка пользователей и прав / Пользователи).
  5. Создайте пользователя Менеджер по доставке, назначьте ему профили Менеджер по продажам и Работа с доставками.

Результат задания

  1. Запустите базу в пользовательском режиме под пользователем Менеджер по доставке.
  2. Убедитесь, что у менеджера по доставке есть право на создание документов Доставка.
Частые ошибки
  1. Новый модуль не означает, что надо забыть то, что было в прошлом - у всех добавленных объектов следует дописывать префикс, аналогичный тому, что был ранее выбран вами. Так же, если меняете код существующих объектов, не забывайте оформлять это правильно.
  2. Роли - это тоже добавленные в дерево объекты, у них тоже должен быть прописан префикс в имени
  3. В ролях связанных с документом обязательно надо давать права на чтение и просмотр справочников, которые указаны в качестве типов данных реквизитов документа, иначе увидеть значения в полях будет не возможно - в документах, вместо значений вы будете видеть вот такое:

(здесь права на контрагента, договор и т.д. унаследованы от менеджера по продажам, но если дать пользователю только базовые права и роль добавленную вами - документ откроется, но во всех ссылочных полях будет "Объект не найден", вместо ссылок, по этому надо дать права на **все** справочники и другие ссылочные типы данных, спользуемые в объекте)
  1. Обратите внимание, роли должны давать права только на просмотр и чтение справочников, чтобы пользователь мог работать с документом. Прав на редактирование справочников даже в роли ДобавлениеИзменениеДоставки быть не должно.
  2. Документ Доставка вводится на основании Реализации товаров и услуг, а значит в его реквизите Основание должна указываться ссылка именно на этот документ, а не на Заказ покупателя. Сценарий проверки такой: На основании заказа вводится реализация, на ее основании Доставка. Если смотрим отчет по связанным документам, должны увидеть цепочку из трех документов.
  3. В качестве КартинкаЗначений надо указывать не Скрепка, а КоллекцияСкрепка

Критерии оценки

  1. Зачёт — выполнены все задания, в выполненных заданиях нет противоречий и нарушения логики. Введены тестовые данные, демонстрирующие работу каждой задачи.
  2. На доработку — задание выполнено частично или не выполнено, в логике выполнения заданий есть противоречия, существенные недостатки.

Все задачи обязательны к выполнению. Пожалуйста, присылайте на проверку все задачи сразу.

Любые вопросы по решению задач задавайте в чате учебной группы.

Примерное время выполнения: 45–240 минут

Подсказка:

Чтобы вам было проще понять, что в итоге должно получиться, мы подготовили подсказки — анимационные изображения в формате gif или картинки. Чтобы их увидеть, кликните по ссылке.