Главная » Статьи » "1С" Програмирование

Скачивать материалы с сайта, могут только зарегистрированные пользователи.
Для регистрации заполните два поля ниже!

Через минуту Вы получите "Гостевой доступ"




Удобные манипуляции с записями регистра сведений из формы списка регистра сведений

У справочников и документов есть ссылка - по ней очень удобно находить объект и выполнять с ним любые манипуляции.
У регистра сведений такого простого способа нет.
Но не стоит отчаиваться! Ведь у регистра сведений есть ключ записи. Это то же самое.
Приступим к практике.

Рассмотрим два случая.
В первом нам нужно удалить записи регистра сведений, которые выбраны в множественном выборе в форме списка записей регистра сведений.
Во втором нам нужно в выбранных записях в этой же форме изменить значение какого-нибудь ресурса, например присвоить ресурсу "Архив" значение истина и реквизиту "ДатаАрхивирования" значение текущей даты.

Нам понадобится функция:

Функция обПрочитатьМенеджерЗаписиПоКлючуЗаписи(МЗ, КлючЗаписи)Экспорт
МД = Метаданные.НайтиПоТипу(ТипЗнч(МЗ));
Для Каждого Эл Из МД.Измерения Цикл
МЗ[Эл.Имя] = КлючЗаписи[Эл.Имя];
КонецЦикла;
//Можно попробовать ЗаполнитьЗначенияСвойств(МЗ, КлючЗаписи);
МЗ.Прочитать();

КонецФункции

Ну а дальше просто.

Чтобы удалить все выбранные в форме записи, используем код:

Если Вопрос("Вы хотите удалить записи в " + ЭтаФорма.ЭлементыФормы.Список.ВыделенныеСтроки.Количество() + " строках", РежимДиалогаВопрос.ДаНетОтмена) <> КодВозвратаДиалога.Да Тогда
Перейти ~Конец;
КонецЕсли;

Для Каждого Эл Из ЭтаФорма.ЭлементыФормы.Список.ВыделенныеСтроки Цикл
МЗ = РегистрыСведений.МойРегистр.СоздатьМенеджерЗаписи();
обПрочитатьМенеджерЗаписиПоКлючуЗаписи(МЗ, Эл);
МЗ.Удалить();
КонецЦикла;
ЭтаФорма.Обновить();

Чтобы проставить нужные реквизиты, используем код:

Для Каждого Эл Из ЭтаФорма.ЭлементыФормы.Список.ВыделенныеСтроки Цикл
МЗ = РегистрыСведений.МойРегистр.СоздатьМенеджерЗаписи();
обПрочитатьМенеджерЗаписиПоКлючуЗаписи(МЗ, Эл);
МЗ.Архив = истина;
МЗ.ДатаАрхивирования = ТекущаяДата();
МЗ.Удалить();
КонецЦикла;
ЭтаФорма.Обновить();

Да, данный код работает только для непериодических регистров, для периодических в ключ записи нужно добавлять
Кстати, можно попробовать использовать функцию ЗаполнитьЗначенияСвойств, тогда скорее всего будет работать и в периодических регистрах (добавится отбор по Период).

Конечно, можно сложить все отобранные ключи и построить по ним набор записей с хитрым отбором (вряд ли это получится, но попытаться можно), но это будет сложный способ решить простую задачу.



Источник: http://www.7homes.ru/node/522
Категория: "1С" Програмирование | Добавил: c1 (2010 Февраль 14)
Просмотров: 2574 | Рейтинг: 0.0/0

Выразить благодарность - Поделиться с друзьями!

 

Здесь все о технической стороне 1С!

 

Узнай, как правильно администрировать 1С Предприятие
Регистрируйся на бесплатный 7-ми дневный курс сейчас:

Ваш E-Mail в безопасности



Всего комментариев: 0
avatar