Skip to content

Latest commit

 

History

History
113 lines (94 loc) · 11.8 KB

homework-11-1.md

File metadata and controls

113 lines (94 loc) · 11.8 KB

Задание к занятию "Расширения"

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

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

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

Цель задания

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

Данная практика научит вас создавать расширения на платформе 1С и вносить изменения в конфигурацию, не включая в ней возможность изменения. Эти навыки пригодятся для реальной работы, когда Вам потребуется доработать конфигурацию заказчика.

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

  • Установить учебную платформа версии 8.3.22 или больше.
  • Просмотреть материал занятия "Расширения".

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

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

Задача 1 "Добавление объектов метаданных в расширении"

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

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

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

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

  • Для контрагента можно хранить неограниченное количество Контактных лиц
  • Список контактных лиц должен открываться из формы контрагента (или отображаться на форме в виде списка с возможностью добавления новых контактных лиц и их данных).
  • Для контактного лица должно быть можно указать:
    • ФИО - Строка до 150 символов, обязательно к заполнению
    • Контактный телефон - Строка до 50 символов, обязательно к заполнению
    • Должность - Отдельный справочник, обязательно к заполнению
    • Действует на основании - Строка до 150 символов, необязательно к заполнению
    • Заметка - Строка неограниченной длины, необязательно к заполнению
  • Во всех формах документов, под полем Договор, вывести поле Контактное лицо, выбор контактных лиц должен осуществляться по тому контрагенту, который указан в документе (в базе Заказчика подобны отбор реализован для поля Договора, реализацию можно "подсмотреть" там)

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

  1. Скачайте конфигурацию Заказчика: ССЫЛКА НА ФАЙЛ
  2. Создайте новую базу данных, без конфигурации и загрузите в нее скаченную конфигурацию.
  3. Продумайте, какие объекты Вам понадобятся для решения задачи, как должны выглядеть формы объектов. Возможно, поможет зарисовать все на бумаге.
Подсказка 1 Очевидно, для того, чтобы была возможность указывать контактных лиц в документах, для их хранения следует использовать справочник.
Подсказка 2 Кроме перечисленных в требованиях полей, в контактном лице должно быть можно указать ссылку на контрагента, чтобы использовать механизм подбора. Чтобы Контактное лицо нельзя было записать без указания Контрагента, лучше сделать Контрагента владельцем контактного лица (При этом, стандартный реквизит лучше переименовать)
Подсказка 3 Должности должны храниться в справочнике.
4. Реализуйте решение в расширении. Детали реализации можете выбирать на свой вкус. При необходимости дать пояснения - используйте комментарии в коде, или допишите пояснение к решению в личном кабинете.
Подсказка 4 Способ вывести реквизит на форму подробно описан в презентации
Подсказка 5 Для организации отбора контактных лиц по контрагентам в реквизите надо настроить связи параметров выбора:

Подсказка 6 Реквизит "Контрагент" перед настройкой отбора, должен быть добавлен в расширение
5. Не забудьте настроить форму объекта справочника так, чтобы с ней было удобно работать, а так же задать представления объектов и списков 6. Дополнительно можно (не обязательно) настроить представление контрагента так, чтобы если заполнено поле "Действут на основании", оно бы отображалось в представлении контактного лица

Задача 2 "Доработка программного кода в расширении"

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

Заказчик запросил еще одну доработку: В документе "Заказ покупателя" необходимо добавить поле "Согласованная скидка", учитывать скидку при расчете суммы по каждой строке табличной части (то есть, сумма в каждой строке табличного документа должна быть уменьшена на указанный в шапке процент)

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

При помощи расширения, в документ "Заказ покупателя" должно быть добавлено поле "Согласованная скидка", значение указанное в поле, должно учитываться в документе. Для решения задачи следует использовать аннотацию "ИзменениеИКонтроль"

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

  1. Выполняйте решение том же расширении, которое Вы создали в прошлом задании.
  2. Спланируйте решение: Какой тип данных должен быть у поля, какая точность? Как скидка будет влиять на табличную часть? Какие события надо обработать? Нужна ли отдельная команда?
Подсказка 1 Клиент планирует указывать размер процента скидки, то есть максимальное значение поля 100. Точность процента - скорее всего, не будет нужна более 2 знаков после заятой. Таким образом, оптимально указать Длина 15, Точность 2, Неотрициательное Максимальное значение 100
Подсказка 2 Кнопка пересчета табличной части с учетом введеной скидки, наверняка нужна, но возможно, кроме этого, сделать вопрос пользователю, при изенении поля, о необходимости пересчитать табличную часть. (при этом, конечно, если таблица пустая, вопрос задаваться не должен)
Подсказка 3 Пересчитывать надо учитывая цену и количество, а не просто уменьшая сумму на указанный процент, чтобы несколько нажатий на кнопку не уменьшали сумму последовательно
3. Добавьте в расширении реквизит, пропишите необходимый код в форме
Подсказка 4 В форме есть процедура рассчитывающая сумму, следует вносить дработки в нее. Эта процедура вызывается и для таблицы Товаров и для таблицы Услуг. Таким образом, изменив одну процедуру, мы обработаем все случаи
Подсказка 5 В аннотации ИзменениеИКонтроль следует удалить текущую строку расчета суммы строки и вставить собственный расчет. Вызов РассчитатьСуммуДокумента() сенять не следует