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

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

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



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

      cendomzn@yandex.ru  

Наш опрос

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

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


Форма входа

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

Работа в 1С 33

Работа в программе 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  

Пример:

Процедура ОбработкаПроведения()

ВыбратьСтроки();

Пока (ПолучитьСтроку() > 0) Цикл

Регистр.НаличиеСотрудников.Должность = Долж;

Регистр.НаличиеСотрудников.Подразделение = Подр;

Регистр.НаличиеСотрудников.Количество = Количество;

Регистр.НаличиеСотрудников.СуммаОклада = СумОкл;

Регистр.НаличиеСотрудников.ДвижениеРасходВыполнить();

КонецЦикла;

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

Движение(<Измерен1>, <Измерен2>..., <Ресурс1> , <Ресурс2>...) – выполняет запись движения в оборотный регистр для текущего документа. Измерения регистра, по которым записывается движение передаются в параметрах <Измерен1>, <Измерен2>, .. Величины приращений ресурсов регистра передаются параметрами <Ресурс1>, <Ресурс2>... Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения(). Данный метод используется только для оборотных регистров.

Параметры:

<Измерен1 >, <Измерен2> – выражения со значениями измерений регистра.

<Ресурс1>, <Ресурс2> – выражения со значениями ресурсов регистра.

Пример:

Процедура ОбработкаПроведения();

ВыбратьСтроки();

Пока ПолучитьСтроку() > 0 Цикл

Регистр.ПриемСотрудников.Движение(Долж, Подр, Кол, СуммОкл);

КонецЦикла;

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

ДвижениеВыполнить() – выполняет запись движения в регистр для текущего документа. Значения измерений регистра, по которым записывается движение, а также величины приращений ресурсов регистра определяются текущими значениями атрибутов регистра. Данный метод доступен только в контексте Модуля документа в предопределенной процедуре ОбработкаПроведения(). Данный метод используется только для оборотных регистров.

Пример:

Процедура ОбработкаПроведения();

ВыбратьСтроки();

Пока (ПолучитьСтроку() > 0) Цикл

Регистр.ПриемСотрудников.Склад = Склад;

Регистр.ПриемСотрудников.Товар = Товар;

Регистр.ПриемСотрудников.Оборот = Оборот;

Регистр.ПриемСотрудников.ДвижениеВыполнить();

КонецЦикла;

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

9.3 Применение регистров для ведения учета

Рассмотрим пример ведения оперативного учета с помощью регистров. Отмените проведение всех документов (приказов о приеме и увольнении). Откройте справочник сотрудники и, если там есть элементы, то удалите их.

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

Процедура ОбработкаПроведения()

Сотр=СоздатьОбъект("Справочник.Сотрудники");

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

ВыбратьСтроки();

// пока строки в документе есть

Пока ПолучитьСтроку()=1 Цикл

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

// полем подразделение

Сотр.ИспользоватьРодителя(Подразделение,0);

// создаем новый элемент справочника

Сотр.Новый();

// заполняем поля

Сотр.Наименование=ФИО;

Сотр.Должности=Должность;

Сотр.Оклад=Оклад;

Сотр.ДатаПриема=ДатаПриема;

Сотр.ТипРаботника=Тип;

// записываем

Сотр.Записать();

// заносим данных в регистр остатков

// задаем значения измерений

Регистр.НаличиеСотрудников.Должность=Должность;

Регистр.НаличиеСотрудников.Подразделение=Подразделение;

// задаем значения ресурсов

Регистр.НаличиеСотрудников.Количество=1;

Регистр.НаличиеСотрудников.СуммаОклада=Оклад;

// выполняем приход в регистр остатков

Регистр.НаличиеСотрудников.ДвижениеПриходВыполнить();

// заносим данные в регистр оборота ПриемСотрудников

// задаем значения измерений

Регистр.ПриемСотрудников.Должность=Должность;

Регистр.ПриемСотрудников.Подразделение=Подразделение;

// задаем значения ресурсов

Регистр.ПриемСотрудников.Количество=1;

Регистр.ПриемСотрудников.СуммаОклада=Оклад;

// записываем движение в оборотный регистр

Регистр.ПриемСотрудников.ДвижениеВыполнить();

КонецЦикла;

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

Далее откройте документ ПриказОбУвольнении и установите опцию Оперативный учет, чтобы документ можно было использовать для работы с регистрами оперативного учета. Откройте модуль документа ПриказОбУвольнении. В процедуры ОбработкаПроведения() необходимо ввести изменения, то есть добавить добавление данных в регистр остатков НаличиеСотрудников и регистр оборотов УвольнениеСотрудников.

Процедура ОбработкаПроведения()

Сотр=СоздатьОбъект("Справочник.Сотрудники");

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

ВыбратьСтроки();

// пока строки в документе есть

Пока ПолучитьСтроку()=1 Цикл

// ищем сотрудника в справочнике

Сотр.НайтиПоНаименованию(ФИО.Наименование,0,1);

Сотр.ДатаУвольнения=ДатаУвольнения;

// записываем

Сотр.Записать();

// заносим данных в регистр остатков

// задаем значения измерений, так как ФИО элемент справочника

// Сотрудники доступ к нужным значениям можно получить

// через его реквизиты

Регистр.НаличиеСотрудников.Должность=ФИО.Должности;

Регистр.НаличиеСотрудников.Подразделение=ФИО.Родитель;

// задаем значения ресурсов

Регистр.НаличиеСотрудников.Количество=1;

Регистр.НаличиеСотрудников.СуммаОклада=ФИО.Оклад;

// выполняем приход в регистр остатков

Регистр.НаличиеСотрудников.ДвижениеРасходВыполнить();

// заносим данные в регистр оборота УвольнениеСотрудников

// задаем значения измерений

Регистр.УвольнениеСотрудников.Должность=ФИО.Должности;

Регистр.УвольнениеСотрудников.Подразделение=ФИО.Родитель;

// задаем значения ресурсов

Регистр.УвольнениеСотрудников.Количество=1;

Регистр.УвольнениеСотрудников.СуммаОклада=ФИО.Оклад;

// записываем движение в оборотный регистр

Регистр.УвольнениеСотрудников.ДвижениеВыполнить();

КонецЦикла;

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

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

Поработаем с регистром остатков НаличиеСотрудников, создав отчет, выдающий информацию о численности и сумма оклада сотрудников по должностям и подразделения, как на текущую дату (точку актуальности), так и на любую указанную дату. Создайте новый отчет ПоРегиструОстатков и включите его в меню под именем По наличию сотрудников. На форме диалога разместите следующие элементы (рисунок 9.3.1):

Рисунок 9.3.1

Установите следующие свойства элементов:

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

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

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

  • первая кнопка Х (для очистки элемента Долж): Формула – Долж="", Подсказка – Очистить должность;

  • вторая кнопка Х (для очистки элемента Подр): Формула – Подр="", Подсказка – Очистить подразделение;

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

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

В программном модуле запрограммируем процедуры Сформировать(), ВыборТипа(), ВыборДаты() и зададим начальные значения переменных:

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

// в окно сообщений выводится информация,

// поэтому очищаем его

ОчиститьОкноСообщений();

Рег=СоздатьОбъект("Регистр.НаличиеСотрудников");

// если нужны остатки не на точку актуальности (текущую дату),

// а на любую другую

Если НаДату=2 Тогда

// ставим признак временного расчета

Рег.ВременныйРасчет(1);

// рассчитать остатки регистра на указанную дату

РассчитатьРегистрыНа(ВыбДата);

// сообщить, что остатки на указанную дату,

// а не на точку актуальности

Сообщить("На "+Строка(ВыбДата)+":");

КонецЕсли;

// Если выбран полный отчет по всем должностям и подразделениям

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

// выбираем все остатки регистра

Рег.ВыбратьИтоги();

// пока есть остатки

Пока Рег.ПолучитьИтог()=1 Цикл

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

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

Сообщить("Должность " + Строка(Рег.Должность) + " в подразделении " + Строка(Рег.Подразделение) + " кол–во: " + Строка(Рег.Количество) + " сумма оклада: " + Строка(Рег.СуммаОклада));

КонецЦикла;

Иначе

// если выбран отчет по условию

// если отчет по заданным должности и подразделению

Если (Долж.Выбран()=1) И (Подр.Выбран()=1) Тогда

// задаем значения измерений через атрибуты регистра

Рег.Должность = Долж;

Рег.Подразделение = Подр;

// получаем значения всех ресурсов по регистру

Рег.ОстаткиПолучить();

// сообщаем количество человек и сумму оклада сотрудников

// указанной должности в указанном подразделении

Сообщить("Должность " + Строка(Рег.Должность) + " в подразделении " + Строка(Рег.Подразделение) + " кол–во: " + Строка(Рег.Количество) + " сумма оклада: " + Строка(Рег.СуммаОклада));

// если отчет только по заданной должности

ИначеЕсли (Долж.Выбран()=1) И (Подр.Выбран()=0) Тогда

// сообщаем количество сотрудников заданной должности

// по всему предприятию и их сумму оклада

Сообщить("Должность " + Долж + " кол–во: " + Строка(Рег.СводныйОстаток(Долж,,"Количество")) + " сумма оклада: " + Строка(Рег.СводныйОстаток(Долж,,"СуммаОклада")));

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

ИначеЕсли (Долж.Выбран()=0) И (Подр.Выбран()=1) Тогда

// сообщаем количество сотрудников и сумму оклада

// в указанном подразделении

Сообщить("В подразделении " + Подр + " кол–во: " + Строка(Рег.СводныйОстаток(,Подр,"Количество")) + " сумма оклада: " + Строка(Рег.СводныйОстаток(,Подр,"СуммаОклада")));

// если не выбраны ни должность, ни подразделение

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

Иначе

Сообщить("Общее количество: " + Строка(Рег.СводныйОстаток(,,"Количество")) + " сумма оклада: " + Строка(Рег.СводныйОстаток(,,"СуммаОклада")));

КонецЕсли;

КонецЕсли;

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

// для переключателя тип отчета

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

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

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

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

Иначе

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

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

КонецЕсли;

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

// для переключателя на дату

Процедура ВыборДаты()

Если НаДату=1 Тогда

Форма.ВыбДата.Доступность(0);

Иначе

Форма.ВыбДата.Доступность(1);

КонецЕсли;

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


// начальные значения

Тип=1;

НаДату=1;

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

По оборотному регистру ПриемСотрудников создадим отчет о ОПриеме, используя запросы. Создайте новый отчет, включив его в меню под именем О приеме сотрудников, и на форме разместите следующие элементы (рисунок 9.3.2):

Рисунок 9.3.2

Loading

Календарь

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

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

Друзья сайта

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