Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 21:44

Теряется контекст документа и значение переменной

Автор Herby, 27 сен 2013, 16:10

0 Пользователей и 1 гость просматривают эту тему.

Herby

Проверяя лог 1С, обнаружил часто возникающую ошибку (каждый день у какого-нибудь пользователя возникает): "Поле агрегатного объекта не обнаружено".


Вот один из фрагментов кода:

Пока запрос.группировка() = 1 Цикл
  ДокСчет = Запрос.Док;
  пКлиент = ДокСчет.Клиент;
  пОтдел =  ДокСчет.Отдел;
КонецЦикла;


Ошибка валится на считывании реквизита "Отдел". При этом, Клиент и Отдел это реквизиты счета, оба реквизита - локальные (не общие). Переменная ДокСчет локально объявлена, т.е. никакая глобальная переменная не могла бы ее изменить, но стабильно,  раз в день такая странная ошибка возникает: " Поле агрегатного объекта не обнаружено (Отдел)".  Удивляет еще то, что валится всегда именно при обращении к Отделу.

Т.е. на момент считывания реквизита "Клиент" все было нормально, но через какие-то миллионные доли секунды, переменная ДокСчет по каким-то причинам очищается и валится ошибка на обращение к Отделу.

Как я уже написал, прошерстил весь лог 1С,  ошибка валится каждый день, каких либо тяжелых процессов/блокировок, судя по логу, в  момент ошибки не наблюдается.

Анализ лога показал, что подобная необъяснимая ошибка возникает в разных частях кода конфигурации, либо теряется значение переменной как в вышеописанном примере, либо теряется контекст документа, передаваемый в какую либо функцию/процедуру.

Пока никаких мыслей....


Релиз 21, конфигурация не типовая, БД - SQL 2000, в базе одновременно работают примерно 200 человек.


MuI_I_Ika

Запрос.Док - не может быть, что там тип документа не Счет, а какой-нибудь другой, у которого есть реквизит Клиент?

Herby

Цитата: MuI_I_Ika от 27 сен 2013, 16:18
Запрос.Док - не может быть, что там тип документа не Счет, а какой-нибудь другой, у которого есть реквизит Клиент?

нет, здесь всегда документ Счет.

переменная запроса:

|Док = Документ.Счет.ТекущийДокумент;

LordWizard

Могу только сказаться - сыпется базочка, сыпется... много дописанного.
Правильно ведите учет или пишите программы и вам воздастся!...

(Кстати - кнопочку Сказать Спасибо - никто не отменял)

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск