-
Notifications
You must be signed in to change notification settings - Fork 107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Конструктор ОписаниеТипов не воспринимает КвалификаторыДаты: ДатаВремя #1133
Comments
Вот этот вариант в 1С тоже не должен работать. Он работает, но по факту видим недокументированное поведение: в 1С вызывается конструктор "На основании объекта ОписаниеТипов" (видимо исходя из количества параметров), который однако первым параметром требует ОписаниеТипов, а не строку. Оскрипт первым параметром видит строку и идёт по пути второго конструктора, "На основании типов и квалификаторов". Так что я бы тут крепко подумал, а нужна ли нам тут такая совместимость. А вторая часть кода - косяк однозначно. Значение по-умолчанию в ОСкрипте не равно 1С. Удивительно, что до сих пор не выплывало. |
В 1С ещё и не проверяется точное соответствие типов Квалификаторов позиции параметра. ОписаниеТипаВремя = Новый ОписаниеТипов("Дата",Новый КвалификаторыДаты(ЧастиДаты.Время)); - работает, хотя правильно должно быть: ОписаниеТипаВремя = Новый ОписаниеТипов("Дата",,,Новый КвалификаторыДаты(ЧастиДаты.Время)); |
ещё вот так: ОписаниеТипаВремя = Новый ОписаниеТипов("Дата",Новый КвалификаторыДаты(ЧастиДаты.Время), Новый КвалификаторыЧисла(10, 2), Новый КвалификаторыСтроки(10)); не работает, но и не ругается во время исполнения. |
Окей, делаем-то что? |
@EvilBeaver Значение по-умолчанию однозначно фиксим. А по поводу конструктора продолжаем бурлесрач: недокументированные возможности мы обычно |
Работает, Плохо, что работает вот так : // Квалификатор 'Время' на своей позиции:
ОписаниеТипаВремя = Новый ОписаниеТипов("Дата",,,Новый КвалификаторыДаты(ЧастиДаты.Время), Новый КвалификаторыДаты(ЧастиДаты.Дата));
Сообщить(ОписаниеТипаВремя.КвалификаторыДаты.ЧастиДаты); -> Дата , т.е. последний по порядку для данного типа.
Второй случай - исправлять. |
@Mr-Rm в части Даты да, в части Числа и Строки квалификаторы не учитываются |
Так нет же типов для Числа и Строки. А если так: ОписаниеТипов = Новый ОписаниеТипов("Строка,Дата,Число",
Новый КвалификаторыДаты(ЧастиДаты.Время),
,,, // !
Новый КвалификаторыЧисла(11, 2),
Новый КвалификаторыСтроки(7));
Сообщить(ОписаниеТипов.КвалификаторыЧисла.Разрядность);
Сообщить(ОписаниеТипов.КвалификаторыСтроки.Длина);
Сообщить(ОписаниеТипов.КвалификаторыДаты.ЧастиДаты); 11 |
Поскольку у нас квалификаторы считай что не используются, предлагаю исправить то что явно неверно, а на недокументированные фичи платформы - забить |
@EvilBeaver Используюся в таблице значений и дереве. Но кто этим на самом деле пользуется, сложно сказать. Вот, первая досада за столь продолжительное время. |
@Mr-Rm всё забавнее и забавнее. |
Fix #1133, поведение конструкторов ОписанияТипов сделано совместимо. Скорректированы тесты.
Опишите ошибку
При создании класса ОписаниеТипов для Даты, полученный тип не содержит время, даже при явном указании в квалификаторе.
Воспроизведение ошибки
Ожидаемое поведение
В платформе в обоих случаях будет "Дата и время"
Окружение
The text was updated successfully, but these errors were encountered: