|
Не могу записать в регистр сведений - значение поля не соответствует отбору | ☑ | ||
---|---|---|---|---|
0
Max1986
10.05.12
✎
16:24
|
Прошу помочь - подскажите в чем дело - никак не могу записать в обsчный регистр сведений.
Итак. есть РС непериодический СвязьДоговоровСоСтатьямиЗатрат. В нем есть Измерение договор, ресурс - Статья затрат. Есть некая таблицы заначений заполненная из запроса договором и статьей затрат.Я пытаюсь ее записать. Но! Первую строку пишет, а вторую уже нет. Мне надо - если строки в РС нет - добавить, есть - перезаписать. То же самое с Номенклатурой - проходит. Здесь - сломал голову! Я делаю обычно: НаборЗаписей = РегистрыСведений.СвязьДоговоровСоСтатьямиЗатрат.СоздатьНаборЗаписей(); Для каждого СтрокаТЗ Из ТаблицаДоговоровОткорректированныхСвязей Цикл Если (СтрокаТЗ.СтатьяНаЗатраты <> СтрокаТЗ.СтатьяНаЗатратыДоКорр) Тогда НаборЗаписей.Отбор.Договор.Установить(СтрокаТЗ.Договор); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Договор = СтрокаТЗ.Договор; НоваяЗапись.СтатьяНаЗатраты = СтрокаТЗ.СтатьяЗатрат; НаборЗаписей.Записать(); КонецЕсли; КонецЦикла; В отладчике заметил что происходит - создается отбор и записывается первая строка. На следующей строке отбор устанавливается другой. Но! Набор записей содержит прошлый набор записей со старым отбором. Поэтому он пытается добавить в существующий набор новую строку с другим отбором. Как правильно обойти проблему. |
|||
1
Stepa86
10.05.12
✎
16:26
|
обнулять переменные не учили? то есть набор очищать
|
|||
2
Max1986
10.05.12
✎
16:29
|
НаборЗаписей.Очистить() ?
Блин, а как же прокатывало до этого? |
|||
3
Живой Ископаемый
10.05.12
✎
16:31
|
нет.. отбор ты устанавливаешь, но Прочитать() не говоришь, поэтому он еще не начинает дейтсовать. А начинает только после НаборЗаписей.Записать();
|
|||
4
Axel2009
10.05.12
✎
16:33
|
так и быть. держи
Для каждого СтрокаТЗ Из ТаблицаДоговоровОткорректированныхСвязей Цикл Если (СтрокаТЗ.СтатьяНаЗатраты <> СтрокаТЗ.СтатьяНаЗатратыДоКорр) Тогда НаборЗаписей = РегистрыСведений.СвязьДоговоровСоСтатьямиЗатрат.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Договор.Установить(СтрокаТЗ.Договор); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапись.Договор = СтрокаТЗ.Договор; НоваяЗапись.СтатьяНаЗатраты = СтрокаТЗ.СтатьяЗатрат; НаборЗаписей.Записать(); КонецЕсли; КонецЦикла; |
|||
5
Max1986
10.05.12
✎
16:33
|
(3)я пробовал прочитать. но там надо анализировать заполнен РС по отбору или нет, что усложняет конструкцию
|
|||
6
Max1986
10.05.12
✎
16:35
|
(4)то же вариант. я правда через Очистить пошел
|
|||
7
Живой Ископаемый
10.05.12
✎
16:35
|
2(5) ничего не понял, но можно еще создание набора записей внести внутрь цикла
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |