|
v7: Помогите разобраться с перезаписью проводок | ☑ | ||
---|---|---|---|---|
0
Zhuravlik
15.03.13
✎
10:41
|
Добрый день. Нужно перенести обороты с одного счета на другой, делаю так:
Операция = СоздатьОбъект("Операция"); Операция.ВыбратьОперацииСПроводками(_НачГода, _КонГода, ""+Счет_Переноса); Пока Операция.ПолучитьОперацию() = 1 Цикл Опер_обн = СоздатьОбъект("Операция"); Опер_обн.НайтиОперацию(Операция.Документ); Операция.ВыбратьПроводки(); Пока Операция.ПолучитьПроводку() = 1 Цикл Опер_обн.ПолучитьПроводкуПоНомеру(Операция.НомерПроводки()); Если Операция.Дебет.Счет = Счет_Переноса Тогда Опер_обн.Дебет.Счет = Счет_Конечный; ИначеЕсли Операция.Кредит.Счет = Счет_Переноса Тогда Опер_обн.Кредит.Счет = Счет_Конечный; КонецЕсли; КонецЦикла; Попытка Опер_обн.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЦикла; Но цикл проходит только один раз, т.е. меняет самую первую проводку, которую находит, а потом - без изменения. Что я тут не так сделал? |
|||
1
ЧеловекДуши
15.03.13
✎
10:42
|
(0) Если только раз, то ты лучше сохрани операцию в ТЗ.
А потом по ТЗ и меняй. |
|||
2
Zhuravlik
15.03.13
✎
10:45
|
(1) Операцию, или проводку? т.е. как-то так?
Пока Опер.ПолучитьПроводку() = 1 Цикл тз.НоваяСтрока(); тз.Опер = Опер.Документ; тз.Пров = Опер.НомерПроводки() .... тз.ВыбратьСтроки(); Пока тз.ПолучитЬСтроку() = 1 Цикл Опер_Обн.НайтиОперацию(тз.Опер); Опер_Обн.ПолучитьПроводкуПоНомеру() ... |
|||
3
Chum
15.03.13
✎
10:48
|
В первом цикле документы имхо загнать в список значений.
Второй внешний цикл уже по списку значений с позиционированием на конкретной операции и перебором проводок. |
|||
4
Zhuravlik
15.03.13
✎
10:55
|
Вот так взлетело:
тзОпер = СоздатьОбъект("ТаблицаЗначений"); тзОпер.НоваяКолонка("Док"); Операция = СоздатьОбъект("Операция"); Операция.ВыбратьОперацииСПроводками(_НачГода, _КонГода, ""+Счет_Переноса); Пока Операция.ПолучитьОперацию() = 1 Цикл тзОпер.НоваяСтрока(); тзОпер.Док = Операция.Документ.ТекущийДокумент(); КонецЦикла; тзОпер.ВыбратьСтроки(); Пока тзОпер.ПолучитьСтроку() = 1 Цикл Опер_Обн = СоздатьОбъект("Операция"); Опер_Обн.НайтиОперацию(тзОпер.Док); Опер_Обн.ВыбратьПроводки(); Пока Опер_Обн.ПолучитьПроводку() = 1 Цикл Если Опер_Обн.Дебет.Счет = Счет_Переноса Тогда Опер_Обн.Дебет.Счет = Счет_Конечный; ИначеЕсли Опер_Обн.Кредит.Счет = Счет_Переноса Тогда Опер_Обн.Кредит.Счет = Счет_Конечный; КонецЕсли; КонецЦикла; Опер_Обн.Записать(); КонецЦикла; Спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |