Добрый день!
Выплыла ошибка, которая произошла в закрытом периоде. Проводка на 25 счет НУ содержит субконто "Основное средство", соответственно этот счет никак не может закрыться. Но и вручную закрыть его не возможно. Сделала документ "Корректировка записей регистров" со счетом 01.01 и нужным основным средством, при попытке программно подменить счет при записи выдается ошибка: Запись не верна! Вид субконто "Основные средства" не доступен для данной записи! (Регистр бухгалтерии: Журнал проводок (налоговый учет); Номер строки: 1). Похоже эта проверка выполняется не в конфигурации, а какими-то средствами платформы, т.к. найти ее не удается.
Может быть кто-нибудь подскажет, как можно исправить ситуацию. Трогать закрытый период никак нельзя.
---
Запись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства] = Справочники.ОсновныеСредства.НайтиПоКоду("");

Заменить ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства на вид первого субконто у счета 25.02 (я его не знаю)

И обязательно Набор.ОбменДанными.Загрузка = Истина;
---
Попробуйте выставить свойство ОбменДанными.Загрузка = Истина у набора записей.
---
ОбменДанными.Загрузка = Истина
Не получается, субконто становиться пустым с другим видом
---
Редактор реквизитов с отключенной проверкой на корректность записываемых данных.
Здесь на ресурсе были такие. Поищите.
---
Скачала пару обработок, также меняется вид субконто и соответственно очищается
---
прочитайте через набор записей текущие значения субконто, запомните их в переменные, подставьте нужный счет в проводки и дальше по запомненному значению в переменной заполните новое субконто
---
Когда изменяю счет, то меняется и вид субконто, в том числе и программно. А мне нужно субконто, которого у этого счета нет
---
А мне нужно субконто, которого у этого счета нет

Да это не важно, выбирайте любое, из тех что есть, и назначайте то что нужно, тип проверяться не будет
---
Делаю так:

```1c
    Набор = РегистрыБухгалтерии.Налоговый.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(Док.Ссылка);
    Запись = Набор.Добавить();
    Запись.Период = ТекущаяДата();
    Запись.Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь, "ОсновнаяОрганизация");
    Запись.СчетДт = ПланыСчетов.Налоговый.НайтиПоКоду("25.02");
    Запись.ВидУчетаДт = Перечисления.ВидыУчетаПоПБУ18.ВР;
    Запись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства] = Справочники.ОсновныеСредства.НайтиПоКоду(");
    Запись.СчетКт = ПланыСчетов.Налоговый.НайтиПоКоду("08.04");
    Запись.ВидУчетаКт = Перечисления.ВидыУчетаПоПБУ18.ВР;
    Запись.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура] = Справочники.Номенклатура.НайтиПоКоду(");
    Запись.Сумма = 1000;
```

в результате у Счета Дт пустое субконто
---
Запись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства] = Справочники.ОсновныеСредства.НайтиПоКоду("");

Заменить ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства на вид первого субконто у счета 25.02 (я его не знаю)

И обязательно Набор.ОбменДанными.Загрузка = Истина;
---
Спасибо, и в голову не пришло, что вид субконто может быть один, а значение другое
---
И обязательно Набор.ОбменДанными.Загрузка = Истина;

зачем обязательно ?

ОбменДанными.Загрузка = Истина используется в подписках на события (при этом условии подписка обычно не выполняется)

но если
1. написали подписку на событие без проверки на наличие "ОбменДанными.Загрузка = Истина"
2. стоит запрет на запись набора записей по дате запрета редактирования

то "ОбменДанными.Загрузка = Истина" не поможет
---
Отключение платформенного механизма проверки ПриЗаписи
---
насколько мне известно нет у платформы механизма проверки ПриЗаписи

есть подписки на события где контролируется запись наборов записей регистра (одна из целей контроля - проверка записей в разрешенный период - контроль даты редактирования).

и именно в этих подписках стоит условие - если НаборЗаписей.ОбменДанными.Загрузка = Истина
то возврат (проверка пропускается).

то есть например выставив в набор записей НаборЗаписей.ОбменДанными.Загрузка = Истина
вы сможете записать набор записей в запрещенный для записи период.
---
Ну зачем говорить если не знаешь?
Два элемента справочника с одинаковым кодом могут быть? При контроле уникальности кода нет, но если установить свойство ОбменДанными.Загрузка = Истина, то проверка уникальности будет отключена, а работает она на уровне платформы.
Подписки это проверка для бизнес логики, а техническая проверка на корректность на уровне платформы тоже есть.
---
23. Арман Бегов (Dream_kz) 12.07.17 10:52
(22) Ну зачем говорить если не знаешь?
Два элемента справочника с одинаковым кодом могут быть? При контроле уникальности кода нет, но если установить свойство ОбменДанными.Загрузка = Истина, то проверка уникальности будет отключена, а работает она на уровне платформы.
Подписки это проверка для бизнес логики, а техническая проверка на корректность на уровне платформы тоже есть.

Зачем программисту отключать программный контроль записи ? Он что планирует записывать заранее некорректные данные ?

Речь в задаче шла о том что нужно поменять счет и субконто в наборе записей. То есть там данные корректные. Зачем при этом обязательно ОбменДанными.Загрузка = Истина ?
---
С какого перепуга они корректные? Вид субконто у счета один, а значение другого вида

За сим прекращаю сию пустую полемику, изучайте свойство ОбменДанными.Загрузка.
---
Счета Дт и Кт какие? Субконто какие этих счетах? Какой счет на какой меняете?
---
Налоговый счет Дт сделала 01.01, выбрала субконто из справочника "Основное средство", счет Кт не важен.
Нужно счет Дт изменить на 25.02, а субконто оставить "Основное средство"
---
Порядок и виды субконто на текущем и новом счетах одинаковые?
---
В том-то и проблема, что у счета,который надо установить нет такого вида субконто. Но каким-то образом стандартным документом проводка со счетом 25 и субконто ОС создалась.
---
вам поможет получение и модификация наборов записей регистра бухгалтерии

пример ниже

делаете простейшую обработку. на форму выводите документ проводки которого нужно откорректировать.

```1c
    ТекДок = ТекДок.Ссылка;

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

    Изменения = 0;

    Для Каждого Движение Из НаборЗаписейХозрасчетный Цикл
    // читаем проводки

    Если (Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.02"))
    ИЛИ (Движение.СчетДт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("60.01"))
    Тогда

    Движение.СубконтоДт.Контрагенты = КонтрагентЗамена;
    Движение.СубконтоДт.Договоры = ДоговорЗамена;

    Изменения = 1;
    КонецЕсли;

    КонецЦикла;

    Если Изменения = 1 Тогда

    НаборЗаписейХозрасчетный.Записать();

    Сообщить("Записаны движения документа " + Строка(ТекДок));
    КонецЕсли;
```

то есть вам нужно
1. получить текущие проводки документа
2. найти нужные проводки
3. изменить нужные проводки
4. записать набор записей

в типовых конфигурациях 1С запись набора записей контролируется через дату запрета редактирования. так что нужно будет снять на время запрет на запись в эту дату.
проверьте на копии БД, ну и стандартные рекомендации - создание резервной копии БД перед изменениями на рабочей базе.
---
```1c
    Набор = РегистрыБухгалтерии.Типовой.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(Корректировка);

    Запись = Набор.Добавить();
    Запись.Период = ТекущаяДата();
    Запись.СчетДт = ПланыСчетов.Типовой.НайтиПоКоду("1330");
    Запись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоТиповые.Номенклатура] = ОС;
    Запись.СчетКт = ПланыСчетов.Типовой.НайтиПоКоду("000");

    Набор.ОбменДанными.Загрузка = Истина;

    Набор.Записать();
```

Метаданные заменить на свои.
ОС - Ссылка на элемент справочника ОсновныеСредства;
Корректировка - Ссылка на документ корректировки
На счете 1330 первое субконто Номенклатура.
---
Тот же результат, пустое субконто и можно выбрать только вид Подразделение.
---
Это программно делать надо. Установите любой вид субконто, но тот что на первом месте