Загрузил Mama Lama

Разбор (экзамен)

реклама
ПОЛНЫЙ РАЗБОР ЭКЗАМЕНАЦИОННОГО БИЛЕТА
1 Этап Создание конфигурации .......................................................................................................................................... 2
1. Сведения об организации. Блок «Константы» ........................................................................................................... 2
2. Списки связанные с работой организации. Блок «Справочники» ........................................................................... 3
3. Создание механизма для фиксации событий прихода и расхода номенклатуры. Блок «Документы». ............... 7
4. Создание отчетов. ....................................................................................................................................................... 15
5. Создание персонального интерфейса для каждого типа пользователей ............................................................... 20
Создание подсистем ....................................................................................................................................................... 20
Создание пользователей................................................................................................................................................. 27
Создание интерфейса ..................................................................................................................................................... 29
2. Этап .................................................................................................................................................................................. 30
2.1 Контроль остатков .................................................................................................................................................... 30
Создание отчета «Остатки товаров» ............................................................................................................................. 40
2.2 Начисление заработной платы................................................................................................................................. 43
Регистр сведений рабочий график ................................................................................................................................ 43
Регистр сведений о сотрудниках (у каждого сотрудника есть ставка) ...................................................................... 43
Документ регистрации прогула ..................................................................................................................................... 48
Документ по начислению ЗП (в зависимости от ставки и должности сотрудника)................................................. 49
Отчет по зарплате сотрудников..................................................................................................................................... 54
3 этап Разработка мобильного приложения ..................................................................................................................... 57
Создание новой информационной базы ....................................................................................................................... 57
Создание прикладных объектов .................................................................................................................................... 57
Создание интерфейса авторизации ............................................................................................................................... 58
Механизм по выводу товаров в мобильном приложении ........................................................................................... 76
Создание HTTPСервиса ................................................................................................................................................. 83
1 Этап Создание конфигурации
Создание пустой информационной базы, с указанием Фамилия И.О. в свойствах, вкладка
«Основное» - в поле «Имя» и «Синоним», вкладка «Разрешение» - поле «Поставщик».
1. Сведения об организации. Блок «Константы»
Для константы «ИНН» необходимо определить маску 99999 999999
Для константы «Генеральный директор» необходимо предварительно создать справочник
«Физические лица»
Для каждой константы необходимо настроить запрет на изменение данных:
В свойствах, во вкладке «Представление», необходимо отключить параметр «Использовать
стандартные команды».
Создание формы для констант. В дереве конфигурации, выбираем «Общие» - «Общие формы» «Добавить» - «Форма констант».
Дополнительно: в свойствах формы констант, необходимо изменить название в соответствии с
требованиями заказчика
2. Списки связанные с работой организации. Блок «Справочники»
Справочник «Физические лица»
Данный справочник настраивается по требованиям заказчика
Тип кода – Число
Длина наименования – 150 (максимальное значение)
Добавление реквизитов:
Фамилия, Имя, Отчество
Для реквизитов «Фамилия» и «Имя» необходимо настроить проверку заполнения в свойствах.
Для стандартных реквизитов «Код» и «Наименование» необходимо задать синонимы:
По требованию заказчика, необходимо настроить, что бы перед записью, Фамилия + Имя +
Отчество, было представлено по примеру – Фамилия И.О.
Во вкладке «Формы» необходимо создать «Форму элемента справочника»
Дополнительно: в созданной форме элемента необходимо произвести настройку, чтобы
табельный номер и ФИО (Наименование) были отображены в формате «Поля надписи». Для этого в
свойствах данных реквизитов необходимо указать вид – «Поле надписи»
В свойствах формы, вкладка «События», выбираем «ПередЗаписью» и создаем обработчик с
директивой «&НаКлиенте»
Текст кода:
// АВТОМАТИЧЕСКОЕ ФОРМИРОВАНИЕ ФАМИЛИЯ И.О.
// Форма элемента - Форма - Создать событие "ПередЗаписью"
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
ИмяИнициал = Лев(Объект.Имя,1) + ".";
Если НЕ Пустаястрока(Объект.Отчество) Тогда
ОтчИнициал = Лев(Объект.Отчество,1)+ ".";
Иначе
ОтчИнициал = "";
КонецЕсли;
Объект.Наименование = ТРег(Объект.Фамилия) + " " + ВРег(ИмяИнициал + ОтчИнициал);
КонецПроцедуры
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Заполнение формы констант
Заполнение справочника «Физические лица»
Б А З Ы ! ! !
Необходимо задать форму списка для справочника «Физические лица» в соответствии с
требованиями заказчика, что бы отображались только две колонки – табельный номер(Код) и ФИО
(Наименование)
Для справочника «Физические лица» создаем «Форму списка» и делаем проверку по тем
элементам, которые должны быть отображены на форме списка
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
Справочник «Должности»
Справочник «Контрагенты»
Справочник «Склады»
Дополнительно для справочника «Склады» необходимо создать предопределенные элементы во
вкладке «Прочее»
Справочник «Номенклатура»
Для справочника «Номенклатура» дополнительно необходимо настроить Перечисления видов
номенклатуры – «Товар» и «Услуга»
Добавить реквизит «ВидНоменклатуры» (ссылка на перечисление «ВидНоменклатуры»)
Во вкладке «Иерархия» необходимо указать, что данный справочник является иерархическим.
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Заполнение созданных справочников
Б А З Ы ! ! !
3. Создание механизма для фиксации событий прихода и расхода номенклатуры. Блок
«Документы».
Документ «Приходная накладная»
Добавление необходимых реквизитов.
Реквизит «Поставщик» (СправочникСсылка.Контрагенты)
Вкладка «Представление», проверка заполнения – выдавать ошибку
Реквизит «Ответственный сотрудник» (СправочникСсылка.ФизическиеЛица)
Вкладка «Представление», проверка заполнения – выдавать ошибку
Реквизит «Сумма документа»
Реквизит «Склад» (СправочникСсылка.Склады)
Вкладка «Представление», проверка заполнения – выдавать ошибку
Вкладка «Представление», значение заполнения – основной склад
Добавление табличной части «СписокНоменклатуры»
Добавление реквизита «Номенклатура» (СправочникСсылка. Номенклатура)
Установка ограничения по выбору только товаров (исключаем выбор услуг)
Имя – Отбор.ВидНоменклатуры
Значение – Перечисление.Ссылка.ВидНоменклатуры – Товар
Добавление реквизита «Количество»
Добавление реквизита «Цена»
Добавление реквизита «Сумма»
Реализация автоматического подсчета по табличной части документа и вывода итоговой суммы
Модуль объекта (Документ «Приходная накладная»)
Добавляем процедуру «ПередЗаписью»
Текст кода:
// ПОДСЧЕТ ИТОГОВОЙ СУММЫ ДОКУМЕНТА
// Документ – Менеджер объекта – Создание процедуры «ПередЗаписью»
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
ЭтотОбъект.СуммаДокумента = ЭтотОбъект.СписокНоменклатуры.Итог("Сумма");
КонецПроцедуры
Создание формы – Форма Документа
В форме документа необходимо объединить поля «Номер» и «Дата» (по требованию заказчика)
Для этого необходимо добавить тип элемента «Группа – Обычная группа без отображения»
И перенести данные поля в эту группу и изменить заголовок для эти полей
Номер – Приходная накладная
Дата – от
Поле «Сумма документа» из перечня полей необходимо удалить
Для табличной части формы необходимо реализовать «Подвал»
Путь к данным подвала по колонке «СписокНоменклатурыСумма» будет итоговая сумма по
данной колонке
Текст подвала по колонке «СписокНоменклатурыНоменклатура» - Итого:
Реализация автоматического подсчета суммы
Необходимо создать событие «ПриИзменении» с директивой «&НаКлиенте» для двух элементов
- «СписокНоменклатурыКоличество» и «СписокНоменклатурыЦена»
Так расчет будет идентичен для двух этих элементов, то необходимо сначала создать
дополнительную процедуру ПодсчетСуммы()
Текст кода:
// АВТОМАТИЧЕСКИЙ ПОДСЧЕТ СУММЫ ПРИ ИЗМЕНЕНИИ КОЛ-ВА И ЦЕНЫ
ТОВАРОВ
// ФормаДокумента – табличная часть – СписокНоменклатурыКоличество – создание
события «ПриИзменении»
// ФормаДокумента – табличная часть – СписокНоменклатурыЦена– создание события
«ПриИзменении»
&НаКлиенте
Процедура СписокНоменклатурыКоличествоПриИзменении(Элемент)
ПодсчетСуммы();
КонецПроцедуры
&НаКлиенте
Процедура СписокНоменклатурыЦенаПриИзменении(Элемент)
ПодсчетСуммы();
КонецПроцедуры
// создание единой процедуры
&НаКлиенте
Процедура ПодсчетСуммы()
ТекущийЭлемент.ТекущиеДанные.Сумма = ТекущийЭлемент.ТекущиеДанные.Количество *
ТекущийЭлемент.ТекущиеДанные.Цена;
КонецПроцедуры
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
По требованию заказчика, необходимо, что бы в названии товаров отображалось отношение к
виду номенклатуры
Для этого необходимо описать два события в модуле менеджера (Справочник Номенклатура)
Текст кода:
// ОФОРМЛЕНИЕ ПРЕДСТАВЛЕНИЯ СПРАВОЧНИКА "НОМЕНКЛАТУРА"
// Справочник «Номенклатура» - Модуль менеджера – создание двух
«ОбработкаПолученияПолейПредставления», «ОбработкаПолученияПредставления»
процедур
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Наименование");
Поля.Добавить("Родитель");
Поля.Добавить("ЭтоГруппа");
Поля.Добавить("ВидНоменклатуры");
КонецПроцедуры
// в указанной процедуре стоит отбор по Виду номенклатуры (представление не
формируруется для элементов с видом номенклатуры «услуга»
Процедура
ОбработкаПолученияПредставления(Данные,
Представление,
СтандартнаяОбработка)
Если
НЕ
Данные.ЭтоГруппа
и
Данные.ВидНоменклатуры
=
Перечисления.ВидНоменклатуры.Товар Тогда
СтандартнаяОбработка = Ложь;
Представление = СтрШаблон("%1 (%2)",Данные.Наименование,Данные.Родитель);
КонецЕсли;
КонецПроцедуры
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
Документ «Расходная накладная» практически полностью повторяет документ «приходная
накладная» поэтому он создается копированием этого документа (после его полной настройки).
Дополнительно необходимо удалить параметр выбора (который исключает выбор услуг)!!!
Произвести изменение реквизитов:
Поставщик – Покупатель
В форме документа изменить «Приходная накладная» (номер) на «Расходная накладная»
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
Дополнительно необходимо сделать так, чтобы отображение Вида номенклатуры было только
для товарных позиций (изменение кода)
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
Создаем печатную форму для документа «Расходная накладная» через конструктор печати
Оформление вида печатной формы, согласно требованию заказчика
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
4. Создание отчетов.
Отчеты создаются по регистрам и по форме утвержденной заказчиком
Для продаж будет использоваться регистр накопления вида «Обороты»
Структура регистра будет включать в себя два измерения и один ресурс:
Измерение №1 – Сотрудник (СправочникСсылка.ФизическиеЛица)
Запрет незаполненных значений – включить
Измерение №1 – Контрагент (СправочникСсылка.Контрагенты)
Запрет незаполненных значений – включить
Ресурс – Сумма
Регистратором данного регистра будет документ «Расходная накладная»
Далее определяем движение по этому документу, в документе «Расходная накладная» через
Конструктор движений.
Далее создаем отчет для данного регистра
Открываем схему компоновки данных и определяем набор данных запрос
Настраиваем виртуальную таблицу – создаем параметр «сотрудник» (для того, чтобы по этому
параметру делать отбор в отчете
Дополнительно устанавливаем псевдоним для ресурса
Набор данных должен выглядеть следующим образом. Так как параметр Сотрудник не
обязателен, его необходимо обозначить фигурными скобками ({}).
По требованию заказчика, необходимо настроить отчет так, чтобы выводился общий итог и итог
по каждому сотруднику. Для этого добавим ресурс (Сумма) во вкладке «Ресурсы»
Настройка параметров – для того, чтобы параметр «Сотрудник» можно было использовать
пользователю, необходимо снять ограничение доступности во вкладке «Параметры»
Дополнительно для наглядности отчета, можно добавить дополнительный параметр «Период» на
вкладке «Параметры» с типом – Стандартный период
И изменить настройку других стандартных параметров – НачалоПериода и КонецПериода.
Поставить по ним ограничение доступности. И задать по ним выражения:
НачалоПериода - &Период.ДатаНачала
КонецПериода - &Период.ДатаОкончания
Необходимо настроить внешний вид отчета с помощью конструктора во вкладке «Настройки»
Тип отчета – Список
Поля, которые будут отображены в отчете – Контрагент и Сумма
Поля, по которым будет происходить группировка – Сотрудник (без иерархии)
Поля упорядочивания – Сумма (по убыванию)
Необходимо вынести для отображению пользователю следующие параметры: сотрудник и
период. Для этого внизу на вкладке «Параметры», для каждого из них необходимо установить для них
галочку для «Включать в пользовательские настройки» (щелкнуть на элементе правой кнопкой мыши,
выбрать пункт «Свойства элементов пользовательских настроек»
Во вкладке «Другие настройки» выбрать необходимый макет оформления и установить
заголовок отчета (по требованиям заказчика)
П Р О В Е Р К А Р А Б О Т О С П О С О Б Н О С Т И Б А З Ы ! ! !
Перед проверкой отчета, необходимо перепровести документ «Расходная накладная», для
того чтобы в регистре накопления появились новые записи!
5. Создание персонального интерфейса для каждого типа пользователей
ВАЖНО! Перед тем, как приступить к выполнению данного блока, необходимо
удостовериться, что все что необходимо, реализовано в рамках экзаменационного билета. Задание
в этом блоке необходимо проанализировать и понять, что необходимо настроить дополнительно
(в рамках этого экзаменационного билета – контроль остатков и расчет заработной платы).
Создание подсистем
Добавим подсистему «ЗАКУПКИ»
Определим состав
Справочники: ФизическиеЛица, Контрагенты, Склады, Номенклатура
Документы: ПриходнаяНакладная
Перечисления: ВидНоменклатуры
Отчеты: ОстаткиТоваров
Регистр накоплений: ОстаткиТоваров
Добавим подсистему «ПРОДАЖИ»
Определим состав
Справочники: ФизическиеЛица, Контрагенты, Склады, Номенклатура
Документы: РасходнаяНакладная
Перечисления: ВидНоменклатуры
Отчеты: Продажи, ОстаткиТоваров
Регистр накоплений: Продажи, ОстаткиТоваров
Добавим подсистему «ПРОЧЕЕ»
Определим состав
Общие: Общие формы – СведенияОбОрганизации
Константы: (все константы)
Справочники: ФизическиеЛица, Должности
Документы: НачислениеЗарплаты, РегистрацияПрогула
Отчеты: Зарплата
Планы видов расчета: НачисленияИУдержания
Регистры сведений: РабочийГрафик, СведенияОСотрудниках
Регистр расчета: Зарплата
Добавим роль «АДМИНИСТРАТОР»
Настройка – Все права
Также установить чек-бокс «Устанавливать права для новых объектов»
Добавим роль «ЗАКУПКИ»
Для настройки прав удобнее всего использовать отбор и установить чек-бокс на подсистему
«Закупки»
Далее необходимо по КАЖДОМУ объекту установить «Все права»
Также установить чек-бокс «Устанавливать права для новых объектов»
Аналогичным образом необходимо создать роль «ПРОДАЖИ»
Используя отбор, установить чек-бокс на подсистему «Продажи»
Далее необходимо по КАЖДОМУ объекту установить «Все права»
Установить чек-бокс «Устанавливать права для новых объектов»
Аналогичным образом необходимо создать роль «ПРОЧЕЕ»
Используя отбор, установить чек-бокс на подсистему «Прочее»
Далее необходимо по КАЖДОМУ объекту установить «Все права»
Установить чек-бокс «Устанавливать права для новых объектов»
ОБНОВЛЕНИЕ КОНФИГУРАЦИИ БАЗЫ ДАННЫХ!!!
Создание пользователей
Создание пользователей – 4 пользователя (для каждой из ролей)
Администрирование – Пользователи
Добавим нового пользователя «АДМИНИСТРАТОР»
На вкладке «Прочие» определим его полномочия
Аналогично добавим пользователя «МЕНЕДЖЕР ПО ЗАКУПКАМ»
Аналогично добавим пользователя «МЕНЕДЖЕР ПО ПРОДАЖАМ»
Аналогично добавим пользователя «КАДРОВЫЙ»
Создание интерфейса
Для того, чтобы интерфейс был составлен по заданию, данному в экзаменационном билет, мы
обращаемся к интерфейсу клиентского приложения
Убрать «Панель функций текущего раздела»
Панель разделов перенести на левую часть и настроить отображение «Текст»
П Р О В Е Р К А Р А Б О Т О С П О С О Б Н О С Т И Б А З Ы ! ! !
Проверить интерфейс по всем 4 пользователям (доступность функционала)
2. Этап
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
Убедитесь, что вид всех разработанных Вами форм соответствуют материалам,
предоставленным заказчиком.
Убедитесь, что Вы предусмотрели все соответствующие проверки и сообщения об ошибках
во всех частях системы.
Убедитесь, что все соответствующие кнопки / ссылки работают.
Убедитесь, что Вы используете соответствующие соглашения об именах для всех частей
системы по мере необходимости.
2.1 Контроль остатков
Главное требование заказчика: если товара не хватает на указанном складе - списание
невозможно и должно выводиться соответствующее сообщение о нехватке, указывающее название
товара его количество и склад.
1 Необходимо добавить новый регистр накоплений вида «Остатки»
Структура регистра, необходимо настроить в соответствие с требованиями заказчика к отчету
Во вкладке «Данные» необходимо добавить следующие измерений:
Склад (СправочникСсылка.Склады)
Запрет незаполненных значений (Да)
Номенклатура (СправочникСсылка.Номенклатура)
Запрет незаполненных значений (Да)
Добавление ресурса
Количество
Во вкладке «Регистраторы»
«РасходнаяНакладная»
указываем
два
документа:
«ПриходнаяНакладная»
и
Описание движения информации. В документе «Приходная накладная», через конструктор
движений опишем алгоритм
Тип движения регистра – приход
Табличная часть – СписокНоменклатуры
Далее – нажимаем кнопку «Заполнить выражения»
Проверяем правильность заполнения выражений в табличной части
Далее необходимо «доработать» алгоритм и прописать часть, для того, чтобы контроль остатков
производился только по товарным позициям (по услугам контроль остатков производить не нужно)
Для этого в цикле необходимо произвести проверку:
ОБЯЗАТЕЛЬНО! В конце кода прописать «КонецЕсли»!
Текст кода:
Если
ТекСтрокаСписокНоменклатуры.Номенклатура.ВидНоменклатуры
Перечисления.ВидНоменклатуры.Товар Тогда
=
Аналогичным образом необходимо поступить с документом «Расходная накладная», через
конструктор движений.
При возникновении предупреждения, необходимо нажать кнопку «Продолжить».
В поля «Регистры» необходимо добавить РегистрНакопления.ОстаткиТоваров
Тип движения регистра – расход
Табличная часть – СписокНоменклатуры
Нажать кнопку «Заполнить выражения»
Проверить соответствия выражений по полям.
В коде добавить контроль «только товарные позиции»
Текст кода: (смотреть выше)
Далее необходимо реализовать контроль отрицательных остатков
Документ РасходнаяНакадная: Модуль объекта
1 .Необходимо принудительно записать все движения – записать движения информации по
регистру остатки товаров и создать границу времени. Определить параметр отказа через функцию
«УзнатьОстатки».
Текст кода:
Движения.ОстаткиТоваров.Записать();
Граница = Новый Граница(ЭтотОбъект.Ссылка.МоментВремени(),ВидГраницы.Включая);
Отказ = УзнатьОстатки(Граница);
Далее необходимо описать процедуру «УзнатьОстатки(Граница)»
(данная процедуру описывается после предыдущей)
Далее необходимо вызвать конструктор запроса с обработкой результата (правая кнопка мыши)
Выбираем тип обработки – обход результата
Далее выбираем необходимые: базы данных, таблицы и поля.
Задаем псевдоним
Задаем параметры виртуальной таблицы
Период - &Период
Условие – Склад = &Склад
Создаем условие (вкладка «Условия») через произвольный запрос
Нажать кнопку «ОК»
КОРРЕКТИРОВКА КОДА!!!
ПЕРВОНАЧАЛЬНЫЙ КОД
ИСПРАВЛЕННЫЙ КОД:
Заполнить цикл для «ВыборкаДетальныеЗаписи.Следующий()
Так же необходить прописать условие для возврата, так как это функция
Текст кода:
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
СтрокаВывода = СтрШаблон("Не хватает товара ""%1"" в количестве %2 на складе
""%3""",
ВыборкаДетальныеЗаписи.Номенклатура,ВыборкаДетальныеЗаписи.Количество,ВыборкаДетальныеЗаписи.Склад);
Сообщить(СтрокаВывода);
КонецЦикла;
Если РезультатЗапроса.Пустой()= Ложь Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
(ВАЖНО! В коде перед ВыборкаДетальныеЗаписи стоит знак -, для того чтобы число не
было отрицательным)
Дополнительно необходимо доработать запрос, так как в исходном виде он будет перебирать все
товары которые есть в системе, а нам нужны конкретные позиции из документа. Поэтому необходимо
скорректировать текст данного запроса, используя «Конструктор запроса». Для этого необходимо
поставить курс в тело запроса и нажать правую кнопку мыши и выбрать «Конструктор запроса».
Определим параметр виртуальной таблицы, только для тех записей регистра накопления, где
регистратором является данный документ
Затем необходимо необходимо перейти в условие и определить вложенный запрос (написать
текстом)
Для этого в тексте запроса необходимо написать
И Номенклатура В ( )
Далее указанный в скобках пробел необходимо выделить, правой кнопкой мыши и открыть
конструктор запросов
Далее необходимо в разделе «Базы данных» выбрать: Документы – Расходная накладная –
СписокНоменклатуры (данная табличная часть попадет в раздел «Таблицы»), где ее необходимо
раскрыть и выбрать «Номенклатура» (данное поле попадет в раздел «Поля»)
Во вкладке «Дополнительно» необходимо поставить чек-бокс для пункта «Без повторяющихся»
Во вкладке «Условия» зададим дополнительное условие по Ссылке – для нее нужно указать
«Регистратор»
Нажать «ОК»
Нажать «ОК»
Убедиться в правильности написанного запроса
Так же в коде необходимо установить параметр регистратор
П Р О В Е Р К А Р А Б О Т О С П О С О Б Н О С Т И Б А З Ы ! ! !
Перед проверкой отчета, необходимо перепровести документы
«Приходная накладная» и «Расходная накладная»!
Создание отчета «Остатки товаров»
Открываем схему компоновки данных – Набор данных – Запрос – Конструктор запроса
База данных – РегистрыНакоплений – ОстаткиТоваров.Остатки
Таблицы - ОстаткиТоваров.Остатки
Дополнительно из Номенклатуры (Базы данных) выбираем поле «Родитель»
Произведем замену псевдонимов
В настройках виртуальной таблицы зададим параметры (для того, чтобы отчет мог быть
выстроен относительно всех складов или только в отношении одного конкретного)
Параметр Склад не является обязательным, поэтому его необходимо взять в {}
Настроем отображение данного параметра у пользователя
Определим внешний вид отчета через конструктор настроек
Произведем настройку свойств элементов пользовательских настроек для каждого параметра
Настроить макет оформления и отображение заголовка отчета (Другие настройки)
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
Для того чтобы убрать отображение товарных позиций в отчете необходимо изменить текст
запроса при формировании запроса:
Открыть конструктор запрос, убрать поле «ОстаткиТоваровОстатки.Номенклатура.Родитель»
Вместо нее добавить «ОстаткиТоваровОстатки.Номенклатура.Наименование».
Доплнительно подкорректировать сам текст запроса – убрать Наименование
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И
Б А З Ы ! ! !
2.2 Начисление заработной платы
Регистр сведений рабочий график
Создадим регистр сведений «Рабочий график»
Заполним данные
Измерения – Дата
Ресурс – Количество
На вкладке «Представление» необходимо выставить максимальное кол-во
Регистр сведений о сотрудниках (у каждого сотрудника есть ставка)
Создадим регистр сведений «СведенияОСотрудниках»
Так как данный регистр по условию билета периодический необходимо выбрать
Определим структура регистра
Измерения – Сотрудник (СправочникСсылка.ФизическиеЛица)
Выставить «Ведущее» - для того, чтобы и регистра сведений просматривать актуальные данные
Измерение «Должность» (СправочникСсылка.Должности)
Ресурс – Ставка
Перед тем, как сформировать регистр расчет, необходимо определиться, согласно
экзаменационного билета и указанного в нем отчета по ЗП – так как в нем есть «Сотрудник»
(Измерение) и «Сумма» (Ресурс), нам необходим план видов расчетов. Важно, в условиях билета, есть
такой вид расчета, как «Прогул», который будет вытеснять начисления, начисления вида «Оклад» (по
ставке).
Добавим новый план видов расчета «НачисленияИУдержания»
На вкладке «Расчет» установить чек-бокс «Использует период действия»
Добавим два предопределенных вида расчетов:
Номер указывается вручную
Для предопределенного вида «Ставка» во вкладке «Вытесняющие» необходимо указать что
«Прогул» является вытесняющим.
Далее создаем регистр расчета «Зарплата»
Необходимо проставить чек-бокс для «Период действия»
В поле «График» необходимо указать график
В поле «Значение графика» необходимо указать КоличествоЧасов
В поле «Дата Графика» - необходимо указать «Дата»
В поле «План видов расчета» необходимо указать план «НачисленияИУдержания»
Далее определяем структуру во вкладке «Данные»
Измерения – Сотрудник
Ресурс – Сумма
Сумма должна вычисляться автоматически как ставка сотрудника * кол-во фактически
отработанных часов. Корректнее будет использовать для этого реквизит «ПараметрРасчета»
Необходимо описать алгоритм получения ставки сотрудника из регистра сведений
Для этого необходимо открыть «Модуль менеджера» у Регистра «СведенияОСотрудниках» и
описать функцию «ПолучитьСтавку» (обязательно указать ЭКСПОРТ)
Параметры указать вручную
Включаем Конструктор запроса с обработкой результата
Тип обработки – обход результата
Необходимо заполнить вкладку «Таблицы и поля»
Заполняем параметры Виртуальной таблицы
Проверить правильность заполнения запроса
(на случай отсутствия данных по указанному запросу)
ВАЖНО!!!
Необходимо
команду «Следующий»
убрать
цикл!
Оставить
только
Текст кода:
// ОПИСАНИЕ ФУНКЦИИ ПОЛУЧИТЬСТАВКУ (ПРАВКА КОДА ПОСЛЕ ФОРМИРОВАНИЯ
ЗАПРОСА, УДАЛИТЬ ЦИКЛ!
// Регистр «СведенияОСотрудниках»
РезультатЗапроса = Запрос.Выполнить();
Если РезультатЗапроса.Пустой() Тогда
Возврат 0;
Иначе
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
ВыборкаДетальныеЗаписи.Следующий();
Возврат ВыборкаДетальныеЗаписи.Ставка;
КонецЕсли;
Документ регистрации прогула
Добавим новый документ «РегистрацияПрогул»
На вкладке «Данные» определим реквизит «Сотрудник»
На вкладке «Движения» указываем связь с регистром расчета «Зарплата» и определяем движение
через конструктор движений
Заполнить вручную
В коде необходимо исправить данные по Вид.Расчета
Документ по начислению ЗП (в зависимости от ставки и должности сотрудника)
Добавим новый документ «НачислениеЗарплаты»
Определим структуру на вкладке «Данные»
Реквизит «Должность» (СправочникСсылка.Должности)
Добавим табличную часть, состоящую из Сотрудников и их ставок (реквизиты)
Далее переходим в модуль объекта данного документа («НачислениеЗарплаты»)
Опишем обработчик события «ПередЗаписью»
Текст кода:
// ОПИСАНИЕ ПРОЦЕДУРЫ «ПЕРЕДЗАПИСЬЮ»
// Документ «НачислениеЗарплаты», модуль объекта
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Для Каждого СтрокаСотрудника Из СписокСотрудников Цикл
СтрокаСотрудника.Ставка
=
РегистрыСведений.СведенияОСотрудниках.ПолучитьСтавку(СтрокаСотрудника.Сотрудник,
ЭтотОбъект.Дата,ЭтотОбъект.Должность);
КонецЦикла;
КонецПроцедуры
П Р О В Е Р К А Р А Б О Т О С П О С О Б Н О С Т И Б А З Ы ! ! !
Перед этим необходимо зайти в справочник Физические Лица и для любого сотрудника
указать размер ставки в сведениях о сотруднике. После этого перейти в «Начисление зарплаты»,
добавить данного сотрудника и нажать кнопку «Записать» - в поле ставка должна автоматически
отобразиться информация о ставке (из регистра)
Далее необходимо связать документ «НачислениеЗарплаты» с регистром расчета «Зарплата»
Через конструктор движений определить правила движения информации
Заполнить вручную
Дополнить полученный код
ВАЖНО!!! Если в экзаменационном
то тогда вместо Ставка будет Оклад.
билете
будет
Прописать код для принудительной записи данных, для дальнейшей обработки.
«Оклад»,
Далее необходимо в модуле набора записей, регистра расчета «Зарплата» описать процедуру
«Рассчитать()»
Описание алгоритма
Текст кода
// ОПИСАНИЕ ПРОЦЕДУРЫ «РАССЧИТАТЬ»
// Регистр «Зарплата», модуль набора записей
Процедура Рассчитать() Экспорт
Для Каждого Движение Из ЭтотОбъект Цикл
Если Движение.ВидРасчета = ПланыВидовРасчета.НачисленияИУдержания.Ставка
Тогда
ТаблицаГрафикаПоФакту
Движение.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.ФактическийПериодДействия);
ФакЧасов = ТаблицаГрафикаПоФакту.Итог("КоличествоЧасов");
Движение.Сумма = ФакЧасов * Движение.ПараметрРасчета;
КонецЕсли;
=
КонецЦикла;
КонецПроцедуры
ВАЖНО!!! Если в экзаменационном билете будет «Оклад»,
то
тогда
вместо
ФактическийПериодДействия
будет
использоваться ПериодДействия
Тогда мы получали период действия, получали бы факт
Делили бы оклад на норму часов
И потом умножали бы Ставку на ФактЧасов
П Р О В Е Р К А Р А Б О Т О С П О С О Б Н О С Т И Б А З Ы ! ! !
Перед этим необходимо заполнить информацию о рабочем графике (для примера в
сентябре было 2 рабочих дня по 8 часов, и в октябре 2 рабочих дня по 8 часов). Зафиксируем
прогул для одного из сотрудников, который прогулял в один из этих дней. Для проверки
фиксируется ли прогул в регистре необходимо в настройке панелей навигации формы вынести в
выбранные команды
Далее в «Начисление зарплаты» необходимо указать последний день месяца в котором
рассчитывается зарплата и провести документ. Для проверки фиксируется ли расчет ЗП в
регистре необходимо в настройке панелей навигации формы вынести в выбранные команды
«Зарплату»
Указать также октябрь
ВАЖНО!!! Ставки указывать на 01.01.2024!!!
Отчет по зарплате сотрудников
Добавим отчет «Зарплата»
Откроем схему компоновки данных – Добавить набор данных – Запрос – Конструктор Запроса
Заполним данные на вкладке «Таблицы и Поля»
Добавим условие, что информация берется по конкретному виду расчета
Для добавления необязательных параметров, переходим во вкладку «Компоновка данных», затем
во вкладку «Условия» и добавить новое условие
Для того, чтобы данные по каждому месяцу не выводились отдельно, а считались общим итогом,
необходимо скорректировать запрос, с помощью конструктора запроса.
На вкладке «Группировка» необходимо расставить: поле «Зарплата.Сотрудник» в Поле
группировки а «Зарплата.Сумма» в Суммируемое поле.
Нажать «ОК» и «ОК»
УДАЛИТЬ!
На вкладе «Ресурсы» определить поле сумма – рассчитывать как общий итог
На вкладке «Параметры» убрать часть полей, как доступные пользователю
Задать значения
Вид Расчета – Ставка
И добавить новый параметр «Период» и зададим тип – Стандартный период
И задать выражения для КонецПериода и НачалоПериода:
НачалоПериода - &Период.ДатаНачала
КонецПериода - &Период.ДатаОкончания
Настроим внешний вид отчета
На вкладке Настройки – внизу вкладка Параметры – для параметра Период необходимо выбрать
«Включать в пользовательские настройки.
С помощью конструктора сформировать отчет
На вкладке «Другие настройки» - задать макет оформления, и прописать заголовок отчета.
П Р О В Е Р К А
Р А Б О Т О С П О С О Б Н О С Т И Б А З Ы ! ! !
В А Ж Н О ! ! !
О с т а в и т ь к о м м е н т а р и й « Ф И О »
в к а ж д о м м о д у л е г д е к о д ! ! !
3 этап Разработка мобильного приложения
Согласно экзаменационному билету необходимо разработать мобильное приложение которое
будет показывать остаток товаров на складе, включающие механизм авторизации пользователей,
заведенных в центральной базе.
Создание новой информационной базы
(на основе пустой конфигурации)
Изменение основных параметров «Имя» и «Синоним»
Изменение назначения использования - Приложение для мобильной платформы
На вкладке Разработка указать данные «Поставщик» и «Версия»
Создание прикладных объектов
Создание справочника «Товары»
Для данного справочника необходимо задать такие же настройки, как для справочника
«Номенклатура» из основной базы.
На вкладке «Данные» добавить реквизит «Остаток»
Создание интерфейса авторизации
В конфигурации, в разделе «Общие» добавим «Общая форма» с названием «Авторизация»
Добавим новый реквизит «Логин»
Перетащим его на форму
Изменить положение заголовка (вкладка «Основные») – указать «Вверх»
Изменить горизонтальное положение (вкладка «Расположение») – указать «Центр»
Добавим кнопку на форму на вкладке «Команды формы»
Заполним «Имя» - Авторизоваться
Данную команду необходимо перенести на форму и на вкладке «Расположение» (Свойства)
выставим
чек-бокс
у
параметра
«РастягиватьПоГоризонтале»
и
укажем
«ГоринзонтальноеПоложениеВГруппе» - Центр.
Для
Формы
необходимо
указать
ВертикальноеПоложениеПодчиненных – Центр.
на
вкладке
«Расположение»,
Для команды формы «Авторизоваться» необходимо создать обработчик события
Исправить код:
Указать «Логин» и «ЭтотОбъект.Логин» как параметры
ВАЖНО!!! ЗАМЕНИТЬ ПРОЦЕДУРУ НА ФУНКЦИЮ (для &НаСервереБезКонтекста)
Дописать часть кода:
Текст кода:
&НаСервереБезКонтекста
Функция АвторизоватьсяНаСервере(Логин)
Возврат Истина;
КонецФункции
&НаКлиенте
Процедура Авторизоваться(Команда)
Успех = АвторизоватьсяНаСервере(ЭтотОбъект.Логин);
Если Успех Тогда
Пользователь.Авторизовать(ЭтотОбъект.Логин);
Иначе
ПоказатьОповещениеПользователя("Авторизация не удалась!");
КонецЕсли;
КонецПроцедуры
Для возможности авторизации необходимо создать общего пользователя
Для этого в дереве конфигурации, раздел «Общие» - создадим новый общий модуль
Далее необходимо прописать код (добавить процедуру(Экспорт))
Текст кода:
Процедура Авторизовать(Логин) Экспорт
Если ПользователиИнформационнойБазы.ПолучитьПользователей().Количество() = 0 Тогда
НовыйПользователь = ПользователиИнформационнойБазы.СоздатьПользователя();
НовыйПользователь.Имя = Логин;
КонецЕсли;
КонецПроцедуры // Авторизовать(Логин)
Добавить роли:
Роль «РаботаСДанными»
Уставить все права
И установить чек-бокс «Устанавливать права для новых объектов»
Добавим роль «И_Авторизован»
Снять все права
Добавить новую роль, копированием предыдущей, изменив имя на «И_Аноним»
Вернемся к редактированию кода
Текст кода (часть):
НовыйПользователь.Роли.Добавить(Метаданные.Роли.РаботаСДанными);
НовыйПользователь.Роли.Добавить(Метаданные.Роли.И_Авторизован);
НовыйПользователь.Записать();
Добавим новую процедуру (Экспорт)
Текст кода:
Процедура Деавторизовать () Экспорт
Если ПользователиИнформационнойБазы.ПолучитьПользователей().Количество()> 0 Тогда
ПользователиИнформационнойБазы.ТекущийПользователь().Удалить();
КонецЕсли;
КонецПроцедуры;
Далее необходимо добавить кнопку для выхода
Добавим новую Общую команду
Укажем группу
Пропишем код
Текст кода:
&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
Пользователь.Деавторизовать();
ЗавершитьРаботуСистемы(Ложь,Истина);
КонецПроцедуры
Далее в модуле, дописать код
Текст кода:
ЗавершитьРаботуСистемы(Ложь,Истина);
Далее необходимо вынести все необходимые команды в интерфейс
Для этого необходимо открыть рабочую область начальной страницы
Необходимо указать что шаблон начальной страницы будет содержать только одну колонку
Добавим форму «Авторизация»
Указать видимость
Далее открыть командный интерфейс основного раздела
Убрать видимость у кнопки «Выйти» и у справочника «Товары», а для пользователя
«Авторизован» установить видимость по ролям для кнопки «Выйти»
Обновить конфигурацию базы данных
В свойствах конфигурации, и указать основные роли:
П Р О В Е Р К А Р А Б О Т О С П О С О Б Н О С Т И Б А З Ы ! ! !
Указать в качестве логина любое значение, при запуске приложения,
выбрать его же в качестве пользователя.
Проверить работоспособность кнопки «Выйти»
Проверка входа, без указания пользователя (пустое поле)
Заходим в центральную базу
Для обмена данными необходимо создать Web-сервис (раздел «Общие» в дереве конфигурации)
с именем «Авторизатор»
На вкладке «Прочие» указать URI пространство имен – localhost, имя публикации - service
На вкладке «Операции» создать новую операцию «Авторизация»
Изменить тип возвращаемого значения на Boolean
Добавим новый параметр «Логин» со строковым значением
Для операции необходимо создать процедуру
Прописать код
Текст кода:
Функция Авторизация(Логин)
УстановитьПривилегированныйРежим(Истина);
РезультатАвторизации = Пользователи.Существует(Логин);
Возврат РезультатАвторизации;
КонецФункции
Необходимо создать общий модуль для проверки наличия пользователей
Прописать код:
Текст кода:
Функция Существует(Логин) Экспорт
Если ПустаяСтрока(Логин) Тогда
Возврат Ложь;
Иначе
ПользовательПоиска = ПользователиИнформационнойБазы.НайтиПоИмени(Логин);
Возврат (ПользовательПоиска <> Неопределено);
КонецЕсли;
КонецФункции // ()
В администрировании, выбрать «Публикация на веб-сервере»
ВАЖНО!!! Для данного действия необходимо запускать конфигуратор только через
Администратора
Задать имя – central
Создадим каталог (C:// - создание новой папки «www»). Расположение папки может быть
любым, главное чтобы путь к этой папке не содержал русских символов и пробелов). Внутри этой
папки создаем еще одну папку с именем «central».
Название своей базы!!!!
Нажать кнопку «Опубликовать» и выполнить перезапуск
П Р О В Е Р К А
П У Б Л И К А Ц И И ! ! !
Для этого переходим «Файл» - «Открыть» - «Текстовый документ»
Прописать следующую строку
Переходим в браузер и вбиваем данную строку в адресную строку поиска
Далее внести данные (имя пользователя и пароль) для одного из существующих пользователей
системы
Должно открыться описание
Далее необходимо создать роль, которая будет работать только с сервисами
Необходимо снять все права
На ветке «Общие» - Web-сервисы поставить использование для «Авторизация»
В настройках для «Авторизатор» на вкладке «Управление сеансами» задать «» для «Повторное
использование сенсов», «Время жизни сенса» установить «0».
ОБНОВИТЬ КОНФИГУРАЦИЮ БАЗЫ ДАННЫХ!!!
Создать нового пользователя «Сервисы»
На вкладке «Прочее» указать «Сервисы», как доступные роли:
ВАЖНО! Перед повторной проверкой перезапустить браузер, для того чтобы сбросить кэш.
Переходим в браузер и вбиваем данную строку в адресную строку поиска
Далее внести данные (имя пользователя и пароль) по пользователю «Сервисы»
Переходим в конфигуратор (база «Мобильное приложение») и прописываем алгоритм
авторизации на общей форме:
Создаем WS-ссылку (дерево конфигурации, раздел «Общие»)
Вставляем адрес
Аутентификация пользователя
Указать имя «Авторизатор»
Вернуться в общий модуль и дописать код:
URIПространстваИмениСервиса, ИмяСервиса – указываем, как указано в WS-ссылке
URIПространстваИмениСервиса - localhost
ИмяСервиса – Авторизатор
ИмяПорта – АвторизаторSoap
Далее необходимо указать IP адрес (параметр «Местоположение») – нажать комбинацию клавиш
«Windows + R» - Ок
Ввести ipconfig – Ок
IP адрес
(убрать знак «?»)
Далее пишем:
Копируем название нашей функции:
Дописываем код:
ОБНОВИТЬ КОНФИГУРАЦИЮ БАЗЫ ДАННЫХ!!!
Запустить пользовательский режим
Прописать несуществующего пользователя и проверить
получение сообщения «Авторизация не удалась»
Добавим в основную базу нового пользователя «Кладовщик»
На вкладке прочие укажем доступные роли – Сервисы
ОБНОВИТЬ КОНФИГУРАЦИЮ БАЗЫ ДАННЫХ!!!
Запустить пользовательский режим проверить авторизацию
под пользователем «Кладовщик»
Механизм по выводу товаров в мобильном приложении
Переходим в базу, где начинали разработку мобильного приложения
Справочник «Товары» - создаем собственную форму списка
Добавить реквизит «Остаток» в табличную часть списка на форме
В табличной части на форме добавить группу колонок с название «Колонки»
Добавить в эту группу еще одну группу с название «Колонки товаров»
Перенести реквизиты по группам колонок следующим образом:
Где группировки «Колонки товаров» изменить группировку – Горизонтальная
Для поля «Остаток» на вкладке «Расположение» указать ГоризонтальноеПоложение - Право
Так как товары, которые находятся в минимальном остатке (<10), необходимо выделять красным
цветом, необходимо:
В настройках списка на вкладке «Объект», открыть «Настройка списка»
На вкладке «Настройке» - вкладка «Условное оформление» - Добавить
Добавим условие: (новый элемент)
Выбор поля – Остаток
Далее необходимо вытащить нашу форму в интерфейс – открываем рабочую область начальной
страницы
Добавить эту форму в рабочую область
Для формы необходимо убрать видимость и поставить видимость для ролей – Авторизован
ОБНОВИТЬ КОНФИГУРАЦИЮ БАЗЫ ДАННЫХ!!!
Запустить пользовательский режим
Указываем пользователя «Кладовщик»
Для тестирования создать несколько позиций товаров (с
меньшим остатком и большим остатком)
Необходимо убрать кнопки по созданию товаров:
На командной панели и в свойствах отключить автозаполнение
Для списка в свойства указать «ТолькоПросмотр» - так как мобильное приложение не может
менять данные в центральной базе
ОБНОВИТЬ КОНФИГУРАЦИЮ БАЗЫ ДАННЫХ!!!
Создание алгоритма для получения данных о товарах из центральной базы
В центральной базе, в модуле менеджера справочника «Номенклатура»
Пропишем функцию ПолучитьТоварыМассив() ЭКСПОРТ через конструктор запроса с
обработкой результата
На вкладке «Таблицы и поля» выбираем справочник «Номенклатура» и регистр накопления
«ОстаткиТоваров.Остатки» и выбираем соответствующие поля из этих таблиц.
Поле ОстаткиТоваровОстатки.КоличествоОстаток необходимо изменить с помощью функции
NULL
Для таблицы «Номенклатура» необходимо изменить название таблицы (так как есть измерение с
таким же названием) на СписокТоваров
На вкладке «Связи» изменить связь
Убрать
Поставить
На вкладке «Условия» указать условие для ВидНоменклатуры
Изменить его вручную
Нажать Ок
В тексте запроса необходимо изменить Поле1 на Остаток
Необходимо прописать алгоритм по созданию массива товаров:
Описать Цикл
Создание HTTPСервиса
Добавим новый HTTPСервис – Обмен данными
На вкладке Управление сеансами указать повторное использование сеансов – Не использовать
На вкладке «Шаблоны URL» добавить новый шаблон
Далее шаблона необходимо добавить метод
Для метода создаем обработчик
ОБНОВИТЬ КОНФИГУРАЦИЮ БАЗЫ ДАННЫХ!!!
Далее необходимо предоставить доступ к HTTPСервису, переходим к ролям (Конфигурация –
Общие – Роли)
ОБНОВИТЬ КОНФИГУРАЦИЮ БАЗЫ ДАННЫХ!!!
Администрирование – Публикация на веб-сервере
Название своей базы!!!!
Нажать – Опубликовать
Для проверки нашего HTTPСервиса необходимо прописать строку практически такую же как и
для web-сервиса:
Переходим в браузер для проверки, указываем пользователя «Кладовщик»
Копируем данную строку и переходим в базу мобильного приложения
Для
формы
списка
Справочника
«Товары»
необходимо
«ПриСозданииНаСервере»
создать
событие
Обозначим процедуру ЗагрузитьСписокТоваров
Далее пропишем самую процедуру (с директивой «&НаСервисе»)
Сервер – адрес ПК
Адрес компьютера можно скопировать из Конфигурация – Общие формы – Авторизация
(Модуль)
Вставить строку – убрать лишнее
Прописать функцию JSON_В_Объект (с директивой «&НаСервисе»)
Дополнить процедуру ЗагрузитьСписокТоваров
Переходим Конфигурация – Справочники – Товары – Модуль менеджера и прописываем
процедуру ЗагрузитьТоварыИзМассива ЭКСПОРТ
ОБНОВИТЬ КОНФИГУРАЦИЮ БАЗЫ ДАННЫХ!!!
Запустить пользовательский режим
Указать пользователя «Кладовщик»
Запустить пользовательский режим центральной базы
Заполнить новый документ на закупку товара
Добавить НОВЫЙ вид товара
Переходим в пользовательский режим
(база мобильного приложения)
Проверка наличия нового вида товара
Оставить комментарий «ФИО»
в каждом модуле где код!!!
Скачать