Имя: Пароль:
1C
 
Программно изменить субконто у записанных проводок ???
Ø
0 Xela
 
08.02.06
11:30
Задача такая: нужно программно найти все проводки, где фигурирует некий контрагент и заменить его на другого контрагента. Вопрос в проводках, введенных вручную. То есть документ для этих проводок Операция. Нахожу нужную проводку в некоей Операции. Если пытаюсь сделать что-то типа
Опер.Дебет.Субконто("Контрагены", НовыйКонтр);
то получаю "Нельзя изменять записанные проводки!"
Подскажите, пожалуйста, нужно ли в этом случае удалять проводку и создавать ее заново или есть какой-то другой способ.
1 ГеройАсфальта
 
08.02.06
11:40
  Опер_ = СоздатьОбъект("Операция");
  Если Опер_.НайтиОперацию(Опер) = 1 Тогда
   Опер_.ВыбратьПроводки();
    Пока Опер_.ПолучитьПроводку() = 1 Цикл
     Дебет.Субконто("Контрагены", НовыйКонтр);
    КонецЦикла;
    Опер_.Записать();
  КонецЕсли;
2 GAnS
 
08.02.06
11:52
есть классная обработка SetAttr.ert из UNIPROCS... по фильтру заменяет любые значения...
4 Xela
 
08.02.06
11:59
Сообщение насчет ошибки, это ответ Герою асфальта. А обработка - это хорошо, но хотелось бы разобраться с редактированием проводок
5 Дурочка 1С
 
08.02.06
12:03
Универсальная обработка замены значений. Есть на любом диске ИТС ...
6 GAnS
 
08.02.06
12:05
(4) дело в том шо там тотже принцып как выложил Герой Асфальта,
гИзмОбъект.Дебет.Субконто(ВидСубк, ТабРеквизиты.Значение);
7 Xela
 
08.02.06
12:23
Вопрос не про обработки. Попробую сформулировать еще раз:
При выполнении команды
Опер.Дебет.Субконто("Контрагены", НовыйКонтр); (в любой из указанных выше вариаций) 1с выдает в окно сообщений ошибку "Нельзя изменять записанные проводки!" Что нужно сделать, чтобы ошибка не выдавалась, а команда выполнялась???
8 Дурочка 1С ®
 
08.02.06
12:37
Нетиповая конфигурация?
 
>> При выполнении команды
Забей на свое казарменное прошлое ...
9 GAnS
 
08.02.06
12:39
(7) Хела,у меня таже фигня была когда нада было субконто НалогОтчисл. в ОС счете поменять, нифига не получалось,а вот SetAttr все установило,я в ней кивирялся гдеж прикол:не нашел:( времени нет... такчто дебагером её поюзай;) и будит тебе счастье!
10 Xela
 
08.02.06
12:51
(8) Да, нетиповая
(9) Спасибо, GAnS. Была надежда, что кто-нибудь уже расковырял.
11 ГеройАсфальта
 
08.02.06
13:18
(3) Дай свой код
12 RuslanD
 
08.02.06
13:48
Все должно работать. У тебя неверный тип параметра.
<НомерСубконто> - числовое выражение - порядковый номер субконто. По умолчанию 1.
<ВидСубконто> - значение типа ''ВидСубконто'', которое должно быть установлено.
13 NS
 
08.02.06
13:52
(10) Код в студию. У всех работает. И есно типовая/нет не имеет значение.
в (1) одна ошибка -
 Опер.Дебет.Контрагены = НовыйКонтр;
14 Xela
 
09.02.06
11:25
Спасибо всем огромное! Все заработало. Дело было, вероятно, в фильтре. Сначала было вот так: Заполнялся некий список нужными значениями и:
Опер = СоздатьОбъект("Операция");
Опер.ИспользоватьСубконто(ВидыСубконто.Контрагенты, МСписок);
Опер.ВыбратьОперацииСПроводками('01.01.2005', '01.01.2006');
Пока Опер.ПолучитьОперацию()=1 Цикл
И т.д. В этом случае ошибка и выдавалось на команде
Опер.Дебет.Субконто(НомерСубконто, НовыйКонтр);(пробовала и по номеру и по виду субконто).
Если выборку операций делать просто Опер.ВыбратьОперации()или обращаться к операции Опер.НайтиОперацию(), как в (1), то все работает.