Версия для печати темы (https://pro1c.org.ua/index.php?s=edb680344c6b84ab812d0bcab48f9706&showtopic=6113)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ 1С:Предприятие 8.2 _ Несколько конкретных примеров обработки регистров сведений

Автор: Vofka 24.01.12, 10: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. Как удалить записи из регистра сведений, подчиненного регистратору

Запрос = Новый Запрос;
Запрос.Текст = "
|                  ВЫБРАТЬ
|                  ЦеныНоменклатурыКонтрагентов.Регистратор
|ИЗ
|                  РегистрСведений.ЦеныНоменклатурыКонтрагентов КАК ЦеныНоменклатурыКонтрагентов";

Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua