Как программно прочитать реквизит табличной части документа "Корректировка записей регистров" версия 8.2 и изменить его?
---
Имя регистра проще получить так:

ВЫБРАТЬ
 КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
 Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
 КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
---
Как и любой регистр:

```1c
    Запрос = Новый Запрос;
    НаборЗаписей = РегистрыСведений.СкидкиНаценкиНоменклатуры.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Регистратор.Установить(Док);
    НаборЗаписей.Прочитать();
    Для каждого зап Из НаборЗаписей Цикл

    зап.ДатаОкончания = '20151231';

    КонецЦикла;
    НаборЗаписей.Записать();
```
---
вы обращаешься непосредственно к регистру СкидкиНаценкиНоменклатуры, а в документе "Корректрировка записей регистров" несколько табличных частей и в каждой содержиться несколько регистров, как это реализовать?
---
т.е. мы не можем прописать конкретный регистр...
---
Не сильно понял. Нужно понять какие именно регистры двигает КЗР? И в каком-то изменить движения? А как понять в каком?
---
```1c
    Процедура УдалитьБитыеСсылки()
    Для Каждого Регистр Из Метаданные.РегистрыНакопления Цикл
    УдалитьБитыеСсылкиРН(Регистр.Имя);
    КонецЦикла;
    КонецПроцедуры

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

    Запрос.УстановитьПараметр("ДокументКоррекировки", ДокументКорректировки);

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

Посмотрите так?
---
Имя регистра проще получить так:

ВЫБРАТЬ
 КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Имя
ИЗ
 Документ.КорректировкаЗаписейРегистров.ТаблицаРегистровНакопления КАК КорректировкаЗаписейРегистровТаблицаРегистровНакопления
ГДЕ
 КорректировкаЗаписейРегистровТаблицаРегистровНакопления.Ссылка = &Ссылка
---
спасибо,
у меня есть сомнение также по этому блоку модуля: в нем очевидно нет состыковки меджу записью полученной в запросе
```1c
    Выборка.Следующий()
```
 и записью полученной через метод
```1c
    РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
```
 как в этом случае быть?

```1c
    Пока Выборка.Следующий() Цикл
    НЗ = РегистрыНакопления[ИмяРегистра].СоздатьНаборЗаписей();
    НЗ.Отбор.Регистратор.Установить(Выборка.Регистратор);
    НЗ.Прочитать();
    НЗ.Период=Дата("01.01.16");
    КонецЦикла;
```
---
Как-то так:

```1c
    Пока Выборка.Следующий() Цикл
    НЗ = РегистрыНакопления[Выборка.Имя].СоздатьНаборЗаписей();
    НЗ.Отбор.Регистратор.Установить(ДокументКорректировки);
    НЗ.Прочитать();
    НЗ.Период=Дата("01.01.16");
    КонецЦикла;
```

В выборке запрос из (7)
---
```1c
    Сч01_01 = ПланыСчетов.Хозрасчетный.ОСвОрганизации;
    Сч02_01 = ПланыСчетов.Хозрасчетный.АмортизацияОС_01;
    Сч83_01 = ПланыСчетов.Хозрасчетный.ПриростСтоимостиИмуществаПоПереоценке;
    ДБФ = Новый XBase;
    ДБФ.ОткрытьФайл(ИмяФайла);
    Если ДБФ.Открыта() Тогда
    Попытка
    НачатьТранзакцию();

    ДокКорректировка = Документы.КорректировкаЗаписейРегистров.СоздатьДокумент();
    ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ДокКорректировка.ЭтотОбъект, ПараметрыСеанса.ТекущийПользователь);
    ДокКорректировка.Дата = Период;

    НоваяСтрокаРегБух = ДокКорректировка.ТаблицаРегистровБухгалтерии.Добавить();
    НоваяСтрокаРегБух.Имя = "Хозрасчетный";
    НоваяСтрокаРегБух.Представление = "Журнал проводок (бухгалтерский учет)";

    ДокКорректировка.Записать();
    ДокКорректировкаСсылка = ДокКорректировка.Ссылка;

    НЗХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    НЗХозрасчетный.Отбор.Регистратор.Значение = ДокКорректировкаСсылка;

    ДБФ.Первая();
    Пока Не ДБФ.ВКонце() Цикл
    ОсновноеСредство = Справочники.ОсновныеСредства.НайтиПоКоду(СокрЛП(ДБФ.OS));
    Если ОсновноеСредство.Пустая() Тогда
    Сообщить("Не найдено ОС с кодом " + ДБФ.OS + "!", СтатусСообщения.Важное);
    Продолжить;
    КонецЕсли;

    ЗХозрасчетный = НЗХозрасчетный.Добавить();
    ЗХозрасчетный.Период = Период;
    ЗХозрасчетный.Регистратор = ДокКорректировкаСсылка;
    ЗХозрасчетный.Организация = Организация;
    ЗХозрасчетный.Содержание = "Увеличение первоначальной стоимости ОС";
    ЗХозрасчетный.СчетДт = Сч01_01;
    ЗХозрасчетный.СчетКт = Сч83_01;
    БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетДт, ЗХозрасчетный.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
    БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетКт, ЗХозрасчетный.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
    ЗХозрасчетный.Сумма = ДБФ.SumB;

    ЗХозрасчетный = НЗХозрасчетный.Добавить();
    ЗХозрасчетный.Период = Период;
    ЗХозрасчетный.Регистратор = ДокКорректировкаСсылка;
    ЗХозрасчетный.Организация = Организация;
    ЗХозрасчетный.Содержание = "Увеличение накопленной амортизации ОС";
    ЗХозрасчетный.СчетДт = Сч83_01;
    ЗХозрасчетный.СчетКт = Сч02_01;
    БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетДт, ЗХозрасчетный.СубконтоДт, "ОсновныеСредства", ОсновноеСредство);
    БухгалтерскийУчет.УстановитьСубконто(ЗХозрасчетный.СчетКт, ЗХозрасчетный.СубконтоКт, "ОсновныеСредства", ОсновноеСредство);
    ЗХозрасчетный.Сумма = ДБФ.AmortB;

    ДБФ.Следующая();
    КонецЦикла;
    ДБФ.ЗакрытьФайл();
    НЗХозрасчетный.Записать();

    ЗафиксироватьТранзакцию();
    Исключение
    Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
    ОтменитьТранзакцию();
    КонецПопытки;
    КонецЕсли;
```
---
у вас создать документ, а мне нужно уже готовый прочитать и изменить реквизит
---
```1c
    Процедура УдалитьБитыеСсылки()

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

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

Изменили текст модуля как вы сказали, теперь работает
---
большое вам спасибо! вознаграждение вам перечислили
---
Можно на примере запроса как я делал..

```1c
    Функция ПолучитьСтатусОборудования(Оборудование)

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

    СтатусОборудованияВыборка = Результат.Выбрать();
    СтатусОборудованияВыборка.Следующий();
    Возврат СтатусОборудованияВыборка.Статус;

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