|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
В табло вычислено вырадение, оно РАВНО "Ложь", почему дебагер зашел в блок Если, а не зашел в блок Иначе? 1С:Предприятие 8.2 (8.2.17.143) Управление производственным предприятием, редакция 1.3 (1.3.35.1) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 11:34 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Сдается мне что <>"<>" такого кода нет в УПП. А если есть - то гнать того кто это написал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 13:23 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Нет, видимо вы не поняли. Перевожу: НЕ РАВНО СТРОКЕ, СОДЕРЖАЩЕЙ СИМВОЛЫ <> Т.е. на языке одноцэ: <>"<>" Хорошо, если в одноцэ нет такой конструкции (кстати, причем тут УПП, это же ядро), то почему Табло вычисляет это выражение, как ЛОЖЬ? В общем, у меня только одна мысль: Интерпретатор макросов в 1С имеет два разных объекта (назовем так некие программные сущности ядра, которые отвечают за обработку макро-кода). Один отрабатывает код, а другой используется в табло. Хотя, все системы, которые подразумевают отладку, всегда используют один объект (либо для дебага используется часть объекта). В общем, не суть, следить за двумя разными кодами сложно, т.к. можно упустить изменения в ядре в одном из объектов. Что, на мой взгляд, и произошло. Сделали кое-какие изменения ядра, в одном объекте поправили, во втором все осталось, как есть. Отсюда и результат в одном - Истина (и он зашел в раздел Если), а в другом - Ложь. Есть, конечно, вторая мысль, что в 1С запрограммировали женскую логику вместо булевой :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 14:32 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Brasileiro, выражение в табло как помещали, через шифт+Ф9? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 14:39 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Да, вычислял, потом включал в табло. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 14:52 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
BrasileiroНет, видимо вы не поняли. Перевожу: НЕ РАВНО СТРОКЕ, СОДЕРЖАЩЕЙ СИМВОЛЫ <>Еще раз - каким образом можно номенклатуру (скорее всего ссылку - но вы текст не показали) сравнить с строкой "<>". По мне так условие если всегда истина. Вполне возможно что ошибка в сранивании несравнимых типов - отсюда и чушь. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 15:07 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Программист 1с, а помойму на делать в руки тому программисту которому это написал!!! искренне говорю если не умеете то не садитесь!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 15:10 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
хотя посмотрите у вас номенклатура может быть с наименованием "<>" тогда в этом случае нужно бить того кто отвечает за внесение номенклатуры! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 15:15 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Ребяты!!! АУ!!! Объясните мне тогда, почему табло вычисляет ЛОЖЬ!!! Кстати, умники, в итоговой версии кода у меня осталась конструкция: Запрос.Текст = "ВЫБРАТЬ | СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Код, | СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Номенклатура |ИЗ | Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие |ГДЕ | СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Код = &сп_код |УПОРЯДОЧИТЬ ПО | СпецификацииНоменклатурыИсходныеКомплектующие.ПозицияПоСпецификации"; И тот код, который по вашему мнению, работать не может. Ан нет, все работает:) Если ВыборкаДетальныеЗаписи.Номенклатура<>"<>" Тогда ПЫСЫ. Программирую активно с 96 года, 1С рюхал сам, никаких дипломов не получал (да и не хочу), поэтому и пользуюсь конструкциями, который вызывают у вас неприязнь. Но, тут же дело было не в конструкции, а в том, что интерпретатор неоднозначно интерпретировал одну строчку кода. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 16:37 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Brasileiro, Если ВыборкаДетальныеЗаписи.Номенклатура<>"<>" Тогда после того как вы объясните зачем и что проверяет ваше условие я вам помогу, так как я не понимаю что вы пытаетесь сделать! тут дело не дипломах тут дело в разумности! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 16:43 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Brasileiro, 1. хоть у меня и нестоль "великий" программер и мне всего 23 года от роду но я не понимаю (Если ВыборкаДетальныеЗаписи.Номенклатура<>"<>" Тогда) что это и для чего на что вы хотите проверить, зачем так!?? 2. в табло он все вернул верно, рассуждайте логично если бы вы поставили вот так (Если ВыборкаДетальныеЗаписи.Номенклатура="<>" Тогда) то тогда бы он вам возвращу истину, а в вашем случае он правильно вернул значение сравнения относительно (ВыборкаДетальныеЗаписи.Номенклатура) потому что наверняка да действительно нет такого выражения, да и не будет т.к. вы сравниваете ссылку со строкой! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 16:54 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
BrasileiroЕсли ВыборкаДетальныеЗаписи.Номенклатура<>"<>" ТогдаЛогично конечно должно быть Если ЗначениеЗАполнено(ВыборкаДетальныеЗаписи.Номенклатура) И логично написать в поддержку чтобы исправили данную ошибку, а "программиста" ВЫГНАЛИ взашей. Что касается - почему заходит? Я так полагаю что табло внизу и отладчик по разному вычисляют сравнение ссылки и текстового поля. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 20:16 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Какой-то идиот внес изменения в типовую конфигурацию без каки-либо комментарией. Зато обсуждений на целую страницу. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 21:44 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Brasileiro, Не знаю, почему в табло "ЛОЖЬ", на по логике указанное сравнение должно всегда давать значение ИСТИНА, так как сравниваются разные типы данных. Т.е. строка не может равняться ссылке. Возможно, в отладчике 1С просто пытается сделать приведение типов. В общем, просто кривое условие. Нельзя такое писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2013, 23:05 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Brasileiro, Бывает косяк с локальным кэшем, когда не совпадают фактические строки и строки выполнения. Проверьте что номер строки совпадает с номером выполняемой строки, который можно посмотреть в меню Отладка/Стек вызовов. Если совпадают выведите в табло значение ВыборкаДетальныеЗаписи.Номенклатура. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 09:34 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
svcoderBrasileiro, Бывает косяк с локальным кэшем, когда не совпадают фактические строки и строки выполнения. Проверьте что номер строки совпадает с номером выполняемой строки, который можно посмотреть в меню Отладка/Стек вызовов. Если совпадают выведите в табло значение ВыборкаДетальныеЗаписи.Номенклатура.Не совпадать может. Но у него в низу табло в котором написано ложь. А всегда должно быть истина. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 10:23 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Программист 1сНе совпадать может. Но у него в низу табло в котором написано ложь. А всегда должно быть истина. Не обязательно - зависит от способа и порядка вычисления операндов и приведения их к одному типу. Сравниваются значения разных типов - Справочник.Номенклатура и Строка. "<>" здесь - представление элемента с пустым наименованием (вроде так) - которое платформа создает самостоятельно. Видимо, разный код вычисляет выражения при исполнении и в отладчике. Исполняющая система сравнивает буквально, и эти значения не равны.А отладчик вычисляет то же выражение самостоятельно (приводя, похоже, значение к строчному представлению) - и для него операнды получаются равны. А кодописатель увидел "<>" в форме списка справочника, и не утруждая мозги написал код, который должен такие элементы обработать. Кому должен, почему должен.... должен, и всё тут! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 10:36 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Во жжете, напиши проверку, и не парься: Если Найти(СокрЛП(ВыборкаДетальныеЗаписи.Номенклатура),"<>") >0 Тогда... Иначе.... А насчет приведения типо: если не уверен за результат то все таки пиши лучше с явным приведение типа к нужному, а уж тем более перед сравнениями. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 11:57 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Программист 1с, Может быть в запроса что-то типа ЕСТЬNULL(Номенклатура, "<>"), судя по остальному коду такое г***о там вполне может быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 12:17 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
вы строите догадки, а сам автор даже не может объяснить зачем ему такая проверка!))) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 13:01 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Видимо, разный код вычисляет выражения при исполнении и в отладчике. Исполняющая система сравнивает буквально, и эти значения не равны.А отладчик вычисляет то же выражение самостоятельно (приводя, похоже, значение к строчному представлению) - и для него операнды получаются равны. А кодописатель увидел "<>" в форме списка справочника, и не утруждая мозги написал код, который должен такие элементы обработать. Кому должен, почему должен.... должен, и всё тут! По порядку: 1) не должно вычисляться различным образом при исполнении и отладчике. 2) Да, увидел, что объект иногда меняет тип на строковый и решил написать такое сравнение. Криво, спорить не буду, но для меня, если такое есть в отладчике, значит, это должно работать и при исполнении. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 18:01 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Brasileiro2) Да, увидел, что объект иногда меняет тип на строковый и решил написать такое сравнение. Криво, спорить не буду, но для меня, если такое есть в отладчике, значит, это должно работать и при исполнении.Так этот код написали Вы? А не в типовой как писали раньше.... Все вопросов больше не имею. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 21:10 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Программист 1сBrasileiro2) Да, увидел, что объект иногда меняет тип на строковый и решил написать такое сравнение. Криво, спорить не буду, но для меня, если такое есть в отладчике, значит, это должно работать и при исполнении.Так этот код написали Вы? А не в типовой как писали раньше.... Все вопросов больше не имею. поржал ясен пень, что ТАКОГО в типовой нет и быть не может ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2013, 21:13 |
|
какого хрена он делает в блоке Если???
|
|||
---|---|---|---|
#18+
Я не писал, что это код типовой конфигурации. Конфу указал, т.к. обычно первый вопрос от вас всегда про версию ядра и конфы. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.05.2013, 11:23 |
|
|
start [/forum/topic.php?fid=28&fpage=45&tid=1519842]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 477ms |
0 / 0 |