Первые проблемы с 1С:Предприятие 8.3.6
Рубрика: Программирование -> 1С:Предприятие
Метки: 1С:Предприятие | инструменты | примеры | программирование
Просмотров: 7661
Уже рассказывал, что в последние дни занимался переводом корпоративного проекта на платформу "1С:Предприятие 8.3". Мы очень хотели получить полноценный web-клиент, но в версии 8.2 это было невозможно из-за пересмотра современными браузерами отношения к модальным окнам. Разработчики Chrome просто выпилили этот функционал, и в результате веб-клиент 1С перестал корректно работать. В платформе 8.2 еще не были доступны асинхронные вызовы, поэтому единственным решением стала миграция.
Обычно миграция на новую версию платформы происходит просто и быстро: выгрузил базу, обновил платформу, вернул базу на место. Все счастливы. Увы, в этот раз нам не повезло. Пришлось протестировать конфигурацию, найти устаревшие функции и переписать их в соответствии с новыми требованиями. В одних местах это было сделать нетрудно. Небольшой рефакторинг и готово. А вот в нескольких участках, пришлось прямо скажем попотеть.
В итоге все получилось более, чем хорошо. Устаревшие функции были заменены современными аналогами, конфигурация была протестирована и отправлена в продакшн. Даже досадные мелочи о которых я рассказывал в заметке "неидеальная проверка конфигурации" не смогли вставить палки в колеса.
Реальная проблема возникла на третий день работы. При открытии любого списка документов стали валится ошибки. Причем возникла только при работе из толстого клиента. Веб-клиент и тонкие клиенты работали превосходно. Если бы это было не так, то наши клиенты съели бы на заживо.
Дело было так. Подключаюсь к информационной базе толстым клиентом, и хочу открыть список документов. Платформа задумывается и выплевывает ошибку: "Не найдена функция в модуле n". Открываю этот же список документов в веб-клиенте и тонком клиенте - никаких намеков на ошибки.
Тестирование конфигурации показало, что в толстом клиенте все валиться во время проверки модулей менеджеров документов. Модуль менеджеров выполняется всегда на сервере и поэтому необходимости в указании места выполнения (сервер, клиент) в процедурах/функциях никогда не было. В платформе 8.2 все работает просто на ура.
В общем, стоило добавить директивы &НаСервере
перед каждой процедурой в модуле менеджеров, как все чудесным образом заработало. Ошибка больше не проявлялась. Я пока не нашел какой-либо официальной информации в отношении этого феномена, поэтому остаюсь в недоумении и склоняюсь к ошибкам платформы.
Может быть кто-нибудь из вас сталкивался с подобной проблемой? Я использую самую последнюю стабильную версию платформы 8.3.6.2041. Пока сделал дописку в виде &НаСерверре и все стало работать прекрасно, но хотелось бы узнать с чем связано подобное поведение в 8.3.6.