![]() |
|
УПП, РАУЗ и риб-база: получил битые ссылки после ТиИ ключей аналитики (?) | ☑ | ||
---|---|---|---|---|
0
Serg_1960
15.06.12
✎
10:31
|
ТиИ обнаружила битые ссылки в движениях документов по регистру учета затрат. Смотрел по ЖР в центральном и подчиненном узлах что могло быть первопричиной. Предпологаю, что дело было так:
В подчиненном узле (ПУ), груповой обработкой, отменили проведение некоторых документов, "вручную" внесли изменения и вновь провели документы. В это время происходил сеанс обмена данными и в центральный узел (ЦУ) ушла информация о снятии с проведения и изменении документов (частично). В ЦУ после сеанса обмена запускали обработку тестирования и исправления ключей аналитики. Она обнаружила и удалила не используемые ключи. При очередном сеансе обмена из ЦУ ушла информация об удалении ключей, а из ПУ поступила информация о перепроведенных документах. В итоге: в движениях некоорых документов по регистру учета затрат есть ссылки на удаленные записи справочников ключей аналитики. PS: что-то плохо у меня получается в типовых алгоритмах проследить где и когда генерятся клюючи аналитики при проведении документа. |
|||
1
Maxus43
15.06.12
✎
10:33
|
при проведении генерятся, если не найдена такая аналитика
|
|||
2
Maxus43
15.06.12
✎
10:33
|
процедуры типа ПолучитьСоздатьКлючиАналитики()
|
|||
3
Maxus43
15.06.12
✎
10:34
|
на копии можно попробовать обработку - тестирование и исправление ключей аналитики
|
|||
4
Maxus43
15.06.12
✎
10:38
|
// Функция получает ключ аналитики из регистра сведений или
// создает новый элемент в случае отсутствия. // // Параметры: // СтруктураИзмерений - Структура - Структура значений измерений ключа аналитики // МассивИзмерений - Массив - Массив измерений ключа аналитики // ИмяСправочника - Строка - Имя справочника - ключа аналитики // ИмяРегистра - Строка - Имя регистра сведений - ключа аналитики // СтруктураКлючиАналитики - Структура - Структура с таблицами ключей аналитики для кэширования данных // // Возвращаемое значение: // СправочникСсылка - Значение ключа аналитики // Функция ПолучитьСоздатьКлючАналитики( СтруктураИзмерений, МассивИзмерений, ИмяСправочника, ИмяРегистра, СтруктураКлючиАналитики ) |
|||
5
Мигрень
15.06.12
✎
10:40
|
Если РИБ и битые ссылки - то это нормально. Можно просто запустить ТИИ.
|
|||
6
Serg_1960
15.06.12
✎
10:42
|
(3) Запускал повторно я эту окаянную обработку :) Получил неожиданный эффект: обработка сообщила что некоторые ключи содержат ссылки на несуществующие ключи аналитики... и удали их. Вместо восстановления - удаление :(
|
|||
7
Maxus43
15.06.12
✎
10:44
|
(6) доки перепроведи - создаст заново
|
|||
8
Maxus43
15.06.12
✎
10:49
|
(7) + в ЦУ
|
|||
9
Serg_1960
15.06.12
✎
10:52
|
(6) "удали их" --> "удалила их"
(4) Угу. Эту функцию и другие в модуле РАУЗа я нашел. Сейчас пытаюсь отследить как к ним происходит обращение при проведении документов. (7) Проблема: нельзя "просто" перепровести документы - они проведены по УУ и БУ в уже "закрытом" месяце. Есть расчет себестоимости. Заново его делать - цифры поплывут. Единственный способ (имхо) - вытащить битые ссылки из регистра учета затрат и заново их создать по документу-регистратору. |
|||
10
Maxus43
15.06.12
✎
10:56
|
(9) как вариант - сделай копию дока сегодняшним днём, проведи, удали. создадутся нужные ключи, останется заменить битые ссылки. Это чтоб не ковырять долго процедуры РАУЗа
|
|||
11
Serg_1960
15.06.12
✎
10:58
|
Сочинил алгоритм перепроведения документа. По иронии судьбы - он попрождает битые ссылки нановые ключи аналитики :)
Процедура ПереПроведениеДокументаПоРегиструНакопленияУУ(ТекСсылка, ИмяРегистра) Попытка Объект = ТекСсылка.ПолучитьОбъект(); НачатьТранзакцию(); Если Объект.Метаданные().Реквизиты.Найти("ОтражатьВБухгалтерскомУчете") <> Неопределено Тогда Объект.ОтражатьВБухгалтерскомУчете = Ложь; КонецЕсли; Если Объект.Метаданные().Реквизиты.Найти("ОтражатьВНалоговомУчете") <> Неопределено Тогда Объект.ОтражатьВНалоговомУчете = Ложь; КонецЕсли; Объект.Записать(РежимЗаписиДокумента.Проведение,РежимПроведенияДокумента.Неоперативный); Объект.Движения[ИмяРегистра].Прочитать(); ТаблицаЗаписей = Объект.Движения[ИмяРегистра].Выгрузить(); ОтменитьТранзакцию(); Объект.Движения[ИмяРегистра].Загрузить(ТаблицаЗаписей); Объект.Движения[ИмяРегистра].Записать(Истина); Исключение Если ТранзакцияАктивна() Тогда ОтменитьТранзакцию(); КонецЕсли; КонецПопытки; Возврат; КонецПроцедуры |
|||
12
Serg_1960
15.06.12
✎
11:00
|
(11) тьфу, очепятки "попрождает битые ссылки нановые ключи аналитики" --> "создает битые ссылки, если при проведении создаются новые ключи аналитики"
|
|||
13
Serg_1960
15.06.12
✎
11:09
|
Интересная мысль пришла в голову: в ТаблицеЗаписей (до отмены транзакции) ссылки на существующие и только что созданные ключи аналитики...
|
|||
14
Maxus43
15.06.12
✎
11:11
|
правильно что битые, отмена транзакции веть
|
|||
15
Serg_1960
15.06.12
✎
17:11
|
(13) Подправил алгоритм и теперь он "решает" проблему (0) - "восстанавливает" битые ссылки и заполняет отсутствующие ключи аналитики в справочниках и регистрах сведений.
(0) Проблема решена. |
|||
16
zmaximka
15.06.12
✎
18:19
|
поздравляю, преступление раскрыто :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |