Приведение типов в макроязыке 1С #141841


#0 by Dergachev
Например после присвоения переменной сотрудник какого типа она будет: |Сотрудник= ЖурналРасчетов.Запрос.Объект; надо ли ее явно приводить к типу Строка при сравнении? И почему при приведении переменной неопределенного типа к конкретному напр. Число...ее значение "слетает"?Или это все детерминировано ограничениями COM-технологии?
#1 by skunk
чего 8)))))
#2 by КонецЦикла
Дык... переменные уже моно типизировать?
#3 by Таня
слова то какие!! умные :)
#4 by КонецЦикла
Это тебе не конфеты грызть и чай сосать...
#5 by LandCruiser
я шизею. Dergachev, ты попробуй прочитай что написал. как ты думаешь со стороны понятно хоть что-нибудь? Или это все детерминировано ограничениями COM-технологии?
#6 by igork1966
Зачем "явно приводить к типу Строка при сравнении"? Или ты думаешь, что принципиально не может быть два сотрудника с одинаковыми ФИО? Дык огорчу тебя, это вполне вероятно.
#7 by Dergachev
А что нету своего Страуструппа для 1С-языка...для остальных языков вроде как явно описанно в спецификациях на язык...в том числе и приведение типов ...а такое поведение переменных я могу только объяснить спецификациями на типы в COM-технологии от мелко-мягких..
#8 by ZolotarevAA
Много чего непонятного, начиная с заголовка.
#9 by igork1966
"|Сотрудник= ЖурналРасчетов.Запрос.Объект; " Это будет ссылка на объект. Их вполне можно сравнивать. Т.е. две ссылки на один и тот же объект (полученные разными путями) будут равны.
#10 by КонецЦикла
Дергачев, моно тебя... к Семенычу? Не обидишься?
#11 by Dergachev
Я не пойму почему в отладчике показывает не ссылку на объект, а некий ФИО...а к Семенычу всегда пожалуйста....интуиция вещь хорошая, но как же формальные спецификации....особенно при разработке компиляторов того или иного языка..
#12 by LandCruiser
еееееееее
#13 by КонецЦикла
2 Показывает основное представление объекта... в данном случае - наименование
#14 by igork1966
А ты хотел чего в отладчие увидеть?  Он тебе показывает представление агрегатного объекта. Попробуй посмотреть в отладчике   Запрос.Сотрудник.Код или Запрос.Сотрудник.Наименование удивишься?
#15 by igork1966
+  Строка(Запрос.Сотрудник) тебе вернет представление объекта, в данном случае наименование.
#16 by Dergachev
Ну я хотел удиветь разыменованный указатель, если говорить в терминах классических языков...а ля С....
#17 by NS
А где мне найти "макроязык 1С" ?
#18 by igork1966
Что собой представляет внутреннее представление ссылки от тебя скрывается, оно тебе по большому счету и ненужно. Етож тебе не универсальный язык. Тебе о предметной области нужно думать а не над указателями извращаться. ;-)
#19 by Dergachev
Я думаю есть внутренние спецификации с языка 1с на Visual C++ где все и прописано...
#20 by igork1966
А зачем все это нужно в приложеннии к 1С? Хочешь на языке типа С бухгалтерию писать, ну ну Дункан Маклауд... ;-)
#21 by Dergachev
ну так да...предметная область она первична...Так получается в данном случае объект ЖурналРасчетов.Запрос.Объект имеет тип основного представления т.е. Наименования?
#22 by igork1966
Ты не экране видишь представление. А так это ссылка на объект с его свойствами и методами.
#23 by Dergachev
да нет на С или на асме я писать не собираюсь- слишком трудоемко...Но вот мне надо было сравнить элементы двух таблиц значения - у одной Тип Строка, а у другой ссылка вроде как на элемент справочника сотрудник и мне показалось что я сравнивать сразу нельзя надо явно выполнить операцию приведения типов...
#24 by КонецЦикла
Это некорректно... обычно Сравнивай элементы как таковые (ссылки) Элемент1 = Элемент2
#25 by Dergachev
так в том то и дело, что я импортирую в Зряпплату dbf-файл, а там поле просто типа строка .записи из файла забрасываются в таблицу значений, но для программного формирования табличной части документов мне нужны ссылки на элемент справочника Сотрудники, а не ФИО типа Строка...вот тут я и не смог себе ответить на вопрос какого типа ссылка на элемент справочника...
#26 by Dergachev
И как трактовать такой код например как не явное приведение типов где переменная Величина вначале имеет так называемый Неопределенный тип- Форма.Величина.НазначитьТип("Число", 15, ТочностьТарифа);
#27 by igork1966
Это не приведение типов ниразу. Не такое     MyLinkToChar = (char *)LinkToInteger; В "величине" храниться в каком-то виде информация о содержащемся там значении. ИХМО при этом "Форма.Величина.НазначитьТип("Число", 15, ТочностьТарифа);" ты заносишь в "Форма.Величина" информацию о типе. Это никак непохоже на приведение типов.
#28 by КонецЦикла
2 Откуда импортируешь? Свяжись с той программой (чтобы код в 1С или какой другой реквизит содержал id элемента той БД) Или
#29 by Dergachev
Спасибо программеры за продуктивное обсуждение, Вы правы все можно было сделать без геммороя ...
#30 by igork1966
А вот: Строка = ":"+ВыбСотрудник; Здесь неявное преобразование к типу строка. Можно явно: Строка = ":"+Строка(ВыбСотрудник); или так:
#31 by quest
чего? Эта хрень в принципе тебе не нужна. Это для базы. Что бы знать что записать в id, для   формы чтобы знать какую форму вызвать если ты клинешь в элемент.     Найди в php приведение типов  и будет тебе счастье в 1С
#32 by Dergachev
Для Guesta....Например я присваиваю переменной неопределенного типа какое вполне определенное число после примения метода Объекта Документ НазначитьТип, эзначение переменной "слетает"...
#33 by Dergachev
Я считаю что жесткая типизация помогает избежать семантических ошибок при написании программ ведь с точки зрения предметной области большинство операций определено над объектами одного типа...
#34 by igork1966
Это фича НазначитьТип, ихмо этот метод обнуляет значение в переменной (присваивает пустое значение такого типа).
#35 by Dergachev
Обнуление переменной можно интерпретировать как побочный эффект выполнения  метода НазначитьТип и мягко говоря это feature....выявить это можно только опытным путем?
#36 by igork1966
В документации ненаписано, что происходит с значением. Если бы явно написали что происходит преобразование и как, то можно было-бы юзать. Но думаю (преобразование) было бы неоправданной сложностью.
#37 by igork1966
+ Там ведь не только число может быть, а и ссылки на агрегатные типы.
#38 by Dergachev
да ссылку на агрегатный тип трудно преобразовать к другому типу, мягко говоря...и заголовок темы подправили -спасибо модератору..
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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