1с как получить выборку из регистра сведений
Описание:
Основной задачей регистра сведений является хранение информации необходимой для прикладной задачи , состав которого расширяется на определенную комбинацию значений и расширяется со временем при необходимости. Информационные записи, в которых информация отображается с течением времени, называются периодическими.
Например, если мы хотим хранить информацию о ценах конкурентов на продаваемые нами продукты, собранная информация о ценах делится по продуктам и конкурентам. А если мы хотим следить за динамикой изменения цен и вводить их регулярно, то хранимая информация также со временем эволюционирует.
Журнал информации — это фактически поле данных, необходимых для реализации функции. который может вернуть информацию, необходимую для данного набора аргументов. Аргументы функции называются измерениями, а результат функции называется ресурсами. В приведенном выше примере запись CompetitorPrices будет содержать параметры «Конкурент» и «Продукт» и ресурс «Цена». Источников может быть больше одного: например, вы можете хранить оптовые и розничные цены.
Поле «Период» записи используется для изменения этой информации во времени. Он не вводится как показатель, а автоматически заполняется системой при создании периодической записи.
Для периодических записей информации система поддерживает стандартные операции, такие как получение последнего или первого значения для заданной комбинации. измерений (например, получение последней введенной цены на конкретный товар и конкретного конкурента), а также получить некоторые из самых новых или самых старых значений. Например, можно получить все последние введенные цены для различных продуктов и конкурентов.
Если запись не является периодической, поле «Период» не создается. В приведенном выше примере журнал «Цены конкурентов» может быть неповторяющимся, если мы не хотим хранить историю изменения цен, а хотим иметь только текущие цены. Таким образом, функция логирования сможет ответить на вопрос «какова текущая цена такого-то конкурента на такой-то товар», но не сможет ответить на вопрос «какова была цена такого-то товара». -и такой-то товар?» такого-то конкурента на начало года».
Из описанных принципов работы реестра сведений следует, что в системе может быть только один реестр с определенным набором и периодом измерений.
На самом деле цена на товар для конкурса может быть только одна, если по каким-то причинам мы можем получить несколько цен и мы хотим внести эту информацию в базу данных, затем нам нужно создать еще одно измерение для хранения значения, которое эти цены могут отличаться. Например, вы можете создать измерение «Источник информации». Тогда можно будет вводить цены конкурентов в разрезе ресурсов.
Уникальность записей по набору показателей принципиально отличает информационные записи от накопительных записей, которые позволяют вводить несколько записей. с тем же показателем значения и периодом.
Строки информационных записей, которые содержат информацию о значениях ресурсов для определенных значений измерения и определенного периода, называются записями. Записи в реестре сведений могут быть сделаны делается двумя способами: вручную или с помощью документов.
Эти два варианта влияют на способ ввода информации, а не на основную логику реестра.
Документ. тот, кто вносит запись в реестр сведений, называется регистратором.
Независимо написанные регистры можно свободно редактировать вручную или с помощью встроенного языка. В этом случае, если измерение такого реестра помечено как «родительское», а значение измерения является ссылкой на объект базы данных, запись реестра будет считаться значимой только в том случае, если этот объект существует. Например, если вы назначите измерение «Конкурент» лидером, запись будет считаться значимой только как информация об этом конкуренте. Таким образом, устранение конкурента автоматически удаляет для него билеты.
Если регистратор пишет запись, значит, записи будут строго подчинены регистраторам: документы. Обычно это означает, что записи будут создаваться при регистрации документов. В результате при удалении документа записи будут удалены автоматически. В отличие от основных измерений, регистратор может быть только один.
В модулях программы объект < используется для действий с журналом общей информации (поиск, выбор и создание записей журнала). 7> Менеджер Регистра Информации. . Для чтения, записи и удаления отдельных записей регистра сведений, которые не управляются регистраторами, используйте объект InformationRegisterRecordManager. . Читать и вносить набор записей в базу данных по определенному условию отбора использует объект InformationRegisterRecordSet. . Чтобы динамически пропускать записи реестра, используйте объект InformationRegisterSelection. .
Источник
Программирование в 1С для всех
В предыдущей статье Работа с набором записей журнала информации мы узнали, как использовать запись информации об объекте Recordset для массового создания записей. В процессе записи набора наша запись полностью удаляется или добавляются новые записи с сохранением старой. Кроме того, во втором случае не выполняется проверка уникальности по измерениям и возникает ошибка «Запись с такими ключевыми полями существует!»
Однако очень часто встречаются задачи, когда необходимо модифицировать некоторые существующие записи , например, сделав выборку по одному или нескольким параметрам. Эти задачи выполняются путем выбора набора записей.
Рассмотрим следующую проблему: в моей конфигурации есть отдельная периодическая информационная запись «Цены на топливо», которая имеет следующую структуру.
Нам нужно изменить все цены у конкурирующего поставщика за все периоды, умножив их на какой-то коэффициент. Для решения этой задачи нам нужно задать нужный нам выбор поставщика, прочитать данные, пропустить полученный набор входных данных и изменить цену рекурсивно.
В этом коде с помощью выбора свойство объекта Recordset , убедитесь, что набор содержит записи, соответствующие только поставщику , требуемому .
При выборе они являются свойством объект, все размеры информационной записи и период, если это периодическая информационная запись. Если запись данных подчинена регистратору, то отбор возможен только регистратором.
При обращении к свойству объекта Фильтр по имени измерения получаем объект Filter , этот объект имеет только один метод: Set . Этот метод устанавливает значение выбора.
Можно выбрать по одному полю или по нескольким полям. В случае выборки по нескольким полям логическая связь между полями будет создана с помощью логической операции «И» .
Обратите внимание, что выборка в информационных записях возможна только быть настроены на один уровень!
После того, как мы установили выборку, нам необходимо загрузить данные из базы данных в объект Recordset , это делается с помощью метода Read . Этот метод считывает записи из базы данных на основе выбранного выбора и записывает их в объект RecordSet .
Как вы уже знаете, объект Recordset является коллекцией объектов Записи информации журнала . Итак, после использования метода Количество мы сначала проверяем, есть ли какие-либо записи для этой выборки, мы перепрыгиваем эту коллекцию с помощью цикла: Для каждого… Цикл . Где переменная NormaRecord является объектом Information Record Record . С помощью этого объекта мы имеем доступ ко всем полям информационной записи и можем изменять их по своему усмотрению. После того, как мы изменили все необходимые входные данные, нам нужно записать множество. Обращаю внимание на то, что записывается вся целиком, а не запись по отдельности.
Кроме того, есть возможность проверить наличие уже существующих записей с помощью выделения. Например, мы записываем данные в нашу запись, но сначала проверяем, есть ли записи для необходимых полей.
В этом коде мы используем фильтры, чтобы получить определенный набор записей, которые должны соответствовать установленным фильтрам. . А если данных о наборе выборок нет, создаем новую запись.
Обратите внимание, что после применения к набору записей метода Прочитать состав набора меняется в зависимости от выбранного выбор.
С помощью набора записей вы можете не только создавать новые записи, но и удалять существующие. Например, давайте решим следующую задачу: удалить все записи для определенного вида топлива.
В этом коде мы получаем данные для определенного набора и удаляем его.
Учимся устанавливать основы в 1С и научитесь программировать в 1С:Предприятие с помощью моих книг: «Программирование 1С за 11 шагов» и «Основы разработки 1С: Такси»
Учитесь программировать 1С на месте из моей книги» Программирование в 1С за 11 шагов»
- Книга написана понятным и простым языком для начинающих.
- Книга высылается по электронной почте в формате PDF. Ее можно открыть на любом устройстве!
- Научиться разбираться в архитектуре 1°С
- Написать код на языке 1С
- Изучить основы программирования
- Закрепить полученные знания с помощью рабочей тетради
Отличное руководство по разработке в управляемом приложении 1С про как начинающим разработчикам, так и опытным программистам.
- Очень доступный и понятный язык
- Книга высылается по электронной почте в формате PDF. Его можно открыть на любом устройстве!
- Понять идеологию управляемого приложения 1С
- Научиться разрабатывать управляемое приложение;
- Научиться разрабатывать управляемые формы 1С;
- Вы сможете работать с основными и необходимыми элементами управляемых форм
- Планирование под управляемым приложением будет понятным
Промокод на Скидка 15% — 48PVXHeYu
Если этот туториал помог вам решить какую-либо проблему, он вам понравился или оказался полезным, вы можете поддержать мой проект, переведя любую сумму:
Возможна оплата вручную:
Яндекс.Деньги — 410012882996301
Web Money — 955262494655
Источник
Информация по оформлению отбора заявок в 1С
Здравствуйте, коллеги! В этой статье мы рассмотрим, как получить записи из информационного журнала с подборкой других записей для работы с ними.
Предположим, что в какой-то базе данных есть информационная запись, в которой хранятся данные о доставке товары. Задача состоит в том, чтобы обновить информацию в каждой из этих записей, нажав кнопку или добавить новую информацию в пустые поля, чтобы получить набор информационных записей.
1. Информационная запись набора записей
Для выполнения этой задачи вы можете использовать функцию набора записей информационной записи с использованием объекта RecordSet. Создавать объект «RecordSet», необходимо получить доступ к информационной записи и вызвать метод «CreateRecordSet()». В результате получаем пустую коллекцию объектов типа «InformationRegisterRecord».
Создаем набор информационных записей
Представим, что у нас есть какие-то исходные данные и нужно получить записи, где значения полей равны нашим исходным данным. Для этого используем свойство «Выбор» ранее полученного объекта, после чего вызываем метод «Установить (параметр выбора)». Этот метод можно вызывать несколько раз, если вам нужно настроить выбор записи журнала данных с использованием нескольких полей. Если есть несколько вариантов выбора, соединение будет выполнено с использованием логического «И».
Выбор записей информационного журнала
После настройки выбор записи, получить записи с выбранным выбором, вам нужно будет вызвать метод «Чтение()», чтобы прочитать записи из информационной записи с выбором, который был установлен ранее. После выполнения этого метода коллекция Recordset будет заполнена выбранными данными из информационной записи.
Метод для чтения набора записей
Вы Затем можно перебрать полученную коллекцию и добавить или изменить некоторые поля в каждой записи. Или обработайте их любым другим доступным способом.
Цикл набора записей
Чтобы записать измененные данные в базу данных, необходимо вызвать » Write( )», после чего весь набор записей после выделения будет записан обратно в информационную запись с новыми или измененными данными.
Команда записи в информационная запись log
Наборы записей журнала полезны, когда вам нужно записать большой набор значений с некоторыми из одинаковых полей.
Особенность выделения в инфо-записи заключается в том, что может быть установлено только равенство или например, параметр «Записи, в которых поле «Количество» больше 4″ нельзя установить, можно использовать только «Записи, в которых «Количество» равно 5″.
В случае, если вы нужно выбрать записи по какому-то другому условию, например записи и н те, у которых поле «сумма» имеет значение больше 4, или если нужно использовать связь отличную от логического «И», например «ИЛИ» : » Физическое лицо = полное имя» ИЛИ «Год рождения
Запрос Infolog
Результатом будет таблица, подобная этой:
Результат запроса Infolog
В данном запросе информации о записях были отобраны все записи, в которых дата рождения человека меньше 31.08.2000, но при этом, благодаря логическому «ИЛИ», человека к результату запроса. , чья дата рождения не соответствовала первому условию, но соответствовала второму.
Получив результат запроса, с ним можно делать все, что угодно, в том числе записать обратно в протокол.
2. Диспетчер записей инфолога
Если все записи в инфологе уникальны или вы хотите получить только одну запись, вам следует использовать объект RecordManager.
Диспетчер записей инфолога создается аналогично набору записей, но другим методом: CreateRecordManager().
После создания можно настроить выбор информационной записи, задав значения поля и вызов метода «Чтение», который возвращает инфо-запись в переменную «ManagerRecords». информационная запись
Затем вы можете делать с этой записью что угодно, например ввести одно из полей этой записи.
Действие с логотипом после того, как менеджер возвращается к информации журнала
Стоит отметить, что журнал журнала менеджера, в отличие от набора записей журнала
Источник
Источник