Читайте дальше...
Чтение данных из регистра сведений
// Чтение данных через запрос
Процедура ПрочитатьДанные()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РегистрСведенийКурсыВалют.Валюта КАК Валюта,
| РегистрСведенийКурсыВалют.Курс КАК Курс,
| РегистрСведенийКурсыВалют.Дата КАК Дата
|ИЗ
| РегистрСведений.КурсыВалют КАК РегистрСведенийКурсыВалют
|ГДЕ
| РегистрСведенийКурсыВалют.Дата = &Дата";
Запрос.УстановитьПараметр("Дата", ТекущаяДата());
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Валюта + " - " + Выборка.Курс);
КонецЦикла;
КонецПроцедуры
Запись данных в регистр сведений
// Запись одной записи
Процедура ЗаписатьКурсВалюты()
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Дата.Установить(ТекущаяДата());
НаборЗаписей.Прочитать();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Валюта = Справочники.Валюты.НайтиПоНаименованию("Доллар США");
НоваяЗапись.Курс = 75.50;
НоваяЗапись.Дата = ТекущаяДата();
НаборЗаписей.Записать();
КонецПроцедуры
// Запись нескольких записей
Процедура ЗаписатьНесколькоКурсов()
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Дата.Установить(ТекущаяДата());
НаборЗаписей.Прочитать();
// Добавляем несколько валют
ВалютаДоллар = Справочники.Валюты.НайтиПоНаименованию("Доллар США");
ВалютаЕвро = Справочники.Валюты.НайтиПоНаименованию("Евро");
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Валюта = ВалютаДоллар;
НоваяЗапись.Курс = 75.50;
НоваяЗапись.Дата = ТекущаяДата();
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Валюта = ВалютаЕвро;
НоваяЗапись.Курс = 85.30;
НоваяЗапись.Дата = ТекущаяДата();
НаборЗаписей.Записать();
КонецПроцедуры
Удаление записей из регистра сведений
Процедура УдалитьКурсыНаДату()
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Дата.Установить(ТекущаяДата());
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
НаборЗаписей.Записать();
КонецПроцедуры
// Удаление конкретной записи
Процедура УдалитьКурсВалюты()
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Дата.Установить(ТекущаяДата());
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.Валюта = Справочники.Валюты.НайтиПоНаименованию("Доллар США") Тогда
НаборЗаписей.Удалить(Запись);
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
Использование менеджера регистра сведений
// Получение последнего курса валюты
Функция ПолучитьПоследнийКурс(Валюта)
МенеджерРегистра = РегистрыСведений.КурсыВалют.СоздатьМенеджер();
Отбор = Новый Структура("Валюта", Валюта);
Сортировка = Новый Массив();
Сортировка.Добавить("Дата Убыв");
Выборка = МенеджерРегистра.Выбрать(Отбор, Сортировка);
Если Выборка.Следующий() Тогда
Возврат Выборка.Курс;
КонецЕсли;
Возврат 0;
КонецФункции
Работа с периодическим регистром сведений
// Получение курса валюты на определенную дату
Функция ПолучитьКурсНаДату(Валюта, ДатаКурса)
МенеджерРегистра = РегистрыСведений.КурсыВалют.СоздатьМенеджер();
Отбор = Новый Структура;
Отбор.Вставить("Валюта", Валюта);
Отбор.Вставить("Дата", ДатаКурса);
Выборка = МенеджерРегистра.Выбрать(Отбор);
Если Выборка.Следующий() Тогда
Возврат Выборка.Курс;
Иначе
// Попробуем найти ближайший предыдущий курс
Отбор.Удалить("Дата");
Сортировка = Новый Массив();
Сортировка.Добавить("Дата Убыв");
ПараметрыПолучения = Новый Структура("Дата", ДатаКурса);
Выборка = МенеджерРегистра.Выбрать(Отбор, Сортировка, ПараметрыПолучения);
Если Выборка.Следующий() Тогда
Возврат Выборка.Курс;
КонецЕсли;
КонецЕсли;
Возврат 0;
КонецФункции
Пример использования временных таблиц для работы с регистром
// Сложный пример с использованием временных таблиц
Процедура ОбновитьКурсыВалют()
// Создаем временную таблицу для новых курсов
ВременнаяТаблица = Новый ТаблицаЗначений;
ВременнаяТаблица.Колонки.Добавить("Валюта", Новый ОписаниеТипов("СправочникСсылка.Валюты"));
ВременнаяТаблица.Колонки.Добавить("Курс", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(10, 4)));
// Заполняем временную таблицу
НоваяСтрока = ВременнаяТаблица.Добавить();
НоваяСтрока.Валюта = Справочники.Валюты.НайтиПоНаименованию("Доллар США");
НоваяСтрока.Курс = 75.50;
НоваяСтрока = ВременнаяТаблица.Добавить();
НоваяСтрока.Валюта = Справочники.Валюты.НайтиПоНаименованию("Евро");
НоваяСтрока.Курс = 85.30;
// Обновляем регистр сведений
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Дата.Установить(ТекущаяДата());
НаборЗаписей.Прочитать();
НаборЗаписей.Очистить();
Для Каждого Строка Из ВременнаяТаблица Цикл
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Валюта = Строка.Валюта;
НоваяЗапись.Курс = Строка.Курс;
НоваяЗапись.Дата = ТекущаяДата();
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
Использование виртуальных таблиц регистра сведений
// Пример использования виртуальной таблицы остатков
Процедура ПолучитьКурсыНаДаты()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КурсыВалютОстатки.Валюта КАК Валюта,
| КурсыВалютОстатки.Курс КАК Курс,
| КурсыВалютОстатки.Дата КАК Дата
|ИЗ
| РегистрСведений.КурсыВалют.Остатки КАК КурсыВалютОстатки
|ГДЕ
| КурсыВалютОстатки.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания";
Запрос.УстановитьПараметр("ДатаНачала", НачалоМесяца(ТекущаяДата()));
Запрос.УстановитьПараметр("ДатаОкончания", КонецМесяца(ТекущаяДата()));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить(Выборка.Дата + ": " + Выборка.Валюта + " - " + Выборка.Курс);
КонецЦикла;
КонецПроцедуры
Эти примеры охватывают основные сценарии работы с регистрами сведений в 1С, включая чтение, запись, удаление данных, а также использование менеджеров и виртуальных таблиц.








