как установить отбор по регистратору 1с в коде

Манипулирование записями регистров без использования регистратора

В 1С:Предприятии 8 все регистры, кроме регистров сведений, всегда связаны с регистраторами. Регистры сведений могут быть независимыми или также подчиненными регистратору. В этом разделе мы опишем работу с регистрами, подчиненными регистраторам.

В большинстве случаев записи регистров, подчиненных регистраторам, создаются при проведении документов. Это наиболее «естественный» способ создания записей. В этом случае в процессе проведения документа формируются записи регистра, и, тем самым, происходит отражение в учете события описываемого документом.

Однако в 1С:Предприятии 8 существует возможность изменять записи регистров без участия документа. При этом следует учитывать, что каждая запись регистра всегда подчинена одному и только одному регистратору (документу). Поэтому с точки зрения «времени жизни» записи всегда подчинены конкретным регистраторам. Однако, записи могут изменяться без участия самого документа. Главное, чтобы в них имелась ссылка на документ.

Для изменения записей регистров, подчиненных регистраторам, используются наборы записей. При этом всегда используется отбор по регистратору. То есть совокупность записей, подчиненных одному регистратору, является «гранулой» изменения регистра. Нельзя добавлять или удалять отдельные записи. Можно только считывать и записывать записи по регистратору.

При изменении записей регистра можно использовать набор записей, входящий в коллекцию движений документа (свойство Движения объекта ДокументОбъект). Однако это не обязательно. Для изменения записей регистра можно использовать и набор записей созданный с помощью менеджера регистра.

Таким образом, чтобы изменить записи регистра необходимо:

Например, чтобы установить значение реквизита во всех записях регистра можно использовать следующий алгоритм.

//Выберем всех регистраторов регистра
Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ РАЗЛИЧНЫЕ
| УчетНоменклатуры.Регистратор
|ИЗ
| РегистрНакопления.УчетНоменклатуры КАК УчетНоменклатуры»;
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
//Обойдем регистраторов
Пока Выборка.Следующий() Цикл
Сообщить(«Изменение записей по регистратору: » + Выборка.Регистратор);
//Для каждого регистратора выполним изменение набора записей
НаборЗаписей = РегистрыНакопления.УчетНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Значение = Выборка.Регистратор;
НаборЗаписей.Прочитать();
Для каждого Запись Из НаборЗаписей Цикл
Запись.Реквизит1 = «Тест»;
КонецЦикла;
НаборЗаписей.Записать();
КонецЦикла;

В приведенном примере выполнялось изменение записей. Для добавления записей, если их нет у регистратора, можно выполнять запись без считывания. Для удаления записей можно выполнять запись пустого набора без выполнения считывания.

Заметим, что для добавления большого количества записей по одному регистратору существует возможность записывать записи без замещения. Это регулируется параметром метода Записать(). Такая возможность позволяет добавлять записи, не помещая их всех одновременно в оперативную память.

В регистрах расчетов кроме отбора по регистратору для набора записей можно также установить отбор по другим значениям измерений (только по равенству). Это позволяет выполнить изменение части записей, подчиненных одному регистратору.

Источник

Ошибка записи! Не установлен отбор по регистратору!

Когда выбираю именно этот регистр. нажимаю выполнить, то появлется ошибка типа:
<Форма.Форма.Форма(43)>: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:

по причине:
Ошибка записи! Не установлен отбор по регистратору (Регистр сведений: Порты оборудования)

Помогите пожалуйста разобраться?

НаборЗаписей=РегистрыСведений.ПортыОборудования.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Организации.Установить(Справочники.Организации.ПустаяСсылка());
НаборЗаписей.Прочитать();

Необходимо установить отбор как в примере из справки:

КурсыВалют = РегистрыСведений.КурсыВалют;
НаборКурсов = КурсыВалют.СоздатьНаборЗаписей();
Доллар = Справочники.Валюты.НайтиПоНаименованию(«USD»);
НаборКурсов.Отбор.Валюта.Установить(Доллар);
НаборКурсов.Отбор.Период.Установить(НачалоДня(ТекущаяДата()));
НаборКурсов.Прочитать();
Если НаборКурсов.Количество() = 0 Тогда
НовыйКурс = НаборКурсов.Добавить();
НовыйКурс.Валюта = Доллар;
НовыйКурс.Период = ТекущаяДата();
ИначеЕсли НаборКурсов.Количество() = 1 Тогда
НовыйКурс = НаборКурсов[0];
Иначе
Текст = «ru = «»Курс валюты задается один раз в день.»»;»
+ » en = «»Rate is set once a day.»»»;
Предупреждение(НСтр(Текст), 60);
Возврат;
КонецЕсли;
НовыйКурс.Курс = 31.44;
НовыйКурс.Кратность = 1;
НаборКурсов.Записать();
Сообщить(НСтр(ru = «»Курс «»; en = «»Rate «»)
+ СокрЛП(НовыйКурс.Валюта)
+ НСтр(ru = «» на сегодня: «+»; en = «» for today: «»)
+ НовыйКурс.Курс + НСтр(ru = «» руб.»»; en = «» roub.»»»));

Источник

Как в 1С СКД сделать отбор по типу документа

Самый простой и быстрый способ создать отчет в 1С это воспользоваться СКД (Системой компоновки данных). Она позволяет создавать отчеты любой сложности буквально за несколько минут. Можно без труда настроить необходимые отборы, которые в свою очередь будет устанавливать сам пользователь. Сегодня поговорим о том как настроить отбор по типу документа (регистратору), для примера возьмем типовой отчет «Ведомость По Товарам На Складах».

Для расширения своих знаний рекомендую Вам прочитать следующие статьи.

Отбор по регистратору в 1С СКД

И так у нас есть отчет «Ведомость По Товарам На Складах» он создан с помощью СКД из регистра накопления. Т.е в СКД есть запрос который берет всю необходимую информацию из регистра накопления. Как многие уже наверно знают, в регистр накопления информацию могут вносить разные регистраторы (документы), например, «Оказание услуг», «Возврат товара», «Перемещение товара», «Списание товара» и т.д.

Список всех регистраторов можно посмотреть если открыть нужный регистр и перейти во вкладку «Регистраторы».

как установить отбор по регистратору 1с в коде. картинка как установить отбор по регистратору 1с в коде. как установить отбор по регистратору 1с в коде фото. как установить отбор по регистратору 1с в коде видео. как установить отбор по регистратору 1с в коде смотреть картинку онлайн. смотреть картинку как установить отбор по регистратору 1с в коде.

Иногда необходимо сделать отчет по одному документу, все это можно организовать добавив в запрос следующий код.

Но в этому случае отчет будет собираться только из документов «Оказания услуг». А нам нужно сделать так что бы пользователь при необходимости сам выбирал тип документа. Для этого в запросе нужно написать.

Далее открываем СКД заходим во вкладку «Настройки» и добавляем в отбор «ТипДокумента»

как установить отбор по регистратору 1с в коде. картинка как установить отбор по регистратору 1с в коде. как установить отбор по регистратору 1с в коде фото. как установить отбор по регистратору 1с в коде видео. как установить отбор по регистратору 1с в коде смотреть картинку онлайн. смотреть картинку как установить отбор по регистратору 1с в коде.

Далее настраиваем вариант отчета у пользователя. В зависимости от вашей конфигурации настройки могут немного отличать но принцип должен быть такой же. Открываем отчет, заходим в настройки, далее выделяем пункт «Тип документа» и с помощью кнопки «Показывать» закрепляем его на панели. Теперь пользователь сам сможет выбрать необходимый тип документа (регистратор) и сформировать отчет.

как установить отбор по регистратору 1с в коде. картинка как установить отбор по регистратору 1с в коде. как установить отбор по регистратору 1с в коде фото. как установить отбор по регистратору 1с в коде видео. как установить отбор по регистратору 1с в коде смотреть картинку онлайн. смотреть картинку как установить отбор по регистратору 1с в коде.

Вот так достаточно просто можно настроить отбор в СКД по типу документа регистратору с возможностью выбора в пользовательском интерфейсе.

Источник

Программирование в 1С для всех

В предыдущей статье Работа с набором записей регистра сведений мы узнали, как использовать объект набор записей регистра сведений для группового создания записей. В процессе записи набора наш регистр или полностью очищается, или добавляются новые записи, сохраняя при этом старые. Причем контроль уникальности по измерениям во втором случае не ведется, и может возникнуть ошибка «Запись с такими ключевыми полями существует!»

Но очень часто возникают задачи, когда нужно отредактировать какие-то уже имеющиеся записи, например, сделав отбор по какому-то одному или нескольким измерениям. Эти задачи выполняются при помощи отборов набора записей.

Рассмотрим следующую задачу: в моей конфигурации есть независимый периодический регистр сведений «ЦеныНаТопливо», который имеет следующую структуру.

как установить отбор по регистратору 1с в коде. картинка как установить отбор по регистратору 1с в коде. как установить отбор по регистратору 1с в коде фото. как установить отбор по регистратору 1с в коде видео. как установить отбор по регистратору 1с в коде смотреть картинку онлайн. смотреть картинку как установить отбор по регистратору 1с в коде.

Нам нужно изменить все цены конкурентного поставщика за все периоды, умножив их на какой-то коэффициент. Для решения этой задачи нам нужно установить отбор по нужному нам поставщику, прочитать данные, обойти полученный набор записей и рекурсивно изменить цену.

В этом коде с помощью свойства Отбор объекта НаборЗаписей сделать так, чтобы в наборе были записи, соответствующие только нужному нам поставщику.

В отборе как к свойству объекта можно обращаться ко всем измерениям регистра сведений и к периоду, если имеем дело с периодическим регистром сведений. Если регистр сведений подчинен регистратору, то отбор возможен только по регистратору.

Когда мы обращаемся к свойству объекта Отбор посредством названия измерения, то мы получаем объект Элемент отбора, у данного объекта только один метод — Установить. Данный метод устанавливает значение отбора.

Можно производить отбор по одному полю, а можно и по нескольким. В случае отбора по нескольким полям логическая связь между полями будет осуществляться с помощью булевой операции «И».

Имейте в виду, что отбор в регистрах сведений можно устанавливать только на равенство!

После того, как мы установили отбор, нам необходимо извлечь данные из базы в объект Набор записей, осуществляется это с помощью метода Прочитать. Этот метод считывает записи из базы данных по установленному отбору и записывает их в объект НаборЗаписей.

Как Вы уже знаете, объект Набор записей является коллекцией объектов Запись регистров сведений. Поэтому после того, как мы с помощью метода Количество проверили, есть ли в принципе записи по данному отбору, мы обходим данную коллекцию с помощью цикла: Для каждого…Цикл. Где переменная НормаЗапись является объектом Запись регистров сведений. С помощью этого объекта мы получаем доступ ко всем полям записи регистра сведений и можем их изменять на свое усмотрение. После того, как мы поменяли все нужные нам записи, необходимо записать набор. Обращаю внимание, что записывается именно набор в целом, а не конкретная запись по отдельности.

Причем, с помощью отбора можно проверять наличие уже существующих записей. Например, будем записывать данные в наш регистр, но перед этим проверим, есть ли записи по нужным полям.

В этом коде мы с помощью отборов получаем определенный набор записи, который должен соответствовать установленным отборам. И если данных по установленным отборам нет, то создаем новую запись.

Имейте ввиду, что после того, как вы примените метод Прочитать к набору записей, то состав набора изменится согласно установленному отбору.

С помощью набора записей можно не только создавать новые записи, но и удалять имеющиеся. Например, решим следующую задачу: очистим все записи для определенного вида топлива.

В этом коде мы получаем данные для определенного набора и очищаем их.

Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»

как установить отбор по регистратору 1с в коде. картинка как установить отбор по регистратору 1с в коде. как установить отбор по регистратору 1с в коде фото. как установить отбор по регистратору 1с в коде видео. как установить отбор по регистратору 1с в коде смотреть картинку онлайн. смотреть картинку как установить отбор по регистратору 1с в коде.

Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Источник

Программная работа с регистром сведений в 1С 8.3

как установить отбор по регистратору 1с в коде. картинка как установить отбор по регистратору 1с в коде. как установить отбор по регистратору 1с в коде фото. как установить отбор по регистратору 1с в коде видео. как установить отбор по регистратору 1с в коде смотреть картинку онлайн. смотреть картинку как установить отбор по регистратору 1с в коде.

Программная запись в регистр сведений

Добавление записей в регистр сведений выполняется с помощью набора записей. Набор записей — это коллекция нескольких записей регистра сведений.

Для добавление новых записей в регистр сведений нужно:

Набор записей с установленным отбором можно назвать гранулой. Запись в регистр сведений выполняется гранулами.

Если при записи не устанавливать отбор, то будет перезаписан весь регистр сведений, все предыдущие записи будут удалены:

Можно установить отбор только по одному измерению и сразу добавить несколько записей:

То есть при записи выполняется добавление новых записей с замещением тех записей, которые удовлетворяют установленному отбору.

Но если в метод Записать набора записей передать параметр Ложь, то запись будет выполнена с добавлением новых записей:

В результате в регистр сведений будет добавлена новая запись, но при этом все предыдущие записи не были удалены.

Если попытаться добавить в регистр сведений записи, которые не совпадают с установленным отбором, то будет выброшено исключение «Запись не верна! Значение поля не соответствует установленному отбору»:

Запись в регистр сведений, подчиненный регистратору может выполняться только с отбором по регистратору. В обработке проведения отбор по регистратору устанавливается автоматически, но если запись выполнять в другом месте, то нужно сделать это вручную:

Отбор записей регистра сведений

Отбор позволяет не только установить гранулу при записи в регистр сведений, но и прочитать нужные записи регистра. Например, можно получить все записи по одному товару:

После установки отбора набора записей, мы прочитали данные из регистра методом Прочитать. Данный метод загрузил в переменную НаборЦен все записи, удовлетворяющие отбору. После этого их можно перебрать в цикле и через точку обращаться к полям записи регистра.

Удаление записей регистра сведений

Чтобы удалить запись из регистра сведений нужно создать набор записей, установить необходимый отбор и записать пустой набор записей:

Чтобы очистить весь регистр сведений можно записать пустой набор записей без отбора:

Если регистр сведений подчинен регистратору, то нужно устанавливать отбор по документу-регистратору:

Если нужно удалить записи с отбором по ресурсу, то можно запросом выбрать необходимые записи, в цикле установить по нужным измерениям отбор и записать пустой набор записей:

В данном примере мы удалили все записи, у которых цена больше или равна 500. Но можно было решить ее от обратного: выбрать все записи, у которых цена меньше 500, создать набор записей и загрузить в него результат запроса. Так как отбор не был установлен, то весь регистр будет перезаписан и в нем останутся только те записи, где цена меньше 500:

Изменение записей регистра сведений

Чтобы изменить существующие записи регистра сведений нужно сначала прочитать их через набор записей, потом перебрать в цикле, изменить и записать набор записей. Например, увеличим все цены по одному типу цен на 10%:

Можно в запросе выбрать все измерения и период (для периодического регистра) и также изменить через набор записей, установив необходимый отбор:

Если регистр сведений подчинен регистратору, то отбор нужно устанавливать по регистратору:

Менеджер записи регистра сведений

Менеджер записи регистра сведений используется при интерактивном редактировании записи регистра сведений. Когда мы открываем форму записи, то чтение выполняется именно через менеджер записи. Когда нажимаем на форме записи кнопку Записать, то запись выполняется через менеджер записи.

Менеджер записи доступен только для регистров сведений с режимом записи Независимый.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *