Кто курил траву? Я или платформа? #20813


#0 by pit
Классная попалась травка… Накуриться не могу….Имеем форму справочника. Кнопка в форме, по которой осуществляется переход в другой справочник с позиционированием в нем.. ====================================Вот вызов открытия другой формыprocedure Перейти  if CurrentItem.Selected =1 then  В форме другого справочника пытаемся обработать параметры (в процедурах ПриОткрытии и ПриПовторномОткрытии – код одинаковый)  if EmptyValue(Form.Parameter) <> 1 then  При нажатии на кнопарь имеем пары сообщенийНормальная парапозиционирование на ЧТО ВЫБРАЛИполучено ЧТО ВЫБРАЛИ.И такие пары - ОШИБОЧНЫЕпозиционирование на ЧТО ВЫБРАЛИполучено.илипозиционирование на ЧТО ВЫБРАЛИНас посетил ОБЛОМОВ      т.е. параметр не пришел.    Релиз 20 и 23 ДБФ. На 15 – РАБОТАЕТ, но там валятся отчеты.Проверено под отладчиком. Значение действительно иногда пустое. Причем пустое может прийти несколько раз подряд, а потом несколько раз нормальное. Количество – непредсказуемое.Обломец бывает на разных машинах (ОС – 98, 2000, ХР). На одних чаще, на других реже. На некоторых практически не бывает обломов…ВК – не используются…Конфа – изуродованная типовая бухия 4.3x. На ней сделано производство.P.S. Идеи по исправлению ситуации. Конечно, есть. Но кто нибудь популярно для идиотов объяснит причину…Ибо эта конструкция выверена, занесена в шаблоны и никогда не давала причин беспокойства…
#1 by pit
>
#2 by pit
Это в смысле навеяно этой веткой....
#3 by Эстет хренов
а если не использовать сз? и передавать сразу объект позиционирования?
#4 by pit
ТиИ проходит без проблем.Пробовал- выносить определение _СЗ_ в начало как Перем _СЗ_- пробовал просто передавать объект
#5 by Эстет хренов
никогда такого не было.. :((как бредовая идея, прокэшируй внешний контекст, перед обращением:
#6 by Guk
Может на русском надо писать?Может в этом всё дело?...
#7 by pit
Попробую.Но самое противное - в другом месте не удается воспроизвести эффект на той же самой конфе и данных. По русски - это с матами? Или "как всегда"
#8 by systemstopper
Обкурился ты конкретно.
#9 by Guk
Я году в 2000 понял, что познать 1С до конца, всё равно неудастся. Каим бы спецом ты не был.Когда один и тот же код, на одних и тех же данных в Предприятии отрабывает по одному, а в Отладчике пошагово по другому, это выше моего понимания. А ведь я до 1С на Delphi писать пробовал. Borland, кстати, таких подстав никогда не делало...
#10 by pit
и не говори... Причем почем купил - даже не заметил....Самое прикольное - Эта же самая конструкция туеву хучу раз используется в этой же конфе...Порождена шаблоном. Все работает, а в этом месте - аллес....P.S. в пятницу буду терзать конфу у клиента. Поборем. У меня еще 3 идеи есть.... и не говори. До чего заЁ...ло... Насчет Борланда - согласен...
#11 by systemstopper
Сегодня на 15 релизе грабли словил...На 23 дома сделал, а у клиента-не работает...Не работала конструкция
#12 by VZ
Вот уж зараза... Ни разу не наступал на такое. Правда, я вместонаписал бы (ну привык так, особенно на формах списков): А вот почему так привык, не знаю...
#13 by Господин Забалуев
имхо, списки в 1С часто косячат....наверное это связано с поддержкой списоков виндой...сам видел что на одном машине список вообще не открывался (Вин98), на другой машине на том же самом коде (Вин2000) все работало...может быть заменить список на ТаблицуЗначений ?
#14 by Frog
Вообще, я стараюсь избегать списка, пользуюсь им только если надо чеками выбирать что-нить и многие траблы 1С решаются через переменые к примерупростой поискСпр.НайтиПоКоду(СпрОс.Код) так может не сработать, а если Код=СпрОс.КодСпр.НайтиПоКоду(Код) срабатывает нормально. Это конечно тревиальный прмер, но думаю суть ясна, у 1С проблемы пожизненные с позиционированием.
#15 by Оболтус
""""Когда мне по наследству достался примерно вот такой код, я сильно удивлялся. Выкинул. Пришлось снова такое же написать. На реквизит "КодТорг" поставлена сортировка, только и всего.
#16 by Меланхоличный ворон
Borland подстав не делало??? Вспомни Delphi 1.0 (еще под Win32S) Я три дня отлаживал код, пока не выяснил, что у них функция Max возвращает минимальное, а Min максимальное из двух значений :-)
#17 by VZ
А я на такое наткнулся в свое время: м модуле дока (проведение!) некоторые строки табличной части формировали проводки с количеством, но без суммы. Иногда. А данные брались из ТЗ. Когда обнаружил, поставил сообщение, чтоб отловить. И все путем. Снял сообщение - опять хрень :( Так и пришлось оставить...
#18 by CracK
2 А может на форме справочника есть какие-нить функции, которые используют CurrentItem, у меня как-то раз такая функция "дестабилизировала" нормальную работу?
#19 by sd
imho дело в потере фокуса при передаче параметра. Либо , либо так,.procedure Перейти  if EmptyValue(CurrentItem) =0 then..либо совсем вот так:...
#20 by pit
нда... трава еще круче моей...Какая потеря фокуса? Креститесь.....P.S. проблему решил... Уссссссался над решением...Благо тащиться не пришлось... У клиента есть программер, занимается станками и прочей микролабудой - он под чутким телефонным руководством вставил кусок... Весьма удивляясь написанному коду. После запуска 1С связь прервалась. Позвонил в бухию и попросил зайти к нему - выяснить последствия. Сходили - сказали, он в истерике катается по полу и ржет... как стая лошадей....Вот код... Только пристегнитесь ремнями...if EmptyValue(Form.Parameter) <> 1 thenесли EmptyValue(Оп) = 1 then сообщить ("Болт №2"); Оп =_СЗ_.Get("Элемент");endIf;если EmptyValue(Оп) = 1 then сообщить ("Болт №3"); Оп =_СЗ_.Get("Элемент");endIf;если EmptyValue(Оп) = 1 then сообщить ("Болт №4"); Оп =_СЗ_.Get("Элемент");endIf;если EmptyValue(Оп) = 1 then сообщить ("Болт №5"); Оп =_СЗ_.Get("Элемент");endIf;если EmptyValue(Оп) = 1 then сообщить ("Болт №6"); Оп =_СЗ_.Get("Элемент");endIf;если EmptyValue(Оп) = 1 then сообщить ("Болт №7"); Оп =_СЗ_.Get("Элемент");endIf;если EmptyValue(Оп) = 1 then сообщить ("Болт №8"); Оп =_СЗ_.Get("Элемент");endIf;если EmptyValue(Оп) = 1 then сообщить ("Болт №9"); Оп =_СЗ_.Get("Элемент");endIf;если EmptyValue(Оп) = 1 then сообщить ("Болт №10"); Оп =_СЗ_.Get("Элемент");endIf; если EmptyValue(Оп) = 1 then сообшить ("Стая БОЛТОВ!!!!"); возврат; endIf;…….….. дальнейшие действия…………..при работе доходит до болта от 2 до 5 – дальше выдает ПОЛУЧЕНО…Я валяюсь….
#21 by VZ
Шедевр!!! В анналы, в золоченую рамку под стекло! Распечатать на струйнике крупным цветным принтером, прицепить шнурок с печатью и вручить БН на торжественной линейке...
#22 by pit
Вот так - многократное присвоение наконец то выдирает параметры...
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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