Если вы начинающий разработчик - вступайте в мою группу помощник программиста 1С. В ней мы обсуждаем вопросы программирования в 1С для начинающих (Владимир Милькин, школа программирования).

<<< Документы Константы Перечисления РегистрыБухгалтерии
<<< РегистрыНакопления РегистрыСведений Справочники

Регистры сведений в языке 1С 8.3, 8.2 (в примерах)

Описание (нажмите, чтобы раскрыть)
// Периодический регистр сведений ЦеныНоменклатуры
// Измерения: Номенклатура, ТипЦен
// Ресурсы: Валюта, Цена
 
/// Как прочитать записи регистра сведений в 1с 8.3, 8.2
/// с возможностью отбора и упорядочивания
 
Процедура КакПрочитатьЗаписиРегистраСведений()
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
        |   ЦеныНоменклатуры.ТипЦен КАК ТипЦен,
        |   ЦеныНоменклатуры.Валюта,
        |   ЦеныНоменклатуры.Цена,
        |   ЦеныНоменклатуры.Период,
        |   ЦеныНоменклатуры.Регистратор,
        |   ЦеныНоменклатуры.НомерСтроки,
        |   ЦеныНоменклатуры.Активность
        |ИЗ
        |   РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
        |ГДЕ
        |   ТипЦен = &ПараметрТипЦен
        |УПОРЯДОЧИТЬ ПО
        |   Номенклатура УБЫВ";
 
    ВыборкаЦен = Справочники.ТипыЦенНоменклатуры.Выбрать();
    ПервыйПопавшийсяТипЦен = ВыборкаЦен.Следующий();
 
    Запрос.УстановитьПараметр("ПараметрТипЦен", 
        ПервыйПопавшийсяТипЦен.Ссылка);
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            Строка(ВыборкаДетальныеЗаписи.Период) + " " +
            ВыборкаДетальныеЗаписи.Номенклатура + " " +
            ВыборкаДетальныеЗаписи.ТипЦен + " " +
            ВыборкаДетальныеЗаписи.Цена
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как получить наиболее поздние записи (срез последних)
/// регистра сведений на указанную дату (включительно) 
/// в 1с 8.3, 8.2
 
Процедура СрезПоследнийЗаписейРегистраСведений()
 
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   ЦеныНоменклатурыСрезПоследних.Период,
        |   ЦеныНоменклатурыСрезПоследних.Регистратор,
        |   ЦеныНоменклатурыСрезПоследних.НомерСтроки,
        |   ЦеныНоменклатурыСрезПоследних.Активность,
        |   ЦеныНоменклатурыСрезПоследних.ТипЦен КАК ТипЦен,
        |   ЦеныНоменклатурыСрезПоследних.Номенклатура,
        |   ЦеныНоменклатурыСрезПоследних.Валюта,
        |   ЦеныНоменклатурыСрезПоследних.Цена
        |ИЗ
        |   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
        |       &ПараметрДата, ТипЦен = &ПараметрТипЦен
        |   ) КАК ЦеныНоменклатурыСрезПоследних";
 
    ВыборкаЦен = Справочники.ТипыЦенНоменклатуры.Выбрать();
    ПервыйПопавшийсяТипЦен = ВыборкаЦен.Следующий();
 
    Запрос.УстановитьПараметр("ПараметрДата", '20140131');
    Запрос.УстановитьПараметр("ПараметрТипЦен", ВыборкаЦен.Ссылка);
 
    РезультатЗапроса = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Сообщить(
            Строка(ВыборкаДетальныеЗаписи.Период) + " " +
            ВыборкаДетальныеЗаписи.Номенклатура + " " +
            ВыборкаДетальныеЗаписи.ТипЦен + " " +
            ВыборкаДетальныеЗаписи.Цена
        );
    КонецЦикла;
 
КонецПроцедуры
 
/// Как сделать отбор движений регистра сведений по регистратору
/// в 1с 8.3, 8.2
 
Процедура ВыборкаДвиженийРегистраПоРегистратору()
 
    // отберем движения по регистру сведений первого попавшегося
    // документа "Установка цен номенклатуры"
    ВыбДок = Документы.УстановкаЦенНоменклатуры.Выбрать();
 
    Если ВыбДок.Следующий() Тогда
 
        ВыбРег = РегистрыСведений.ЦеныНоменклатуры.ВыбратьПоРегистратору(
            СсылкаНаДокумент);
 
        Пока ВыбРег.Следующий() Цикл
            Сообщить(ВыбРег.Номенклатура.Наименование + " " +ВыбРег.Цена);
        КонецЦикла;
 
    КонецЕсли;
 
КонецПроцедуры
 
// Периодический регистр сведений КурсыВалют
// Измерения: Валюта
// Ресурсы: Курс, Кратность
 
/// Как добавить новую записи регистра сведений в 1с 8.3, 8.2
/// Как изменить/удалить существующую запись регистра сведений 
/// в 1с 8.3, 8.2
 
Процедура КакДобавитьИзменитьИлиУдалитьЗаписьРегистраСведений()
 
    // добавление новой записи
    НоваяЗапись = РегистрыСведений.КурсыВалют.СоздатьМенеджерЗаписи();
    НоваяЗапись.Период = ТекущаяДата();
    НоваяЗапись.Курс = 50;
    НоваяЗапись.Кратность = 1.0;
    // НоваяЗапись.Валюта = СсылкаНаВалюту;
    // НоваяЗапись.Записать(); 
 
    //Отбор = Новый Структура("Валюта", СсылкаНаВалюту);
    Выборка = РегистрыСведений.КурсыВалют.Выбрать('20130101', 
        '20131231');//, Отбор);
    Пока Выборка.Следующий() Цикл
 
        // изменение существующей
        МенеджерЗаписи = Выборка.ПолучитьМенеджерЗаписи();
        МенеджерЗаписи.Прочитать();
        МенеджерЗаписи.Курс = 25;
        // МенеджерЗаписи.Записать();
 
        // удаление существующей
        //Выборка.ПолучитьМенеджерЗаписи().Удалить();
 
    КонецЦикла;
 
КонецПроцедуры
 
/// Как работать с набором записей регистра сведений в 1с 8.3, 8.2
 
Процедура РаботаСНаборомЗаписейРегистраСведений()
 
    НаборКурсов = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
    //НаборКурсов.Отбор.Валюта.Установить(СсылкаНаВалюту);
    НаборКурсов.Отбор.Период.Установить(ТекущаяДата());
    НаборКурсов.Прочитать();
 
    Если НаборКурсов.Количество() = 0 Тогда
        НовыйКурс = НаборКурсов.Добавить();
        //НовыйКурс.Валюта = СсылкаНаВалюту;
        НовыйКурс.Период = ТекущаяДата();
    ИначеЕсли НаборКурсов.Количество() = 1 Тогда
        НовыйКурс = НаборКурсов[0];
    КонецЕсли;
 
    НовыйКурс.Курс = 0;
    НовыйКурс.Кратность = 1;
 
    НаборКурсов.Записать();
 
КонецПроцедуры

Если вы начинающий разработчик - вступайте в мою группу помощник программиста 1С. В ней мы обсуждаем вопросы программирования в 1С для начинающих (Владимир Милькин, школа программирования).

<<< Документы Константы Перечисления РегистрыБухгалтерии
<<< РегистрыНакопления РегистрыСведений Справочники

Регистры сведений в языке 1С 8.3, 8.2 (в примерах)