Кому не дано глубоко заблуждаться, 
тот довольствуется мелочью
Закон заблуждений.

Урок 23.
"Периодичность и Константы".

 

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

    Я надеюсь, Вы знаете, что такое Константа. По этому сразу буду объяснять, что такое периодическая  константа. В повседневной жизни вокруг нас существует много параметров, которые регулярно меняются. Примеров можно привести много: температура окружающего воздуха, атмосферное давление, Ваш рост, вес, IQ, сумма денег в кошельке, количество детей и т.д. От чего зависят эти параметры - нам не важно. Важно только одно. Все приведенные примеры имеют период изменения. Температура меняется каждую минуту, рост меняется не так заметно, количество детей изменяется вообще несколько раз в жизни. В бухгалтерском учете (управленческом, оперативном,...) так же присутствуют различные показатели, которые любят меняться. Одни меняются часто, другие не очень. Но на самом деле - очень часто меняться им и не надо. В бухгалтерии минимальная длина отрезка времени на протяжении которого какое-либо значение может измениться,  составляет 1 сутки

1С:Предприятие позволяет хранить каждый новый день - новое значение. Вы можете завести константу "СуммаДенегВКармане" и записывать в нее только одно значение в день. Если в какой-то день Вы записали 2 значения, то система запомнит только то, которое Вы запишете последним. При этом константа устроена так,  что Вы можете получить ее значение на любой день. Например, Вы можете создать константу, которая отражает уровень атмосферных остатком и записывать каждый день новое значение. НО! В 1С важно помнить следующее - если Вы не записали сегодня новое значение, то будет действовать значение предыдущее (фактически, последнее записанное до этого). Таким образом, значение в константу заносится только при изменении значения. Если значение не менялось на дату, то действует последнее введенное до этой даты.  Этот механизм удобно отобразить с помощью таблицы.  Таблица не привязана к какой-то конкретной константе.

Дата Значение
01.01.1980 56
02.01.1980 78
01.09.1999 155
01.10.1999 1
01.04.2002 23

 Периодическая константа имеет одну особенность: если Вы хотите узнать ее значение, то Вам обязательно надо произнести дату на которую Вы хотите узнать значение. Итак, рассмотрим таблицу.  1 января 1980 года - значение 56. Сразу на следующий день, 2 января 1980 значение изменилось и стало равно 78. Следующее изменение произошло только 1 сентября 1990 года -155. Какое значение было, например, 1 января 1985 года? Ответ: последнее введенное до  1 сентября 1990 года: то есть значение равно 78.  15 сентября 1999 года - значение нашей константы равно 155. Чему оно равно сегодня? Правильно, 23. И далее всегда оно будет равно 23 до тех пор,  пока не изменится в какой-либо прекрасный день. Сложный вопрос: чему было равно значение константы 1 января 1950 года? Ответ: значение было не определено. Система вернет значение 0. (Почему-то 1С не считает нулевое значение значением!).

Обращаем Ваше внимание на то, что в такой таблице не может быть двух строк с одинаковыми датами! Система не даст сделать так. Примечание: на самом деле тут я не прав: есть в 1С, один баг, когда возникает 2  значения на 1 дату. Этого можно добиться программно,  но пользоваться этим лучше не надо, так как 1С это может вылечить. По этому я не буду останавливаться здесь подробнее. Но на сегодня (770018) - это не исправлено.

Работа с константами.

Создание. Все константы создаются в конфигураторе.  Создать их можно очень много. Точно не сказать сколько, но, поверьте, ни разу не сталкивался с ограничениями. На закладке "Дополнительные"  галка "Периодический" - отвечает за периодичность константы.

Редактирование. Редактировать значение константы можно двумя способами
Вручную.
В режиме "1С:Предприятие" меню "Операции" - > "Константы". Вы можете редактировать как простые константы, так и периодические.  НО. Вы должны помнить, что когда Вы вводите в окне списка констант периодическую константу - ее значение записывается на рабочую дату (она может отличаться от системной). По этому, чтобы не запутаться, при редактировании периодической константы нажмите F5. Вы увидите знакомую таблицу (см.выше) : слева дата, справа значение. Вы можете добавлять/удалять строки и редактировать как даты! так и значения. Для тех, кто не нашел еще периодические константы см. Руководитель, глБухгалтер, Кассир.

Программно.  
Установка значения. Константа.ИмяКонстанты.Установить(Дата,ЗначениеСДаты); В общем то легко, даже не знаю, что добавить. Разве, что пример: Константа.ПределВычетов.Установить('01.03.1997', 200); //с 1 марта 1997 года значение константы равно 200.
Получение значения.  константа.ИмяКонстанты.Получить(ИнтересующаяДата)  зн=константа.ИмяКонстанты.Получить('01.04.2002'); // получаем значение на 1 апреля 2002 года.

Есть еще способ работы программно с периодическими константами, но об этом позже.

Задание для самостоятельной работы:
1. 10 раз измените значение всех констант 

  • в типовой бухгалтерии,  

  • в типовой зарплате

  • в типовой торговле.

  • это была шутка:)

2. Серьезно. В типовой конфигурации Бухгалтерии ( у меня 4.26) есть обработка, которая называется "Организация". Познакомьтесь с ней. В ней Вы найдете большое количество примеров использования констант (как периодических так и не периодических)

  

Hosted by uCoz