|
Ошибка в регистре накопления | ☑ | ||
---|---|---|---|---|
0
Sh18
23.07.12
✎
13:33
|
Самописная конфа 8.2. Не знаю, каким образом, в регистре накопления образовалось несколько активных записей без регистратора, точнее с регистратором типа <Объект не найден> (725:bdf0002354e006a011e1c7303a489937). Записей там быть не должно, точнее, там есть точно такая же правильная запись, с регистратором, все ок, но записи задвоены, вторая с отсутствующим регистратором. Как можно удалить такие записи из регистра?
|
|||
1
gosn1ck
23.07.12
✎
13:34
|
ТиИ
|
|||
2
Renat11111
23.07.12
✎
13:34
|
тии
|
|||
3
Sh18
23.07.12
✎
13:35
|
Сорри, это что? Тестирование и исправление? Пересчитать регистры?
|
|||
4
Nenaviwu1c20
23.07.12
✎
13:35
|
тестирование и исправление
|
|||
5
Nenaviwu1c20
23.07.12
✎
13:36
|
Операции- тестирование и исправление-запустить(как то так)
|
|||
6
sapphire
23.07.12
✎
13:37
|
(0) Такое может быть в результате загрузки из XML (обмена) :)))
Программно определить ссылку регистратора, установить по нему отбор и грохнуть записи. (1)(2) Какая глупость :))))) |
|||
7
Nenaviwu1c20
23.07.12
✎
13:38
|
chdbfl.exe и на всякий это тоже потесть
|
|||
8
sapphire
23.07.12
✎
13:38
|
(3) Нет, не то. ТИИ создаст ссылку, а она, скорее всего не нужна. Да и вполне вероятно что таких сюрпрайзов может быть много
|
|||
9
Nenaviwu1c20
23.07.12
✎
13:38
|
На фиг грохать что то в ручную(лишние запросы )
Пусь 1с сам исправлят)) |
|||
10
Sh18
23.07.12
✎
13:39
|
(6) нельзя установить отбор по несуществующей ссылке. Как?
|
|||
11
sapphire
23.07.12
✎
13:39
|
(10) Можно :)
|
|||
12
sapphire
23.07.12
✎
13:39
|
(10) Ссылка не пустая :)))
|
|||
13
СвинТуз
23.07.12
✎
13:40
|
(6)
если не секрет , то условие для отбора? |
|||
14
Nenaviwu1c20
23.07.12
✎
13:40
|
ПолучитьСтруктуруХраненияБазыДанных() там посмотришь какой регистр и в SQL Напишешь запросик к данной таблице вида delet from () where ()and ()and и дело с концом
|
|||
15
СвинТуз
23.07.12
✎
13:41
|
все понял ... наверное
неопределено или NULL наверное в отборе |
|||
16
Nenaviwu1c20
23.07.12
✎
13:41
|
это если база не на SQL а так напиши обработочку запрос на 1с
|
|||
17
Sh18
23.07.12
✎
13:43
|
(11) В запросе условие типа Регистратор.Представление Подобно &ЧоНадо и то не работает. Я их отловил по Регистратор.Дата is null. А как в отборе регистра это нарисовать?
|
|||
18
СвинТуз
23.07.12
✎
13:47
|
вот налл в отборе и задай
|
|||
19
Nenaviwu1c20
23.07.12
✎
13:49
|
ВЫБРАТЬ
БракВПроизводстве.Регистратор, ПРЕДСТАВЛЕНИЕ(БракВПроизводстве.Регистратор) ИЗ РегистрНакопления.БракВПроизводстве КАК БракВПроизводстве ГДЕ (БракВПроизводстве.Период = NULL ИЛИ БракВПроизводстве.Период = "" ИЛИ БракВПроизводстве.Период = 0) |
|||
20
Nenaviwu1c20
23.07.12
✎
13:49
|
например так
|
|||
21
Nenaviwu1c20
23.07.12
✎
13:50
|
на всякий все учел)
|
|||
22
Sh18
23.07.12
✎
13:50
|
(18) нельзя задать в отборе null. Там может быть только на равенство, с null сравнивать нельзя. Потому и существует is null, а не =null
|
|||
23
sapphire
23.07.12
✎
13:50
|
(13) Можно и более извращенно :)
Загрузить XML удаление набора записей :) |
|||
24
СвинТуз
23.07.12
✎
13:51
|
(19)
Это не грамотно. скорее всего так ГДЕ (БракВПроизводстве.Период IS NULL |
|||
25
СвинТуз
23.07.12
✎
13:52
|
(22)
ну в общем случае нельзя ) |
|||
26
Sh18
23.07.12
✎
13:52
|
(19) В запросе я это дело получил, отбором Регистр.Дата is null. Но мне это помогает лишь посмотреть - получить запись регистра и удалить ее я таким образом не могу
|
|||
27
sapphire
23.07.12
✎
13:53
|
(24) Это тем более безграмотно ибо период всегда NOT NULL :))))
|
|||
28
sapphire
23.07.12
✎
13:54
|
(26) Да ладно :)
Запросом можешь, а запись никак? :)) |
|||
29
СвинТуз
23.07.12
✎
13:58
|
Остатки = РегистрыНакопления.УчетНоменклатуры;
НаборЗаписей = Остатки.СоздатьНаборЗаписей(); Док = НаборЗаписей.Отбор.Регистратор; Док.Установить(NULL); НаборЗаписей.Прочитать(); НаборЗаписей.Очистить(); НаборЗаписей.Записать(); а где Вы тут сравнение с налл видете? |
|||
30
СвинТуз
23.07.12
✎
13:59
|
(27)
да я так пробежал ))) не интересно было особо |
|||
31
sapphire
23.07.12
✎
14:03
|
(29) Опять-25 :))))
Огородник? |
|||
32
sapphire
23.07.12
✎
14:03
|
(29) Регистратор не является NULL :)
|
|||
33
СвинТуз
23.07.12
✎
14:04
|
(31)
увы у меня базы нет попробывать не могу ) тогда бодайтесь сами ) |
|||
34
Nenaviwu1c20
23.07.12
✎
14:05
|
(33) +
|
|||
35
sapphire
23.07.12
✎
14:05
|
_RecorderRRef NOT NULL в таблицах РН :)
|
|||
36
СвинТуз
23.07.12
✎
14:07
|
понятно что он не может быть НАЛЛ ...
я литературу то почитываю ЭлементОтбора (FilterItem) Установить (Set) Синтаксис: Установить(<Значение>, <Использование>) Параметры: <Значение> (необязательный) Тип: Произвольный. Значение сравнения. |
|||
37
Sh18
23.07.12
✎
14:08
|
(29) Из помощника: "Важно! Отбор может устанавливаться только на равенство." То есть, Отбор.Регистратор.Вид сравнения всегда равно. А на равно с null не сравнивают. Потому как null не равно null! Я попробую сейчас, но не думаю, что сработает
|
|||
38
СвинТуз
23.07.12
✎
14:08
|
если этот способ не пройдет
тогда по другому вряд ли потому что через движения не реально потому что документа нет лезте в БД руками имена таблиц известны проблем тоже вроде не видно ) |
|||
39
СвинТуз
23.07.12
✎
14:09
|
(37)
ну да ... ты еще и не пробывал а уже отклонил лень раньше тебя родилась |
|||
40
Sh18
23.07.12
✎
14:11
|
(29) ошибок не выдает, но количество отобранных записей - 0 :(
|
|||
41
sapphire
23.07.12
✎
14:11
|
Запрос=Новый Запрос("
|ВЫБРАТЬ | БракВПроизводстве.Регистратор | |ИЗ | РегистрНакопления.БракВПроизводстве КАК БракВПроизводстве |ГДЕ | БракВПроизводстве.Регистратор.Дата IS NULL"); Результат=Запрос.Выполнить.Выгрузить(); Для Каждого Строка Из Результат Цикл Остатки = РегистрыНакопления.УчетНоменклатуры; НаборЗаписей = Остатки.СоздатьНаборЗаписей(); Док = НаборЗаписей.Отбор.Регистратор; Док.Установить(Строка.Регистратор); НаборЗаписей.Записать(); // Запись пустого набора КонецЦикла; |
|||
42
Nenaviwu1c20
23.07.12
✎
14:12
|
база на чем??файловая или как?
|
|||
43
sapphire
23.07.12
✎
14:12
|
(42) Да пофиг какая :)))
|
|||
44
sapphire
23.07.12
✎
14:13
|
//(40) что б тебя не сильно смущала раскраска в (41)
Запрос=Новый Запрос(" |ВЫБРАТЬ | БракВПроизводстве.Регистратор | |ИЗ | РегистрНакопления.БракВПроизводстве КАК БракВПроизводстве |ГДЕ | БракВПроизводстве.Регистратор.Дата IS NULL"); Результат=Запрос.Выполнить.Выгрузить(); Для Каждого СтрокаРезультата Из Результат Цикл Остатки = РегистрыНакопления.УчетНоменклатуры; НаборЗаписей = Остатки.СоздатьНаборЗаписей(); Док = НаборЗаписей.Отбор.Регистратор; Док.Установить(СтрокаРезультата.Регистратор); НаборЗаписей.Записать(); // Запись пустого набора КонецЦикла; |
|||
45
Nenaviwu1c20
23.07.12
✎
14:14
|
ну почему можно б было на SQL запрос толкать)))))
|
|||
46
sapphire
23.07.12
✎
14:15
|
(45) Да? Думаешь проще? Сомневаюсь :)
|
|||
47
Sh18
23.07.12
✎
14:15
|
База на сиквеле. У меня есть мысль, которая должна сработать. Создать документ, подставить ему нужный гуид. Потом этот док распровести (на всякий случай :)) и удалить. Точно сработает. Но придется искать, как кодируется гуид, там не надо группы цифр переставлять, не помню как.
Для начала попробую (44) |
|||
48
sapphire
23.07.12
✎
14:20
|
(47) Бекап сделай на всякий случай :)
|
|||
49
Sh18
23.07.12
✎
14:22
|
Какой бэкап, там сорок орлов! Не сидеть же до восьми ))
|
|||
50
Nenaviwu1c20
23.07.12
✎
14:23
|
я б заочковал чесно))без бекапа
|
|||
51
Sh18
23.07.12
✎
14:32
|
(44) не работает :(
Никто не помнит навскидку как из <Объект не найден> (725:bdf0002354e006a011e1c7303a489937) создать гуид? |
|||
52
СвинТуз
23.07.12
✎
14:34
|
(51)
конечно разницы то нет выборка возвращает NULL |
|||
53
СвинТуз
23.07.12
✎
14:35
|
там две таблицы в склсервере
в консоль запросов надо зайти наверное и все сделать |
|||
54
Aprobator
23.07.12
✎
14:42
|
(44) хороший прикол )))
|
|||
55
Sh18
23.07.12
✎
14:42
|
(53) Никогда не общался с базой напрямую, есть где-нибудь описание?
|
|||
56
Aprobator
23.07.12
✎
14:43
|
+(54) выбираем БракВПоризводстве, а чистим УчетНоменклатуры.
|
|||
57
hhhh
23.07.12
✎
14:44
|
(55) сделай ТИИ с галкой Создавать объекты: оно тебе и создаст.
|
|||
58
Aprobator
23.07.12
✎
14:44
|
бухам это должно понравиться )
|
|||
59
Sh18
23.07.12
✎
14:45
|
(56) ?? БракВПроизводстве - это регистратор для УчетНоменклатуры. Ну и?
|
|||
60
Sh18
23.07.12
✎
14:46
|
(57) Ох не трогать бы лиха, пока оно тихо. Оно мне насоздает! за все четыре года базы... ))
|
|||
61
Aprobator
23.07.12
✎
14:47
|
(59) у тя кривые записи в каком регистре? Выборка идет по регистру накопления БракВПроизводстве, а чистится Регистр УчетНоменклатуры - это нормально?
|
|||
62
hhhh
23.07.12
✎
14:47
|
(60) так ты в копии создай, а в рабочую перенесешь один документ обработкой ВыгрузкаЗагрузкаXML. Мозги включай.
|
|||
63
Sh18
23.07.12
✎
14:49
|
(61) А, ну да, ошибся человек ) У меня все совсем по другому называется, я и не смотрел, только на идею )
|
|||
64
Aprobator
23.07.12
✎
14:50
|
(63) тогда странно, что не сработало. Запрос должен всяко возвращать результат. Или на каком этапе не срабатывает? Кстати, может быть отказ в записи при записи набора. Например из - за даты запрета.
|
|||
65
Sh18
23.07.12
✎
14:50
|
(62) я все-таки пойду проторенной тропкой - создавать документы и приписывать им нужные гуиды. Что-то подобное я делал - вполне новый объект под стертый встает. Только найти надо, как перекодировать гуид, там некоторые группы цифр переставляются
|
|||
66
Sh18
23.07.12
✎
14:51
|
(64) запрос возвращает. А вот потом почистить регистр не получается. Там в отборе сравнение на "равно", а null не равно null!
|
|||
67
Aprobator
23.07.12
✎
14:53
|
(66) какое еще NULL? Там сравнение с битой ссылкой с регистра должно быть.
|
|||
68
ask76
23.07.12
✎
14:53
|
||||
69
Aprobator
23.07.12
✎
14:54
|
СтрокаРезультата.Регистратор = NULL что ли?
|
|||
70
Aprobator
23.07.12
✎
14:56
|
а по поводу гуида, как вриант - Забираешь битую ссылку, создаешь новый документ и запихиваешь ее в УстановитьСсылкуНового. Только тестить надо.
|
|||
71
Aprobator
23.07.12
✎
14:57
|
+(70) хотя вру - при проведении док движения очистит.
|
|||
72
Aprobator
23.07.12
✎
14:58
|
если конечно их в ТЗ предварительно не выгрузить, записать док с проведением и потом его движения подменить.
|
|||
73
hhhh
23.07.12
✎
15:00
|
не, (44) по-любому должно работать. Только регистры поставить нормально: или БракВПроизводстве, или УчетНоменклатуры.
|
|||
74
Aprobator
23.07.12
✎
15:01
|
(73) +100500.
|
|||
75
Sh18
23.07.12
✎
15:15
|
В общем, работает создание ссылки по гуиду и подстановка ссылки во вновь созданный документ. Я нашел, как получить гуид из строки "Объект не найден". Вот, запишите, может пригодиться
Функция ПолучитьГУИД_По_ОбъектНеНайден(Стр) // ГУИДУдОбъкта = <Объект не найден> (84:bf5600145e3710ab11dda4c605dbe824) ГУИДУдОбъктаСтр = СтрЗаменить(Стр,"<Объект не найден> (",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,")",""); ГУИДУдОбъктаСтр = СтрЗаменить(ГУИДУдОбъктаСтр,"0x",""); ГУИДУдОбъктаСтр = Сред(ГУИДУдОбъктаСтр, Найти(ГУИДУдОбъктаСтр,":")+1, СтрДлина(ГУИДУдОбъктаСтр)); // Преобразуем GUID ГУИД = Сред(ГУИДУдОбъктаСтр,25,8)+"-"+Сред(ГУИДУдОбъктаСтр,21,4) +"-"+Сред(ГУИДУдОбъктаСтр,17,4)+"-"+Сред(ГУИДУдОбъктаСтр,1,4) +"-"+Сред(ГУИДУдОбъктаСтр,5,12); //и получаем ГУИД = 05dbe824-a4c6-11dd-bf56-00145e3710ab Возврат Новый УникальныйИдентификатор(ГУИД); КонецФункции |
|||
76
Aprobator
23.07.12
✎
15:21
|
(75) нам не надо ) У нас (44) работает )))))
|
|||
77
Aprobator
23.07.12
✎
15:21
|
+(76) если, конечно все правильно реализовать.
|
|||
78
Sh18
23.07.12
✎
15:25
|
(77) Ну... Чудо! )) У меня не сработало, но через гуиды уже все поправил
Спасибо всем! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |