Имя: Пароль:
1C
1С v8
изменение движения операции
0 НубВ1С8
 
14.10.14
12:49
надо в документе Операция заменить все бух счета с одного на другой, субконто частично взять старое, частично установить определенное.
делаю:
&НаСервере
Процедура изменитьСчетНаСервере()
    Набор=РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
    Набор.Отбор.Регистратор.Установить(операция);
    Набор.Прочитать();
    Набор.Записывать = Истина;    
    для каждого движение из Набор цикл
        если движение.СчетДт = планысчетов.Хозрасчетный.ПремияТранзитРуб тогда
              СубконтоДт1 = движение.СубконтоДт.КонтрагентыАгенты;
              СубконтоДт2 = движение.СубконтоДт.Договоры;
              //движение.СубконтоДт.КонтрагентыАгенты= NULL;
              //движение.СубконтоДт.Договоры =NULL;
              Движение.СчетДт = планысчетов.Хозрасчетный.РасчетыСАгентамиРуб;
              движение.СубконтоДт.Агенты = СубконтоДт1;
              движение.СубконтоДт.ВидыСтрахования = справочники.КонтВидыСтрахования.ОСАГО;
              
        конецесли;
                
    конеццикла;  
    Набор.Записать(истина);

    Оп= операция.ПолучитьОбъект();
    оп.Записать(РежимЗаписиДокумента.запись, режимпроведениядокумента.Неоперативный);
КонецПроцедуры

при Набор.Записать(истина); вылетает с руганью: "Запись не верна! Вид субконто "Контрагенты, агенты" не доступен для данной записи!"

Что я делаю не так?
1 Nenaviwu1c20
 
14.10.14
12:55
Это значит что устанавливаемый тобою новый счет не имеет субконто "Контрагенты, агенты"
2 hhhh
 
14.10.14
13:09
а так?
        
     Движение.СчетДт = планысчетов.Хозрасчетный.РасчетыСАгентамиРуб;
              движение.СубконтоДт.КонтрагентыАгенты = НЕопределено;
             движение.СубконтоДт.Агенты = СубконтоДт1;
              движение.СубконтоДт.ВидыСтрахования = справочники.КонтВидыСтрахования.ОСАГО;
3 mikecool
 
14.10.14
13:10
(2) так будет та же ошибка
везде при работе с субконто используется цикл по метаданным
4 Maxus43
 
14.10.14
13:11
>>везде при работе с субконто используется цикл по метаданным
http://fishki.net/upload/users/412503/201406/24/17976ebd64bd6919a516e4fc9eac89f6.jpg
5 Maxus43
 
14.10.14
13:12
проще юзать типовые БухгалтерскийУчет.УстановитьСубконто(...) и подобные
6 Maxus43
 
14.10.14
13:13
З.ы. имхо лучше выгрузить движения, очистить набор и добавлять движения новые из ТЗ, уже изменённые
7 НубВ1С8
 
14.10.14
13:15
(2) да! но я пробовал ставить Неопределено, Null в движение.СубконтоДт.КонтрагентыАгенты, все равно ругается.

(3) так что делать? я меняю счет, меняю субконто... в отладчике старые очищены... не понимаю =(
8 НубВ1С8
 
14.10.14
13:15
(6) уже думаю об этом.
9 Maxus43
 
14.10.14
13:19
попробуй ещё движение.СубконтоДт.Очистить();
10 НубВ1С8
 
14.10.14
13:42
(9) не помогает. буду выгружать в тз