Гость
Форумы / [игнор отключен] [закрыт для гостей] / какого хрена он делает в блоке Если??? / 25 сообщений из 27, страница 1 из 2
14.05.2013, 11:34
    #38256324
Brasileiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
В табло вычислено вырадение, оно РАВНО "Ложь", почему дебагер зашел в блок Если, а не зашел в блок Иначе?
1С:Предприятие 8.2 (8.2.17.143)
Управление производственным предприятием, редакция 1.3 (1.3.35.1)
...
Рейтинг: 0 / 0
14.05.2013, 13:23
    #38256513
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Сдается мне что <>"<>" такого кода нет в УПП. А если есть - то гнать того кто это написал.
...
Рейтинг: 0 / 0
14.05.2013, 14:32
    #38256663
Brasileiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Нет, видимо вы не поняли.
Перевожу: НЕ РАВНО СТРОКЕ, СОДЕРЖАЩЕЙ СИМВОЛЫ <>
Т.е. на языке одноцэ:
<>"<>"
Хорошо, если в одноцэ нет такой конструкции (кстати, причем тут УПП, это же ядро), то почему Табло вычисляет это выражение, как ЛОЖЬ?
В общем, у меня только одна мысль:
Интерпретатор макросов в 1С имеет два разных объекта (назовем так некие программные сущности ядра, которые отвечают за обработку макро-кода). Один отрабатывает код, а другой используется в табло. Хотя, все системы, которые подразумевают отладку, всегда используют один объект (либо для дебага используется часть объекта). В общем, не суть, следить за двумя разными кодами сложно, т.к. можно упустить изменения в ядре в одном из объектов. Что, на мой взгляд, и произошло. Сделали кое-какие изменения ядра, в одном объекте поправили, во втором все осталось, как есть. Отсюда и результат в одном - Истина (и он зашел в раздел Если), а в другом - Ложь.
Есть, конечно, вторая мысль, что в 1С запрограммировали женскую логику вместо булевой :)
...
Рейтинг: 0 / 0
14.05.2013, 14:39
    #38256678
DmitriyZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Brasileiro, выражение в табло как помещали, через шифт+Ф9?
...
Рейтинг: 0 / 0
14.05.2013, 14:52
    #38256710
Brasileiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Да, вычислял, потом включал в табло.
...
Рейтинг: 0 / 0
14.05.2013, 15:07
    #38256739
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
BrasileiroНет, видимо вы не поняли.
Перевожу: НЕ РАВНО СТРОКЕ, СОДЕРЖАЩЕЙ СИМВОЛЫ <>Еще раз - каким образом можно номенклатуру (скорее всего ссылку - но вы текст не показали) сравнить с строкой "<>". По мне так условие если всегда истина.

Вполне возможно что ошибка в сранивании несравнимых типов - отсюда и чушь.
...
Рейтинг: 0 / 0
14.05.2013, 15:10
    #38256743
Титов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Программист 1с,

а помойму на делать в руки тому программисту которому это написал!!! искренне говорю если не умеете то не садитесь!!!
...
Рейтинг: 0 / 0
14.05.2013, 15:15
    #38256755
Титов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
хотя посмотрите у вас номенклатура может быть с наименованием "<>" тогда в этом случае нужно бить того кто отвечает за внесение номенклатуры!
...
Рейтинг: 0 / 0
14.05.2013, 16:37
    #38256902
Brasileiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Ребяты!!! АУ!!!
Объясните мне тогда, почему табло вычисляет ЛОЖЬ!!!
Кстати, умники, в итоговой версии кода у меня осталась конструкция:
Запрос.Текст =
"ВЫБРАТЬ
| СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Код,
| СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Номенклатура
|ИЗ
| Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
|ГДЕ
| СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Код = &сп_код
|УПОРЯДОЧИТЬ ПО
| СпецификацииНоменклатурыИсходныеКомплектующие.ПозицияПоСпецификации";
И тот код, который по вашему мнению, работать не может. Ан нет, все работает:)
Если ВыборкаДетальныеЗаписи.Номенклатура<>"<>" Тогда
ПЫСЫ. Программирую активно с 96 года, 1С рюхал сам, никаких дипломов не получал (да и не хочу), поэтому и пользуюсь конструкциями, который вызывают у вас неприязнь. Но, тут же дело было не в конструкции, а в том, что интерпретатор неоднозначно интерпретировал одну строчку кода.
...
Рейтинг: 0 / 0
14.05.2013, 16:43
    #38256918
Титов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Brasileiro,

Если ВыборкаДетальныеЗаписи.Номенклатура<>"<>" Тогда


после того как вы объясните зачем и что проверяет ваше условие я вам помогу, так как я не понимаю что вы пытаетесь сделать! тут дело не дипломах тут дело в разумности!
...
Рейтинг: 0 / 0
14.05.2013, 16:54
    #38256943
Титов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Brasileiro,

1. хоть у меня и нестоль "великий" программер и мне всего 23 года от роду но я не понимаю (Если ВыборкаДетальныеЗаписи.Номенклатура<>"<>" Тогда) что это и для чего на что вы хотите проверить, зачем так!??
2. в табло он все вернул верно, рассуждайте логично если бы вы поставили вот так (Если ВыборкаДетальныеЗаписи.Номенклатура="<>" Тогда) то тогда бы он вам возвращу истину, а в вашем случае он правильно вернул значение сравнения относительно (ВыборкаДетальныеЗаписи.Номенклатура) потому что наверняка да действительно нет такого выражения, да и не будет т.к. вы сравниваете ссылку со строкой!
...
Рейтинг: 0 / 0
14.05.2013, 20:16
    #38257289
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
BrasileiroЕсли ВыборкаДетальныеЗаписи.Номенклатура<>"<>" ТогдаЛогично конечно должно быть
Если ЗначениеЗАполнено(ВыборкаДетальныеЗаписи.Номенклатура)

И логично написать в поддержку чтобы исправили данную ошибку, а "программиста" ВЫГНАЛИ взашей.

Что касается - почему заходит? Я так полагаю что табло внизу и отладчик по разному вычисляют сравнение ссылки и текстового поля.
...
Рейтинг: 0 / 0
14.05.2013, 21:44
    #38257363
svcoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Какой-то идиот внес изменения в типовую конфигурацию без каки-либо комментарией. Зато обсуждений на целую страницу.
...
Рейтинг: 0 / 0
14.05.2013, 23:05
    #38257407
EugeniaK
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Brasileiro,

Не знаю, почему в табло "ЛОЖЬ", на по логике указанное сравнение должно всегда давать значение ИСТИНА, так как сравниваются разные типы данных.
Т.е. строка не может равняться ссылке.
Возможно, в отладчике 1С просто пытается сделать приведение типов.
В общем, просто кривое условие. Нельзя такое писать.
...
Рейтинг: 0 / 0
15.05.2013, 09:34
    #38257610
svcoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Brasileiro,

Бывает косяк с локальным кэшем, когда не совпадают фактические строки и строки выполнения. Проверьте что номер строки совпадает с номером выполняемой строки, который можно посмотреть в меню Отладка/Стек вызовов.
Если совпадают выведите в табло значение ВыборкаДетальныеЗаписи.Номенклатура.
...
Рейтинг: 0 / 0
15.05.2013, 10:23
    #38257686
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
svcoderBrasileiro,

Бывает косяк с локальным кэшем, когда не совпадают фактические строки и строки выполнения. Проверьте что номер строки совпадает с номером выполняемой строки, который можно посмотреть в меню Отладка/Стек вызовов.
Если совпадают выведите в табло значение ВыборкаДетальныеЗаписи.Номенклатура.Не совпадать может. Но у него в низу табло в котором написано ложь. А всегда должно быть истина.
...
Рейтинг: 0 / 0
15.05.2013, 10:36
    #38257703
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Программист 1сНе совпадать может. Но у него в низу табло в котором написано ложь. А всегда должно быть истина.
Не обязательно - зависит от способа и порядка вычисления операндов и приведения их к одному типу.
Сравниваются значения разных типов - Справочник.Номенклатура и Строка. "<>" здесь - представление элемента с пустым наименованием (вроде так) - которое платформа создает самостоятельно.
Видимо, разный код вычисляет выражения при исполнении и в отладчике.
Исполняющая система сравнивает буквально, и эти значения не равны.А отладчик вычисляет то же выражение самостоятельно (приводя, похоже, значение к строчному представлению) - и для него операнды получаются равны.
А кодописатель увидел "<>" в форме списка справочника, и не утруждая мозги написал код, который должен такие элементы обработать. Кому должен, почему должен.... должен, и всё тут!
...
Рейтинг: 0 / 0
15.05.2013, 11:57
    #38257905
Kreontsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Во жжете, напиши проверку, и не парься:
Если Найти(СокрЛП(ВыборкаДетальныеЗаписи.Номенклатура),"<>") >0 Тогда... Иначе....

А насчет приведения типо: если не уверен за результат то все таки пиши лучше с явным приведение типа к нужному, а уж тем более перед сравнениями.
...
Рейтинг: 0 / 0
15.05.2013, 12:17
    #38257954
svcoder
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Программист 1с,

Может быть в запроса что-то типа ЕСТЬNULL(Номенклатура, "<>"), судя по остальному коду такое г***о там вполне может быть.
...
Рейтинг: 0 / 0
15.05.2013, 13:01
    #38258137
Титов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
вы строите догадки, а сам автор даже не может объяснить зачем ему такая проверка!)))
...
Рейтинг: 0 / 0
15.05.2013, 18:01
    #38258934
Brasileiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Видимо, разный код вычисляет выражения при исполнении и в отладчике.
Исполняющая система сравнивает буквально, и эти значения не равны.А отладчик вычисляет то же выражение самостоятельно (приводя, похоже, значение к строчному представлению) - и для него операнды получаются равны.
А кодописатель увидел "<>" в форме списка справочника, и не утруждая мозги написал код, который должен такие элементы обработать. Кому должен, почему должен.... должен, и всё тут!
По порядку:
1) не должно вычисляться различным образом при исполнении и отладчике.
2) Да, увидел, что объект иногда меняет тип на строковый и решил написать такое сравнение. Криво, спорить не буду, но для меня, если такое есть в отладчике, значит, это должно работать и при исполнении.
...
Рейтинг: 0 / 0
15.05.2013, 21:10
    #38259183
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Brasileiro2) Да, увидел, что объект иногда меняет тип на строковый и решил написать такое сравнение. Криво, спорить не буду, но для меня, если такое есть в отладчике, значит, это должно работать и при исполнении.Так этот код написали Вы? А не в типовой как писали раньше....

Все вопросов больше не имею.
...
Рейтинг: 0 / 0
15.05.2013, 21:13
    #38259184
Shuhard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Программист 1сBrasileiro2) Да, увидел, что объект иногда меняет тип на строковый и решил написать такое сравнение. Криво, спорить не буду, но для меня, если такое есть в отладчике, значит, это должно работать и при исполнении.Так этот код написали Вы? А не в типовой как писали раньше....

Все вопросов больше не имею.

поржал
ясен пень, что ТАКОГО в типовой нет и быть не может
...
Рейтинг: 0 / 0
17.05.2013, 11:23
    #38261591
Brasileiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Я не писал, что это код типовой конфигурации. Конфу указал, т.к. обычно первый вопрос от вас всегда про версию ядра и конфы.
...
Рейтинг: 0 / 0
17.05.2013, 12:52
    #38261785
TёMochkiN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
какого хрена он делает в блоке Если???
Brasileiro,

надо было писать, что нетиповая на основе УПП 1.3.35.1
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / какого хрена он делает в блоке Если??? / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]