Центральный Дом Знаний - Работа в 1С 28

Информационный центр "Центральный Дом Знаний"

Заказать учебную работу! Жми!



ЖМИ: ТУТ ТЫСЯЧИ КУРСОВЫХ РАБОТ ДЛЯ ТЕБЯ

      cendomzn@yandex.ru  

Наш опрос

Я учусь (закончил(-а) в
Всего ответов: 2690

Онлайн всего: 1
Гостей: 1
Пользователей: 0


Форма входа

Логин:
Пароль:

Работа в 1С 28

Работа в программе 1С

стр.: 1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32
33  34  35  36  37  38  39  40  41  42  43  44  45  

Процедура Сформировать()

// при отметке элемента из списка с пометками Группировка

// в переменную ТипГрупп кладется:

// 1 – если отмечен Группировать по должностям,

// 2 – если отмечен Группировать по подразделениям,

// 3 (то есть сумма значений списка Группировка) – если отмечены оба

ТипГрупп=0;

Для к=1 По Группировка.РазмерСписка() Цикл

Если Группировка.Пометка(к)=1 Тогда

ТипГрупп=ТипГрупп+Группировка.ПолучитьЗначение(к)

КонецЕсли;

КонецЦикла;

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "

|ФИО = Справочник.Сотрудники.ТекущийЭлемент;

|";

// если группируем по должностям, создаем переменную Долж и группировку по Долж

Если (ТипГрупп=1) ИЛИ (ТипГрупп=3) Тогда

ТекстЗапроса=ТекстЗапроса+"Долж = Справочник.Сотрудники.Должности;

|Группировка Долж Упорядочить по Долж.Наименование;

|";

Признак=0;

Иначе

Признак=1;

КонецЕсли;

// Если группируем только по должностям или вообще не группируем,

// указываем Без Групп (в справочнике Сотрудники группы являются подразделениями)

// и в зависимости от переключателя Порядок устанавливаем значение упорядочения

Если (ТипГрупп<=1) Тогда

ТекстЗапроса=ТекстЗапроса+"Группировка ФИО Упорядочить по " +?(Порядок=1, "ФИО.Наименование","ФИО.ДатаПриема")+" Без Групп;

|";

Иначе

ТекстЗапроса=ТекстЗапроса+"Группировка ФИО Упорядочить по " +?(Порядок=1, "ФИО.Наименование","ФИО.ДатаПриема")+";

|";

КонецЕсли;

// задаем функцию подсчета количества человек

ТекстЗапроса=ТекстЗапроса+"Функция Кол_во=Счётчик();

|";

// формируем условие и заголовок

// Если выбран тип работников Все (ТипСтатуса=1), то условия не накладываем

Если ТипСтатуса=1 Тогда

Заголовок="Список всех сотрудников, когда–либо работавших на предприятии";

// Если выбран тип – Работающие (ТипСтатуса=2), то накладываем условия

// на всех неуволенных работников на указанную дату или период

// (в зависимости от ТипПериода)

ИначеЕсли ТипСтатуса=2 Тогда

Если ТипПериода=1 Тогда

Заголовок="Список всех сотрудников, работавших на предприятии на " + Строка(ВыбДата) +" г.";

ТекстЗапроса=ТекстЗапроса+"Условие ((ФИО.ДатаПриема<=' " + Строка(ВыбДата) +" ') И ((ФИО.ДатаУвольнения>=' "+Строка(ВыбДата)+" ') ИЛИ (Строка(ФИО.ДатаУвольнения)=Строка(' . . '))));

|";

Иначе

Заголовок="Список всех сотрудников, работавших на предприятии в период с " + Строка(ДатаНач) +" г. по "+Строка(ДатаКон)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие ((ФИО.ДатаПриема<=' "+Строка(ДатаКон) + " ') И ((Строка(ФИО.ДатаУвольнения)=Строка(' . . ')) ИЛИ (ФИО.ДатаУвольнения>=' "+Строка(ДатаНач)+" ')));

|";

КонецЕсли;

// Если выбран тип – Уволенные (ТипСтатуса=3), то накладываем условия

// на всех работников, уволенных на указанную дату или период

// (в зависимости от ТипПериода)

ИначеЕсли ТипСтатуса=3 Тогда

Если ТипПериода=1 Тогда

Заголовок="Список всех сотрудников, уволенных "+Строка(ВыбДата)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие (ФИО.ДатаУвольнения=' " + Строка(ВыбДата) +" ');

|";

Иначе

Заголовок="Список всех сотрудников, уволенных в период с "+Строка(ДатаНач) + " г. по " + Строка(ДатаКон)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие ((Строка(ФИО.ДатаУвольнения) <>
Строка(' . . ')) И (ФИО.ДатаУвольнения>=' "+Строка(ДатаНач)+" ') И (ФИО.ДатаУвольнения<=' "+Строка(ДатаКон)+" '));

|";

КонецЕсли;

// Если выбран тип – Принятые на работу (ТипСтатуса=4), то накладываем условия

// на всех работников, принятых на указанную дату или период

// (в зависимости от ТипПериода)

ИначеЕсли ТипСтатуса=4 Тогда

Если ТипПериода=1 Тогда

Заголовок="Список всех сотрудников, принятых на работу "+Строка(ВыбДата)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие (ФИО.ДатаПриема=' "+Строка(ВыбДата)+" ');

|";

Иначе

Заголовок="Список всех сотрудников, принятых на работу в период с " + Строка(ДатаНач)+" г. по "+Строка(ДатаКон)+" г.";

ТекстЗапроса=ТекстЗапроса+"Условие ((ФИО.ДатаПриема>=' "+Строка(ДатаНач)
+" ') И (ФИО.ДатаПриема<=' "+Строка(ДатаКон)+" '));

|";

КонецЕсли;

КонецЕсли;

// выдаем текст запроса в окно сообщений для проверки

// (в реальной программе это не делается)

Сообщить(ТекстЗапроса);

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Сообщить("Ошибка в тексте запроса");

Возврат;

КонецЕсли;

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Сформировать");

Таб.ВывестиСекцию("Шапка");

Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

// если две группировки

Если Признак=0 Тогда

Пока Запрос.Группировка("Долж")=1 Цикл

Таб.ВывестиСекцию("Должность");

Нум=0; // для нумерации сотрудников

Пока Запрос.Группировка("ФИО")=1 Цикл

Если Запрос.ФИО.ЭтоГруппа()=1 Тогда

Таб.ВывестиСекцию("Подразделение");

Иначе

Нум=Нум+1;

Таб.ВывестиСекцию("ФИО");

КонецЕсли;

КонецЦикла;

КонецЦикла;

Иначе

// если меньше двух группировок

Нум=0;

Пока Запрос.Группировка("ФИО")=1 Цикл

Если Запрос.ФИО.ЭтоГруппа()=1 Тогда

Таб.ВывестиСекцию("Подразделение");

Иначе

Нум=Нум+1;

Таб.ВывестиСекцию("ФИО");

КонецЕсли;

КонецЦикла;

КонецЕсли;

Таб.ВывестиСекцию("Подвал");

Таб.ТолькоПросмотр(1);

Таб.Показать("Сформировать","");

КонецПроцедуры

Заполним ячейки отчета следующими данными (рисунок 7.4.9):

Рисунок 7.4.9

Сохраните конфигурацию и запустите 1С в режиме Предприятие. Сформируем отчет по всем работникам, отсортированным по ФИО, без группировок (рисунок 7.4.10):

Рисунок 7.4.10

В окне сообщений виден соответствующий запрос:

ФИО = Справочник.Сотрудники.ТекущийЭлемент;

Группировка ФИО Упорядочить по ФИО.Наименование Без Групп;

Функция Кол_во=Счётчик();

Сформируем отчет по всем работникам, отсортированным по дате, сгруппированный по должностям и подразделениям (рисунок 7.4.11):

Рисунок 7.4.11

В окне сообщений виден соответствующий запрос:

ФИО = Справочник.Сотрудники.ТекущийЭлемент;

Долж = Справочник.Сотрудники.Должности;

Группировка Долж Упорядочить по Долж.Наименование;

Группировка ФИО Упорядочить по ФИО.ДатаПриема;

Функция Кол_во=Счётчик();

Сформируем отчет по принятым на работу сотрудникам, отсортированным по дате, сгруппированный по подразделениям, за определенный период (рисунок 7.4.12):

Рисунок 7.4.12

В окне сообщений виден соответствующий запрос:

ФИО = Справочник.Сотрудники.ТекущийЭлемент;

Группировка ФИО Упорядочить по ФИО.ДатаПриема;

Функция Кол_во=Счётчик();

Условие ((ФИО.ДатаПриема>='01.12.06') И (ФИО.ДатаПриема<='29.12.06'));

Обратите внимание: для того чтобы указать диапазон дат, был использован оператор запроса Условие, а не Период СПо …, так как последний оператор применим только к документам, журналам и регистрам. Кроме того, справочник Сотрудники уже имеет группы, которые являются подразделениями предприятия. Следовательно, группировку по ФИО можно использовать только как группировку самого нижнего уровня.

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

Создадим новый отчет ОДоходах и на его форме (рисунок 7.4.13) разместим следующие элементы диалога:

Рисунок 7.4.13

Зададим им следующие параметры:

  • переключатель Все сотрудники: Идентификатор – Тип, Формула – ВыборТипа(), опция Первый в группе установлена;

  • пФИО: Идентификатор – пФИО, опция Сделать недоступным установлена, Тип – Справочник.Сотрудники;

  • Год: Идентификатор – Год, Тип – Дата; опция Имеет кнопку выбора установлена.

Затем создадим текст программного модуля:

Процедура Сформировать()

Нач=НачГода(Год);

Кон=КонГода(Год);

Запрос = СоздатьОбъект("Запрос");

ТекстЗапроса = "

|Период с Нач По Кон;

|ОбрабатыватьДокументы Все;

|ДатаДокум = Документ.Ведомость.Дат;

|ФИО = Документ.Ведомость.ФИО;

|Нач = Документ.Ведомость.Начислено;

|Нал = Документ.Ведомость.Налог;

|Группировка ФИО Упорядочить по ФИО.Наименование Без Групп;

|Группировка ДатаДокум ;

|Функция СуммНач=Сумма(Нач);

|Функция СуммНал=Сумма(Нал);

|";

// если выбран запрос на конкретного сотрудника, добавляем условие

Если Тип=2 Тогда

ТекстЗапроса = ТекстЗапроса + "Условие (ФИО=пФИО);

|"

КонецЕсли;

Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда

Сообщить("Ошибка в тексте запроса");

Возврат;

КонецЕсли;

Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Сформировать");

Таб.ВывестиСекцию("Шапка");

Таб.Опции(0,0,Таб.ВысотаТаблицы(),0);

Итог = "Итого";

Пока Запрос.Группировка(1)=1 Цикл

Таб.ВывестиСекцию("Строка_1");

Пока Запрос.Группировка(2)=1 Цикл

Таб.ВывестиСекцию("Строка_2");

КонецЦикла;

// итог по первой группировке

Таб.ВывестиСекцию("Подвал");

КонецЦикла;

Если Тип=1 Тогда

// итог по всему запросу

Итог = "Всего по предприятию";

Таб.ВывестиСекцию("Подвал");

КонецЕсли;

Таб.ТолькоПросмотр(1);

Таб.Показать("Сформировать","");

КонецПроцедуры

Процедура ВыборТипа()

Если Тип=1 Тогда

// выбор сотрудника не доступен

Форма.пФИО.Доступность(0);

Иначе

// выбор сотрудника доступен

Форма.пФИО.Доступность(1);

КонецЕсли;

КонецПроцедуры

Loading

Календарь

«  Апрель 2024  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
2930

Архив записей

Друзья сайта

  • Заказать курсовую работу!
  • Выполнение любых чертежей
  • Новый фриланс 24