v7: Не могу найти ошибку в коде #575968


#0 by Альбатрос
Вот код: Если выполняется одно из условий, оба счета 41.1 Как так??? Смотрю в отладчике: Выполнилось первое условие, СчКТ = 41.1. Все верно. Далее не выполнилось второе условие. На строчке СчКТ = СчетПоКоду("41.2"); СчКТ = 41.2. Только перехожу на следующую строчку, СчКТ = 41.1. Почему??? Если оба условия не выполняются, все верно. Если выполняется второе условие, то в первом опять неверный счет.
#1 by SnarkHunter
>> Выполнилось первое условие, СчКТ = 41.1. Все верно. Как же верно, если там используется переменная СчДТ?
#2 by filh
СчДТ и СчКТ не одно и тоже
#3 by Альбатрос
Она там и должна использоваться. Первое условие меняет счет и субконто дебета, второе - кредита.
#4 by Альбатрос
Я ошибся в написании. Выполнилось первое условие, СчКТ = 41.1 =  Выполнилось первое условие, СчДТ = 41.1
#5 by Альбатрос
Вот так вобщем происходит: Смотрю в отладчике: Выполнилось первое условие, СчДТ = 41.1. Все верно. Далее не выполнилось второе условие. На строчке СчКТ = СчетПоКоду("41.2"); СчКТ = 41.2. Только перехожу на следующую строчку, СчКТ = 41.1. Почему???
#6 by пипец
к доктору , за таблетками ... ЗЫ у меня три зеленых не летают ...
#7 by Kreont
Какое отношение имеет СчКТ к первому условию?
#8 by Альбатрос
Никакого.
#9 by zak555
u"dyjrjl
#10 by zak555
*г@внокод
#11 by МимохожийОднако
Метод Найти применяется для строковых переменных. Почему ты используешь именно этот метод?
#12 by пипец
гыгыгы
#13 by пипец
Если выполняется одно из условий, оба счета 41.1 Как так???  (с) просто искренне порадавало
#14 by Попытка1С
Вываливай весь код.
#15 by Альбатрос
Пусть будет так, но ошибку то найди. Таб.Склад и таб.Контра и есть строковые переменные. А что непонятно? Оба счета, счет кредита и счет дебета. Ты не понял сразу, да?
#16 by пипец
как раз то и понял , ггыыыыыыыы
#17 by viktor_vv
А перед этой строчкой чему равно СчКт при первом проходе ?
#18 by Альбатрос
Много кода. Да и косяк именно здесь.
#19 by Альбатрос
СчКТ и СчДТ перед этими условиями равны 41.2
#20 by пипец
поставь перед найти , (вашумегараму) , обнуление переменных штоле
#21 by Альбатрос
МОжет это быть глюк платформы? здесь 026 стоит.
#22 by Kreont
Да какой косяк, тут можно сказать линейный код, даже незнаю что тут может подглючить... Поставь Сообщить(СчКТ и СчДТ) после каждой строки кода и смотри
#23 by viktor_vv
Косяк не здесь. И где этот код выполняется? В обработке? На форме функций нету ? Я ж спрашиваю при первом проходе. Если и при первом так, тогда где ты первый раз инициализируешь СчКт?
#24 by Попытка1С
ыыы
#25 by пипец
единственный (последний какой видел) глюк платформы это сделать из  бухсчета иерархию при трех субконто
#26 by trad
внешняя обработка? перезапусти отладчик.
#27 by Альбатрос
#28 by Альбатрос
Вызов и процедура сначала
#29 by Альбатрос
Скрин проводки в 1с
#30 by Kreont
А так можеш потестить: Выписать результаты на листок и думать :)
#31 by Rom_Kat
Таб.Склад тип строковый?
#32 by viktor_vv
Сделай лучше локальные переменные для счетов. Вначале присваиваяй им значения параметров. И дальше работай с локальными переменными счетов. Оно конечно может и не в этом дело. Но переопредление параметров, если в этом нет необходимости, как-то напрягает.
#33 by Альбатрос
да.
#34 by Альбатрос
Результаты: ------- маг. Каравай Основной склад Максима 41.1 41.1 Б маг. Каравай 41.2 41.2 В Основной склад Максима 41.1 41.1 Ну будь добр, раскрой секрет, почему при назаначении одной перменной, меняется значение второй?
#35 by Зеленый Кот
Алексу больше не наливать...
#36 by пипец
это не весь код
#37 by Альбатрос
Локальные переменные решили проблему. Спасибо И все же, просветите, пожалуйста, почему изначальный код не работал???
#38 by viktor_vv
А фиг его знает. СчДт и СчКт у тебя еще небось и как переменные модуля были объвлены, и в качестве параметров использовались. Наверное в этом дело.
#39 by Альбатрос
Нет, только как переменные процедуры
#40 by saturday_ref
Вот и ответ: СоздатьОперацию(Счет_41_2,Счет_41_2,МХ) Измененение счДт ОДНОЗНАЧНО приводит к изменению СчКт. Ибо это изначально одна и та же переменная. (Хоть единственная задача процедуры - создать бух.операцию, это не значит, что используемые в ней переменные забыли, откуда они взялись:))
#41 by Kreont
По умолчанию во все процедур. и ф-ии, я стараюсь писать так: Процедура СоздатьОперацию(СчДТ Знач,СчКТ Знач,Вид Знач)
#42 by Kreont
+100, та же переменная
#43 by viktor_vv
Ооо, точно. И передача параметров по ссылке.
#44 by Альбатрос
Эээ... Присваивается одна переменая, это да. Но ведь он присваевается разным переменным. Как так 2 разных переменных связываются между собой, даже если им присваивается одно значение??? То есть, к примеру: Изменение "строка1" повлечет за собой изменение "строка2"???
#45 by marty0701
НЕт
#46 by Kreont
В таком случае нет
#47 by Альбатрос
Все, я понял. =) Огромное спасибо за разъяснение !!!!
#48 by Kreont
Есть разница между передачи по ссылке и по значению, как раз для процедур/функций В одном случае передается можна так сказать весь обьект(и правка его в середине ф-ии правит исходный вариант), в другом создаются локальные переменные.
#49 by Альбатрос
Да, вы правы. Еще раз спасибо! Дурная моя голова, забыл основы программирования, надо перечитать =)
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С