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

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

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



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

      cendomzn@yandex.ru  

Наш опрос

Как Вы планируете отдохнуть летом?
Всего ответов: 903

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


Форма входа

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

Работа в 1С 31

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

Тема 9 Регистры

Цель:

  1. познакомится с понятием и применением регистров, оборотных регистров и регистров остатков;

  2. приобрести и закрепить навыки создания и редактирования структуры регистров;

  3. приобрести и закрепить навыки использования регистров для количественно–суммового движения «средств»;

  4. приобрести и закрепить навыки применения методов для работы с регистрами в программных модулях;

  5. приобрести и закрепить навыки создания отчетов на основе регистров с использованием запросов.

Пояснения к работе

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

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

9.1 Регистр остатков и оборотный регистр

Рассмотрим регистр на нашем примере. Предположим, что регистр ПриемСотрудников должен содержать сведения о количестве и окладе сотрудников определенных должностей в каждом подразделении. В дальнейшем предполагается получать информацию такого типа «количество сотрудников данной должности в подразделении», «движение сотрудников по подразделениям», «оклад сотрудников по подразделениям». В идеологии системы 1С:Предприятие регистр такого вида представляет собой прямоугольную систему координат на одной оси которой находятся подразделения, на другой – должности, а на пересечении конкретного подразделения и конкретного сотрудника находятся цифры количества сотрудников и суммы окладов (рисунок 9.1.1).

Рисунок 9.1.1

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

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

С помощью методов встроенного языка мы можем легко получить ответы на вопросы:

  • наличие (другими словами, остаток) сотрудников конкретной должности в конкретном подразделении;

  • наличие (остаток) сотрудников конкретной должности во всех подразделениях

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

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

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

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

Если из регистра нужно быстро получать остаток чего–либо на текущий момент, тогда нужно сделать регистр остатков. Если из регистра нужно быстро получать приход или расход чего–либо за период, тогда нужно сделать оборотный регистр.

Для того чтобы оперативно получать информацию о количестве работников по должностям и сумме их окладов, потребуется регистр НаличиеРаботников, в котором для каждой должности будет храниться количество сотрудников и сумма оклада. При приеме и увольнении сотрудников состояние регистра будет соответствующим образом изменяться, каждый раз отражая текущее состояние. Регистр НаличиеРаботников – это регистр остатков.

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

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

Теперь, при совершении хозяйственных операций, необходимо будет изменять состояние регистров НаличиеРаботников, ПриемСотрудников и УвольнениеСотрудников. Из всего сказанного выше можно сделать выводы о преимуществах использования регистров.

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

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

Создадим регистр остатков НаличиеРаботников. Найдите в дереве метаданных тип Регистры и создайте новый (рисунок 9.1.2).

Рисунок 9.1.2

Для измерений укажите следующие свойства:

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

  • Подразделения: Идентификатор – Подразделения, Тип – Справочник.Сотрудники (будем использовать только группы данного справочника).

Для ресурсов укажите следующие свойства (ресурсы могут иметь тип значения только Число):

  • Количество: Идентификатор – Количество, Тип – Число, Длина – 3;

  • СуммаОклада: Идентификатор – СуммаОклада, Тип – Число, Длина – 10, Точность – 2.

Установка признака Отбор движений в свойствах измерения или реквизита позволяет ускорить выполнение операций, обращающихся к движениям регистра, в случае, если выбираются движения по конкретному значению данного измерения или реквизита. К таким операциям относятся запросы с условием равенства данного измерения (реквизита) указанному значению, а также временный расчет и методы обхода движений объекта Регистр встроенного языка, использующие фильтр по определенному значению измерения (реквизита).

Признак Отбор итогов, соответственно, позволяет ускорить операции, обращающиеся к итогам данного регистра с конкретным значением измерения. К ним относятся запросы и выборка итогов средствами объекта Регистр встроенного языка. Заметим, что установка данного признака имеет смысл только в том случае, если в предполагаемых обращениях будут выбираться итоги по значению данного измерения, но без указания значений всех предыдущих измерений, так как при указании значений нескольких первых измерений выборка данных выполняется оптимальным образом без использования отборов.

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

Специальная опция Быстрая обработка движений используется для оптимизации доступа к движениям отдельных регистров. Ее целесообразно использовать для тех регистров, движения которых записываются документами сравнительно редко, то есть среди всех документов вводимых пользователями в 1С:Предприятии процент документов (не видов, а экземпляров), записывающих движения по этому регистру является небольшим. В этом случае установка признака Быстрая обработка движений позволяет ускорить операции, обрабатывающие движения этого регистра (запросы, временные расчеты итогов, обход движений средствами встроенного языка). Для регистров, по которым движения записываются большим количеством документов, установка этого признака может не дать ощутимого выигрыша в производительности. Заметим, что установка этого признака несколько замедляет запись движений данного регистра.

Создадим оборотный регистр ПриемСотрудников (рисунок 9.1.3) с такими же свойствами измерений и ресурсов, который позволит увидеть движение сотрудников по датам:

Рисунок 9.1.3

Кроме того, создайте оборотный регистр УвольнениеСотрудников с такими же измерениями и ресурсами.

9.2 Методы для работы с регистрами

Общие методы для работы с регистрами (используются как для регистров остатков так и для оборотных регистров):

НазначитьТип(<ИмяРеквизита>, <ИмяТипа>, <Длина>, <Точность>) – позволяет назначить тип для реквизита, которому в конфигураторе назначен тип Неопределенный.

Параметры:

<ИмяРеквизита> – строковое выражение – название реквизита регистра неопределенного типа, как он назван в конфигураторе.

<ИмяТипа> – строковое выражение – название типа данных (или Вид субконто), который назначается реквизиту регистра.

<Длина> – необязательный параметр. Длина поля представления данных. Имеет смысл только при задании числового или строкового типа.

<Точность> – необязательный параметр. Число знаков числа после десятичной точки. Имеет смысл только при задании числового типа.

Пример:

Регистр.УчетТМЦ.НазначитьТип("ТМЦ", "Справочник.Товары");

ВыбратьДвижения(<НачалоВыборки>, <КонецВыборки>, <ГрафаОтбора>) – инициирует создание выборки всех движений регистра в указанном интервале дат. До вызова данной процедуры может быть установлен фильтр, ограничивающий выборку значений из регистра. Если <КонецВыборки> не указан или равен 0, то концом временного интервала выбора движений регистра считается ТА. Собственно выбор первого и последующих движений регистра осуществляется функцией ПолучитьДвижение().

Параметры:

<НачалоВыборки> – выражение типа дата, документ или позиция документа, задающее начало временного интервала выбора движений регистра.

<КонецВыборки> – выражение типа дата, документ или позиция документа задающее конец временного интервала выбора движений регистра.

<ГрафаОтбора> – необязательный параметр. Строковое выражение – идентификатор графы отбора, как он задан в конфигураторе. Данный параметр устанавливает режим использования определенной графы отбора. "*" – автоматический выбор графы отбора. Пустая строка – не использовать графу отбора. По умолчанию устанавливается автоматический выбор графы отбора.

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

Возвращаемое значение: 1 – если следующее движение регистра выбрано успешно; 0 – если движение регистра не найдено (отсутствует).

Пример:

РегТовары = СоздатьОбъект("Регистр.Товары");

РегТовары.ВыбратьДвижения(ДатаНач, ДатаКон);

Пока РегТовары.ПолучитьДвижение()=1 Цикл

...

КонецЦикла;

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

Параметры:

<Документ> – значение типа Документ.

Возвращаемое значение: 1 – если действие выполнено и в выборке есть хотя бы один элемент; 0 – если действие не выполнено или в выборке нет ни одного элемента.

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

Параметры:

<Режим> – необязательный параметр. 1 – выбирать движения документов в обратном порядке даты и времени; 0 – выбирать движения документов в порядке возрастания даты и времени.

Возвращаемое значение: числовое значение, содержащее текущее значение режима порядка выборки документов (на момент до исполнения метода).

Пример:

Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

Рег1.ОбратныйПорядок(1);

Рег1.ВыбратьДвижения(ДатаНачало, );

// Цикл выбора движений по регистру

Пока Рег1.ПолучитьДвижение() > 0 Цикл

….

КонецЦикла;

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

Возвращаемое значение: значение документа, который задал движение регистра.

Пример:

Рег = СоздатьОбъект("Регистр.Взаиморасчеты");

Рег.ВыбратьДвижения(ДатаНач,);

Пока Рег.ПолучитьДвижение() = 1 Цикл

Док = Рег.ТекущийДокумент();

НомСтр = Рег.НомерСтроки();

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

КонецЦикла;

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

Возвращаемое значение: номер строки документа, выполнившего движение регистра.

Пример: см. предыдущий пример.

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

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

Возвращаемое значение: 1 – если очередной остаток по регистру выбран успешно; 0 – если очередной остаток по регистру не найден (отсутствует).

Пример:

РегТовары = СоздатьОбъект("Регистр.Товары");

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

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

Сообщить("Товар " + Строка(РегТовары.Товар) +

" на складе " + Строка(РегТовары.Склад) +

" кол–во: " + Строка(РегТовары.Количество) +

" стоимость: " + Строка(РегТовары.Стоимость));

КонецЦикла;

ВыгрузитьИтоги(<Та6лЗнач>, <ВключатьИзмерФильтра>, <ПредварительноОчищать>) – выгружает все итоги регистра с текущим фильтром в таблицу значений.

Параметры:

<ТаблЗнач> – объект типа ТаблицаЗначений, куда система выгрузит все итоги регистра.

<ВключатьИзмерФильтра> – необязательный параметр.1 – в получаемую таблицу включаются измерения, закрепленные фильтром; 0 – не включаются. Значение по умолчанию – 0.

<ПредварительноОчищать> – необязательный параметр. 1 – перед выгрузкой таблица значений очищается; 0 – не очищается. Значение по умолчанию – 1.

Пример:

РегДоходы = СоздатьОбъект("Регистр.Доходы");

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

РегДоходы.ВыгрузитьИтоги(ТабЗнач);

ТабЗнач.ВыбратьСтроки();

Пока ТабЗнач.ПолучитьСтроку()=1 Цикл

Сообщить("Товар " + Строка(ТабЗнач.Товар) +

" на складе " + Строка(ТабЗнач.Склад) +

" кол–во: " + Строка(ТабЗнач.Количество) +

" стоимость: " + Строка(ТабЗнач.Стоимость));

КонецЦикла;

Методы для работы с оборотными регистрами

ИспользоватьПериод(<Дата>)

ИспользоватьПериод(<Год>, <Месяц>, <День>)

ИспользоватьПериод(<Год>, <НомерНедели>)

ИспользоватьПериод (<Год>, <Месяц>, <НомерДекады>)

ИспользоватьПериод(<Год>, <Месяц>)

ИспользоватьПериод(<Год>, <НомерКвартала>)

ИспользоватьПериод(<Год>)

Устанавливает период выборки итогов оборотного регистра. Различный синтаксис вызова данного метода зависит от заданного в конфигураторе интервала оборотного регистра. Данный метод используется для вызова методов оборотных регистров. Дальнейшая выборка итогов будет происходить по указанному периоду. Если при работе с оборотным регистром этот метод опущен, то по умолчанию используется текущий период, в котором находится ТА.

Пример:

Регистр.ОборотыТоваров.ИспользоватьПериод(1996);

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

Параметры:

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

<ИмяРесурса> – строковое выражение, содержащее название требуемого ресурса регистра, как оно названо в конфигураторе.

Возвращаемое значение: численное значение итога заданного ресурса регистра.

Пример:

ДвижСотр= СоздатьОбъект("Регистр.ПриемСотрудников");

// Долж, Подр – переменные содержащие должность и подразделение,

// по которым необходимо получить количество

Кол = ДвижСотр.Итог(Долж, Подр, "Количество");

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

Loading

Календарь

«  Май 2019  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031

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

Друзья сайта

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