Back to top

Примеры обработки регистров сведений

Опубликовано e-1c@mail.ru - вс, 08/28/2016 - 15:50

Оглавление
1. Как из регистра сведений «РасчетчикиЗарплатыОрганизации» получить в виде массива всех расчетчиков зарплаты определенного подразделения организации
2. Как добавить запись в непериодический независимый регистр сведений
3. Как считать содержимое непериодического независимого регистра сведений «СобственныеКонтрагенты»
4. Как удалить записи независимого регистра сведений с отбором по конкретной организации
5. Как добавить запись в периодический независимый регистр сведений
6. Как прочитать (изменить) записи в периодическом независимом регистре сведений
7. Как удалить записи в периодическом независимом регистре сведений
8. Как в периодическом независимом регистре сведений «КурсыВалют» удалить все записи по валютам с наименованиями «EUR» и «USD», период которых меньше 01 января 2005 года
9. Как прочитать данные, актуальные на определенную дату, из регистра сведений «Курсы валют» с отбором по нескольким валютам (отбор по измерениям)
10. Как поменять период у записей периодического независимого регистра, соответствующих ряду условий
11. Как «сделать периодическим» реквизит уже заполненного справочника
12. Как добавить записи в регистр сведений, подчиненный регистратору
13. Как прочитать (изменить) записи в регистре сведений, подчиненном регистратору
14. Как удалить записи из регистра сведений, подчиненного регистратору

1.Как из регистра сведений «РасчетчикиЗарплатыОрганизации» получить в виде массива всех расчетчиков зарплаты определенного подразделения организации.

Способ 1

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

Способ 2

Функция ПолучитьМассивРасчетчиков(Подразделение) 
 
                   Запрос = Новый Запрос;
                   Запрос.Текст = "
                   |ВЫБРАТЬ
                   |                    РасчетчикиЗарплатыОрганизации.Пользователь КАК Расчетчик
                   |ИЗ
                   |                    РегистрСведений.РасчетчикиЗарплатыОрганизации КАК 
 
РасчетчикиЗарплатыОрганизации
                   |ГДЕ
                   |                    РасчетчикиЗарплатыОрганизации.ПодразделениеОрганизации = 
 
&Подразделение"; 
 
                   Запрос.УстановитьПараметр("Подразделение", Подразделение); 
 
                   Результат = Запрос.Выполнить();
                   Выборка = Результат.Выбрать(); 
 
                   МассивРасчетчиков = Новый Массив;
                   Пока Выборка.Следующий() Цикл
                                       МассивРасчетчиков.Добавить(Выборка.Расчетчик);
                   КонецЦикла; 
 
                   Возврат МассивРасчетчиков; 
 
КонецФункции

2 Как добавить запись в непериодический независимый регистр сведений

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

3. Как считать содержимое непериодического независимого регистра сведений «СобственныеКонтрагенты»

НаборЗаписей = РегистрыСведений.СобственныеКонтрагенты.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать(); 
 
// Перебрать записи в цикле…
Для Каждого Запись из НаборЗаписей Цикл
РегистрКонтрагент = Запись.Контрагент;
РегистрВидСвязи = Запись.ВидСвязи;
РегистрОбъект = Запись.Объект;
КонецЦикла; 
 
// … или выгрузить записи в таблицу значений.
ТаблицаЗаписей = НаборЗаписей.Выгрузить();
ВЫБРАТЬ
                   *
ИЗ
                   РегистрыСведений.СобственныеКонтрагенты
Как удалить все записи из независимого регистра сведений?
НаборЗаписей = РегистрыСведений.ТорговоеОборудование.СоздатьНаборЗаписей();
НаборЗаписей.Записать();

4. Как удалить записи независимого регистра сведений с отбором по конкретной организации

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

5. Как добавить запись в периодический независимый регистр сведений

НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); 
 
НаборЗаписей.Отбор.Валюта.Установить(ТекущаяВалюта);
НаборЗаписей.Отбор.Период.Установить(ТекущаяДата); 
 
НовЗапись = НаборЗаписей.Добавить();
НовЗапись.Валюта = ТекущаяВалюта;
НовЗапись.Период = ТекущаяДата;
НовЗапись.Курс = ТекущийКурс;
НовЗапись.Кратность = ТекущаяКратность; 
 
НаборЗаписей.Записать(Истина);

6. Как прочитать (изменить) записи в периодическом независимом регистре сведений

НаборЗаписей = РегистрыСведений.Валюты.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Период.Установить(ДатаЗаписи); 
 
НаборЗаписей.Прочитать(); 
 
Для Каждого Запись Из НаборЗаписей Цикл 
 
                   // Чтение и сообщение данных полей записи.
                   Сообщить(Строка(Запись.Период) + " " + Строка(Запись.Валюта) + " " + 
 
Строка(Запись.Курс)); 
 
                   // Изменение данных полей записи.
                   Запись.Курс = 0; 
 
КонецЦикла; 
 
НаборЗаписей.Записать();

7. Как удалить записи в периодическом независимом регистре сведений

НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Записать();

8. Как в периодическом независимом регистре сведений «КурсыВалют» удалить все записи по валютам с наименованиями «EUR» и «USD», период которых меньше 01 января 2005 года

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|                  *
|ИЗ
|                  РегистрСведений.КурсыВалют КАК КурсыВалют
|ГДЕ
|                  (КурсыВалют.Период >= ДАТАВРЕМЯ(2005, 1, 1)
|                  ИЛИ
|                  НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО ""USD"")
|                  И
|                  НЕ(КурсыВалют.Валюта.Наименование ПОДОБНО ""EUR""))";
ТаблицаОставляемыхЗаписей = Запрос.Выполнить().Выгрузить(); 
 
НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ТаблицаОставляемыхЗаписей);
НаборЗаписей.Записать();

9. Как прочитать данные, актуальные на определенную дату, из регистра сведений «Курсы валют» с отбором по нескольким валютам (отбор по измерениям)

Запрос = Новый Запрос;
МассивВалют = Новый Массив;
МассивВалют.Добавить(Валюта1);
МассивВалют.Добавить(Валюта2); 
 
Запрос.УстановитьПараметр("МассивВалют", МассивВалют);
Запрос.УстановитьПараметр("ДатаПолучения", ДатаПолучения); 
 
Запрос.Текст = "
|ВЫБРАТЬ
|                  ВалютыСрезПоследних.Валюта,
|                  ВалютыСрезПоследних.Курс
|ИЗ
|                  РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПолучения, Валюта В 
 
(&МассивВалют)) КАК ВалютыСрезПоследних"; 
 
ТаблицаКурсов = Запрос.Выполнить().Выгрузить();

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

Процедура ЗаменаПериода() 
 
                   Запрос = Новый Запрос;
                   Запрос.Текст = "ВЫБРАТЬ
                   |                    ОтветственныеЛицаОрганизации.Период,
                   |                    ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница,
                   |                    ОтветственныеЛицаОрганизации.ОтветственноеЛицо
                   |ИЗ
                   |                    РегистрСведений.ОтветственныеЛицаОрганизации КАК 
 
ОтветственныеЛицаОрганизации
                   |ГДЕ
                   |                    ОтветственныеЛицаОрганизации.Период <= ДАТАВРЕМЯ(2005, 1, 1)
                   |                    И
                   |                    ОтветственныеЛицаОрганизации.СтруктурнаяЕдиница.Наименование | ПОДОБНО 
 
"Групп-Трейдинг"
                   |                    И
                   |                    (ОтветственныеЛицаОрганизации.Должность.Наименование ЕСТЬ NULL
                   |                                        ИЛИ
                   |                                        НЕ(ОтветственныеЛицаОрганизации.Должность.Наименование | ПОДОБНО 
 
"Продавец"
                   |                                                            ИЛИ
                   |                                                            ОтветственныеЛицаОрганизации.Должность.Наименование | 
 
ПОДОБНО "Кладовщик"))"; 
 
                   Результат = Запрос.Выполнить();
                   Выборка = Результат.Выбрать(); 
 
                   Запись = РегистрыСведений.ОтветственныеЛицаОрганизации.СоздатьМенеджерЗаписи(); 
 
                   Пока Выборка.Следующий() Цикл
                                       Запись.Период = Выборка.Период;
                                       Запись.СтруктурнаяЕдиница = Выборка.СтруктурнаяЕдиница;
                                       Запись.ОтветственноеЛицо = Выборка.ОтветственноеЛицо;
 
                                       Запись.Прочитать(); 
 
                                       Если Запись.Выбран() Тогда
                                                           Запись.Период = Дата(2004, 1, 1);
                                                           Запись.Записать();
                                       КонецЕсли;
                   КонецЦикла; 
 
КонецПроцедуры;

11. Как «сделать периодическим» реквизит уже заполненного справочника

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|                  &ДатаУстановки КАК Период,
|                  Проекты.Ссылка КАК Проект,
|                  Проекты.Ответственный
|ИЗ
|                  Справочник.Проекты КАК Проекты
|ГДЕ
|                  (НЕ(Проекты.ЭтоГруппа)) И (НЕ(Проекты.Ответственный = &Ответственный))"; 
 
Запрос.УстановитьПараметр("Ответственный", Справочники.Пользователи.ПустаяСсылка());
Запрос.УстановитьПараметр("ДатаУстановки", Дата(2000,1,1)); 
 
ТаблицаРезультат = Запрос.Выполнить().Выгрузить(); 
 
НаборЗаписей = РегистрыСведений.ЗакреплениеПроектов.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ТаблицаРезультат);
НаборЗаписей.Записать();

12. Как добавить записи в регистр сведений, подчиненный регистратору

НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей(); 
 
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор); 
 
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
НоваяЗапись.ЛимитПоставщика = 50; 
 
НаборЗаписей.Записать();
НаборЗаписей = РегистрыСведений.ЛимитыВозвратнойТары.СоздатьНаборЗаписей(); 
 
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор); 
 
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Период = ВыбранныйРегистратор.Дата;
НоваяЗапись.Номенклатура = ВыбраннаяНоменклатура;
НоваяЗапись.ДоговорКонтрагента = ВыбранныйДоговор;
НоваяЗапись.ЛимитПокупателю = 25; 
 
НаборЗаписей.Записать(Ложь);

13. Как прочитать (изменить) записи в регистре сведений, подчиненном регистратору

НаборЗаписей = РегистрыСведений.ЦеныНоменклатуры.СоздатьНаборЗаписей(); 
 
НаборЗаписей.Отбор.Регистратор.Установить(ВыбранныйРегистратор); 
 
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл 
 
                   // Чтение и сообщение данных полей записи.
                   Сообщить(Строка(Запись.Период) + " " + Строка(Запись.ТипЦен) +" "+ 
 
Строка(Запись.Номенклатура) + " " + Строка(Запись.Цена) + " " + 
 
Строка(Запись.ПроцентСкидкиНаценки)); 
 
                   // Изменение данных полей записи.
                   Запись.ПроцентСкидкиНаценки = 0;
КонецЦикла; 
 
НаборЗаписей.Записать();

14. Как удалить записи из регистра сведений, подчиненного регистратору

Запрос = Новый Запрос;
Запрос.Текст = "
|                  ВЫБРАТЬ
|                  ЦеныНоменклатурыКонтрагентов.Регистратор
|ИЗ
|                  РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов"; 
 
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать(); 
 
НаборЗаписей = РегистрыСведений.ЦеныНоменклатурыКонтрагентов.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
                   НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
                   НаборЗаписей.Записать();
КонецЦикла;