Предыстория
В конце прошлого года один из наших заказчиков решил обновить платформу до версии 8.3.20. Работал он на тот момент с типовой 1С:Бухгалтерией 8 для Беларуси последней версии. После обновления перестал открываться один нужный отчёт. При открытии программа вываливалась с ошибкой вроде "{(2, 47)}: Повторяющийся псевдоним "Ссылка" Ссылка AS Ссылка,Presentation AS Presentation,<?>Ссылка AS Ссылка"
Ошибка противная. Она не возникала нигде в коде, она не отлавливалась под отладчиком. Судя по всему, она возникала где-то в недрах платформы при открытии формы и никоим способом отловить её не удалось.
Путём экспериментов выяснилось, что она проявляется на всех версиях платформы 8.3.20.х, но не возникает на любой версии 8.3.19.x и ниже.
Отправили багрепорт в 1С и приложили копию базы с описанием воспроизведения (собственно, демо-базу из дистрибутива). Через некоторе время получили ответ, что ошибка -- в конфигурации и информация передана разработчику. В чём ошибка -- нам не написали.
Откатились с заказчиком на 8.3.19 и решили подождать выхода более свежих релизов.
Сейчас уже другой заказчик решил установить 8.3.20. Ошибка в другой конфигурации начала появляться в другом месте -- при подборе номенклатуры по партиям. В этой ситуации проблему мы решили (или обошли).
Суть проблемы и решение
Если у пользователя на форме подбора номенклатуры был включён показ остатков по партиям и при этом в динамический список добавлено поле документа Партия, после обновления платформы конфигурация стала крашиться с ошибкой
У других пользователей с той же ошибкой конфигурация стала крашиться при попытке просто раскрыть поля документа "Партия" через "+":
Дополнительно в заблуждение вводит подробный текст ошибки (который ложится в файл выгрузки сообщения об ошибке для отправки):
Ошибка при получении характеристик для типа: Основное средство
{(2, 47)}: Повторяющийся псевдоним "Ссылка"
Ссылка AS Ссылка,Presentation AS Presentation,<?>Ссылка AS Ссылка
Причём тут основное средство? Различные эксперименты со справочником ОС, с дополнительными реквизитами и сведениями, характеристиками, документом Партия, их открытием, фильтрацией и выводом не дали никакой информации.
Однако, навело на нужные мысли то, что в данном запросе на "+" нормально раскрываются все объекты конфигурации, кроме Партии: Валюта, Подразделение и даже Субконто3, эту партию и содержащее. Значит, дело в запросе динамического списка?
В итоге этот запрос мы выгрузили во внешний отчёт самый простой и -- да. Оригинальный запрос приводил к такой же проблеме, чуть модифицированный -- нет.
Вот этот запрос обрушивал отчёт при попытке настроить его поля:
ВЫБРАТЬ
ХозрасчетныйОстатки.Субконто3 КАК Партия,
NULL КАК Подразделение,
NULL КАК ФизЛицо,
ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
ХозрасчетныйОстатки.Счет КАК СчетУчета
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаОстатки, {(Счет).* КАК Счет}, &ВидыСубконто, {(ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура, (ВЫРАЗИТЬ(Субконто3 КАК Документ.Партия)).* КАК Партия}) КАК ХозрасчетныйОстатки
УПОРЯДОЧИТЬ ПО
ХозрасчетныйОстатки.Субконто3.Дата
Достаточно оказалось всего лишь более строго указать тип:
ВЫРАЗИТЬ(ХозрасчетныйОстатки.Субконто3 КАК Документ.Партия) КАК Партия,
Проблема оказалась решена.
Возможно, ей требуется более глубокое изучение. Возможно, истинная причина действительно где-то в справочнике основных средств или его структуре. Но во всяком случае мы нашли, куда копать, чтобы делать экстренные заплатки в ситуации, когда откат платформы -- дело более трудоёмкое, чем патчинг конфигурации (например, узкое технологическое окно и огромное количество клиентских машин).