По материалам сайта learn1c.ru/
Немного теории
Точка актуальности (ТА) - одно из основных понятий компоненты "Оперативный учет", и от того, насколько хорошо вы понимаете, что это такое, зависит качество ваших программ. А это и скорость работы, и достоверность выдаваемой информации, и предсказуемость поведения программы.
Для начала ознакомимся с определениями, представленными фирмой 1С:
- "Оперативный учет" Руководство пользователя.
-
Дата и время, по которое включительно обрабатываются проведенные документы, называется "точкой актуальности итогов". В общем случае, в качестве точки актуальности итогов берется дата и время самого "старшего" документа.
-
Режим "Управление итогами" позволяет "вручную" сдвигать точку актуальности итогов во времени как вперед, так и назад, при этом производится пересчет итогов. Проведенные документы, оказавшиеся после точки актуальности итогов, при пересчете итогов не учитываются.
Так оно и есть на самом деле. Только вот начинающему программисту и уж тем более пользователю, я думаю, из этой формулировки мало что понятно. Какое-то общее представление будет, но на вопрос "Что такое ТА?" они ответить не сумеют.
В этом определении не понятно, что скрывается за словом "обрабатываются", о какой обработке проведенных документов идет речь.
С другой стороны здесь есть и очень полезная информация: ТА - это дата и время. Заметьте, это не только дата, или не только время, а дата и время вместе. Об этом надо помнить всегда.
-
- "Описание встроенного языка" Часть 1.
-
Под термином "остаток" ресурса для регистра остатков следует понимать числовое значение, которое имеет ресурс на какой-то момент времени. Именно здесь и проявляется понятие точки актуальности.
-
ТА - это тот момент времени (дата+время), на который все необоротные регистры содержат текущие значения своих ресурсов. Другими словами, если просто запросить у регистра остатков значение какого-либо ресурса, то он выдаст его именно на момент ТА.
-
Если необходимо узнать значение ресурса на какой-либо прошедший момент времени, то надо либо сдвинуть в прошлое ТА, либо при помощи средств встроенного языка следует запустить "временный расчет" регистра. При "временном расчете" регистра остатков можно задать момент времени, на который необходимо получить значение ресурса. В этом случае значение ресурса рассчитывается, что требует несколько большего времени процессора, чем если получать ресурс на ТА.
-
Однако, "временный расчет" рассчитывается не с начала всех времен, а от начала месяца. Регистры остатков хранят промежуточные значения ресурсов на начало каждого месяца. Таким образом, если при "временном расчете" указать момент времени в начале месяца, то, в общем случае, расчет будет выполнен быстрее, чем если указать конец месяца.
В этом описании тоже все верно (ну разве что промежуточные значения можно сохранять не только на начало месяца). Становится понятным, что:
- ТА имеет отношение к получению остатков (а не оборотов) по ресурсам регистра;
- на ТА регистры содержат текущие значения остатков по ресурсам;
- на ТА остатки получаются быстрее, чем при получении на какое-либо заднее число;
- для получения остатков на заднее число необходимо делать "временный расчет";
- "временный расчет" требует дополнительных затрат процессорного времени;
- "временный расчет" на момент времени в начале месяца выполняется быстрее "временного расчета" на момент времени в конце месяца.
-
Что же такое ТА?
Теперь попробуем сформулировать определение ТА, которым было бы удобно пользоваться программисту 1С:
-
ТА - это момент времени, на который программа 1С хранит итоги по регистрам, и эти итоги можно получить без применения временного расчета. (автор var email='rafainweb'+'@mail.ru'; document.write(email.link('mailto:'+email)); rafainweb@mail.ru)
-
... или более развернуто ...
-
ТА - это момент времени (позиция на оси времени), на конец которого программа 1С хранит итоги по ресурсам регистров, и эти итоги можно получить без применения временного расчета.
-
На любой момент времени, находящийся до ТА, можно получить итоги по ресурсам регистров, предварительно сделав временный расчет.
-
На любой момент времени, находящийся после ТА, итоги не рассчитаны, к ним нельзя обратиться.
Точку актуальности можно установить:
- на произвольный документ - из журнала через пункт контекстного меню "Установить ТА на документ";
- на начало дня через "Управление оперативными итогами". В этом случае ТА может быть не привязана к документу;
- на начало/конец даты, документа или позиции документа - средствами языка программирования.
Если ТА "находится" на документе, который выполняет движения по регистрам, то в итогах регистров будут учитываться движения этого документа. Вот почему в определении ТА было сказано "на конец которого". Если ТА не привязана к документу или документ не "двигает" регистры, тогда не важно - "на начало" или "на конец" этого момента времени поддерживаются итоги.
Чтобы все встало на свои места, давайте определимся с понятиями расчета остатков "на начало" и "на конец" применительно к проведению документов оперативного учета. Документ имеет некоторую "протяженность", представленную движениями регистров:
Если выполняется расчет остатков "на начало" документа, то движения, сделанные документом, не учитываются при расчете остатков.
При расчете остатков "на конец" документа, движения этого документа учитываются в остатках. Если документ не выполняет движения по регистрам, остатки "на начало" и "на конец" совпадают.
Практическое занятие
Теперь, после теоретической подготовки, предлагаю Вам самостоятельно проверить, что в момент проведения документа, находящегося на ТА, в регистрах хранятся остатки, учитывающие движения этого документа.
Для эксперимента возьмите демонстрационную базу "1С: Торговля и Склад": во-первых, в ней мало документов, а во-вторых, ничего страшного не будет, если при тестировании Вы ее испортите.
Выберите документ, на котором будем проводить испытания, например, "Заявка покупателя", и внесите изменения в модуль проведения:
- Закомментируйте очистку движений регистров в процедуре ПроведениеПоРегистрам. Это приведет к тому, что уже существующие движения по регистрам не будут удаляться при проведении документа.
- После участка программы, проверяющего актуальность итогов, добавьте следующий фрагмент:
Итоги по регистру "Заявки" будут выгружаться в таблицу значений, и на экран будет выводиться приглашение выбрать строку из этой таблицы.
Примечание: никогда не делайте такого в рабочих версиях программ.
Вот и все доработки. Запускайте программу и тестируйте. Мои результаты приведены ниже. Я сделал заявку на 1 пару кирзовых сапог:
- Проведение №1 - проведение непроведенного документа
- Проведение №2 - проведение проведенного документа
- Проведение №3 - проведение проведенного документа
На этом статья, посвященная ТА, завершена.
Примечание: в статье отражено мое мнение по поводу ТА. Оно может не совпадать с Вашим мнением и / или мнением других специалистов.
Начать дискуссию