Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
17 Дек 2017, 09:26
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: "Объект Не Найден" В Поле Регистратор В Процедуре ОбработкаПроведения  (Прочитано 5613 раз)

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

Оффлайн Истребитель

  • *
  • Сообщений: 32
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2011-05-10
  • Сайт: 
  • Профессия: Программист 1С
Добрый день!

версия 1С 8.1.15.14 база УТ 10.3.9.4 серверная
Абсолютно не представляю как могло произойти то, что произошло.

Для удобства исправления проблем с партионным учетом я сделал так, что все ошибки партионного учета (вида "Документ такойто: Не списано по партии") записываются в регистр сведений, откуда их потом можно прочитать (это на случай если сотрудник забил на ошибку и закрыл документ со словами "провелся и хрен с ним").

Сегодня в этом регистре обнаружена такая запись:

Управленческий учет. Документ <Объект не найден> (132:ae87000c290c4b3211e171926075b47c)
Не списано по партиям 1 шт. товара Блок RIB (RLN4008), со склада: Склад Выставка

Это сотрудник проводил свежесозданный Заказ покупателя (в журнале регистрации на то время, когда была ошибка, два события с одним и тем же документом - Добавление, затем Проведение).

Чем усугублена проблема:

Во-первых, в журнале регистрации такого объекта нет!
Документ который проводился - сегодняшний. Поискал по всему журналу за сегодняшний день - нет такого гуида! Заказ который проводился в указанное в регистре время (и выдал эту ошибку) имеет иной гуид!

Во-вторых, я посмотрел код.
В ошибку выводится поле "Регистратор" из строки, которая берется из движений проводимого документа по регистру сведений СписаниеТоваров. Таким образом, по определению, поле Регистратор не может содержать "Объект не найден" потому что эти движения только что записаны при запуске предыдущей функции, делающей движения по этому регистру. Проверил - движения делаются без указания регистратора, т.е. заполняется строками Движения.СписаниеТоваров, поле Регистратор = неопределено, при выозве Движения.СписаниеТоваров.Записать(Истина) регистратор проставляется равным текущему документу.

Итого - каким то образом в процессе обработки события ОбработкаПроведения при вызове Движения.СписаниеТоваров.Записать(истина) в базу записались движения по несуществующему документу (т.е. документ уже существовал, но движения записались на иной документ, которого в базе нет - "Объект не найден").

Это какой-то Абсурд. Не понимаю, что вообще могло здесь произойти.

Я знаю, что "Объект не найден" может быть из-за того что "база посыпалась" - из-за потери данных.
Может быть из-за интерактивного удаления.
Может быть из-за удаления в коде объекта без проверки наличия на него ссылок.
Но здесь то как?

Документ при обработке проведения записывает часть своих движений, без явного указания регистратора, и в этих движениях в поле "регистратор" стоит ссылка на совершенно левый, боле того, несуществующий документ. Как такое может быть?

Подскажите пожалуйста, что делать. Фирма, чья это база, нервничает, я в принципе не представляю, как можно выяснить причину такой ошибки...


Оффлайн Vit1501

  • ****
  • Сообщений: 360
  • РЕПУТАЦИЯ: 60
  • КПД: 17%
  • Регистрация: 2010-06-05
  • Сайт: 
  • Профессия: Программист 1С
Смотрел журнал регистрации? Может там есть какие-то зацепки?

Оффлайн Истребитель

  • *
  • Сообщений: 32
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2011-05-10
  • Сайт: 
  • Профессия: Программист 1С
В этом то и проблема - в журнале регистрации нет этого гуида!
Есть только информация, что документ, совешивший такую проводку (по левому гуиду) был новым - т.к. в это время есть два действия Добавление и Проведение.

Оффлайн Dethmontt

  • Денис
  • Модератор
  • *****
  • Сообщений: 2857
  • РЕПУТАЦИЯ: 546
  • КПД: 19%
  • Адын Эс
  • Регистрация: 2010-11-01
  • Сайт: 
  • Профессия: Программист 1С
У меня такая штука была в самописной конфе при управляемых блокировках и одновременному обращению к регистру объекты сделали движения но не записались (или удалились не знаю), но в итоге объекта не было а движения остались...
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

Оффлайн demous

  • *
  • Сообщений: 8
  • РЕПУТАЦИЯ: 2
  • КПД: 25%
  • Регистрация: 2012-03-26
  • Сайт: 
  • Профессия: Программист 8.1
поможет ? нет ?

Вкратце суть:
<Объект не найден> (132:ae87000c290c4b3211e171926075b47c)
То, что указано за фразой "Объект не найден" - это совершенно конкретное указание что и где необходимо восстановить. Т.е.,
"132" - это номер таблицы (_Reference9659)
 "ae87000c290c4b3211e171926075b47c" - это как раз та самая пресловутая ссылка, а по сути, просто значение в формате binary(16).
Т.е., если сильно упрощенно, достаточно завести в таблице "_Reference9659" новую запись с этим значением в поле "_IDRRef" и всё. Новый элемент появится в справочнике и во всех связных объектах.
Как всё это осуществить средствами 1С?
Простой и бескровный способ - воспользоваться двумя замечательными командами:
ЗначениеВСтрокуВнутр() и ЗначениеИзСтрокиВнутр().
Загружаем резервную копию базы (все же делают регулярные бэкапы, ведь так?), ищем ссылку, которая была удалена и преобразуем её через ЗначениеВСтрокуВнутр(ИскомаяСсылка) в строку вида "{"#",54c3544f-651b-4887-ae3a-2df362efbacb,132:ae87000c290c4b3211e171926075b47c}", где мы уже видим знакомые цифры.
 В рабочей копии применяем обратную команду ЗначениеИзСтрокиВнутр("{""#"",54c3544f-651b-4887-ae3a-2df362efbacb,132:ae87000c290c4b3211e171926075b47c}"). Не забудьте про двойные кавычки вокруг решетки! Результатом будет как раз тот самый <Объект не найден> ссылочного типа. На а дальше применяем УстановитьСсылкуНового().
 
Общий вид кода будет таким:

НовЭл = Справочники.БюджетныеЦентры.СоздатьЭлемент();
НовЭл.УстановитьСсылкуНового(ЗначениеИзСтрокиВнутр("{""#"",54c3544f-651b-4887-ae3a-2df362efbacb,132:ae87000c290c4b3211e171926075b47c}"));
НовЭл.Наименование = "ДКР";
...
НовЭл.Записать();
Получил помощь - скажи СПАСИБО.

Оффлайн Истребитель

  • *
  • Сообщений: 32
  • РЕПУТАЦИЯ: 1
  • КПД: 3%
  • Регистрация: 2011-05-10
  • Сайт: 
  • Профессия: Программист 1С
2 Dethmontt 
Хмм, очень похоже на правду. Поясните пожалуйста поподробнее, что такое управляемая блокировка и как проверить, это ли у меня происходит или нет.

2 demous 
Нет, увы, не поможет, потому что объект этот вообще в базе ни на секнуду не засветился (в журнале регистрации он не упоминается). Он существовал только в виде поля Регистратор записи в регистре СписанныеТовары в процессе записи документа ЗаказПокупателя. Он сам в базу не записывался даже...


Теги:
 

{Форма.Форма.Форма(11)}: Поле объекта не обнаружено

Автор OksРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 2
Просмотров: 2299
Последний ответ 09 Дек 2015, 19:33
от Oks
Вывод информации: если поле не заполнено, то вывод иной информации. Новичок

Автор kiksiРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 327
Последний ответ 10 Окт 2017, 12:33
от kiksi
Замена значения в поле в зависимости от его значения

Автор stake1995Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 287
Последний ответ 06 Окт 2017, 09:12
от stake1995
Как из справочника вытащить список одной группы справочника и вставить его в поле документа для выбора одного элемента из полученного списка?

Автор ilnur75Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 1692
Последний ответ 21 Сен 2016, 08:16
от GadLex
1c 8.2: как установить ограничение на поле ввода на форме (вводить только диапазон цифр от 1 до 31) и как устанавливать фокус ввода

Автор jhd235Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 3614
Последний ответ 12 Сен 2014, 14:14
от cska-fanat-kz

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
145 Сообщений
ilyay ilyay
63 Сообщений
AIFrame
50 Сообщений
alex0402
50 Сообщений
andron81_81
44 Сообщений
oleg-x
42 Сообщений
BuhRust
32 Сообщений
MuI_I_Ika MuI_I_Ika
31 Сообщений
Golickoff Golickoff
28 Сообщений
alexandr_ll
24 Сообщений

* Кто онлайн

  • Точка Гостей: 170
  • Точка Скрытых: 0
  • Точка Пользователей: 4
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal