helpf.pro
Регистрация

v8: Перезаполнение всех полей БД...

theelectric
24.05.2012 17:32Прочитано: 1428
Доброго времени суток!

У меня такая ситуация, что необходмо во всей БД (во всех справочниках, документах, регистрах) изменить реквизит (реквизит, реквизит табчасти, ресурсы, измерения) "Подразделение" - если в нем не выбрано подразделение, то заменить на определенное...

Как провести такую махинацию? Есть еще какие-нить идеи, кроме как прошерстить БД по метаданным?
Yandex
Возможно, вас также заинтересует
Реклама на портале
theelectric
24.05.2012 17:51Ответ № 1
Ага - нашел на одном сайте (СеменСеменыч
)

Код 1C v 8.х
 
// Перебор реквизитов всех справочников ИБ
Процедура Сформировать()

Для Индекс=1 по Метаданные.Справочник() Цикл
ИдентДока = Метаданные.Справочник(Индекс).Идентификатор;
Сообщить("Справочник "+ИдентДока);
Для ИндРекв=1 по Метаданные.Справочник(ИдентДока).Реквизит() Цикл
Сообщить("- реквизит справочника - "+Метаданные.Справочник(ИдентДока).Реквизит(ИндРекв).Идентификатор);
КонецЦикла;
Сообщить("********************");
КонецЦикла;

КонецПроцедуры


// Перебор реквизитов всех документов ИБ
Процедура Сформировать()

// Перебор общих реквизитов документов
Для ИндРекв=1 по Метаданные.ОбщийРеквизитДокумента() Цикл
Сообщить("- общий реквизит - "+Метаданные.ОбщийРеквизитДокумента(ИндРекв).Идентификатор, "!");
КонецЦикла;

Для Индекс=1 по Метаданные.Документ() Цикл
ИдентДока = Метаданные.Документ(Индекс).Идентификатор;
Сообщить("Документ "+ИдентДока);
Для ИндРекв=1 по Метаданные.Документ(ИдентДока).РеквизитШапки() Цикл
Сообщить("- реквизит шапки - "+Метаданные.Документ(ИдентДока).РеквизитШапки(ИндРекв).Идентификатор);
КонецЦикла;
Для ИндРекв=1 по Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти() Цикл
Сообщить("- реквизит таблицы - "+Метаданные.Документ(ИдентДока).РеквизитТабличнойЧасти(ИндРекв).Идентификатор);
КонецЦикла;

Сообщить("********************");
КонецЦикла;

КонецПроцедуры


// Перебор реквизитов документа "ПриходныйКассовыйОрдер"
// ДанныеДокументов - ТаблицаЗначений расположенная на форме обработки
Процедура Сформировать()

ДокПКО = СоздатьОбъект("Документ.ПриходныйКассовыйОрдер");

Для Н = 1 по Метаданные.Документ("ПриходныйКассовыйОрдер").РеквизитШапки() Цикл

ДанныеДокументов.НоваяКолонка(МетаДанные.Документ("ПриходныйКассовыйОрдер").РеквизитШапки(Н).Идентификатор,,,,,,,);

КонецЦикла;

ДокПКО.ВыбратьДокументы(НачДата, КонДата);

Пока ДокПКО.ПолучитьДокумент() = 1 Цикл

ДанныеДокументов.НоваяСтрока();

Для Н = 1 по Метаданные.Документ(ДокПКО.Вид()).РеквизитШапки() Цикл
ДанныеДокументов.УстановитьЗначение(ДанныеДокументов.НомерСтроки,МетаДанные.Документ(ДокПКО.Вид()).РеквизитШапки(Н).Идентификатор,ДокПКО.ПолучитьАтрибут(МетаДанные.Документ(ДокПКО.Вид()).РеквизитШапки(Н).Идентификатор));
КонецЦикла;

КонецЦикла;

КонецПроцедуры
Подсказка: Щелкнув по значку (справа от названия вопроса), вы получите список ответов на похожие вопросы!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.