Добавить обработку

Вход для пользователей

Банк 1С внешних отчетов и внешних обработок ert newsletter

Будьте в курсе последних новостей нашего сайта!

RSS-материал

Раздел 1Cv8.0

Сейчас на сайте

Сейчас на сайте 0 пользователей и 0 гостей.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ресурсы сайта не предназначены для размещения нелегального материала.

При этом страницы сайта являются немодерируемыми и материал публикуется автоматически без премодерации. Если Вы нашли материал, который противоречит закону об авторском праве РФ и выложен без разрешения автора или компании-разработчика, просим Вас убедительно связаться с претензиями по почте vadim_kucherenko@mail.ru.

О пользователе fixin

Новые пользователи

Последние комментарии

баллы у

баллы видимы только тем, кто представился системе

Лучшие пользователи

Пользовательбаллы
kosmit81
irirna26
sukiiii16
Amras14
fixin13
Unit10
espero20008
panok905
Prince5
VaEr5