ЗначениеВСтрокуВнутр() зависит от того, откуда взят объект??? #171817


#0 by Грифон
Ситуация следующая.1. Делаю справочник, один из реквизитов которого хранит в себе ссылку на элемент справочника "Номенклатура".2. Через СоздатьОбъект получаю элемент этого справочника и вытаскиваю из реквизита хранящийся там элемент справочника "Номенклатура".3. Сохраняю его в строку через ЗначениеВСтрокуВнутр4. Через СоздатьОбъект получаю экземпляр справочника, подчиненного Номенклатуре, в одном из элементов которого в качестве владельца находится все тот же элемент справочника Номенклатура, полученный мною в п.п. 2 и 3.5. Сохраняю его в строку через ЗначениеВСтрокуВнутр.6. Обе полученные строки - разные, хотя ядро методом ЗначениеИзСтрокиВнутр правильно восстанавливает из них элемент справочника Номенклатура, о котором идет речь.Я полагал, что строки в данном случае должны быть идентичны. что то вроде "внутреннего" идентификатора объекта. Или 1С считает, что в качестве владельца элемент справочника - совсем не то же самое что сам элемент справочника?Если это так, то очень грустно...Обработка внешняя, платформа 7.7 релиз 025
#1 by Либерал
не верю.покажи разные строки
#4 by Либерал
гы, а ты не из реквизита формы одно из значений берешь?или из ТЗ?в таких случаях может результат зависеть от того, каким типом значения объявлен реквизит диалога или колонка ТЗ.давай код теперь ))
#5 by Либерал
вот-воттипизируй поля ТЗ конкретно
#6 by USSR
Если преобразуешь в строку из реквизитов неопределенного и определненного вида, то результат будет разный. Я при экспорте справочников для этого создавал объект определенного типа, искал его и потом уже только в строку преобразовывал, иначе были такие же накладки
#8 by Грифон
Хорошо. Допустим, я конкретно опишу тип поля как "справочник" или "справочник.номенклатура", помещу в него в одной строке ссылку на элемент справочника "Номенклатура", в другой строке - ссылку на владельца подчиненного справочника, который по сути будет тем же элементом, что и в первой строке. В этом случае строки будут одинаковы?И еще вопрос, есть ли какой-нибудь иной способ однозначно идентифицировать объект БД независимо от того владелец ли он, родитель, изменен-ли, перенесен в другую группу, если это документ, то независимо от того изменено ли время документа, содержание, номер и т.д.?
#9 by Либерал
это лучший способс типами сам поэкспериментируй
#10 by Грифон
+8 Достаточно ли указать в качестве типа поля ТЗ "Справочник" или необходимо указывать вид? То же самое про поле для документов...
#11 by Грифон
ОК. Буду пробовать.
#12 by Либерал
и еще:проверь, я думаю, если гонять значения через переменную -- всегда будет одинаковая строка.например вместоЗначениеСтрокой=ЗначениеВСтрокуВнутр(ТЗ.Номенклатура);делать так:Ссылка=ТЗ.Номенклатура;ЗначениеСтрокой=ЗначениеВСтрокуВнутр(Ссылка);
#14 by Грифон
Кратенький отчетец.   Действительно, конкретное описание типов полей таблицы решило все дело, причем достаточным оказалось описывать тип как "Справочник" и "Документ", для этого пришлось табличку увеличить на одно поле. Просто необходимо было выгружать ссылки на владельцев и родителей в поля с конкретно указанным типом "Справочник".   Перегон объектов через переменные делу нисколько не мешает, все в норме. Более того, если при выгрузке, скажем в одном из полей табличной части документа встречается элемент подчиненного справочника, то достаточно оказалось его владельца просто поместить в поле выходной таблицы, имеющее тип "Справочник", что бы строки по методу ЗначениеВСтрокуВнутр всегда были корректны.Всем огромное спасибо, а то я уже хотел водки нажраться с горя... :)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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