Капитально об программе 1С 8.0-8.3-8.4, 7.7

Ошибка SDBL: Тип неограниченной длины не допустим

При объединении таблиц в  запросах (ОБЪЕДИНИТЬ ВСЕ), если одно из полей неограниченной длины, а второе просто строкой, возникает данная ошибка.

Поведение системы

При этом выполнение программы завершается (Критическая ошибка с диалогом Закрыть/Перезапустить).

Причины и исправление

Пример поля неограниченной длины

Вариантом решения является приведение значения к определенной длине с возможной потерей данных через функцию ПОДСТРОКА(). Например,

ПОДСТРОКА(ЗатратыПоСтраховомуПокрытиюУслуги.Диагноз,1,1023) КАК Диагноз

В данном случае мы ограничили максимальную длину 1023 символами, т.к. второе объединяемое поле имеет такую же длину.

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

Специфика медицинской сферы требовала длинных диагнозов, но надо было также сделать и конечными, либо использовать другие варианты хранения (несколько полей, справочники, разделение на краткий диагноз и полный).

Проблема не хочет уходить

Далее, все-таки эта ошибка выскочила второй раз, но уже без завершения  программы (в отчете на скд). Было найдено еще одно поле неограниченной длины, которые было выбрано в полях отчета через точку «Документ.Примечание», его не возможно было объединить автоматически.

Добавил еще одно поле выборку запроса с приведение как выше и после этого в настройках СКД изменил поле на это.

Довольно таки не явная ошибка — очень трудно было понять:

Обнаружил ошибку только, когда начал исключать эти поля из выборки в СКД