Научиться подключать к новым объектам подсистемы: - работа с файлами, - структура подчинённости, - управление доступом.
- Установить платформу версии 8.3.25 или больше.
- Подготовить информационную базу, полученную по итогу выполнения домашнего задания к занятию 11-3.
- Решите описанные задачи в конфигураторе.
- Протестируйте решение в пользовательском режиме.
- В личном кабинете Нетологии отправьте на проверку один общий файл базы данных (.dt), содержащий решение по всем 3 задачам. Файл прикрепите в раздел «решение» в практическом задании.
По заданию заказчика вы добавляете в существующую конфигурацию возможность оформления доставки и сохранения скана подписанной маршрутной квитанции.
В конфигурацию должен быть добавлен документ Доставка. Документ должен создаваться на основании документа Реализация товаров услуг. При создании документа Ответственный должен автоматически заполняться ссылкой на текущего пользователя. В документе должны быть реквизиты Организация, Контрагент, Договор, АдресДоставки, Основание, Ответственный, Комментарий и табличная часть Товары с колонками Номенклатура и Количество. Документ должен быть добавлен в подсистему ПокупкиИПродажи / Операции. К документу должна быть возможность прикреплять файлы.
Важно: если к конкретному документу присоединены файлы, то в строке этого документа в форме списка должна отображаться скрепочка.
- Добавьте документ Доставка, создайте реквизиты и табличные части в соответствии с требованиями.
- Создайте форму документа, разместите элементы в соответствии с требованиями стандартов:
- Дата и Номер располагаются в одной группе;
- реквизиты шапки расположены в 2 колонках: слева — данные организации, справа — данные клиента;
- Основание, Ответственный и Комментарий размещаются внизу формы.
- В настройках документа на закладке Ввод на основании укажите, что документ вводится на основании Реализации товаров и услуг.
- Воспользуйтесь конструктором ввода на основании, чтобы реализовать алгоритм заполнения документа.
- Реализуйте заполнение реквизита Ответственный текущим пользователем. Пример посмотрите в одном из существующих документов.
- Скопируйте один из справочников со строкой «ПрисоединенныеФайлы» в имени. Назовите новый справочник [ИмяВашегоДокумента]ПрисоединенныеФайлы. Поменяйте тип реквизита ВладелецФайла у нового справочника на ссылку на документ Доставка. Установите корректный Синоним и Представление объекта для нового справочника.
- Добавьте в определяемые типы ПрисоединенныйФайл и ПрисоединенныйФайлОбъект ссылку на новый справочник.
- Добавьте в определяемый тип ВладелецПрисоединенныхФайлов ссылку на документ Доставка.
- Создайте форму списка для документа Доставка с полным набором реквизитов документа.
- Включите у динамического списка Список Произвольный запрос.
- Добавьте в запрос Левое соединение с регистром сведений Наличие присоединенных файлов и поле ЕстьФайлы:
ВЫБОР
КОГДА НаличиеФайлов.ЕстьФайлы ЕСТЬ NULL
ТОГДА 0
КОГДА НаличиеФайлов.ЕстьФайлы
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ КАК ЕстьФайлы
- Добавьте в таблицу форму колонку ЕстьФайлы, спрячьте заголовок, установите Вид — Поле картинки. В качестве Картинки значений выберите КоллекцияСкрепка.
- Запустите базу в пользовательском режиме.
- Убедитесь, что на форме документа Доставка в панели навигации есть гиперссылка Присоединенные файлы. Присоедините любой файл.
- Убедитесь, что если к документу присоединён файл, то на форме списка отображается скрепка.
В документе Доставка вы хотите отобразить информацию о связях документа с другими документами.
В документе должна отображаться команда Отчеты / Связанные документы.
- Для автоматического размещения кнопки в документе необходимо в форму документа и форму списка добавить участки кода для интеграции с подсистемой Подключаемые команды:
В форму документа, событие ПриСозданииНаСервере
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
В форму документа, событие ПриОткрытии
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
В форму документа, событие ПриЧтенииНаСервере
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
В форму документа, событие ПослеЗаписи
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.ПослеЗаписи(ЭтотОбъект, Объект, ПараметрыЗаписи);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
В форму документа в конце модуля формы
#Область ПодключаемыеКоманды
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Объект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Объект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти
В форму списка, событие ПриСозданииНаСервере
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
В форму списка, событие ПриАктивизацииСтроки
// СтандартныеПодсистемы.ПодключаемыеКоманды
ПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
В форму списка в конце модуля формы
#Область ПодключаемыеКоманды
// СтандартныеПодсистемы.ПодключаемыеКоманды
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
ПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
ПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
ПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
// Конец СтандартныеПодсистемы.ПодключаемыеКоманды
#КонецОбласти
- В данные критерия отбора Связанные документы добавьте документ Доставка.
- В состав критерия отбора Связанные документы добавьте реквизит Основание документа Доставка.
- Запустите базу в пользовательском режиме.
- Убедитесь, что у документа Доставка в форме списка и в форме объекта отображается команда Отчеты / Связанные объекты. При нажатию на команду открывается отчёт, показывающий связь документов.
Вы хотите, чтобы пользователи с ограниченными правами могли работать с новым документом.
В системе должна быть добавлена новая роль, новый профиль и создан пользователь, который не является администратором и может создавать документ Доставка.
- Создайте в конфигураторе роль ДобавлениеИзменениеДоставки, снимите все права, предоставьте все права на документ, кроме Интерактивного удаления. Проверьте, что установились права на реквизиты и табличной части документа. Так же не забудьте назначить права справочнику, в котором хранятся присоединённые файлы.
- Создайте в конфигураторе роль ЧтениеДоставки, снимите все права, предоставьте права Чтение, Просмотр, Ввод по строке. Проверьте, что установились права на реквизиты и табличной части документа. Также не забудьте назначить права справочнику, в котором хранятся присоединённые файлы.
- В пользовательском режиме зайдите в список профилей групп доступа (Администрирование / Настройка пользователей и прав / Профили групп доступа), создайте профиль Работа с доставками, добавьте в него роль ДобавлениеИзменениеДоставки, которую создали ранее.
- Если в базе ещё не создан пользователь Администратор, создайте его (Администрирование / Настройка пользователей и прав / Пользователи).
- Создайте пользователя Менеджер по доставке, назначьте ему профили Менеджер по продажам и Работа с доставками.
- Запустите базу в пользовательском режиме под пользователем Менеджер по доставке.
- Убедитесь, что у менеджера по доставке есть право на создание документов Доставка.
Частые ошибки
- Новый модуль не означает, что надо забыть то, что было в прошлом - у всех добавленных объектов следует дописывать префикс, аналогичный тому, что был ранее выбран вами. Так же, если меняете код существующих объектов, не забывайте оформлять это правильно.
- Роли - это тоже добавленные в дерево объекты, у них тоже должен быть прописан префикс в имени
- В ролях связанных с документом обязательно надо давать права на чтение и просмотр справочников, которые указаны в качестве типов данных реквизитов документа, иначе увидеть значения в полях будет не возможно - в документах, вместо значений вы будете видеть вот такое:
- Обратите внимание, роли должны давать права только на просмотр и чтение справочников, чтобы пользователь мог работать с документом. Прав на редактирование справочников даже в роли ДобавлениеИзменениеДоставки быть не должно.
- Документ Доставка вводится на основании Реализации товаров и услуг, а значит в его реквизите Основание должна указываться ссылка именно на этот документ, а не на Заказ покупателя. Сценарий проверки такой: На основании заказа вводится реализация, на ее основании Доставка. Если смотрим отчет по связанным документам, должны увидеть цепочку из трех документов.
- В качестве КартинкаЗначений надо указывать не Скрепка, а КоллекцияСкрепка
- Зачёт — выполнены все задания, в выполненных заданиях нет противоречий и нарушения логики. Введены тестовые данные, демонстрирующие работу каждой задачи.
- На доработку — задание выполнено частично или не выполнено, в логике выполнения заданий есть противоречия, существенные недостатки.
Все задачи обязательны к выполнению. Пожалуйста, присылайте на проверку все задачи сразу.
Любые вопросы по решению задач задавайте в чате учебной группы.
Примерное время выполнения: 45–240 минут
Чтобы вам было проще понять, что в итоге должно получиться, мы подготовили подсказки — анимационные изображения в формате gif или картинки. Чтобы их увидеть, кликните по ссылке.