1.97M

№6 Общие модули_ табличный документ_ объектная модель работы с данными (1)

1.

Общие модули.
Табличный документ.
Объектная модель работы
с данными

2.

Общие модули
В общих модулях хранятся процедуры и функции,
которые вызываются из других модулей системы. Сам по
себе общий модуль не исполняется. Исполняются
отдельные его процедуры/функции в момент их вызова
из других модулей.
Общий модуль
Алгоритм выбора каталога файла
Модуль формы
Модуль команды
Модуль управляемого
приложения

3.

Вынесем блок кода по выбору каталога в
общий модуль
Общий модуль создаем в блоке «Общие»

4.

Вынесем блок кода по выбору каталога в
общий модуль
1.
Имя модуля должно быть понятным.
2. Модуль открывается двойным щелчком
или по ссылке в свойствах.
3. Флаг
«Глобальный»
указывает
на
использование модуля в глобальном
контексте.Вы сможете вызывать вашу
экспортную
процедуру,
по
наименованию, словно эта функция
процедуры модуля, который на данный
момент выполняется. Не рекомендуется
использовать этот флаг, если модуль
будет использоваться редко.
4. Можно
указать
место,
где
будет
исполняться
модуль.
Если
указать
несколько директив, то явное указание
директивы в модуле будет обязательным

5.

Вынесем блок кода по выбору каталога в
общий модуль
Для использования процедур и функций, описанных в
общем модуле, из других модулей необходимо
добавлять
«ЭКСПОРТ»
после
описания
процедуры/функции
Общий модуль
Процедура Процедура1()
КонецПроцедуры
Модуль формы
Процедура Процедура1() Экспорт
КонецПроцедуры

6.

Задание
Вынесем блок нашего кода по выбору каталога в общий
модуль. Перенесем нашу логику в общий модуль
_РаботаСФайлами, а на форме выполним вызов функции
из общего модуля.

7.

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

8.

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

9.

Задание
Создадим функцию и перенесем в нее данные

10.

Задание
Указываем параметры, так как это необходимо. И так
как это функция, то в конце возвращаем значение.

11.

Задание
Так как код этой функции получился довольно
объемным, то рекомендуется добавить ей описание.
Сделать это можно нажав правой кнопкой мыши на
функцию и выбрать Рефакторинг – Создать описание
функции

12.

Задание
Мы получим следующий шаблон, его можно заполнить

13.

Задание
При обращении к функции будет доступно наше
описание

14.

Задание
Вызываем функцию из общего модуля вместо нашего
объемного кода и проверяем работоспособность

15.

Задание
А теперь сохраним наши данные на форме, чтобы при
открытии формы данные остались. Для этого заходим в
Свойства формы, в разделе Использование выставляем
значение
параметра
«АвтоматическоеСохранениеДанных» – «Использовать»

16.

Задание
В результате в реквизитах формы появится флаг
«Сохранение», ставим его у тех реквизитов, чьи
значения хотим сохранять.

17.

Табличный документ

18.

Задание
1.
2.
3.
4.
5.
6.
7.
8.
Назовите отличие Структуры от Соответствия?
Каким образом именуются колонки у таблицы значений?
Где существует таблица значений? Как думаете, почему?
Что такое директива?
В чем отличия директивы НаСервере и НаСервереБезКонтекста?
В чем отличие процедуры и функции?
Что такое параметр?
Какое ключевое слово сделает нашу процедуру/функцию
доступной из любого места?
9. Как вы понимаете, что такое обработчик события?
10. Выполните задание: необходимо создать обработку, у которой на
форме будет 3 числа (реквизиты формы). По кнопке «Найти
наименьшее число» необходимо вывести сообщение о том, какое
из трех, введенных пользователем чисел, наименьшее.

19.

Отобразим нашу таблицу на форме
За все визуальные отображения отвечает клиент, но на
клиенте таблицы значений не существует. Для
решения задачи нам необходим такой объект данных,
который будет существовать и на клиенте, и на
сервере.
Такой объект называется «Табличный документ».
Подробнее по ссылке: https://v8.1c.ru/platforma/tablichnyydokument/

20.

Отобразим нашу таблицу на форме
У ячеек табличного документа есть свойство «Текст»,
изменение которого влияет на содержание ячейки.
Именно этим мы и воспользуемся.

21.

Отобразим нашу таблицу на форме
Алгоритм создание табличного документа по таблице
значений может часто использоваться в работе,
поэтому вынесем этот алгоритм в общий модуль. Так
как таблица значений существует на сервере, то и
перенос информации мы осуществим на сервере.

22.

Отобразим нашу таблицу на форме
Создадим табличный документ. А также укажем
параметр функции, мы будем передавать в нее
таблицу значений

23.

Отобразим нашу таблицу на форме
Заполним шапку таблицы

24.

Отобразим нашу таблицу на форме
Заполним тело таблицы

25.

Отобразим нашу таблицу на форме
В конце вернем табличный документ

26.

Отобразим нашу таблицу на форме
Возвращаемся в модуль формы и вызываем нашу
функцию

27.

Отобразим нашу таблицу на форме
Нам нужно показать наш табличный документ. Но
метод Показать() работает только на клиенте, поэтому
нам нужно передать наш табличный документ на
клиент

28.

Отобразим нашу таблицу на форме
Результат

29.

Домашнее задание
- Сделать вывод таблицы значений в табличный
документ
- Выполнить в приходных и расходных документах
расчет суммы при изменении цены и
количества/расчет цены при изменении суммы

30.

Пример кода к ДЗ

31.

Объектная модель работы
с данными

32.

Объектная модель. Уровни
Менеджер
Менеджер.<Имя1>
Менеджер.<Имя2>
Менеджер.<Имя3>
Объект1.<Имя2>
Объект2.<Имя2>
Объект3.<Имя2>
Ссылка1.<Имя2>
Ссылка2.<Имя2>
Ссылка3.<Имя2>

33.

Объектная модель. Уровни
СправочникМенеджер
СправочникМенеджер.
Склады
СправочникМенеджер.
Товары
СправочникМенеджер.
Контрагенты
СправочникОбъект1.
Товары
СправочникОбъект2.
Товары
СправочникОбъект3.
Товары
СправочникСсылка1.
Товары
СправочникСсылка2.
Товары
СправочникСсылка3.
Товары

34.

Объектная модель. Уровни
1. Менеджер – управляет всеми остальными уровнями
2. Менеджер.<Имя1> - управляет элементами (аналог формы списка)
3. Объект.<Имя1> - управляет на уровне конкретного
объекта
4. Ссылка.<Имя1> - нужна для чтения и доступа к объекту
через ссылку

35.

Пример работы с объектной моделью
Создадим программно элементы справочника
«Сотрудники».
Для этого создадим общую команду
Группа — расположение будущей команды на
интерфейсе.

36.

Пример работы с объектной моделью
Создание элементов справочника доступно только на
сервере, поэтому в модуле команды необходимо
добавить серверную процедуру. Сразу прописываем её
вызов в обработке команды

37.

Пример работы с объектной моделью
Создаем новый элемент справочника

38.

Пример работы с объектной моделью
Заполняем поле наименование и записываем элемент

39.

Пример работы с объектной моделью
Сейчас при нажатии кнопки «Создать сотрудника» в
информационной базе добавляются новые элементы

40.

Пример работы с объектной моделью
Модифицируем программу. Добавим реквизиты справочнику. На
реквизит СНИЛС наложим маску
Когда в системе 1С есть поле ввода, которое имеет тип «строка», то в
таком случае к нему есть возможность применить маску ввода данных.
Данная функция отвечает за форматирование внешнего вида
информации и за её количество. Маска ввода может находить
практическое применение: маска ввода даты, маска ввода номера
телефона, кода из сообщения.

41.

Задача 2
Перенесем наш код в модуль менеджера справочника
«Сотрудники», в связи с тем, что работаем сейчас на
уровне менеджера

42.

Задача 2
В модуле менеджера пишем процедуру
«СоздатьСотрудника»,
добавим параметры

43.

Задача 2
Создаем новый элемент. Обратите внимание, что в
модуле менеджера нам не нужно писать
Справочники.Сотрудники

44.

Задача 2
Заполним реквизиты

45.

Задача 2
Сделаем нашу процедуру экспортной для доступности
из других модулей

46.

Задача 2
В модуле команды заменим код создания элемента
справочника

47.

Поиск по справочнику
Произведем поиск по нашему справочнику. Для этого
создадим общую форму. И добавим на неё реквизит
«Фамилия»

48.

Поиск по справочнику
Добавляем на форму новую команду «НайтиСотрудника»

49.

Поиск по справочнику
Есть три метода поиска у справочника:

50.

Поиск по справочнику
Будем искать по наименованию и использовать для
поиска реквизит формы. У метода
«НайтиПоНаименованию» есть параметр
«ТочноеСоответствие», по умолчанию стоит Ложь. С его
помощью можно регулировать точность поиска.

51.

Поиск по справочнику
Запишем найденное значение в переменную

52.

Поиск по справочнику
Проверим, нашлось ли наше значение. Для этого
используем метод Пустая(). Если элемент справочника
не найден, то метод вернет нам Истину

53.

Поиск по справочнику
Протестируем

54.

Редактирование элементов
Попробуем изменить найденный элемент. На что
получим одну из самых частых ошибок:

55.

Редактирование элементов
Для редактирования нам необходимо получить Объект
из Ссылки
English     Русский Правила