УПС! или испанский стыд...

Автор Злоп, 27 октября 2024, 23:40

« назад - далее »

Злоп

Ну, это не испанский стыд. Это обычные глюкофичи...

Харлампий Дымба

Цитата: Злоп от 27 февраля 2025, 21:09Ну, это не испанский стыд. Это обычные глюкофичи...
Ну глюкофичи и стыд, что в них вляпался, идут рука об руку.
Вот я делал всегда заполнение ПолнНаименование по необходимости (если Наименование по длине не влезало) так:
Спр.Наименование=НовоеНаименование;
Если Спр.Наименование<>НовоеНаименование Тогда//считал, что тут в Спр.Наименование уже обрезанное по длине наименования значение
 Спр.ПолнНаименование=НовоеНаименование;
КонецЕсли;
а оказалось нет - наименование будет обрезано только в момент сохранения. То есть либо так:
Спр.Наименование=НовоеНаименование;
Спр.Записать();//тут Спр.Наименование обрежется
Если Спр.Наименование<>НовоеНаименование Тогда//заново считывать не надо - Спр.Наименование уже обрезанное
 Спр.ПолнНаименование=НовоеНаименование;
КонецЕсли;
либо через проверку
Метаданные.Справочник().ДлинаНаименования

Ну может и действительно надо завести свою отдельную тему с багами и шлюглюками, а то списки с инфостарта неполны и частью неактуальны - давно пофиксенные проблемы 18го релиза вряд ли кому интересны.

Arbuz

Цитата: Харлампий Дымба от 28 февраля 2025, 10:39Ну может и действительно надо завести свою отдельную тему с багами и шлюглюками

И, (мечтательно) по итогу, всё это в als'ку вместо родной.

Харлампий Дымба

Цитата: Arbuz от 28 февраля 2025, 14:21всё это в als'ку вместо родной.
Может и хорошо, да кто же его читает на третьем десятке...

Опять же - проблемы-то могут ждать где уж казалось бы всё знаешь. Вот критичный реальный Баг2 отсюда https://forum.dorex.pro/index.php?topic=203.0 - про него я нигде не видел информации и у меня всё всегда отлично работало с ИспользоватьКорСубконто().

Или вот предыдущее мое, хоть и не баг, но неочевидное поведение - про хранение в реквизите значения, которое не удовлетворяет типу реквизита.
Ну ведь не работает же:
Спр = СоздатьОбъект("Справочник.Номенклатура");
Спр.Новый();
Спр.Наименование = Перечисление.Булево.Нет;
Сообщить(Спр.Наименование.ПорядковыйНомер());//ведь в Спр.Наименование уже не перечисление, а ... "423". Чего?!
Очевидно же, что должен преобразоваться тип при присвоении. А вот на тебе - преобразуется да с особенностями: в частности, строка не режется. Разве бы я в als полез проверять?
Кстати, в приведенном коде Спр.Наименование будет присвоен внутренний идентификатор объекта. Так что вот открыл себе нечаянно ещё один способ его получать.

Злоп

С перечислениями регулярно как-то непонятно - то при преобразовании в строку дает представлением нормально наименование значения перечисления, то ид объекта... и приходится явно типизировать

Харлампий Дымба

Там прикол приведенного кода в том, что он работает не для перечислений - перечисление я взял для примера. Он работает для любых объектов и возвращает СокрЛП(ВнутреннийИД):
Спр.Наименование=ОсновнойПланСчетов() вернет "809" - внутренний идентификатор плана счетов,
Спр.Наименование=Дата(1) вернёт "-4713112" - внутренний идентификатор первой даты
и т.д.
Кстати, так же работает Состояние() - показывает внутренний идентификатор объекта, а не его строковое представление.

Ну вообще я понимаю, о чём речь, у меня тоже какое-то смутное ощущение, что с перечислениями есть какие-то непонятки.