#0
by Dergachev
Например после присвоения переменной сотрудник какого типа она будет: |Сотрудник= ЖурналРасчетов.Запрос.Объект; надо ли ее явно приводить к типу Строка при сравнении? И почему при приведении переменной неопределенного типа к конкретному напр. Число...ее значение "слетает"?Или это все детерминировано ограничениями COM-технологии?
#5
by LandCruiser
я шизею. Dergachev, ты попробуй прочитай что написал. как ты думаешь со стороны понятно хоть что-нибудь? Или это все детерминировано ограничениями COM-технологии?
#6
by igork1966
Зачем "явно приводить к типу Строка при сравнении"? Или ты думаешь, что принципиально не может быть два сотрудника с одинаковыми ФИО? Дык огорчу тебя, это вполне вероятно.
#7
by Dergachev
А что нету своего Страуструппа для 1С-языка...для остальных языков вроде как явно описанно в спецификациях на язык...в том числе и приведение типов ...а такое поведение переменных я могу только объяснить спецификациями на типы в COM-технологии от мелко-мягких..
#9
by igork1966
"|Сотрудник= ЖурналРасчетов.Запрос.Объект; " Это будет ссылка на объект. Их вполне можно сравнивать. Т.е. две ссылки на один и тот же объект (полученные разными путями) будут равны.
#11
by Dergachev
Я не пойму почему в отладчике показывает не ссылку на объект, а некий ФИО...а к Семенычу всегда пожалуйста....интуиция вещь хорошая, но как же формальные спецификации....особенно при разработке компиляторов того или иного языка..
#14
by igork1966
А ты хотел чего в отладчие увидеть? Он тебе показывает представление агрегатного объекта. Попробуй посмотреть в отладчике Запрос.Сотрудник.Код или Запрос.Сотрудник.Наименование удивишься?
#15
by igork1966
+ Строка(Запрос.Сотрудник) тебе вернет представление объекта, в данном случае наименование.
#16
by Dergachev
Ну я хотел удиветь разыменованный указатель, если говорить в терминах классических языков...а ля С....
#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
В документации ненаписано, что происходит с значением. Если бы явно написали что происходит преобразование и как, то можно было-бы юзать. Но думаю (преобразование) было бы неоправданной сложностью.
#38
by Dergachev
да ссылку на агрегатный тип трудно преобразовать к другому типу, мягко говоря...и заголовок темы подправили -спасибо модератору..
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как выбрать запросом табл. часть справочника?
- Описание встроенного языка в электронном виде
- Реально ли сделать ввод приходной накладной через сканер?
- V7: Зависает 1с при открытии позиции номенклатуры
- В чем отличия Ole Automation и Com соединения ?
- Удаление (уменьшение) лога 1С SQL
- Не сохраняются настройки отчета в 7.7
- Запуск Программы по таймеру
- а напомните, где отключается блокировка сессии при неактивности?
- Как редактировать файл bks (список файлов для архивирования)
- Регистр сведений может иметь тип данных Хранилище значений?
- Остатки в разрезе учетов
- Сколько отделов ИТ должно быть в крупной компании
- Быстрое получение предпоследней записи по регистру сведений
- Как изменить цвет фона поля в форме списка документа
- Горю! Как сделать единую нумерацию для сч/фактур при работе в 2 базах?
- Перестала запускаться 8-ка
- "Справочник ссылка: Контрагенты". Как получить Справочник.Контрагенты?
- Во внешней обработке иногда не отражаются последние изменения.
- Заполнение параметра в табличном документе