![]() |
![]() |
![]() |
|
Регистр Покупатели - запутался | ☑ | ||
---|---|---|---|---|
0
zak555
28.10.09
✎
17:41
|
есть док СтрокаВыпискаРасход оплата в рублях по договору в евро
док делает движение - курсовую разницу засовывает в ресурс ОценкаРуб а теперь вопрос - почему в данном движение ещё проставляется ресурс Себестоимость Платформа 027/sql взял отладчик - ВалютаВзаим = Договор.ВалютаВзаиморасчетов; ТаблДолгов.СуммаУпр = ?(ВалютаВзаим=глДоллары,СуммаВзаиморасчетов,глПересчет(Сумма,Валюта,Курс,глДоллары,КурсДоллара,Кратность,КратДоллара)); ТаблДолгов.СуммаРуб = ?(ВалютаВзаим=глРубли ,СуммаВзаиморасчетов,глПересчет(Сумма,Валюта,Курс,глРубли,КурсРубля,Кратность,КратРубля)); ТаблДолгов.Сумма = СуммаВзаиморасчетов; ТаблДолгов.СуммаНДС = 0; ТаблДолгов.СуммаНП = 0; ТаблДолгов.СтавкаНДС= ПолучитьПустоеЗначение(Перечисление.СтавкиНДС); ТаблДолгов.СтавкаНП = ПолучитьПустоеЗначение("Справочник.СтавкиНП"); ТаблДолгов.Себестоимость = 0; ТаблДолгов.ОблагаетсяНП = ОблагаетсяНП; глДвижениеДолгов(Контекст, Договор,ТаблДолгов,СписокПараметров,ВремВзаиморасчеты); ОбработкаПроведенияПоБанку(); поставил точку на вызов глДвижениеДолгов - там регистре ВремВзаиморасчеты ничего не присвоено далее ставлю останов на движение курсовой разницы но вот когда смотрю на глобальную функцию глДвиженияДолгов (например здесь) Если РегистрУчета ="Поставщики" Тогда РегВзаим = Конт.Регистр.Поставщики; ИначеЕсли РегистрУчета="Покупатели" Тогда РегВзаим = Конт.Регистр.Покупатели; КонецЕсли; там уже есть себестоимость - почему? |
|||
1
zak555
28.10.09
✎
17:46
|
причём это получается
1. сначала восстановил ТА 2. потом перепровёл док (ещё раз нажал провести) НО - если сначала сделаю непроведённым, а потом проведу - ошибки нету |
|||
2
Ёпрст
гуру
28.10.09
✎
17:54
|
Искать в коде метод ОчиститьДвижения или ГрупповаяОбработка, для начала.
|
|||
3
zak555
28.10.09
✎
17:59
|
(2)
1. так стандартная Процедура ПроведениеПоРегистрам() // Удаление движений по регистрам. Для Номер = 1 По Метаданные.Регистр() Цикл ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор); КонецЦикла; 2. Так нету метода в модуле дока ГрупповаяОбработка |
|||
4
zak555
28.10.09
✎
18:17
|
или это глюк восстановление последовательности?
|
|||
5
Дядя Васька
28.10.09
✎
18:46
|
(0) Куда говоришь точку-то поставил? А ну как если не сразу Shift-F9 нажимать, а сначала F9? Где-то в глДвижениеДолгов и сидит...
|
|||
6
Дядя Васька
28.10.09
✎
18:49
|
"не сразу Shift-F9 нажимать, а сначала F9" = "не сразу Shift-F9 нажимать, а сначала F10"
|
|||
7
zak555
28.10.09
✎
19:26
|
нашёл, где косяк :
Процедура ПроведениеПоРегистрам() // Удаление движений по регистрам. Для Номер = 1 По Метаданные.Регистр() Цикл ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор); КонецЦикла; ВалютаСчета = ?(ПустоеЗначение(БанковскийСчет.ВалютаСчета)=1,глРубли,БанковскийСчет.ВалютаСчета); //... КонецПроцедуры ставлю ТО на ВалютаСчета = и вычисляю там выражение глВзятьКонтекст(Контекст).Регистр.Покупатели 1. док не проведён. - никаких движений нету - чисто 2. док проведён - перепровожу - есть движения, в том числе и по себестоимости, т.е. последнее движение по регистру покупатели |
|||
8
zak555
28.10.09
✎
19:46
|
Так же нашёл ещё одну вешь:
закрываю предприятие открывают смотрю движения дока - есть себестоимость в регистре покупателей нажимаю на кнопку провести - нету себестоимости и отладчик показывает, что все движения потёр далее нажимаю опять на провести - есть себестоимость в регистре покупателей и движения по регистру кодом из (7) не очистились |
|||
9
zak555
28.10.09
✎
20:01
|
найден глюк:
ОчиститьДвижения() глючи, если ОТКРЫТЬ документ (т.е. нажимаем на кнопку Провести, а не ОК. Когда ОК, то всё ок ) !!! ща буду с восстановление последовательности разбераться... |
|||
10
zak555
28.10.09
✎
20:09
|
проверил (9) - это только глючит и при открытом документе
когда восстанавливаешь последовательность, то движения по регистрам очищаются |
|||
11
zak555
28.10.09
✎
20:10
|
проверил на 3х платформах: локальная, сетевая, sql
|
|||
12
dk
28.10.09
✎
20:24
|
а просто галку поставить "Автоматически очищать движения"?
|
|||
13
Дядя Васька
28.10.09
✎
20:49
|
(10) ТиИ прогони, битая база. Не должно такого быть.
|
|||
14
zak555
28.10.09
✎
23:55
|
(13) проверял первым делом - всё гуд
|
|||
15
Джинн
28.10.09
✎
23:59
|
(11) Нет такого глюка в платформе. Ищи в другом месте. И пофиг открыт док, закрыт док - обработка проведения к форме не имеет ни малейшего отношения.
|
|||
16
zak555
29.10.09
✎
00:08
|
(15) так я перепроверял сто раз - (13) сразу сделал
|
|||
17
Джинн
29.10.09
✎
00:10
|
(16) Хоть двести. (3) нормально все очищает.
|
|||
18
zak555
29.10.09
✎
00:11
|
(17) док неизменён
|
|||
19
zak555
29.10.09
✎
00:37
|
кнопки на форме имеют формулы:
ПРОВЕСТИ - #Записать Провести ОК - #Записать Провести? Закрыть |
|||
20
Aleksey_3
29.10.09
✎
00:40
|
(19) что говорит о том, что они выплоняют совершенно одинаковые действия
|
|||
21
zak555
29.10.09
✎
00:46
|
(20) на всякий случай
|
|||
22
Ёпрст
гуру
29.10.09
✎
08:25
|
ОчиститьДвижения работает некорректно, если его в коде пытаться применить 2 раза к одному регистру...
И всё.. А тут - ошибка в другом месте. |
|||
23
zak555
29.10.09
✎
10:02
|
(22) а в каком?
|
|||
24
Ёпрст
гуру
29.10.09
✎
10:08
|
(23) нам отсюда не видно..
Мало-ли ..курс другой стал, либо еще чего. |
|||
25
zak555
29.10.09
✎
10:20
|
(24) курс тут причём?
я ж говорю, когда нажимаешь на кнопку ОК и смотришь отладчиком на строку ВалютаСчета в (7), то движения дока по регистру Покупатели пустые Если нажимаешь первый раз кнопку провести - движения пока ещё пусты НО если ещё и т.д. раз - отладчик показывает последнее движение (Отплату покупателю) по регистру Покупатели, в котором и есть Себесмоимость в отладчике смотрел глВзятьКонтекст(Контекст).Регистр.Покупатели |
|||
26
Ёпрст
гуру
29.10.09
✎
10:24
|
(25) а ты закрой отладчик и воткни сообщить - увидишь савсем другое
|
|||
27
Джинн
29.10.09
✎
10:35
|
(25) Причем тут ок или не ок? Ок - это кнопка но форме. К модулю документа она не имеет отношения. И на фига тебе контекст?
|
|||
28
zak555
29.10.09
✎
10:46
|
(26) вставил строку:
Для Номер = 1 По Метаданные.Регистр() Цикл ОчиститьДвижения("Регистр."+Метаданные.Регистр(Номер).Идентификатор); КонецЦикла; ВалютаСчета = ?(ПустоеЗначение(БанковскийСчет.ВалютаСчета)=1,глРубли,БанковскийСчет.ВалютаСчета); сообщить(""+глВзятьКонтекст(Контекст).Регистр.Покупатели.Себестоимость); когда первый раз нажимаю на кнопку ПРОВЕСТИ или ОК выдаёт (ничего) : потом выдаёт (число) : 409099.18 |
|||
29
zak555
29.10.09
✎
10:47
|
(27) см. в (0), как глДвижениеДолгов() обращается к регистру Покупателей
Если РегистрУчета ="Поставщики" Тогда РегВзаим = Конт.Регистр.Поставщики; ИначеЕсли РегистрУчета="Покупатели" Тогда РегВзаим = Конт.Регистр.Покупатели; КонецЕсли; |
|||
30
Джинн
29.10.09
✎
10:52
|
(28) В чем вообще проблема состоит?
""+глВзятьКонтекст(Контекст).Регистр.Покупатели.Себестоимость - что ты вообще собрался смотреть этой хренью? (29) Тут нормально все. Проведение документа возможно только в модуле документа. Если движения делаются в глобальном модуле, то системе указывают, что движения осуществляются от имени документа. К твоей проблеме это какое отношение имеет? |
|||
31
Ёпрст
гуру
29.10.09
✎
10:52
|
(28) Нах там глВзяитьКонтекст ???
|
|||
32
zak555
29.10.09
✎
11:00
|
(30) (31) ПОТОМУ ЧТО, если поставить точку останова после (29), то РегВзаим.Себестоимость = 409099.18 при повторном нажатии кнопки ПРОВЕСТИ (не закрывая окно дока - если закрывать, то всё гуд)
это тоже самое, что и в (28) - поэтому в (9) написал про ОчиститьДвижения() |
|||
33
zak555
29.10.09
✎
11:02
|
кстати, ща проверил на демо базе 7.70.492
создал док реализацию по валютному договору вчерашним днём (так же вставил курс свой) далее сегодняшним приход денег по тому же договору (курс на сегодня тоже установил) далее эффект тот же |
|||
34
Джинн
29.10.09
✎
11:03
|
(32) Проблема в чем? На фига тебе там точку останова ставить вообще?
И что ты смотришь своей бредовой конструкцией? Регистр - это таблица. Даже две. В ней несколько строчек. Что ты увидишь с помощью глВзятьКонтекст(Контекст).Регистр.Покупатели.Себестоимость? |
|||
35
zak555
29.10.09
✎
11:07
|
(34) поставил точку останова в процедуре ггДвижениеДолгов()
РегКнигаПокупок = Конт.Регистр.КнигаПокупок; РегКнигаПродаж = Конт.Регистр.КнигаПродаж; Если РегистрУчета ="Поставщики" Тогда РегВзаим = Конт.Регистр.Поставщики; ИначеЕсли РегистрУчета="Покупатели" Тогда РегВзаим = Конт.Регистр.Покупатели; КонецЕсли; Если Конт.ДатаДок < глДатаПоПриказу147 Тогда ЗачетПоКурсуАвансов = 0; Иначе ЗачетПоКурсуАвансов = 1; КонецЕсли; на строку Если Конт.ДатаДок < глДатаПоПриказу147 Тогда смотрю РегВзаим.Себестоимость = 409099.18 хотя должно быть пустым (это при повторном проведении, не закрывая окна) НО если нажимать ОК или ПРОвести, потом закрыть - всё по нулям |
|||
36
Джинн
29.10.09
✎
11:16
|
(35) Я сейчас матом ругаться начну! И порекомендую куда еще вставить твою строку.
Ты прочитать что тебе пишут можешь? И ответить на конкретные вопросы? Что ты вообще сделать пытаешься? |
|||
37
gun200
29.10.09
✎
11:17
|
М да тяжёлый случай
Сам не знает чего хочет |
|||
38
Ёпрст
гуру
29.10.09
✎
11:21
|
Ё...
Еще раз - Поставь Сообщить(РегВзаим.Себестоимость); закрой нахрен отладчик и наслаждайся. |
|||
39
zak555
29.10.09
✎
11:27
|
Скрины - найдите два отличия
http://s53.radikal.ru/i139/0910/4a/4105ab1301e3.jpg http://s48.radikal.ru/i120/0910/39/fb713a5bcbdb.jpg |
|||
40
Ёпрст
гуру
29.10.09
✎
11:28
|
(39) Ау... движения документов смотрят не этим - открой документ в журнале и нажми пкм - движения документа.
|
|||
41
Ёпрст
гуру
29.10.09
✎
11:28
|
+40 и сделай наконец, (38).
|
|||
42
Ёпрст
гуру
29.10.09
✎
11:29
|
Или меню действия - движения документов
|
|||
43
zak555
29.10.09
✎
11:30
|
(38) (41)
сделал, что в (38) результат при первом нажатии кнопки ПРОВЕСТИ пусто при последующих: 409099.18 409099.18 |
|||
44
zak555
29.10.09
✎
11:31
|
(40) (42) аналогично там - если надо могу скрины показать
|
|||
45
Джинн
29.10.09
✎
11:34
|
(43) Еще раз - что за бред ты смотришь своей конструкцией?
Что ты хочешь вообще увидеть? |
|||
46
Ёпрст
гуру
29.10.09
✎
11:35
|
(43) Закрой отладчик!
|
|||
47
zak555
29.10.09
✎
11:37
|
(46) отладчик закрыт - только предприятие открыто
|
|||
48
Ёпрст
гуру
29.10.09
✎
11:38
|
(47) теперь проверяй.
|
|||
49
Ёпрст
гуру
29.10.09
✎
11:38
|
Что пишет сообщить то ? :))
|
|||
50
zak555
29.10.09
✎
11:38
|
(48) аналогично
|
|||
51
zak555
29.10.09
✎
11:41
|
(49)
результат при первом нажатии кнопки ПРОВЕСТИ пусто при последующих: 292.21 |
|||
52
zak555
29.10.09
✎
11:43
|
(45) а то, что в первом движении курсовой разницы не должно быть Себестоимости, а только в движении Оплата покупателя
в итоге идёт задвоение ресурса Себестоимость !!! |
|||
53
Ёпрст
гуру
29.10.09
✎
11:43
|
||||
54
Ёпрст
гуру
29.10.09
✎
11:43
|
(51) не верю.
|
|||
55
Злопчинский
29.10.09
✎
11:44
|
хм.. в штатном в регимстре.покупатели по-моему вообще себестоимости нет... наваяли фиг знает чего...
|
|||
56
Ёпрст
гуру
29.10.09
✎
11:44
|
Конфа правленная ?
|
|||
57
Ёпрст
гуру
29.10.09
✎
11:44
|
(55) есть
|
|||
58
Злопчинский
29.10.09
✎
11:45
|
(57) точно! пойду, застрелюсь...
|
|||
59
Злопчинский
29.10.09
✎
11:46
|
(56) может все-таки предложим www.teamviewer.com...
|
|||
60
Ёпрст
гуру
29.10.09
✎
11:47
|
(59) ага.. я б поглядел..
:) |
|||
61
zak555
29.10.09
✎
11:47
|
||||
62
zak555
29.10.09
✎
11:47
|
(59) (60) пишите в асю - соединимся
|
|||
63
Злопчинский
29.10.09
✎
11:50
|
я б с удовольствием - да тока в офис ехать надо.. если не выйдет ничего - пиши в ветку в районе часа ночи - помозгуем.. но я думаю Епрст все что надо увидит...
|
|||
64
zak555
29.10.09
✎
11:55
|
(63) там вся фишка в том, что остаётся последнее движение по регистру Покупатели
т.е. если заплатил больше - то последнее движение будет АВАНС, но там себестоимости быть не может => Себестоимость 0, но вот ДокументОплаты будет проставляться в первом движении, хотя по движению курсовой разницы нигде в ТИПОВОЙ не ставится !!! |
|||
65
Ёпрст
гуру
29.10.09
✎
11:57
|
(62) нету аси... ставь тимвьювер, кидай ИД и пароль на мыло ..
eprst@mail.ru |
|||
66
zak555
29.10.09
✎
12:02
|
(65) ушло
|
|||
67
Джинн
29.10.09
✎
12:02
|
(52) Ну дык смотри где в движение этот ресурс пишется. Что ты к очистке движений привязался, которая работает совершенно нормально? Да еще и проверяешь каким-то бредовым способом.
В какой-то переменной мусор остается, а ты очистку движений мучаешь. |
|||
68
zak555
29.10.09
✎
12:04
|
(67) см. в (64)
+ это глюк появляется при повторном нажатии кнопки ПРОВЕСТИ !!! |
|||
69
Джинн
29.10.09
✎
12:06
|
(68) И что? Какая-то переменная не обнуляется и пишется этот мусор. При чем тут очистка движений?
|
|||
70
Злопчинский
29.10.09
✎
12:08
|
лдавайте быстрее блин а то чай допиваю и ухожу...
|
|||
71
zak555
29.10.09
✎
12:17
|
(65) я тоже самое проверил и для одного договора!!!!!!!!!
|
|||
72
zak555
29.10.09
✎
12:18
|
(69) ОчиститьДвижение косячит, если не закрывать док
|
|||
73
zak555
29.10.09
✎
12:18
|
(70) он уже посмотрел
|
|||
74
Ёпрст
гуру
29.10.09
✎
12:19
|
Да всё верно у автора, в типовой торговле/комплексной глючок проявился...
|
|||
75
Ёпрст
гуру
29.10.09
✎
12:20
|
Хотя, шнягу про очиститьДвижения давно обсуждали - не чистит, если было обращение 2 раза ... Тут видать - аналогично.
|
|||
76
zak555
29.10.09
✎
12:21
|
вот демо база, где косяк http://webfile.ru/4043562
|
|||
77
zak555
29.10.09
✎
12:35
|
(75) т.е. не чистит, когда док открыт?
|
|||
78
Ёпрст
гуру
29.10.09
✎
12:39
|
Тут выход только один - чистить ресурсы руками...или явно их опрделять в каждой процедуре.
Даже галка автомат. удаление движений не спасает. |
|||
79
zak555
29.10.09
✎
12:41
|
(79) руками как?
тогда получается, что в теории надо всю конфу колбасить? |
|||
80
Ёпрст
гуру
29.10.09
✎
12:41
|
(77) нет.. там есть такой глюк- чистим движения -пишем - чистим - не очищаются, причем для нового непроведенного дока - одно, при перепроведении- другое..
я ужо не помню. Такой косяк был в КТ-ых алк. конфах, где они таким образом писали в свой регистр - движуха тупо двоилась :) |
|||
81
Ёпрст
гуру
29.10.09
✎
12:42
|
(79) Ну, везде просто явно указывать все измерения/ресурсы и всё..
|
|||
82
Ёпрст
гуру
29.10.09
✎
12:43
|
+81 у тебя щас просто в глОтразитьКурсовуюРазницу не проставляется значение ресурса Себестоимость и всё..
|
|||
83
zak555
29.10.09
✎
12:44
|
(81) да... придётся всю конфу смотреть, где неопределены ресурсы/измерения/реквизиты
|
|||
84
zak555
29.10.09
✎
12:47
|
(82) или просто в глОтразитьКурсовуюРазницу проставить себестоимость 0 и докОплаты пусто?
|
|||
85
Ёпрст
гуру
29.10.09
✎
12:50
|
(84) да. так проще всего
|
|||
86
zak555
29.10.09
✎
13:27
|
(85) понял
|
|||
87
zak555
29.10.09
✎
14:27
|
(85) кстати, а как лучше оставить докОплаты или убить?
|
|||
88
Ёпрст
гуру
29.10.09
✎
14:45
|
Лучше прибить, хотя он в реквизитах = в останках его нет, только в движухе..
Нужно посмотреть, где он вылазиет.. в каких отчетах. |
|||
89
zak555
29.10.09
✎
15:08
|
(88) да вроде нигде - там только по в модуле дока КнигаУчётаДоходаИРАсхода
т.к. смотрит на ресурс СуммаРуб + в глобальнике - глРассчитатьЗначение но этож курсовая только ИначеЕсли (ИдЗначения = "ДвижениеДенежныхСредствИзДокОплаты") Тогда Если глЕстьАтрибутРегистра("ДокументОплаты", СписокАтрибутов, ВидРегистра) = 1 Тогда ДокОплаты = Рег.ДокументОплаты; Если ДокОплаты.Выбран() = 1 Тогда Если глЕстьРеквизитШапки("ДвижениеДенежныхСредств", ДокОплаты.Вид()) = 1 Тогда Возврат ДокОплаты.ДвижениеДенежныхСредств; ИначеЕсли (глЕстьРеквизитМнЧ(ИдЗначения, ДокОплаты.Вид()) = 1) И (Рег.НомерСтроки() <> 0) Тогда Возврат ДокОплаты.ДвижениеДенежныхСредств; КонецЕсли; КонецЕсли; КонецЕсли; |
|||
90
Злопчинский
30.10.09
✎
01:37
|
(74) в типовой глючок проявляется? точно? или в типовой дописанной?
|
|||
92
Ёпрст
гуру
30.10.09
✎
10:07
|
(90) в обычной демке.
|
|||
93
zak555
30.10.09
✎
10:41
|
(90) в (76) типовая демо база 492
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |