Имя: Пароль:
1C
1C 7.7
v7: Изменение ТЧ документа. Не меняет
,
0 AntiBuh
 
23.03.12
08:09
Программно меняю реквизиты ТЧ части документа
ДВижения формируются по новым реквизитам
При открытии формы документа - всё старое

в чем может быть проблема?
1 Irbis
 
23.03.12
08:10
В чём угодно, даже в ДНК.
2 Wobland
 
23.03.12
08:12
(0) телепатирую. при записи документ куда-то сохраняет старые данные, а при открытии достаёт их и подставляет в себя обратно
3 AntiBuh
 
23.03.12
08:16
(2) так док записывается, проводится
движения уже с новыми реквизитами
4 Wobland
 
23.03.12
08:18
(3) я не возражаю. технически возможен вариант подстановки старых данных при открытии. в угадайку больше играть не хочу
5 AntiBuh
 
23.03.12
08:31
какую инфу сообщить чтоб с телепатией не заморачиваться?
6 dk
 
23.03.12
08:32
(0) отладчик твой друг и товарищ?
а так же docprint.ert
7 AntiBuh
 
23.03.12
08:44
отладчик кажет годно - новые реквизиты, и после записи, и после проведения
а докпринт - старые
8 Ёпрст
 
23.03.12
08:50
и всё это поди в незакрытой транзакции
9 AntiBuh
 
23.03.12
08:53
вроде закрывается
после транзакции отладчик тоже годно кажет
да и транзакцию пробовал убирать - один хрен
10 Ёпрст
 
23.03.12
08:56
:)
11 AntiBuh
 
23.03.12
09:06
ага
мне тоже смешно
12 Ёпрст
 
23.03.12
09:07
нам отсюда не видно, как ты "программно" меняешь реквизиты документа
13 AntiBuh
 
23.03.12
09:10
примерно так

Док.ПолучитьСтрокуПоНомеру(стр);
Док.Цена = ЦенаНовая;
Док.Сумма = Док.Цена * Док.Количество;

Док.Записать(); Док.Провести();
14 Ёпрст
 
23.03.12
09:13
и ? где тут транзакция в коде ?
15 alxxsssar
 
23.03.12
09:13
(0) может есть какой-нибудь реквизит вроде типа цен и при открытии документ его считывает, считывает цену согласно типа и пересчитывает и суммы в соответствии с этой ценой
16 Ёпрст
 
23.03.12
09:24
(15) врят ли - он же докпринтом проверяет потом.
тут 99% - (8)
17 AntiBuh
 
23.03.12
09:24
(14) да не в транзакции дело, пробовал и без нее
а так - тоже самое, но  с НАчать... Зафиксировать...
18 AntiBuh
 
23.03.12
09:27
(16) даже если предположить что так, движения то документа с измененными реквизитами
19 ale-sarin
 
23.03.12
09:28
(16) ПОчему вряд ли? Докпринтом проверяет после своего изменения, а при следующем открытии, возможно, изменяется.
Ведь после повторного открытия и записи никто проводки не проверял?
20 alxxsssar
 
23.03.12
09:28
(16) а при чем здесь докпринт? он же не открывает документы интерактивно, а такая вещь может в "ПриОткрытии" быть зашита
21 ale-sarin
 
23.03.12
09:29
Думаю, надо при открытии смотреть.
22 alxxsssar
 
23.03.12
09:30
(16) вот он и делает движения верные, а при следующем открытии перерассчитывает документ. Попробовать закрыть не сохраняя изменения и посмотреть проводки ис-под журнала
23 Ёпрст
 
23.03.12
09:32
(19,20)  ну вы п..ц просто :

docprint.ert смотрит ЗАПИСАННЫЙ документ - если там старые реквизиты - то поделка автора не записывает НИЧЕГО
При чем тут ПриОткрытии вообще ?!
24 ale-sarin
 
23.03.12
09:33
(23) а-а-а, не понял я. думал, что докпринт новые данные показывает. Тогда правда не записывает.
25 ale-sarin
 
23.03.12
09:34
(23) и... не ругайся.
26 alxxsssar
 
23.03.12
09:34
(23) смотри, чел изменил ТЧ, записал, провел, документ сохранился, посдле этого смотрит докпринт - тот показывает нормуль, потому что документ еще изменен, потом открывает форму и только в этот момент документ перерассчитывается. в момент докпринта реквизиты то новые и все норм.
27 Ёпрст
 
23.03.12
09:34
(24) хотя, хрен знает где автор свой код выполняет - во внешней обработке или в самой форме документа.. :)))
28 ale-sarin
 
23.03.12
09:35
А может надо ДокЖЖЖ = СоздатьОбъект("Документ"), а потом ДокЖЖЖ.НайтиДОкумент(Док.ТекущийДокумент())?
Чем черт не шутит. Это так на всякий случай.
29 alxxsssar
 
23.03.12
09:36
(27) сорри не заметил что докпринт тоже старые данные показывает
30 AntiBuh
 
23.03.12
09:43
(27) код во внешней обработке
(28) Док через выборку получается, естественно Док = СоздатьОбъект
31 ale-sarin
 
23.03.12
09:45
(30) Ну вот и смотри(28).
32 Ёпрст
 
23.03.12
09:45
видать в коде нет Записать() а есть тока Провести()
33 ale-sarin
 
23.03.12
09:46
+(31) Если Док - это выборка. То отдельно надо объект получить для изменения = ДокОбъект.НайтиДОкумент(Док.ТекущийДокумент())
34 Ёпрст
 
23.03.12
09:46
ну , пока кода нет, можно еще поугадывать в чем затупил ТС
35 Ёпрст
 
23.03.12
09:46
(33) :)))))))))))))))))

сам этот бред придумал, али подсказал кто ?
36 Ёпрст
 
23.03.12
09:47
если дата документа не меняется - выборка не сбивается
37 ale-sarin
 
23.03.12
09:48
(35) У тебя другое мнение? Попробуй изменить документ:
Док = СоздатьОБъект(Документ.Акт);
Док.ВыбратьДокументы()
Пока ДОк.ПолучитьДокумент() = 1 Цикл
  Док.Номер = "333";
  Док.Записать();
КонецЦикла;

Вопрос: даст изменить?
38 ale-sarin
 
23.03.12
09:49
+(37)Док = СоздатьОБъект("Документ.Акт");
39 Ёпрст
 
23.03.12
09:53
(37) Ты откуда вообще вылез то ?
Конечно даст
40 Ёпрст
 
23.03.12
09:54
выборка по документам сбивается только при изменении даты
41 ale-sarin
 
23.03.12
09:54
(39) Оттуда, от откуда и ты. Проверил?
42 alxxsssar
 
23.03.12
09:54
(38) а тот же докпринт не может быть дописанным? если отладчик нормальные реквизиты после проведения дока показывает?
43 AntiBuh
 
23.03.12
09:55
(36) а если время?
в принципе там всего один документ
(37) а, типа в шапке чтото изменить?
44 Ёпрст
 
23.03.12
09:55
(41) Зачем? Я и так это всё знаю, а проверял еще лет 10 назад
45 Эльниньо
 
23.03.12
09:56
Пятница
46 AntiBuh
 
23.03.12
10:01
(45) 146%
не изменяется ничего
пичалька
47 Ёпрст
 
23.03.12
10:03
(46) код своей поделки покажешь весь или и дальше будешь пичалиться ?
48 ale-sarin
 
23.03.12
10:03
Ого. Блин, и правда работает.
Че-то я не понял. А бывало, что не работало. Приходилось писать:

Док = СоздатьОБъект("Документ.Акт");
ДокОб = СоздатьОБъект("Документ");
Док.ВыбратьДокументы()
Пока ДОк.ПолучитьДокумент() = 1 Цикл
  ДокОб.НайтиДокумент(Док.ТекущийДокумент());
  ДокОб.Номер = "333";
  ДокОб.Записать();
КонецЦикла;

Ладно. Согласен, что затупил в этот раз.
Но дело точно такое бывало. И только у меня.
ТИпа справочники в цикле изменяли, а доки - нет.
49 Tymoha
 
23.03.12
10:04
(46) так как в (7) - не бывает ... что-то не договариваешь ...
50 Tymoha
 
23.03.12
10:05
+(49) ставлю на то, что изменения откатываются взад при проведении ... ))))
51 ale-sarin
 
23.03.12
10:05
+(48) "И только у меня" =  "И НЕ только у меня. "
52 alxxsssar
 
23.03.12
10:09
(50) а как они могут откатываться? реквизиты то новые уже записаны
53 Tymoha
 
23.03.12
10:15
(52) перезаписываются ...
54 alxxsssar
 
23.03.12
10:15
(53) имею в виду откуда старые значения возьмутся?
55 Tymoha
 
23.03.12
10:18
(54) та хз ... анализируй обработку проведения ...
56 alxxsssar
 
23.03.12
10:21
(55) была бы она у меня... ветка то не моя)))
57 Tymoha
 
23.03.12
10:25
(56) а ну да ... пардоньте ))) хотя .... судя по имени ТС - точно бухи прячуть, а потом достают из засады ... вот ))))
58 AntiBuh
 
23.03.12
10:31
выборка движений регистра по данному документу может повлиять?
59 Ёпрст
 
23.03.12
10:34
(58) если смотреть сверху -  то сбоку кажется, что снизу ничего не видно ©...
60 alxxsssar
 
23.03.12
10:37
да вряд ли, документ то сам не трогается
61 Irbis
 
23.03.12
10:42
(58) Могут, если после удара бейсбольной битой по голове у тебя шнурки развязываются.
62 Tymoha
 
23.03.12
10:42
(58) поскольку речь идет о ценах ... смею предположить, что речь будет идти или о периодике или об отдельном справочнике с ценами ... но это чистый дедуктивный метод ... )))
63 AntiBuh
 
23.03.12
10:49
вот и я думаю что не причем
но ощущение что реквизиты дока блокируются от изменения
причем все
64 alxxsssar
 
23.03.12
10:50
(62) я выше писал что возможно есть типы цен, а это как раз и предполагает отдельный или справочник или регистр
65 Ёпрст
 
23.03.12
10:50
(63) код покажешь али так и будешь ломаться как ц..а ?
66 AntiBuh
 
23.03.12
11:11
вот так:


Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
Рег.ВыбратьДвиженияДокумента(Док);
Пока Рег.ПолучитьДвижение() = 1 Цикл
 Если Рег.Приход = 1 Тогда
   Продолжить;
 КонецЕсли;
 стр = рег.НомерСтроки();
 Док.ПолучитьСтрокуПоНомеру(стр);    
 ТЗ.НоваяСтрока();
 ТЗ.Номер = стр;
 ТЗ.Номенклатура = Рег.Номенклатура;
 ТЗ.Количество = Док.Количество;
 ТЗ.ЦенаСтарая = Док.Цена;
 ТЗ.Коэффициент = Док.Коэффициент;
 ТЗ.Единица = Док.Единица;
КонецЕсли;
ТЗ.ЦенаНовая  = Окр(Рег.СуммаРуб / Рег.Количество,2);
Док.Цена = ТЗ.ЦенаНовая;
Док.Сумма = Док.Цена * Док.Количество;

КонецЦикла;
док.Записать(); док.Провести();
67 AntiBuh
 
23.03.12
11:12
КонецЦикла
68 Ёпрст
 
23.03.12
11:12
(66) покажи весь код
69 zak555
 
23.03.12
11:12
(66) сначала умножаем, потом делим
70 Ёпрст
 
23.03.12
11:13
хотя не надо .. и так виден бред сразу
71 AntiBuh
 
23.03.12
11:14
(70) ткни носом
72 Ёпрст
 
23.03.12
11:15
(71) ну для начала вот это :
стр = рег.НомерСтроки();
 Док.ПолучитьСтрокуПоНомеру(стр);
73 Ёпрст
 
23.03.12
11:16
Уверен, что есть привязка строки в регистре ?
74 Ёпрст
 
23.03.12
11:17
//Рег.ВыбратьДвиженияДокумента(Док);
Рег.ВыбратьДвиженияДокумента(Док.ТекущийДокумент());
75 Ёпрст
 
23.03.12
11:17
Нахрена там ТЗ уперлаь для этого кода ?!
76 Tymoha
 
23.03.12
11:18
(73) ну ведь было же заявлено что отладчик после записи показывает нужный вариант )))
77 AntiBuh
 
23.03.12
11:18
(72) а как надо?
78 Ёпрст
 
23.03.12
11:19
потом, нужно делать так:

Док.Сумма  = Рег.СуммаРуб;
глПересчетТабЧасти(Док,"Сумма")..
79 Ёпрст
 
23.03.12
11:19
И.. больше кода - т.е весь целиком
80 AntiBuh
 
23.03.12
11:19
(73) уверен
(74) пробовал, всё так же
(75) тз используется еще в другом месте
81 Ёпрст
 
23.03.12
11:19
Нам отсюда не видно твоей незавершенной транзакции
82 Ёпрст
 
23.03.12
11:22
И СуммаРуб - это ресурс ПартииНаличие, там номер строки не привязывается + если автоподбор партий - то может быть несколько строк с одной номенклатурой и разными партиями, т.е весь код в (66) в топку.
83 Ёпрст
 
23.03.12
11:23
че пытался делать автор и так понятно - продать товар по себестоимости, которая на тот момент есть в регистре, токма сделал всё это через ж..у , еще и код не хочет показывать
84 Ёпрст
 
23.03.12
11:24
даже, если строки и привязываются - еще хуже при данном коде
85 AntiBuh
 
23.03.12
11:24
(78) Док.Сумма может не соответствовать Рег.СуммаРуб
этот регистр останется без изменений, содержимое ТЧ влияет на другой
(79) да нет больше ничего
86 AntiBuh
 
23.03.12
11:28
(82) да может быть несколько, но выбирается одна
87 AntiBuh
 
23.03.12
11:29
в данном случае партия одна
88 Ёпрст
 
23.03.12
11:30
(85) :)

ты не поверишь - и на этот тоже - изменятся реквизиты регистра.

А код не весь, не ври
Хотя пофик - он и так идеологически не верный.
Нужно сворачивать движуху регистра по номенклатуре сперва - потом уже изменять СУММУ (а не цену документа)
И у тебя один фиг - незавершенная транзакция в коде. которую ты до сих пор не показал.
89 zak555
 
23.03.12
11:30
(80) > (73) уверен

в курсе, что одна стока может породить несколько движений ?!
90 AntiBuh
 
23.03.12
11:31
(83) да, смысл примерно такой
для расчета цены берется последняя партия по конкретной номенклатуре
91 AntiBuh
 
23.03.12
11:32
нет транзакции
92 Ёпрст
 
23.03.12
11:34
(90) это не верно, нет понятия цены - всегда нужно опперировать понятием сумма

(91) есть, покажи весь код целиком
93 Ёпрст
 
23.03.12
11:36
+ если это типовой Тис, то как минимум, ты не установил новую СуммВзаиморасчетов - тоже болт в регистрах
94 Ёпрст
 
23.03.12
11:37
в общем,  один сплошной косяк.
ЗЫ: покажи весь код целиком
95 AntiBuh
 
23.03.12
12:06
(93) док не реализация, а переделка Перемещения
96 AntiBuh
 
23.03.12
12:07
Регистр ПартииНаличие не изменяется
97 Ёпрст
 
23.03.12
12:09
(96) че правда ?!
И давно это у нас в перемещении появилась сумма ?
Али это перемещение в розницу ?
98 Ёпрст
 
23.03.12
12:12
и если что ПродСтоимость меняется в регистре при перемещении в розницу
99 AntiBuh
 
23.03.12
12:12
(97) да в розницу
100 Ёпрст
 
23.03.12
12:12
Сотка

и .. весь код показывай..
:)
101 AntiBuh
 
23.03.12
12:15
да нечего больше показывать
там несколько условий на выборку и всё
транзакций нет, если только они из каментов конечно как-нибудь вылазят
102 zak555
 
23.03.12
12:21
секретный код
103 AntiBuh
 
23.03.12
12:23
да ничего секретного
все выдал как есть
убрал пару условий и срач коментариев
104 Ёпрст
 
23.03.12
12:27
Как проверяешь

1. что движения в регистре привязаны и привязка соответствует тому, что в табличной части дока ?
2. как проверяешь, что документ не записался ?
105 AntiBuh
 
23.03.12
12:36
(104) не совсем понял вопрос
106 AntiBuh
 
23.03.12
12:38
Движения ПартииНиличие привязываются к строкам, это при проведении задано
а проверка записи документа
Попытка
Док.Записать();
Исключение
Сообщить("Ошибка записи");
Сообщить(ОписаниеОшибки());
КонецПопытки;
Попытка
Док.Провести();
Исключение
Сообщить("Ошибка проведения");
Сообщить(ОписаниеОшибки());
КонецПопытки;
107 Ёпрст
 
23.03.12
12:40
Процедура сформировать()


Док= создатьОбъект("Документ.ПеремещениеТМЦ");
Рег = СоздатьОбъект("Регистр.ПартииНаличие");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Номенклатура");
ТЗ.НоваяКолонка("Сумма");

Док.УстановитьФильтр(1,0);
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Склад.РозничныйСклад+Док.СкладПолучатель.РозничныйСклад = 0 Тогда Продолжить; КонецЕсли;
Рег.ВыбратьДвиженияДокумента(Док.ТекущийДокмент);
Пока Рег.ПолучитьДвижение() = 1 Цикл
    Если Рег.Приход = 1 Тогда
        Продолжить;
    КонецЕсли;
    ТЗ.НоваяСтрока();
    ТЗ.Номенклатура = Рег.Номенклатура;
    ТЗ.Сумма = Рег.СуммаРуб;
КонецЦикла;
ТЗ.Свернуть("Номенклатура","Сумма");
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
   сч="";
   Если ТЗ.НайтиЗначение(Док.Номенклатура,Сч,"Номенклатура")=1 Тогда
      Док.Сумма = ТЗ.ПолучитьтЗначение(сч,"Сумма");
      глПересчетТаблЧасти(Док,"Сумма");
   КонецЕсли;
КонецЦикла;
Док.Записать();
Док.ПАровести();
КонецЦикла;          

КонецПроцедуры

наслаждайся


док.Записать(); док.Провести();
108 Ёпрст
 
23.03.12
12:41
(106) это п..ц а не проверка..
:)
109 Ёпрст
 
23.03.12
12:42
вот подправил..

Процедура сформировать()


Док= создатьОбъект("Документ.ПеремещениеТМЦ");
Рег = СоздатьОбъект("Регистр.ПартииНаличие");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Номенклатура");
ТЗ.НоваяКолонка("Сумма");

Док.УстановитьФильтр(1,0);
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Склад.РозничныйСклад+Док.СкладПолучатель.РозничныйСклад = 0 Тогда Продолжить; КонецЕсли;
ТЗ.УдалитьСтроки();
Рег.ВыбратьДвиженияДокумента(Док.ТекущийДокмент);
Пока Рег.ПолучитьДвижение() = 1 Цикл
    Если Рег.Приход = 1 Тогда
        Продолжить;
    КонецЕсли;
    ТЗ.НоваяСтрока();
    ТЗ.Номенклатура = Рег.Номенклатура;
    ТЗ.Сумма = Рег.СуммаРуб;
КонецЦикла;
ТЗ.Свернуть("Номенклатура","Сумма");
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
   сч="";
   Если ТЗ.НайтиЗначение(Док.Номенклатура,Сч,"Номенклатура")=1 Тогда
      Док.Сумма = ТЗ.ПолучитьтЗначение(сч,"Сумма");
      глПересчетТаблЧасти(Док,"Сумма");
   КонецЕсли;
КонецЦикла;
Док.Записать();
Док.Провести();
КонецЦикла;          

КонецПроцедуры
110 Ёпрст
 
23.03.12
12:43
ну и синтаксис там сам исправишь - мне лень.
111 AntiBuh
 
23.03.12
12:48
Спасибо
т.е. получается через ПолучитьСТрокуПоНомеру() не выйдет
и нужен перебор ТЧ
112 Ёпрст
 
23.03.12
12:49
(111) ты не догоняешь - в регистре может быть 20 строк с одинаковой номенклатурой и разных партий.
113 AntiBuh
 
23.03.12
12:51
(112) Понимаю, нужную строку я найду и выберу партию что мне нужна
114 Ёпрст
 
23.03.12
12:53
(113) ?

какая из 20-ти будет нужная ?
115 AntiBuh
 
23.03.12
12:56
(114) та которую укажет бух
может приход в определенную дату, может с опреденным ВхНомером
но скорее всего последняя из списываемых партий
116 Ёпрст
 
23.03.12
12:58
(115) и как твоя поделка узнает об этом, когда ты в цикле перебираешь документы ?
117 AntiBuh
 
23.03.12
13:03
(116) типа из регистра нельзя получить инфу о документе прихода

Пока Рег.ПолучитьДвижение() = 1 Цикл
    Если Рег.Приход = 1 Тогда
        Продолжить;
    КонецЕсли;
    ТЗ.НоваяСтрока();
    ПрихДокумент = Рег.Партия.ПриходныйДокумент;
    ТЗ.Номенклатура = Рег.Номенклатура;
    ТЗ.Сумма = Рег.СуммаРуб;
КонецЦикла;
118 Ёпрст
 
23.03.12
13:22
(117) чудак человек.
Как ты слова буха будешь превращать в действия ?
будешь делать таблицу соответствия для каждой номенклатуры ?
Для каждого документа ?
119 AntiBuh
 
23.03.12
13:40
(118) скорее всего нужна будет последняя партия из набора партий
это третье дело
120 Ёпрст
 
23.03.12
13:43
(119) что значит последня ?
121 AntiBuh
 
23.03.12
13:47
Последняя попавшая в документ по данной позиции номенклатуры
122 AntiBuh
 
23.03.12
13:50
короче проблему с незаписью реквизитов решил
как - говорить не буду - стыдно
123 Ёпрст
 
23.03.12
13:51
(122) это, еще сыграем в угадайку на 100 постов ?
:)

колись давай, нам всем за тебя стыдно
124 AntiBuh
 
23.03.12
13:53
(123) :))))
125 AntiBuh
 
23.03.12
13:54
СделатьНеПроведенным() слегка не вовремя :)
126 Ёпрст
 
23.03.12
13:56
(125) ну ёпт, грили же тебе - больше кода
127 AntiBuh
 
23.03.12
14:01
зато пятница удалась
128 Tymoha
 
23.03.12
14:03
(125) хммм .... ну и как это коррелирует с заявлением "в отладчике при записи все гуд"???
129 viktor_vv
 
23.03.12
14:06
Ну наконец-то :). Правда я тоже не понял как СделатьНеПроведенным повлияло на незапись документа.
130 AntiBuh
 
23.03.12
14:09
(128)потому что "не вовремя"
попробуй такую последовательность
заполняется реквизит, Распроводится, Записывается, Проводится
131 Ёпрст
 
23.03.12
14:11
(129) при переборе движений в цикл не заходило, таб часть дока не менялась
132 Tymoha
 
23.03.12
14:13
(131) ТС утверждал, что в момент записи отладчик показывал результат, нужный ТС ... КАК????
133 AntiBuh
 
23.03.12
14:14
(132) и продолжаю утверждать, так и было
134 Ёпрст
 
23.03.12
14:22
(132) я хз, код то свой он так и не показал весь целиком
135 viktor_vv
 
23.03.12
14:22
(131) Теперь понятно. ТС'у надо разведчиком работать :).
136 viktor_vv
 
23.03.12
14:23
(135)+ или шпионом, смотря с какой стороны смотреть :).
137 AntiBuh
 
23.03.12
14:37
(136) я Наш :)
было примерно так

Процедура сформировать()


Док= создатьОбъект("Документ.ПеремещениеТМЦ");
Рег = СоздатьОбъект("Регистр.ПартииНаличие");
ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗ.НоваяКолонка("Номенклатура");
ТЗ.НоваяКолонка("Сумма");

Док.УстановитьФильтр(1,0);
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Склад.РозничныйСклад+Док.СкладПолучатель.РозничныйСклад = 0 Тогда Продолжить; КонецЕсли;
ТЗ.УдалитьСтроки();
Рег.ВыбратьДвиженияДокумента(Док.ТекущийДокмент);
Пока Рег.ПолучитьДвижение() = 1 Цикл
    Если Рег.Приход = 1 Тогда
        Продолжить;
    КонецЕсли;
    ТЗ.НоваяСтрока();
    ТЗ.Номенклатура = Рег.Номенклатура;
    ТЗ.Сумма = Рег.СуммаРуб;
КонецЦикла;
ТЗ.Свернуть("Номенклатура","Сумма");
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку()=1 Цикл
   сч="";
   Если ТЗ.НайтиЗначение(Док.Номенклатура,Сч,"Номенклатура")=1 Тогда
      Док.Сумма = ТЗ.ПолучитьтЗначение(сч,"Сумма");
      глПересчетТаблЧасти(Док,"Сумма");
   КонецЕсли;
КонецЦикла;
//------
Док. СделатьНеПроведенным();
//------
Док.Записать();
Док.Провести();
КонецЦикла;          

КонецПроцедуры
138 alxxsssar
 
23.03.12
14:38
не понимаю как СделатьНеПроведенным() повлияло на изменение суммы в ТЧ. Я тупой наверное
139 Tymoha
 
23.03.12
14:38
(133) да дело в том что наиболее вероятный вариант в (131) .. и он абсолютно противоречит варианту в (130) ... в общем, что-то тут не так )))). ну да ладно - проблема решилась и хорошо ... только вот реально: в след раз лучше сначала отладчиком проверяй, а не на 130 постов телепатические навыки ёпрста проверяй )))
140 Tymoha
 
23.03.12
14:40
(137) а приведи-ка, мил человек, код Обработки отмены проведения ....
141 Ёпрст
 
23.03.12
14:49
(137) забавно, отменяет ли СделатьНеПроведенным все изменения с переменной Док ?
лень проверять - никогда так не писал, хотя, всё может быть
142 AntiBuh
 
23.03.12
14:50
(138)вот в том то и фокус
переставил перед Док.ВыбратьСтроки() и получилось щастье
(140) а нет ее
143 Ёпрст
 
23.03.12
14:50
(142) а зачем ты его распроводишь?
144 AntiBuh
 
23.03.12
14:52
(141) если и изменяет то весьма странно, после отмены проведения в самой переменной ничего не изменилось, точнее всё осталось измененным
и движения сформировались с измененными данными
145 viktor_vv
 
23.03.12
14:53
(141) У меня тоже была первая мысль об этом.
146 AntiBuh
 
23.03.12
14:53
(143) это с первого варианта еще осталось
время документа изменял
147 Tymoha
 
23.03.12
14:56
(142) ну так а как же отладчик при записи???
148 Ёпрст
 
23.03.12
14:57
(147) если предположение в (141) верно, то отладчик будет всё верно казать.. как и говорил автор
149 Tymoha
 
23.03.12
15:04
(148) с каких делов? ведь отмена проведения происходила после заполнения ТЧ, но перед записью ... соответственно - если отмена проведения сбрасывает все итерации с ТЧ, то как жеж отладчик будет правильно казать? ... ниче не понимаю ((((
150 viktor_vv
 
23.03.12
15:05
(148) Заинтриговали. Проверил. СделатьНеПроведенным не отменяет изменения.

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

Результат.

По счету
Нал
Нал
Нал

то есть СделатьНеПроведенным вызывает неявную запись объекта с изменениями.
151 viktor_vv
 
23.03.12
15:11
А посыпаю голову. В базе все осталось по старому :).
152 viktor_vv
 
23.03.12
15:15
Вот так нагляднее будет.

//*******************************************
Процедура Сформировать()
   ДокРН = СоздатьОбъект("Документ.РасходнаяНакладная") ;
   ДокРНПроверка = СоздатьОбъект("Документ.РасходнаяНакладная") ;
   ДокРНПроверкаЗапись = СоздатьОбъект("Документ.РасходнаяНакладная") ;
   
   ДокРН.НайтиДокумент(фасРН);
   Сообщить(ДокРН.ВидРасхода);
   
   ДокРН.ВидРасхода = Перечисление.ВидыРасхода.Нал ;
   Сообщить(ДокРН.ВидРасхода);
   
   ДокРН.СделатьНеПроведенным() ;
   
   ДокРНПроверка.НайтиДокумент(ДокРН.ТекущийДокумент());
   Сообщить(ДокРНПроверка.ВидРасхода);
   
   ДокРН.Записать();
   ДокРНПроверкаЗапись.НайтиДокумент(ДокРН.ТекущийДокумент());
   
   Сообщить(ДокРНПроверкаЗапись.ВидРасхода);    
   //Сообщить(ДокРН.ВидРасхода);
КонецПроцедуры


Результат.

По счету
Нал
По счету
По счету
153 Tymoha
 
23.03.12
15:17
(151), (152) - офигеть ... ТС, приношу свои извинения за недоверчивость ))))
154 AntiBuh
 
23.03.12
15:21
секретная недокументированная фича 1С :)
155 alxxsssar
 
23.03.12
15:26
вот веть пиляха муха