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