Вступайте в мою группу помощник программиста.
В ней мы обсуждаем программирование в 1С.
2017-12-18T22:48:55+00:00<<< Документы Константы Перечисления РегистрыБухгалтерии
<<< РегистрыНакопления РегистрыСведений Справочники
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
Полный синтаксис (нажмите, чтобы раскрыть)
Оглавление (нажмите, чтобы раскрыть)
&НаСервере Процедура ВыполнитьКодНаСервере() /// Как получить и изменить значение константы в 1с 8.3, 8.2 // менеджер значений создаётся и используется неявно Сообщить(Константы.ЛучшийКлиент.Получить()); Константы.ЛучшийКлиент.Установить( Справочники.Клиенты.НайтиПоНаименованию("Марина") ); /// Работа с константой через менеджер значений в 1с 8.3, 8.2 // создаём и используем менеджер значений константы напрямую ЛюбимаяЕда = Константы.ЛюбимаяЕда.СоздатьМенеджерЗначения(); // читаем значение ЛюбимаяЕда.Прочитать(); Сообщить(ЛюбимаяЕда.Значение); // меняем значение ЛюбимаяЕда.Значение = Справочники.Еда.НайтиПоНаименованию( "Крыжовник"); // записываем значение ЛюбимаяЕда.Записать(); /// Работа с константами через набор в 1с 8.3, 8.2 // подходит для работы сразу с группой констант НазванияКонстант = "ЛюбимаяЕда, ЛучшийКлиент"; НаборКонстант = Константы.СоздатьНабор(НазванияКонстант); // читаем набор констант НаборКонстант.Прочитать(); Сообщить(НаборКонстант.ЛюбимаяЕда); Сообщить(НаборКонстант.ЛучшийКлиент); // меняем значения констант НаборКонстант.ЛюбимаяЕда = Справочники.Еда.НайтиПоНаименованию( "Чипсы"); НаборКонстант.ЛучшийКлиент = Справочники.Клиенты.НайтиПоНаименованию( "Пётр"); // записываем набор НаборКонстант.Записать(); /// Как получить значения всех констант в 1с 8.3, 8.2 Для Каждого Константа Из Константы Цикл Сообщить(Строка(Константа) + " = " + Константа.Получить()); КонецЦикла; КонецПроцедуры /// Скачать и выполнить эти примеры на компьютере
Скачать эти примеры в виде тестовой базы (как загрузить, как исследовать)
Константы в языке 1С 8.3, 8.2 (в примерах)
<<< Документы Константы Перечисления РегистрыБухгалтерии
<<< РегистрыНакопления РегистрыСведений Справочники
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Нажмите одну из кнопок, чтобы поделиться:
Константы — это агрегатный тип данных, средство работы с условно постоянными величинами. Информация, хранимая в константах, может быть практически постоянной или изменяющейся с той или иной периодичностью. Обычно в константах хранится такая информация, как реквизиты предприятия, сведения об учётной политике, фамилии ответственных лиц и т.д. и т.п.
Для просмотра списка всех имеющихся в конфигурации констант и их значений необходимо в меню «Операции» выбрать пункт «Константы…».
При этом на экран будет выведено окно «Список констант».
Периодические и непериодические константы
В зависимости от установленных свойств, константы могут быть периодическими и непериодическими (это задаётся в Конфигураторе при их создании). Периодические константы — это константы, значения которых связаны с датой. При изменении значения периодической константы, старое значение сохраняется в памяти и действует до указанной даты, а новое начинает действовать с указанной даты включительно.
На то, что выбранная в списке константа является периодической, указывает доступность кнопки «История» на панели инструментов окна списка констант и соответствующего пункта контекстного меню.
После щелчка по этой кнопке или по соответствующему пункту контекстного меню, на экран будет выведено окно истории изменений значений данной константы.
В окне «История» можно не только просмотреть значения константы и даты изменения, но и внести необходимые корректировки: какие-то значения удалить, что-то добавить, изменить даты и т.п.
Свойства констант
Для просмотра свойств константы в Конфигураторе необходимо щёлкнуть правой кнопкой мыши по значку конкретной константы и в выпадающем контекстном меню выбрать пункт «Свойства».
При этом на экран будет выведено окно палитры свойств выбранной константы.
Здесь на вкладке «Общие» мы увидим такие свойства, как «Идентификатор», «Синоним», «Комментарий», «Тип значения», «Длина» и «Точность».
Идентификатор константы используется в программном коде для обращения к конкретной константе (например, с целью получения её значения или с целью установки этого значения). Свойства «Синоним» и «Комментарий» используются в формах. Значения синонимов имён констант и комментарии к ним можно увидеть, например, в списке констант, который вызывается из главного меню программы: «Операции −> Константы…» (см. рис. в начале статьи).
Свойство константы «Тип значения» позволяет установить тип данных, которые будут храниться в константе. Свойство «Длина» определяет максимальную длину хранимого значения для строк и чисел. Свойство «Точность» определяет количество знаков после запятой для числовых значений.
На вкладке «Дополнительные» для констант числового типа можно также задать разделение триад (в этом случае значение константы в полях ввода различных форм будет выводиться с визуальным разделением на триады) и запретить использование отрицательных значений. Здесь же на вкладке «Дополнительные» для константы можно установить признак «Периодическая».
На вкладке «Права» можно ограничить права отдельных групп пользователей системы на просмотр и/или редактирование значения константы.
Обращение к константам из программного кода
Средства языка предоставляют возможность непосредственного доступа к созданным в Конфигураторе константам в любом программном модуле, так как константы принадлежат глобальному контексту задачи. Использование констант в синтаксисе языка аналогично глобальным переменным, то есть имена констант могут размещаться в левой и правой части оператора присваивания, в выражениях, быть параметрами методов, процедур или функций в любом программном модуле. При этом полное имя константы должно состоять из идентификатора константы, записанного через точку после ключевого слова «Константа» (англоязычный синоним — «Const»).
ДатаРег = Константа.ДатаРегистрации; Константа.АдресОрганизации = "г.Москва, Вернадского, 523, 25";
Несколько иначе дела обстоят с так называемыми периодическими константами. Работа с ними осуществляется при помощи специальных методов Получить()
и Установить()
, о которых речь пойдёт ниже, либо при помощи специального агрегатного типа данных — "
Периодический"
.
Методы констант
Установить значение константы по идентификатору, переданному в качестве параметра позволяет метод УстановитьАтрибут()
. Англоязычный синоним имени метода — SetAttrib()
.
Синтаксис метода:
Константа.УстановитьАтрибут(<ИдентификаторКонстанты>, <3начение>);
где
- <ИдентификаторКонстанты> — строковое выражение, содержащее идентификатор константы, как он записан в Конфигураторе;
- <3начение> — выражение, содержащее устанавливаемое значение константы.
Пример использования:
Константа.УстановитьАтрибут("ДатаЗапретаРедактирования", ТекущаяДата());
Получить значение константы по идентификатору, переданному в качестве параметра позволяет метод ПолучитьАтрибут()
. Англоязычный синоним имени метода — GetAttrib()
.
Пример использования:
ДатаЗапрРед = Константа.ПолучитьАтрибут("ДатаЗапретаРедактирования");
Назначить тип для константы неопределённого типа позволяет метод НазначитьТип()
. Англоязычный синоним имени метода — SetType()
.
Синтаксис метода:
Константа.НазначитьТип(<ИдентификаторКонстанты>, <ИмяТипа>, <Длина>, <Точность>);
где
- <ИдентификаторКонстанты> — строковое выражение, содержащее идентификатор константы неопределённого типа, как он записан в Конфигураторе;
- <ИмяТипа> — строковое выражение, содержащее название типа данных (или вид субконто), который назначается константе, например,
"Строка"
,"Число"
,"Дата"
,"Справочник.Товары"
и т.п.; - <Длина> — числовое выражение, определяющее длину поля представления данных. Параметр не является обязательным и имеет смысл только при задании числового или строкового типа;
- <Точность> — числовое выражение, определяющее число знаков после десятичной точки. Параметр не является обязательным и имеет смысл только при задании числового типа.
Пример использования:
Константа.НазначитьТип("ТМЦ", "Справочник.Товары");
Примечание: Константы неопределённого типа — это константы, у которых свойство «Тип значения» установлено как <<"Неопределенный">>
.
Методы периодических констант
Получить значение периодической константы на дату, указанную в параметре, позволяет метод Получить()
. Англоязычный синоним имени метода — GetValue()
.
Синтаксис метода:
Константа.<ИдентификаторКонстанты>.Получить(<Дата>)
где
- <ИдентификаторКонстанты> — идентификатор константы, как он указан в Конфигураторе;
- <Дата> — выражение типа
"
Дата"
, содержащее дату, по состоянию на которую необходимо получить значение константы.
Пример использования:
РазмерДК = Константа.РазмерКомпенсации.Получить(ДатаДок);
Установить значение периодической константы на дату, указанную в параметре, позволяет метод Установить()
. Англоязычный синоним имени метода — SetValue()
.
Синтаксис метода:
Константа.<ИдентификаторКонстанты>.Установить(<Дата>, <Значение>)
где
- <ИдентификаторКонстанты> — идентификатор константы, как он указан в Конфигураторе;
- <Дата> — выражение типа
"
Дата"
, содержащее дату, по состоянию на которую необходимо установить значение константы. - <3начение> — выражение, содержащее значение, которое необходимо установить.
Пример использования:
Константа.РасчетныйСчет.Установить('01.07.96', "77889001010000456511"); Константа.Директор.Установить('01.01.85', "Иванов П.С.");
Предопределенная процедура ПриЗаписиКонстанты()
При интерактивной записи значения константы, системой «1С:Предприятие» производится вызов предопределённой процедуры ПриЗаписиКонстанты()
.
Данная процедура может находиться в только глобальном модуле. Обычно она используется для расширения возможности управления правами доступа пользователя к системе, а также для проверки правильности введённого значения. Если в данной процедуре с помощью системной функции СтатусВозврата()
установить статус возврата 0 (например, в случае, если данное значение константы запрещено), то запись константы не будет выполнена.
Синтаксис процедуры:
Процедура ПриЗаписиКонстанты(<ИмяКонстанты>, <3начение>) . . . КонецПроцедуры
где
- <ИмяКонстанты> — идентификатор константы, как он задан в Конфигураторе;
- <3начение> — новое значение константы.
Пример использования:
Процедура ПриЗаписиКонстанты(ИмяКонстанты, НовЗначение) Если ИмяКонстанты = "ТекущийПрефикс" Тогда Если НазваниеНабораПрав() = "Продавец" Тогда Предупреждение("У вас нет права менять префикс!", 2); СтатусВозврата(0); КонецЕсли; КонецЕсли; КонецПроцедуры
Другие статьи по схожей тематике
- Объект
"
Периодический"
- Объект
"
СписокЗначений"
- Работа с перечислениями
- Работа со строковыми значениями
- Работа с числовыми значениями
- Работа с датами
Предстоящие
несколько выпусков будут посвящены рассаднику
ошибок — работе с периодическими константами и
реквизитами справочников. Ошибки допускают все —
и программисты и пользователи. Кто из них больше —
не известно. Видимо, пользователи, так как
пользователей больше. Но если брать процентное
отношение ошибок к численности пользователей и
программистов, то я думаю, что последние победят
(к своему стыду). Сегодня рассмотрим самый
простой вариант: работу с периодическими
константами.
Я надеюсь, Вы знаете,
что такое Константа. По этому сразу буду
объяснять, что такое периодическая
константа. В повседневной жизни вокруг нас
существует много параметров, которые регулярно
меняются. Примеров можно привести много:
температура окружающего воздуха, атмосферное
давление, Ваш рост, вес, 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) есть
обработка, которая называется
«Организация». Познакомьтесь с ней. В ней Вы
найдете большое количество примеров
использования констант (как периодических так и
не периодических)
Константы на платформе 1С:Предприятие 7.7 — это агрегатный тип данных, предназначенный для хранения постоянных (не изменяемых во времени) или условно-постоянных (редко изменяемых во времени) значений. Константа может принимать значения как простых (базовых) типов, так и ссылочных (агрегатных) типов. Примеры констант: «Минимальный размер оплаты труда», «Размер командировочных за день», «Дата начала действия контроля движения по складам» и прочие настройки.
Все константы конфигурируются (создаются и управляются) в дереве метаданных. Физически они хранятся в одной таблице (файле), в которой всего одна строка, и каждая константа представлена колонкой таблицы.
Константы могут быть двух видов:
- Непериодическими — значение константы одно и не привязано к дате;
- Периодическими — значений константы несколько и каждое из них связано с датой;
Все константы относятся к глобальному контексту, но работа с константами разных видов существенно отличается.
Непериодические константы
Для доступа к значению непериодической константы необходимо использовать конструкцию вида:
Константа.<Идентификатор>
где Идентификатор
— идентификатор константы, как он задан в конфигураторе.
Чтобы присвоить значение константе, достаточно упомянуть ее в левой части от оператора присваивания. Чтобы прочитать значение — в правой части оператора присваивания, в любом арифметическом или логическом выражении, а также передать в качестве параметров процедур и функций:
//установим значение числовой константы Константа.МРОТ = 9800; //прочитаем значение константы СуммаНачисления = Константа.МРОТ * КоличествоДней;
Будьте внимательны! Если Вы случайно ошибетесь в идентификаторе константы, то обнаружите ошибку только в режиме 1С:Предприятие: Поле агрегатного объекта не обнаружено (МОТ)
В том случае, когда константа имеет неопределенный тип, перед первым присвоением значения необходимо назначить ей тип. Это делается с помощью метода НазначитьТип(). Только после этого константе можно будет присвоить значение указанного типа:
//для примитивных типов Константа.НазначитьТип("ПараметрЗапуска", "Число", 1); Константа.ПараметрЗапуска = 1; //для агрегатных типов СпрТовары = СоздатьОбъект("Справочник.Товары"); Если СпрТовары.НайтиПоКоду(1) = 1 Тогда Константа.НазначитьТип("ПараметрЗапуска", "Справочник.Товары"); Константа.ПараметрЗапуска = СпрТовары.ТекущийЭлемент(); КонецЕсли;
Периодические константы
Итак, значения периодических констант привязаны к дате. Это значит, что при установке любого значения такой константы, необходимо указать дату. Старое значение константы будет действовать до указанной даты, новое значение — с указанной даты.
Для установки значения периодической константе используется метод Установить(), в качестве параметров которого необходимо указать значение и дату установки значения:
Константа.<Идентификатор>.Установить(Дата, Значение);
Для получения значения периодической константы используется метод Получить(), в качестве параметра которого необходимо указать момент времени, на который необходимо получить значение константы:
Константа.<Идентификатор>.Получить(МоментВремени);
Для получения доступа к истории изменения значений периодической константы служит объект встроенного языка Периодический
Все методы констант
Методы непериодических констант | |
---|---|
НазначитьТип() | назначает тип константе неопределенного типа |
ПолучитьАтрибут() | возвращает значение константы по ее идентификатору |
УстановитьАтрибут() | устанавливает значение константы по ее идентификатору |
Методы периодических констант | |
Получить() | возвращает значение периодической константы на дату |
Установить() | устанавливает значение периодической константы на дату |
19.03.05 — 15:14
Документом вносим данные по периодической константе, но если мы этот док-т делаем непроведенным, то запись сделанная этоим документом в истории константы сохраняется. А надо что-бы эта запись исчезала.
1 — 19.03.05 — 15:26
Следует различать два способа установки значений периодических конствнт, возможных к использованию в модуле документа. И:
— или использовать способ, который применяем ТОЛЬКО в модуле документа для констант с установленным признаком «Изменяется документами» — тогда при распроведении/перепроведении такие установленные значения будут очищаться/переустанавливаться автоматически (если, конечно, не забыть у документа проставить галку в «Автоматическое удаление движений»;
— или при использовании более универсального способа — обеспокоиться в предопределенной процедуре «ПриОтменеПроведения(..)» поиском в истории константы установленного ранее этим документом (при проведении) значения и его удалением — программно.
Первый способ представляется более корректным, но судя по тому, что написано в (0), используется второй способ, сопряженный с большим гимором, и потенциально делающий возможным внесение большего количества ошибок.
2 — 19.03.05 — 15:29
процедура ОбработкаУдаленияПроведения()
Константа.ТвояКонтанта.Установить(ДатаДок, ТвоеЗначение)
конецпроцедуры
3 — 19.03.05 — 15:44
(1) Можно пояснить что за константы (с установленным признаком «Изменяется документами»)
и где ставиться галочка «Автоматическое удаление движений»
4 — 19.03.05 — 15:54
«Изменяется документами» — свойство периодических реквизитов справочников (не констант).
«Автоматическое удаление движений» — свойство документов.
5 — 19.03.05 — 15:56
(4) а как быть с константами перидическими? или лучше эти реквизиты сделать в справочнике?
6 — 19.03.05 — 15:58
(5) Правильно использовать константы. То, что их значение меняют документы, очень смахивает на маразм.
7 — 19.03.05 — 15:59
что за константы (с установленным признаком «Изменяется документами») —
этим свойством обладает только реквизит справочника.
Автоматическое удаление движений — в форме документа в конфигураторе
8 — 19.03.05 — 16:23
(6) может и маразм, но просто есть всего один показатель, который надо менять периодичски, а делать из-зи него новый справочник я не решился.
Изменения будут делать неопытные операторы и во избежания всяких ошибок я сделал изменение документом, со всякими проверками.
Ну так можно ли удалять в истории реквизита (константы) данные внесенные докуметом, при его отмене? — именно удалять, а не хаменять на старые
9 — 19.03.05 — 16:29
(8) А что мешает проверки делать в глобальном модуле? Религия? Тогда уж лучше обработкой — пример стандартная настройка.
10 — 19.03.05 — 16:36
(9) Со стандартной никак не связана, я простенькую конфигурацию для шефа пишу.
А насчет проверки — то в данном моменте нет разницы где её писать (или в глобальном или локальном)
11 — 19.03.05 — 16:36
(8) Не «может и маразм», а совершенно определенно: МАРАЗМ.
Даю подсказку: сам Журнал Документов является объектом с периодическим значением реквизита.
Всего-то — простейшая функция в ГМ. И можно не лапать отмену проведения…
12 — 19.03.05 — 16:43
(10) ЖКК
Процедура ПриЗаписиКонстанты(<?>,)
КонецПроцедуры
Синтаксис:
ПриЗаписиКонстанты(<ИмяКонстанты>,<Значение>)
Назначение:
Предопределенная процедура при интерактивном вводе значения константы.
Параметры:
<ИмяКонстанты> — строка с названием константы;
<Значение> — введенное значение.
Замечание:
Данная процедура может располагаться только в глобальном программном модуле.
Подробнее см. в документации, глава ‘Системные предопределенные процедуры’
Не нравится, СтатусВозврата(0);
13 — 19.03.05 — 16:49
(12) Да не нужна здесь никакая константа… См.(0): «Документом вносим данные по периодической константе» — чушь собачачья так константу использовать. И на кой это нужно, если документ несет в себе нужное значение в реквизите? Найти это значение на временной оси не требует использования ничего, кроме существования самого документа.
14 — 19.03.05 — 16:51
(11) Ты конечно прав и журнал документов можно использовать в виде истории, но я все-таки хочу сделать периодический реквизит (лучше константу, если не удасться то элемент справочника) который бы правильно отражал историю данных вводимых документом. В дальнейшем мне будет удобнее работать с этим в отчетах
15 — 19.03.05 — 16:56
(14) Делай… Только вот сколько этих самых документов будет… Только все периодические реквизиты справочников в том же файле констант… Только все строки неопределенной длины в том же справочнике констант…
Делай. Раз умеешь только обращатся к Константе, а написать обращение к функции для тебя затруднительно, делай.
16 — 19.03.05 — 16:59
(15) Не нервничай. Мне тоже больше нравится Констнта.ЧтоТо.Получить чем строить выборку документов.
(14) Откажись от документа, как цели для этой задачи.
17 — 19.03.05 — 17:04
(16) Сколько тебе потребуется времени написать функцию ЧтоТоПолучитьИзДокументов(ДатаАктуальности)?
18 — 19.03.05 — 17:17
(17) В минуту уложусь. А мне оно надо? 1С ее уже написала.
(18) Тогда объясни автору ветки, что есть правильно мыслить.
11
Чтобы ввести или отредактировать значение константы, дважды щелкните по полю Значение этой константы. Для сохранения изменений нажмите клавишу ENTER. Для отмены – ESC.
Значения констант можно вводить как непосредственно в окно Список констант, так и с помощью команд из меню Сервис: Сведения об организации, Общая настройка и Учетная политика.
Практическое задание
1.Измените рабочую дату на 30 апреля.
2.Откройте Список констант на весь экран, измените ширину столбца Наименование и ознакомьтесь со списком.
3.Введите значение константы Организационноправовая форма — Открытое акционерное общество. Измените дату регистрации на 30.04.2004.
4.Измените значение константы Применяется ПБУ 18/02: дважды щелкните по полю Значение, нажмите появившуюся справа кнопку (чтобы раскрыть список возможных значений), выберите значение Нет и нажмите клавишу ENTER.
5.Откройте окно Сведения об организации. Изменилось ли значение параметра Дата регистрации Организация?
На этапе конфигурирования системы 1C:Бухгалтерия любая константа может быть объявлена периодической. Если константа периодическая, то в списке констант хранится не только последнее ее значение, но и все ранее существовавшие значения с датами их ввода.
Если константа вводится впервые и для ее ввода используется команда Сведения об организации, датой ввода считается первое
12
января текущего года. Изменения значений, вводимые этой командой, записываются с рабочей датой. Значения, которые вводятся через окно Список констант, записываются на рабочую дату, указанную в заголовке окна. Для просмотра и редактирования истории значения константы необходимо:
Установить курсор в строку с нужной константой.
Нажать на панели инструментов окна Список констант
кнопку История или выбрать команду История значения из меню Действия или нажать клавишу F5.
На экране появится окно История. Для изменения даты ввода или значения константы, щелкните дважды по изменяемому параметру. Для ввода нового значения используйте кнопку Новая строка. Для копирования значения строки используйте кнопку Копировать. Для удаления записи
из истории значений воспользуйтесь кнопкой Удалить. Выполнять действия с записями истории можно и через
меню Действия.
1С: Предприятие использует то значение периодической константы, которое соответствует дате совершения хозяйственной операции.
Если значение константы меняется несколько раз в течение одного дня, то в историю ее значений добавляется только одно, последнее введенное значение.
Если константа имеет длинную историю, нужное значение можно быстро найти по дате: установите становить курсор в колонку Дата, введите дату в формате: ГГММДД (год, месяц и число без разделителей).
Практическое задание
1.Просмотрите список констант. Как Вы думаете, какие константы должны быть периодическими?
2.Найдите константу Ставка рефинансирования.
3.Определите, соответствует ли ее значение ставке рефинансирования ЦБ России в настоящий момент. Выпишите даты изменения и значения ставки с 2001 г. Установите ставку рефинансирования 14% с 01.08.2004.
4.Просмотрите историю значения константы Ставка рефинансирования и ответьте, каким числом введено последнее значение?
5.Отредактируйте историю так, чтобы список отражал все изменения ставки до текущей даты.
6.Определите, какие из констант являются периодическими.
В платформе 1С 8.3 имеется объект метаданных Константы. Смысл констант в языке программирования 1С несколько другой, чем в других языках. В 1С константы хранят постоянную или условно постоянную информацию, которая редко изменяется. Здесь я опираюсь на слово «изменяется». Если в других языках программирования пользователь не может менять константу, то в платформе 1С имеется такая возможность, но по определению делать он это должен крайне редко. В этой статье мы будем учиться работать с константами: научимся создавать их, научимся работать с константами в командном интерфейсе 1С 8.3, узнаем, что такое форма констант и научимся программно обращаться к константе: получать значение константы и записывать константу.
Создание константы в 1С
Создадим несколько констант 1С. Обратите внимание на ветку Константы в дереве метаданных конфигуратора 1С, это именно то место, где в 1С расположен список констант. Найдем эту ветку в дереве, выделим её, и вызовем правой кнопкой мышки контекстное меню, в котором нас интересует команда «Добавить».
После выполнения этой команды, константа будет создана, а в правой части рабочего стола откроется палитра свойств новой константы. Здесь мы можем указать название константы и её тип. Пусть наша первая константа будет называться НазваниеОрганизации (тип строка (200)).
Создадим еще несколько констант с примитивными типами.
Дата начала работы организации (тип Дата).
Процент налога на прибыль (тип число)
Константы в командном интерфейсе 1С
Если я сейчас попробую сохранить конфигурацию, то выйдет сообщение, что мои новые константы не включены ни в одну подсистему.
Можно это сообщение проигнорировать и работать дальше (тогда доступ к значениям константан будет затруднен, но критических проблем не возникнет), а можно добавить константы в подсистему 1С.
В моей учебной конфигурации имеется подсистема НСИ, в эту
подсистему я и добавлю все новые константы
Сделать это можно двумя способами.
Первый. Открыть редактор нужной подсистемы, и на закладке Состав включить вхождение нужной
константы в подсистему.
Подробнее о создании и конфигурировании подсистем в 1С
Второй. У константы вызвать контекстное меню, в котором
выполнить команду «Дополнительно».
В открывшейся в правой части окне «Дополнительно», на закладке Подсистемы нужно установить флаг рядом с той подсистемой, в которую хотите включить константу.
После включения всех констант в подсистему и обновления базы данных, мы сможем найти все новые константы в панели действий сервис.
Разберем, почему они там оказались.
Во-первых, если мы войдем в командный интерфейс подсистемы НСИ, в которую я добавил все константы, то найдем их в группе команд «Панель действий. Сервис», в эту группу платформа поместила команды на открытие констант автоматически, после того, как мы добавили константы в подсистему.
Во-вторых, у каждой константы имеется свойство Использовать стандартные команды, это свойство отвечает за то, будут ли использоваться стандартные команды работы с константой (открытие формы редактирования) или нет.
Например, если мы снимем это свойство у константы «Процент налога на прибыль».
То команда на открытие этой константы исчезнет, как и из
командного интерфейса подсистемы.
Так и из командного интерфейса пользовательского приложения.
Если мы выполним команду на открытие константы из пользовательского интерфейса, то откроется форма для ввода (редактирования) константы (поле ввода может меняться в зависимости от типа данных константы).
Подробно о командном интерфейсе подсистемы 1С
Форма констант 1С
Редактировать константы в каждой отдельной форме иногда не совсем удобно, гораздо практичнее, чтобы все константы можно было отредактировать в одной форме. Для этих целей можно создать форму констант, посредством которой и будут редактироваться все константы, которые разработчик включит в эту форму.
Создадим форму констант. Для этого нужно выделить ветку
метаданных Константы, вызвать
контекстное меню, и выполнить команду «Создать форму констант…» этого меню.
Откроется конструктор общих форм.
Где советую обратить
внимание на Тип Формы, и на свойство Использовать стандартные команды. Первое
указывает, что это форма константа, а при установке второго будут созданы
стандартные команды на открытие этой формы.
После нажатия кнопки Далее,
необходимо будет выбрать, какие константы войдут в эту форму.
После того, как выбрали нужные константы, нажимаем кнопку Готово, и управляемая форма констант будет создана.
Замечу, что форма добавилась в ветку Общие формы ветки Общие
дерева метаданных 1С.
Нам осталось включить общую форму констант в подсистему. Для
этого вызовем контекстное меню общей формы констант и выполним команду «Дополнительно»
В открывшемся окне включим форму констант в подсистему 1С.
Также эту форму можно добавить в подсистему, напрямую во время редактирования подсистемы.
У всех остальных констант я отключил свойство Использовать стандартные команды, поэтому в командном интерфейсе отображается только новая форма констант.
Как в командном интерфейсе подсистемы в конфигураторе.
Так и в пользовательском режиме
Если эту форму открыть, то в ней будут поля ввода для всех констант,
которые мы добавили при создании этой
формы.
Что делать, если форма уже создана, но позже добавили новую константу, например «ИНН Организации».
Тогда следует добавить новую константу на форму. Для этого, нужно открыть форму на редактирование, развернуть в закладке Реквизиты дерево НаборКонстант, найти в этом дереве новую константу и перетащить её в элементы формы.
Как получить константу 1С
Для того чтобы получить значение какой-либо константы, нужно обратиться к менеджеру конкретной константы посредством менеджера всех констант, а потом воспользоваться методом Получить. Например, если мы по какой-то команде хотим в сообщение вывести название нашей организации из константы, для получения и вывода значения константы будем использовать следующий код.
&НаСервереБезКонтекста Процедура ПолучитьНаСервере() НазваниеОрганизации = Константы.НазваниеОрганизации.Получить(); Сообщить(НазваниеОрганизации); КонецПроцедуры &НаКлиенте Процедура Получить(Команда) ПолучитьНаСервере(); КонецПроцедурВ этом случае процедура Получить(Команда) это обработчик команды, которая вызывает процедуру ПолучитьНаСервере. В этой процедуре используется объект Константы, который имеет тип КонстантыМенеджер, и посредством которого можно программно обратиться к любой константе.
Константы.НазваниеОрганизации – это уже менеджер конкретной константы, у которого есть метод Получить(), при помощи которого можно получить значение константы.
Вы заметили, что с менеджером команды я работаю в серверном контексте (под директивой &НаСервереБезКонтекста, но можно использовать и директиву &НаСервере ). Это потому что менеджер констант имеете доступность Сервер, Толстый клиент и прочее «тяжелые» режимы. В тонком клиенте нельзя обратиться к менеджеру констант!
Установить значение константы
Если мы хотим программно установить значение новой
константы, или изменить значение уже существующей константы, то мы можем
воспользоваться тем же менеджером константы и его методом Установить.&НаСервереБезКонтекста Процедура УстановитьНаСервере() Константы.ПроцентНалогаНаПрибыль.Установить(25); КонецПроцедуры &НаКлиенте Процедура Установить(Команда) УстановитьНаСервере(); КонецПроцедурыВ параметрах метода менеджера Установить необходимо указать новое значение константы. Замечу, тип значения в параметре должен совпадать с типом константы. Точно также как и с получением значения, устанавливать значение константы нужно в серверном контексте.
Другие статьи по теме конфигурирования:
Документы в 1С 8.3
Справочники в 1С 8.3
Предопределенные элементы справочников 1С
Формы справочников в 1С 8.3
Журнал документов в 1С 8.3
Табличные части объектов 1С
Более подробно и основательно начальные вопросы программирования в 1С есть вы можете изучить в
Книга «Программировать в 1С за 11 шагов»Изучайте программирование в 1С в месте с моей книгой «Программировать в 1С за 11 шагов»
Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника.
О том как разрабатывать под управляемым приложением 1С, читайте в книге Книга «Основы разработки в 1С: Такси»
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Эти книги, плюс книга по программированию оперативного учета имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам понравился этот урок, был полезен или помог решить какую-нибудь проблему, то Вы можете поддержать мой проект, перечислив любую сумму.можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655Вступайте в мои группы:
Вконтакте: https://vk.com/1c_prosto
Фейсбуке: https://www.facebook.com/groups/922972144448119/
ОК: http://ok.ru/group/52970839015518
Твиттер: https://twitter.com/signum2009