Прошу помочь - подскажите в чем дело - никак не могу записать в обsчный регистр сведений.
Итак. есть РС непериодический СвязьДоговоровСоСтатьямиЗатрат.
В нем есть Измерение договор, ресурс - Статья затрат.
Есть некая таблицы заначений заполненная из запроса договором и статьей затрат.Я пытаюсь ее записать.
Но! Первую строку пишет, а вторую уже нет.
Мне надо - если строки в РС нет - добавить, есть - перезаписать.
То же самое с Номенклатурой - проходит. Здесь - сломал голову!
Я делаю обычно:
Для каждого СтрокаТЗ Из ТаблицаДоговоровОткорректированныхСвязей Цикл
Если (СтрокаТЗ.СтатьяНаЗатраты <> СтрокаТЗ.СтатьяНаЗатратыДоКорр) Тогда
НаборЗаписей.Отбор.Договор.Установить(СтрокаТЗ.Договор);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Договор = СтрокаТЗ.Договор;
НоваяЗапись.СтатьяНаЗатраты = СтрокаТЗ.СтатьяЗатрат;
НаборЗаписей.Записать();
КонецЕсли;
КонецЦикла;
В отладчике заметил что происходит - создается отбор и записывается первая строка.
На следующей строке отбор устанавливается другой. Но! Набор записей содержит прошлый набор записей со старым отбором.
Поэтому он пытается добавить в существующий набор новую строку с другим отбором.
Как правильно обойти проблему.
Для каждого СтрокаТЗ Из ТаблицаДоговоровОткорректированныхСвязей Цикл
Если (СтрокаТЗ.СтатьяНаЗатраты <> СтрокаТЗ.СтатьяНаЗатратыДоКорр) Тогда
НаборЗаписей = РегистрыСведений.СвязьДоговоровСоСтатьямиЗатрат.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Договор.Установить(СтрокаТЗ.Договор);
НоваяЗапись = НаборЗаписей.Добавить();
НоваяЗапись.Договор = СтрокаТЗ.Договор;
НоваяЗапись.СтатьяНаЗатраты = СтрокаТЗ.СтатьяЗатрат;
НаборЗаписей.Записать();
КонецЕсли;
КонецЦикла;
2(5) ничего не понял, но можно еще создание набора записей внести внутрь цикла
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший