При работе с регистрами расчета есть возможность получения базовых данных. Это своеобразный способ расчета оборотов регистра, при котором функция расчета оборотов не является простой функцией суммирования ресурсов регистра по измерениям за определенный период, а представляет собой более сложную функцию. Эта функция зависит от состояния плана видов расчета, назначенного регистру расчета и, таким образом, управляется пользователем.
В данном разделе мы рассмотрим два существующих в системе способа получения базовых данных - при помощи языка запросов и при помощи функциональной записи, методом ПолучитьБазу(). При этом будет называть "основным" регистром расчета тот регистр, для которого необходимо получить базовые данные, а "базовыми" регистрами (которых в общем случае может быть несколько) будем называть те регистры, для которых выполняется суммирование ресурсов.
Мы не будем рассматривать эти способы подробно, рассмотрим только их отличия и область применения.
Метод ПолучитьБазу()
Метод ПолучитьБазу() определен для объектов РегистрРасчетаМенеджер.<Имя регистра расчета> и РегистрРасчетаЗапись.<Имя регистра расчета>. Метод позволяет задать ресурсы базовых регистров, по которым необходимо получить обороты, задать поля, в разрезе которых нужно получить обороты и задать правила сопоставления измерений основного и базовых регистров расчета.
Правила сопоставления записей регистров расчета задаются структурой, каждый элемент которой задает для того или иного измерения основного регистра список измерений базовых регистров расчета. Имена элементов структуры должны совпадать с именами измерений основного регистра, а значения элементов структуры - строки, со списком измерений базовых регистров через запятую. Если элемент структуры с именем того или иного измерения не задан, то это значит, что на соответствующее измерение не налагается условие.
Имена измерений и ресурсов базовых регистров задаются в формате <ИмяРегистраРасчета>.<ИмяПоля>.
Пример использования метода:
В приведенном выше примере измерение "Физлицо" основного регистра при получении оборотов будет сопоставляться с измерением "Физлицо" базового регистра "ОсновныеНачисления" и измерением "Работник" базового регистра "ДополнительныеНачисления".
Таблица языка запросов для получения базовых данных
Для получения базовых данных в языке запросов определены виртуальные таблицы "РегистрРасчета.<Имя регистра расчета>.База<Имя базового регистра расчета>". В качестве параметров виртуальной таблицы задаются измерения основного регистра, измерения базового регистра и поля, в разрезе которых нужно получить базовые данные. Измерения и разрезы задаются как массив (или список значений) строк с именами измерений.
Пример написания запроса с использованием виртуальных таблиц базовых данных:
Приведенный пример предполагает ту же структуру данных и ту же решаемую задачу, что и пример для метода ПолучитьБазу(). При этом мы видим заметное увеличение исходного кода и кажущуюся его сложность.
Сравнение
Заметным отличием функционального метода получения базовых данных и получения при помощи запроса является то, что в функциональном методе одним вызовом метода можно получить базовые данные по всем базовым регистрам, а при использовании запросов получение базовых данных делается запросом к нескольким таблицам - по числу базовых регистров. Тем не менее, рекомендуемым способом получения данных является получение данных запросом. Это позволит, например, получить не только данные базовых видов расчета, но и дополнительную информацию, необходимую для расчета.
Отметим, что производительность получения данных при помощи функционального метода и при помощи запроса одинакова несмотря на кажущееся усложнение исполняемого кода в случае с запросами.
Краткая функциональная запись с использованием метода ПолучитьБазу() допустима только в том случае, если нет необходимости в иных данных помимо базовых, и при этом хочется "сэкономить" на строках кода. Совершенно не допустимо из соображений производительности кода, применение метода ПолучитьБазу() в том случае, если после его использование все равно придется при помощи запроса получать дополнительные данные для расчета.
Еще одно соображение касается условий отбора базовых данных. Для метода ПолучитьБазу(), фактически, нет возможности получить базовые данные иначе, чем по одной записи или по конкретному регистратору (с отбором по тем или иным измерениям). В случае же запроса в распоряжении у разработчика все возможности языка запросов по отбору записей.
Начиная с платформы 8.0 системы 1С Предприятие, существует возможность ограничивать права доступа пользователей на уровне записей. Для этого используется механизм RLS (Record Level Security). Такая «тонкая» настройка может быть полезна для ограничения доступа по организациям, клиентам, номенклатуре и др.
RLS – это возможность разработчика задать условие на таблицы базы данных для тех или иных пользователей (групп пользователей) и не дать им увидеть лишнего. Условие имеет булевый тип. Если значение условия принимает значение «истина», то доступ предоставляется, в противном случае – запрещается.
RLS используется одновременно с настройкой обычных прав доступа. Поэтому прежде чем приступить к настройке RLS, необходимо раздать обычные права на объекты конфигурации.
RLS применяется для следующих видов прав доступа:
* Чтение
* Добавление
* Изменение
* Удаление
Порядок настройки RLS
Рассмотрим простой пример выполнения настройки. Снимки экрана сделаны на версии 1С Предприятие 8.2 (8.2.9.356). Синтаксис шаблонов текстов ограничений описан в документации по 8.2 в книге «Руководство разработчика. Часть 1», поэтому на нем останавливаться не будем.
Итак, первым делом нужно определить шаблоны ограничений для каждой существующей роли.
После этого на основании указанных шаблонов задаются ограничения к необходимым объектам. Для редактирования текста условия можно воспользоваться конструктором ограничений доступа к данным.
Для редактирования нескольких ролей удобно управлять через окно «Все роли».
Для копирования условий в другие роли можно использовать окно «Все ограничения доступа». Шаблоны в другие роли могут копироваться только вручную.
Вот и все. Можно проверить результат.
Недостатки использования RLS:
1. Применение механизма ограничения доступа на уровне записей приводит к неявному увеличению таблиц, участвующих в запросе, что может привести к ошибкам в клиент-серверном режиме работы базы данных.
2. Для контроля записи бывает трудно или невозможно реализовать сложную логику приложения. В таких случаях лучше использовать условия в процедуре ПриЗаписи().
3. Написание условия (запроса) требует определенной квалификации разработчика.
4. Дополнительные трудности может создать невозможность отладки условия (запроса).
В типовых конфигурациях права на уровне записей могут быть заданы интерактивно для следующих объектов: организации, контрагенты, номенклатура, склады, подразделения, физические лица, заявки кандидатов и другие.
Следует помнить, что ограничения прав доступа на уровне записей довольно ресурсоемкий механизм и чем более сложные ограничения Вы поставите, тем медленнее программа будет работать, особенно при большой базе данных. Мелкоступов Александр
Географическая схема позволяет наглядно представить итоговые данные в разрезе их географического положения. Это позволяет создавать отчеты иллюстрирующие, например, объемы продаж тех или иных товаров в различных регионах страны. Также географическая схема может быть использована просто для отображения тех или иных географических данных, например, схемы проезда к офису или маршрута движения транспортного средства. Интерактивные возможности географической схемы позволяют изменять масштаб отображаемой схемы, получать расшифровки при нажатии мыши на объектах схемы и даже создавать новые географические схемы в режиме 1С:Предприятие
В основе работы географической схемы лежат шейп-файлы, содержащие топологические данные. Эти файлы могут быть созданы с помощью программ семейства ESRI ArcGIS. На сайте ESRI можно скачать просмотрщик схем.
В обновлении 10.3.10 типовой конфигурации «Управление торговлей, ред.10.3» порядок заполнения платежных поручений на уплату платежей в бюджет приведен в соответствие с Приказом Минфина РФ №102н от 01.10.2009 «О внесении изменений в приказ Министерства финансов РФ от 24.11.2004 №106н «Об утверждении Правил указания информации в полях расчетных документов на перечисление налогов, сборов и иных платежей в бюджетную систему РФ».
Перечисление денежных средств в бюджет и внебюджетные фонды, в таможню, по аренде государственного имущества и подобные платежи в адрес разного рода государственных структур оформляются документом «Платежное поручение исходящее».
Для оформления платежа можно:
- выбрать операцию «Перечисление налога»;
- выбрать другую операцию документа, перейти на закладку «Перечисление в бюджет» и установить флажок «Перечисление в бюджет».
Исключения: закладка «Перечисление в бюджет» невидима при выборе вида операции «Перевод на другой счет» и «Перечисление денежных средств подотчетнику».
ПЕРЕЧИСЛЕНИЕ НАЛОГА
Для перечисления таможенного платежа в документе «Платежное поручение исходящее» нужно выбрать вид операции «Перечисление налога», указать налоговый орган и сумму платежа.
На закладке «Перечисление в бюджет» нужно заполнить поля 101, 104 – 110 платежного поручения.
Порядок заполнения этих реквизитов соответствует Приказу Минфина РФ №102н от 01.10.2009 «О внесении изменений в приказ Министерства финансов РФ от 24.11.2004 №106н «Об утверждении Правил указания информации в полях расчетных документов на перечисление налогов, сборов и иных платежей в бюджетную систему РФ».
Правила заполнения полей 104 – 110 определяются выбранным в платежном поручении видом перечисления в бюджет:
- Налоговый платеж - используется для перечисления в бюджет налогов, сборов и других платежей, администрируемых налоговыми органами;
- Таможенный платеж - используется для перечисления в бюджет таможенных и иных платежей от внешнеэкономической деятельности;
- Иной платеж - используется для всех прочих перечислений денежных средств в бюджет (при аренде или покупке имущества, за услуги, оказанные государственными органами, административные платежи и сборы и т.д.). Вид перечисления «Иной платеж» устанавливается по умолчанию для всех видов операции, кроме операции «Перечисление налога».
ПЕРЕЧИСЛЕНИЕ ТАМОЖЕННОГО ПЛАТЕЖА
Для перечисления таможенного платежа в документе «Платежное поручение исходящее» нужно выбрать вид операции «Прочие расчеты с контрагентами», указать контрагента (таможню), сумму платежа, договор (с видом «Прочее»). Затем перейти на закладку «Перечисление в бюджет» и на этой закладке установить флажок «Перечисление в бюджет», указать вид перечисления «Таможенный платеж», заполнить другие необходимые реквизиты.
Перечисление таможенного платежа
Платежное поручение распечатывается или передается в программу «Клиент-банка». При поступлении выписки банка в платежном поручении ставится флажок «Оплачено».
ПЕРЕЧИСЛЕНИЕ ПЛАТЕЖА ЗА АРЕНДУ ГОСУДАРСТВЕННОГО ИМУЩЕСТВА
Для перечисления платежа за аренду госимущества в документе «Платежное поручение исходящее» нужно выбрать вид операции «Оплата поставщику», указать контрагента (госучреждение, управляющее имуществом), сумму платежа, договор (с видом «С поставщиком»). Затем перейти на закладку «Перечисление в бюджет» и на этой закладке установить флажок «Перечисление в бюджет», указать вид перечисления «Иной платеж», заполнить другие необходимые реквизиты.
Перечисление платежа за аренду государственного имущества
Платежное поручение распечатывается или передается в программу «Клиент- банка». При поступлении выписки банка в платежном поручении ставится флажок «Оплачено».
Добавление записи в журнал расчетов: Метод Новая может быть вызван где угодно, в глобальном модуле, модуле обработок, документов и т.д.
Данный метод проверяет корректность заполненных реквизитов журнала расчетов. При вводе новых записей журнала расчетов методами Новая и Записать обязательно должны быть заполнены следующие реквизиты записи журнала: Объект, Документ, ВидРасч. Кроме того, проверяется корректность реквизитов ДатаНачала и ДатаОкончания. Если реквизиты ДатаНачала и ДатаОкончания не установлены явным образом, при записи они устанавливаются как начало и окончание текущего расчетного прериода, соответственно. Реквизит ПериодРегистрации заполняется текущим значением расчетного периода, установленным для журнала расчетов (см. метод УстановитьПериодРасчета). Если реквизит РодительскийДокумент не установлен явным образом, для него устанавливается то же значение, что и для реквизита Документ. Если реквизиты Рассчитана, Сторно, Перерасчет, Фиксирована не установлены, то запись вводится как простая нерассчитанная, нефиксированная запись.
Внимание! При вводе новых записей в журнал расчетов методами Новая и Записать записи вводятся «как есть». Система не выполняет правила перерасчетов, а также правила взаимного вытеснения видов расчета. Ввод произвольных записей журнала расчетов очень ответственная операция. При использовании этих методов следует внимательно следить за логической целостностью журнала расчетов
Добавить записи в журнал расчетов которые вводятся при проведении документов: Методы ВвестиРасчет и ЗаписатьРасчет могут быть вызваны только в модулях документов,
вводящих расчеты. Вызвать эти методы в модулях иных объектов, например
в модуле формы списка ЖЗ или в модуле отчета (обработки), нельзя.
или
Отличие метода ЗаписатьРасчет заключается в том, что ввод вытесняющих расчетов приводит к вытеснению только тех расчетов, которые имеют меньший приоритет, а не меньший либо равный, как в случае с методом ВвестиРасчет. Это приводит, в частности, к тому, что за счет применения этого метода расчет не вытесняет «сам себя».
При записи невытесняющего расчета ввод новых записей также происходит «осмотрительно» — новые записи вводятся только в том случае, если в журнале расчетов нет точно такой же записи. Под точно такой же записью здесь подразумевается запись с таким же видом расчета, для того же объекта и с тем же периодом действия.
Вывод: Для обновления самовытесняющего расчета при его повторном вводе другим документом
вместо метода ЗаписатьРасчет используется метод ВвестиРасчет.