И
Истребитель
Добрый день!
версия 1С 8.1.15.14 база УТ 10.3.9.4 серверная
Абсолютно не представляю как могло произойти то, что произошло.
Для удобства исправления проблем с партионным учетом я сделал так, что все ошибки партионного учета (вида "Документ такойто: Не списано по партии") записываются в регистр сведений, откуда их потом можно прочитать (это на случай если сотрудник забил на ошибку и закрыл документ со словами "провелся и хрен с ним").
Сегодня в этом регистре обнаружена такая запись:
Управленческий учет. Документ <Объект не найден> (132:ae87000c290c4b3211e171926075b47c)
Не списано по партиям 1 шт. товара Блок RIB (RLN4008), со склада: Склад Выставка
Это сотрудник проводил свежесозданный Заказ покупателя (в журнале регистрации на то время, когда была ошибка, два события с одним и тем же документом - Добавление, затем Проведение).
Чем усугублена проблема:
Во-первых, в журнале регистрации такого объекта нет!
Документ который проводился - сегодняшний. Поискал по всему журналу за сегодняшний день - нет такого гуида! Заказ который проводился в указанное в регистре время (и выдал эту ошибку) имеет иной гуид!
Во-вторых, я посмотрел код.
В ошибку выводится поле "Регистратор" из строки, которая берется из движений проводимого документа по регистру сведений СписаниеТоваров. Таким образом, по определению, поле Регистратор не может содержать "Объект не найден" потому что эти движения только что записаны при запуске предыдущей функции, делающей движения по этому регистру. Проверил - движения делаются без указания регистратора, т.е. заполняется строками Движения.СписаниеТоваров, поле Регистратор = неопределено, при выозве Движения.СписаниеТоваров.Записать(Истина) регистратор проставляется равным текущему документу.
Итого - каким то образом в процессе обработки события ОбработкаПроведения при вызове Движения.СписаниеТоваров.Записать(истина) в базу записались движения по несуществующему документу (т.е. документ уже существовал, но движения записались на иной документ, которого в базе нет - "Объект не найден").
Это какой-то Абсурд. Не понимаю, что вообще могло здесь произойти.
Я знаю, что "Объект не найден" может быть из-за того что "база посыпалась" - из-за потери данных.
Может быть из-за интерактивного удаления.
Может быть из-за удаления в коде объекта без проверки наличия на него ссылок.
Но здесь то как?
Документ при обработке проведения записывает часть своих движений, без явного указания регистратора, и в этих движениях в поле "регистратор" стоит ссылка на совершенно левый, боле того, несуществующий документ. Как такое может быть?
Подскажите пожалуйста, что делать. Фирма, чья это база, нервничает, я в принципе не представляю, как можно выяснить причину такой ошибки...
версия 1С 8.1.15.14 база УТ 10.3.9.4 серверная
Абсолютно не представляю как могло произойти то, что произошло.
Для удобства исправления проблем с партионным учетом я сделал так, что все ошибки партионного учета (вида "Документ такойто: Не списано по партии") записываются в регистр сведений, откуда их потом можно прочитать (это на случай если сотрудник забил на ошибку и закрыл документ со словами "провелся и хрен с ним").
Сегодня в этом регистре обнаружена такая запись:
Управленческий учет. Документ <Объект не найден> (132:ae87000c290c4b3211e171926075b47c)
Не списано по партиям 1 шт. товара Блок RIB (RLN4008), со склада: Склад Выставка
Это сотрудник проводил свежесозданный Заказ покупателя (в журнале регистрации на то время, когда была ошибка, два события с одним и тем же документом - Добавление, затем Проведение).
Чем усугублена проблема:
Во-первых, в журнале регистрации такого объекта нет!
Документ который проводился - сегодняшний. Поискал по всему журналу за сегодняшний день - нет такого гуида! Заказ который проводился в указанное в регистре время (и выдал эту ошибку) имеет иной гуид!
Во-вторых, я посмотрел код.
В ошибку выводится поле "Регистратор" из строки, которая берется из движений проводимого документа по регистру сведений СписаниеТоваров. Таким образом, по определению, поле Регистратор не может содержать "Объект не найден" потому что эти движения только что записаны при запуске предыдущей функции, делающей движения по этому регистру. Проверил - движения делаются без указания регистратора, т.е. заполняется строками Движения.СписаниеТоваров, поле Регистратор = неопределено, при выозве Движения.СписаниеТоваров.Записать(Истина) регистратор проставляется равным текущему документу.
Итого - каким то образом в процессе обработки события ОбработкаПроведения при вызове Движения.СписаниеТоваров.Записать(истина) в базу записались движения по несуществующему документу (т.е. документ уже существовал, но движения записались на иной документ, которого в базе нет - "Объект не найден").
Это какой-то Абсурд. Не понимаю, что вообще могло здесь произойти.
Я знаю, что "Объект не найден" может быть из-за того что "база посыпалась" - из-за потери данных.
Может быть из-за интерактивного удаления.
Может быть из-за удаления в коде объекта без проверки наличия на него ссылок.
Но здесь то как?
Документ при обработке проведения записывает часть своих движений, без явного указания регистратора, и в этих движениях в поле "регистратор" стоит ссылка на совершенно левый, боле того, несуществующий документ. Как такое может быть?
Подскажите пожалуйста, что делать. Фирма, чья это база, нервничает, я в принципе не представляю, как можно выяснить причину такой ошибки...