![]() |
|
v7: Нужна помощь (СуммаВзаиморасчетов) | ☑ | ||
---|---|---|---|---|
0
bestship
14.10.15
✎
08:45
|
Программно создается подчиненный документ (сделан на основе КорректировкаДолга), всё заполняется на основании документа-родителя.
Вопрос следующий: если Сумма отличная от Договор.ВалютаВзаиморасчетов, то СуммаВзаиморасчетов подчиненного документа = сумме, что не верно. Но если в ручном режиме изменить валюту документа, то СуммаВзаиморасчетов пересчитывается правильно. Сумма по документу прописана формула: глФРМ(СуммаВзаиморасчетов, Договор.ВалютаВзаиморасчетов) Подскажите, КАК сделать автоматический пересчет, чтобы не подчиненный документ сам правильно пересчитывал СуммуВзаиморасчетов без ручного изменения и пересчета валюты? http://savepic.su/6225830.png |
|||
1
mishaPH
модератор
14.10.15
✎
08:46
|
фигасе.
|
|||
2
mishaPH
модератор
14.10.15
✎
08:47
|
Ну вот проследи, какой код работает при изменении ручном. И задействуй его при вводе на основании
|
|||
3
Смотрящий
14.10.15
✎
08:47
|
(0) Посмотреть какая функция вызывается при изменении Сумма, в ней найти изменени СуммаВзаиморасчетов
|
|||
4
bestship
14.10.15
✎
08:52
|
(2) Всё вроде правильно говорите, вызывается как и во всех остальных стандартных документах Процедура ПриИзмененииВалюты(). НО... она работает только в ручном режиме. Даже во всех остальных докуметах.
|
|||
5
mishaPH
модератор
14.10.15
✎
08:54
|
(4) ну так запхни ее в процедуру приВводеНаосновании() в доке. после заполнения еще и пройдись этой процедурой
|
|||
6
mishaPH
модератор
14.10.15
✎
08:55
|
сначала идет как идет заполнение цифр при вводе на основании, а затем добавь ПриИзмененииВалюты() она все и досчитает
|
|||
7
bestship
14.10.15
✎
08:59
|
(6) Я извиняюсь за тупые вопросы.
Есть еще Процедура ПересчетСуммыВзаиморасчетов(). Она прописана последней строкой в процедурах ПриИзмененииДаты / Валюты / Договора// Курса и т.д. А может эту процедуру тогда было бы логично прописать в ВводНаОсновании(ДокументОснование)? |
|||
8
mishaPH
модератор
14.10.15
✎
09:00
|
(7) можно. при вводе на основании либо что-то неак, либо не хватает этого финала про пересчет, который вызывается всегда при изменении табличных частей например.
|
|||
9
HawkEye
14.10.15
✎
09:00
|
(7) сначала заполняешь реквизиты документа (Сумма, Валюта, Курс, Договор) потом делаешь:
СуммаВзаиморасчетов = глПересчет(Сумма, Валюта,Курс, Договор.ВалютаВзаиморасчетов,ДатаДок); |
|||
10
mishaPH
модератор
14.10.15
✎
09:00
|
ставь любую, которая выдает нужный тебе результат
|
|||
11
mishaPH
модератор
14.10.15
✎
09:00
|
Коллега. кстати как вас в Афган занесло. не часто такое тут увидишь.
|
|||
12
Масянька
14.10.15
✎
09:05
|
(7) А ты хорошо посмотрел ВводНаОсновании?
У меня ТиС: в вводнаосновании есть заполнениепоитогам, там и идет пересчет взаиморасчетов. Может чего не досмотрел? |
|||
13
bestship
14.10.15
✎
09:15
|
(11) ну тут много российских компаний. только у них учет российский и им не нужно перед местной налоговой сдаваться.
мне же приходится делать 7ку под себя. |
|||
14
bestship
14.10.15
✎
09:16
|
(12) у меня Комплексная
Там так: Процедура ВводНаОсновании(ДокументОснование) СинонимДокумента = ПредставлениеВида(); СинонимОснования = ДокументОснование.ПредставлениеВида(); Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование); Поз = Список.НайтиЗначение(Вид()); // выполним проверку, можно ли вводить документ на основании ДокументОснование Если Поз = 0 Тогда // ДокументОснование не найден в списке разрешенных Предупреждение("Документ """ + СинонимДокумента + """ нельзя вводить на основании """ + СинонимОснования + """", 60); СтатусВозврата(0); Возврат; КонецЕсли; КодОперации = Перечисление.КодыОпераций.Продажа; глЗаполнитьШапкуНаОсн(Контекст,ДокументОснование); ДатаОплаты = глБанковскаяДата(ДатаДок, Договор.ГлубинаКредита); // По умолчанию выписываем в той же валюте и по тому же курсу, что и документ-основание Валюта = ДокументОснование.Валюта; Курс = ДокументОснование.Курс; Кратность = ДокументОснование.Кратность; ДокОснование = ДокументОснование.ТекущийДокумент(); СтарыйКонтрагент = Контрагент; СтарыйДоговор = Договор; КонецПроцедуры // ВводНаОсновании() |
|||
15
Масянька
14.10.15
✎
09:17
|
(14) Вижу. А где заполнение таб. части на основании?
|
|||
16
bestship
14.10.15
✎
09:18
|
(9) Так это всё прописано стандартно здесь:
Процедура ПересчетСуммыВзаиморасчетов() Если ПустоеЗначение(Договор.ВалютаВзаиморасчетов) = 1 Тогда СуммаВзаиморасчетов = 0; Иначе СуммаВзаиморасчетов = глПересчет(Сумма, Валюта,Курс, Договор.ВалютаВзаиморасчетов,ДатаДок,Кратность); КонецЕсли; Форма.Обновить(); КонецПроцедуры // ПересчетСуммыВзаиморасчетов() |
|||
17
bestship
14.10.15
✎
09:19
|
(15) У меня нет Таб.части в этом документе. Это документ КорректировкаДолга в типовой
|
|||
18
Масянька
14.10.15
✎
09:21
|
(17) У меня в КорректировкаДолга нет ВводНаОсновании. Есть ВводНового:
Процедура ВводНового(Скопирован) глЗаполнитьШапку(Контекст, Скопирован); Если Скопирован = 1 Тогда //копирование документа ПересчетСуммыВзаиморасчетов(); Возврат; КонецЕсли; Если Форма.Параметр = "Покупатель" Тогда ВидОперации = Перечисление.ВидыОперацийКоррДолга.Покупатель; Иначе ВидОперации = Перечисление.ВидыОперацийКоррДолга.Поставщик; КонецЕсли; КонецПроцедуры |
|||
19
bestship
14.10.15
✎
09:22
|
(18) Такое тоже есть. 1 в 1
|
|||
20
Масянька
14.10.15
✎
09:24
|
(19) Показывай, что в ПересчетСуммыВзаиморасчетов.
|
|||
21
bestship
14.10.15
✎
09:27
|
(20) Получается по факту, что документ заполняется на основании родителя. И валюта правильно заполняется. НО... не пересчитывает, только если ручками происходит типа изменение валюты.
Процедура ПересчетСуммыВзаиморасчетов() Если ПустоеЗначение(Договор.ВалютаВзаиморасчетов) = 1 Тогда СуммаВзаиморасчетов = 0; Иначе СуммаВзаиморасчетов = глПересчет(Сумма, Валюта,Курс, Договор.ВалютаВзаиморасчетов,ДатаДок,Кратность); КонецЕсли; Форма.Обновить(); КонецПроцедуры// ПересчетСуммыВзаиморасчетов() |
|||
22
Масянька
14.10.15
✎
09:30
|
(21) Один в один...
Только ради тебя ( :)))) ) - сейчас ввела корректировку долга (новую, без основания) по новому договору в евро - у меня все шикарно сразу же отображается на форме. Попробуй - без основания (просто новый док-т) тоже глючит? |
|||
23
bestship
14.10.15
✎
09:32
|
(22) В том то и дело(((, что Корректировка у меня обязана создаваться программно (по галочке) на основании ПКО/РКО/Банк +/Банк-
|
|||
24
Масянька
14.10.15
✎
09:34
|
(23) То есть ты её сам писал?
|
|||
25
bestship
14.10.15
✎
09:36
|
(24) Зачем?!)))
Просто скопировал типовой Корректировка. Переименовал, как мне надо. В родителях дописал Функцию СоздатьДокументWithholdingTaxOnContractor(Док) с заполненим данных |
|||
26
Масянька
14.10.15
✎
09:41
|
(25) Понятно. А ПересчетСуммыВзаиморасчетов воткнул? В ВводНаОсновании. В (14) не вижу.
|
|||
27
Злопчинский
14.10.15
✎
09:42
|
(0) > Сумма отличная от Договор.ВалютаВзаиморасчетов
сумма всегда не равна валюте взаиморасчетов |
|||
28
bestship
14.10.15
✎
09:45
|
(26) Да, не работает((((
.... // По умолчанию выписываем в той же валюте и по тому же курсу, что и документ-основание Валюта = ДокументОснование.Валюта; Курс = ДокументОснование.Курс; Кратность = ДокументОснование.Кратность; ДокОснование = ДокументОснование.ТекущийДокумент(); ПересчетСуммыВзаиморасчетов(); СтарыйКонтрагент = Контрагент; СтарыйДоговор = Договор; КонецПроцедуры // ВводНаОсновании() |
|||
29
bestship
14.10.15
✎
09:47
|
(27) Выебнулся!? Доволен!?
Да, ошибся! Конечно же ВАЛЮТА не равна ... и далее по тексту. |
|||
30
Масянька
14.10.15
✎
09:48
|
(28) Со мной отладчик не разговаривает, поэтому я использую Сообщить(). Либо смотри отладчиком, либо вставляй Сообщить() и лови, где и в чем косяк.
(29) Не надо ругаться. |
|||
31
oslokot
14.10.15
✎
09:50
|
(30) [Со мной отладчик не разговаривает, поэтому я использую Сообщить()]
о_О !!! |
|||
32
HawkEye
14.10.15
✎
09:51
|
(16) я в курсе, только это не вызывается при вводе на основании...
|
|||
34
Масянька
14.10.15
✎
09:53
|
(31) Что "о_О"? Да, не разговаривает.
|
|||
35
Смотрящий
14.10.15
✎
09:54
|
(33) ДАй посмотреть что у тебя там твоится
|
|||
36
HawkEye
14.10.15
✎
09:57
|
(33) что-то ты не договариваешь...
если у тебя реквизиты документы совпадают, то и суммаВзаиморасчетов должна совпадать без всяких пересчетов показывай целиком ВводаНаОсновании |
|||
37
bestship
14.10.15
✎
09:59
|
(36) (14)
|
|||
38
HawkEye
14.10.15
✎
10:02
|
(37) ну а сумма где?
|
|||
39
Масянька
14.10.15
✎
10:06
|
(38) Да, сказала уже.
|
|||
40
bestship
14.10.15
✎
10:07
|
ВСЕМ СПАСИБО!
Особенно Масяньке и HawkEye-за наводку. Спасла такая конструкция в родителе: Док.СуммаВзаиморасчетов = глПересчет(Док.Сумма,Док.Валюта,Док.Курс,Док.Договор.ВалютаВзаиморасчетов,Док.ДатаДок,Док.Кратность); Может и неправильно, зато работает.))) |
|||
41
Масянька
14.10.15
✎
10:08
|
(40) Мне - шоколадку :)))))
|
|||
42
HawkEye
14.10.15
✎
10:08
|
(39) я все не читал )))
(40) можно и так, но зачем лезть в код "Родителя"? надо просто в ВводНаОсновании() добавить: Сумма = ДокументОснование.Сумма СуммаВзаиморасчетов = ДокументОснование.СуммаВзаиморасчетов |
|||
43
mishaPH
модератор
14.10.15
✎
10:09
|
Я на эту Док.СуммаВзаиморасчетов уже наступал и не раз. движения и проводки идут по этому реквизиту и после перезаполнения таблички доки если не пересчитать его - проблемы.
|
|||
44
HawkEye
14.10.15
✎
10:10
|
+42... блин ты же программно создаешь документ.. при чем тут вообще тогда ВводНаОсновании.....
|
|||
45
mishaPH
модератор
14.10.15
✎
10:12
|
(44) а программно через ввод на основании нельзя? я так делал ;)
а при программном вообще 100% надо этот Док.СуммаВзаиморасчетов пересчитывать в итоге |
|||
46
HawkEye
14.10.15
✎
10:12
|
(40)
так пиши в коде где создаешь документ... Док.Сумма = Сумма Док.СуммаВзаиморасчетов = СуммаВзаиморасчетов. |
|||
47
Масянька
14.10.15
✎
10:12
|
(42) (44) Не знаю полной задачи. Вполне вероятно, что можно и не создавать новый док-т (в конфигураторе).
|
|||
48
bestship
14.10.15
✎
10:12
|
(42) Неее, так не пойдет, потому что ДокументОснование у меня может быть на миллион, а подчиненный документ только на 2 или 7% от этой суммы. И подчиненный создается автоматом от родителя. поэтому в родителе и дописал.
(44) как причем!? именно на основании родителя и создается документ и заполняется тоже. |
|||
49
HawkEye
14.10.15
✎
10:13
|
(45) при чем тут льзя\нельзя... он же не так делает...
|
|||
50
HawkEye
14.10.15
✎
10:15
|
(48) так тебя же 100 раз спросили.. как сумму подчиненного рассчитываешь...
п.2 - читай описание методов... в твоем случае - он не причем... |
|||
51
oslokot
14.10.15
✎
10:15
|
(34) В смысле, "отладчик не разговаривает"?
Не запускается, не срабатывает по точке останова или не умеешь им пользоваться? |
|||
52
HawkEye
14.10.15
✎
10:15
|
(51) последнее...
|
|||
53
Масянька
14.10.15
✎
10:17
|
(51) Не начинай.
Мне уже и help рисовали... Не получается. А может привыкла к Сообщить... |
|||
54
aka AMIGO
14.10.15
✎
10:17
|
(41) ТС пожалел? Ну, так и я тебя пожалею, держи: http://taline.ru/wp-content/uploads/2012/01/2012-02-26-Масяня-768x1024.jpg :)
ЗЫ. Проблема ТС решена. Смысл обсуждать личность? |
|||
55
bestship
14.10.15
✎
10:17
|
(51) ну я, например, не умею и не понимаю, как им пользоваться. Не давно показали.
И чЁ!? Литературы, написанной ЧЕЛОВЕЧЕСКИМ языком нет. А остальные умничают, а показать слабо, т.к. сами не умеют. |
|||
56
Масянька
14.10.15
✎
10:18
|
(54) Канибализмом попахивает :)))))))))))))))))))
|
|||
58
Масянька
14.10.15
✎
10:19
|
(55) Поддержу.
В классике (языки программирования) таких проблем не было (у меня) :( |
|||
59
HawkEye
14.10.15
✎
10:20
|
(55) чего там уметь то?
минимум кликаешь на желтой полосе мышкой - получишь точку останова, запускаешь 1С как алгоритм дойдет до поставленной точки - откроется отладчик... и смотри значение любой переменной... или дальше шагай по строчкам... |
|||
60
aka AMIGO
14.10.15
✎
10:21
|
(55) описание работы в нём не особенно нужно.
Список иконок сверху, пройдись мышой, и будет ясно, как работать А также применить Метод научного тыка - залог победы тобой отладчика. |
|||
61
Масянька
14.10.15
✎
10:24
|
(55) Если хочешь - давай мыло, я тебе отправлю help.
|
|||
62
bestship
14.10.15
✎
10:24
|
(60) Исключительно вечный Метод научного тыка помогает решать возникающие проблемы по 1С.
Вам хорошо - Вы все программисты и учились на это. А когда надо работать и нет возможности ждать, приходится учиться и использовать Метод научного тыка. |
|||
63
Масянька
14.10.15
✎
10:25
|
(62) Как раз "программисты" очень мешает. Очень :(
|
|||
64
bestship
14.10.15
✎
10:25
|
(61) Конечно же хочу)))
bestship@mail.ru |
|||
65
Масянька
14.10.15
✎
10:27
|
(64) Лови :)
|
|||
66
aka AMIGO
14.10.15
✎
10:28
|
(62) начало работы, путь в отладчик: http://pics.rsh.ru/img/22_uvnniplr.png
|
|||
67
Масянька
14.10.15
✎
10:30
|
(66) А не ты мне делал help по отладчику?
|
|||
68
aka AMIGO
14.10.15
✎
10:31
|
+66 продолжение, правда, это анализ производительности:
http://pics.rsh.ru/img/22_fpml6st1.png (67) кажись, я :) остались doc"и :) |
|||
69
Масянька
14.10.15
✎
10:32
|
(68) Вот я и скинула автору :)
Еще раз - спасибо :) |
|||
70
aka AMIGO
14.10.15
✎
10:33
|
(69) да не за что :)
|
|||
71
aka AMIGO
14.10.15
✎
10:36
|
1с-овский отладчик очень напоминает клипперовский, году так в 1993-м пришлось заниматься отладкой прожки-бухучета, очень помогал :)
Правда, в клиппере только значения переменных.. Но это не суть важно :) |
|||
72
Масянька
14.10.15
✎
10:48
|
(71) Не соглашусь. В Clipper'е всё было легко и просто.
И маленький ОФФ: - Дедушка, а ты динозавров видел? :))))))) |
|||
73
aka AMIGO
14.10.15
✎
10:50
|
(72) видел! они такиииеее!! вот такие :)
|
|||
74
bestship
14.10.15
✎
11:57
|
(69) Мася, спасибо за help. Буду разбираться и тыкать по кнопочкам по инструкции)))
|
|||
75
Масянька
14.10.15
✎
12:13
|
(74) По большей части, "спасибо" не мне, а aka AMIGO. :)
PS А как вставлять ник, как ссылку? |
|||
76
aka AMIGO
14.10.15
✎
12:16
|
(75) пкм на нике, копировать ссылку, в поле сообщения пкм вставить :)
|
|||
77
aka AMIGO
14.10.15
✎
12:18
|
альтернатива - лкм на нике, тащить его в поле Сообщщения :)
|
|||
78
vicof
14.10.15
✎
12:20
|
или собаку перед ником поставить
|
|||
79
Масянька
14.10.15
✎
12:21
|
vicof
пробую |
|||
80
Масянька
14.10.15
✎
12:22
|
(76) (77) (78) Спасибо огромное!
|
|||
81
mishaPH
модератор
14.10.15
✎
12:27
|
к конфигуратору советую поставить набор плагинов расширения конфигуратора. собраны в одном пакте от пенконфа помоему. там и телепат есть
|
|||
82
Масянька
14.10.15
✎
12:41
|
(81) Да подождите Вы с портретом... Дайте ему со статуей разобраться. (С)
Если автор не бросит это гиблое дело, то - дойдет :) |
|||
83
Злопчинский
14.10.15
✎
21:29
|
(29) да ты не представляешь как я доволен!
как пишем - так и думаем. ошибки в письме (концептуальные) - следствие беспорядка и непоследовательности мышления - о чем здесь говорить...? Одно дело вместо "здравствуйте" написать "зрдаствуйте" - это я еще могу понять.. и простить... Но сравнить сумму с валютой - не, мое чувство прекрасного - бунтует! |
|||
84
Злопчинский
14.10.15
✎
21:30
|
(72) Clarion 2.1 по сравнению с Clipper был как небоскреб с лачугой нищего...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |