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