Имя: Пароль:
1C
1C 7.7
v7: Как программно перезаписать ручную операцию?
0 nameless13
 
12.10.11
14:17
Стоит задача перенести все ручные операции с конца одного месяца на начало другого, программно отбираю все документы типа "Операция" (ручные операции), перезаписываю в них датудока и тоже самое делаю с его операцией (т.к. провести програмно он его не дает).
После этого в документах дата изменилась в операции тоже (перепроверил несколько раз), но когда получаю оборотку на старую дату, то все обороты отражаются по СТАРОЙ дате, по новой в оборотку не попадают, в чем моя ошибка?

   ручнОпер = СоздатьОбъект("Документ.Операция");
   ОперацияДока = СоздатьОбъект("Операция");
   Док = СоздатьОбъект("Документ.Операция");
   
   ручнОпер.ВыбратьДокументы(НачДата, НачДата);
   Пока ручнОпер.ПолучитьДокумент() = 1 Цикл

       НовыйНомер=Число(НовыйНомер)+1;    
       Док.НайтиДокумент(РучнОпер.ТекущийДокумент());
       Док.ДатаДок = НоваяДата;
       Док.НомерДок = НовыйНомер;
       Док.Записать();
           
       //Док.Провести();
       ОперацияДока.НайтиОперацию(Док);
       ОперацияДока.ДатаОперации = НоваяДата;
       ОперацияДока.Записать();
       //ОперацияДока.ЗаписатьПроводки();
   КонецЦикла;
1 nameless13
 
12.10.11
14:20
При этом если интерактивно нажать кнопку "Записать" в документе, то в оборотке все сразу красиво отображается, а программно через метод Записать() нет, как так?
2 filh
 
12.10.11
14:28
см как в документе ПриЗаписи()
3 andrewks
 
12.10.11
14:31
вот это нагородил...
4 nameless13
 
12.10.11
15:17
(3) а как правильно подскажи?
5 nameless13
 
12.10.11
15:27
(2) посмотрел, но там ничего подозрительного не нашел
6 Смотрящий от 1С
 
12.10.11
15:37
Опер = СоздатьОбъект("Операция");

Опер.ВыбратьОперации(ДатаНач, ДатаКон);

Пока Опер.ПолучитьОперацию() = 1 Цикл

 Опер.ДатаОперации = НоваяДата;

  Опер.Записать();

КонецЦикла;
7 Смотрящий от 1С
 
12.10.11
15:38
(6) не то что то написал
8 SeregaMW
 
12.10.11
15:50
Это делается так:
   ДокОперацияСсылка = РучнойДокумент.Ссылка;
                               РегХозрасчетный = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
                               РегХозрасчетный.Отбор.Регистратор.Значение = ДокОперацияСсылка;
                               РегЗапись = РегХозрасчетный.Добавить();
                               РегЗапись.Период = Док.Дата;
                               РегЗапись.Регистратор = ДокОперацияСсылка;
                               РегЗапись.Организация = Справочники.Организации.НайтиПоНаименованию("ООО Автодин");
                               РегЗапись.СчетДт =ПланыСчетов.Хозрасчетный.НайтиПоКоду("10.05");
                               РегЗапись.СчетКт = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
                               БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, 1, товар.Номенклатура);
                               БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетДт, РегЗапись.СубконтоДт, 2,  Док.Склад);
                               РегЗапись.КоличествоДт =  товар.Количество;
                               БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, 1, товар.Номенклатура);
                               БухгалтерскийУчет.УстановитьСубконто(РегЗапись.СчетКт, РегЗапись.СубконтоКт, 2,  Док.Склад);
РегЗапись.Сумма = переменная;
                               РегХозрасчетный.Записать();
9 SeregaMW
 
12.10.11
15:51
(8) на восьмерке! На 7.7 хз.
10 nameless13
 
12.10.11
15:55
(6) но ведь по этому алгоритму отбирутся все операции независимо от типа документа а нужно только ручные операции
11 nameless13
 
12.10.11
15:57
(8) с восьмерки переводить на семерку очень трудно и даже невозможно
12 nameless13
 
12.10.11
16:00
неужели уже все работают на восьмерках?!?! Гуру по семерке, если таковы ещё не перевелись на земле русской, скажите пожалуйста в чем у меня ошибка (код в первом посте)
13 ptiz
 
12.10.11
16:09
убери код с "Док."
и пиши

ОперацияДока.НайтиОперацию(РучнОпер.ТекущийДокумент());
ОперацияДока.Документ.ДатаДок = НоваяДата;
ОперацияДока.Документ.НомерДок = НовыйНомер;
ОперацияДока.ДатаОперации = НоваяДата;
ОперацияДока.Записать();