Каталог решений - Об одной неочевидной проблеме перехода на версию платформы 8.3.20

Об одной неочевидной проблеме перехода на версию платформы 8.3.20

Об одной неочевидной проблеме перехода на версию платформы 8.3.20

В наличии

При переходе на платформу 8.3.20 мы столкнулись с ошибкой «Повторяющийся псевдоним «Ссылка» Ссылка AS Ссылка,Presentation AS Presentation,Ссылка AS Ссылка» в ряде типовых конфигураций. Причём, эта проблема оказались неизвестна ни Яндексу, ни Гуглу. Путём мучительных экспериментов нам удалось найти решение. Пока я ещё не уверен, действительно это решение или обходной костыль, а настоящая проблема — в чём-то другом, но это решение работает в ситуации, когда всё сломалось, а проблему надо решать срочно.
Предположительная причина: платформа 8.3.20 более строго относится к типизации данных в запросах, чем предыдущие версии, вываливая в случае несоблюдения новшеств малопонятные ошибки.

Категория:

Описание

Предыстория

В конце прошлого года один из наших заказчиков решил обновить платформу до версии 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 КАК Документ.Партия) КАК Партия,

Проблема оказалась решена.

Возможно, ей требуется более глубокое изучение. Возможно, истинная причина действительно где-то в справочнике основных средств или его структуре. Но во всяком случае мы нашли, куда копать, чтобы делать экстренные заплатки в ситуации, когда откат платформы — дело более трудоёмкое, чем патчинг конфигурации (например, узкое технологическое окно и огромное количество клиентских машин).

has been added to your cart:
Оформление заказа