|
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
|
вот так:
|
|||
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
|
вот веть пиляха муха
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |