|
Как удалить запись с пустым полем регистратор из регистра накопления? | ☑ | ||
---|---|---|---|---|
0
Sashko773
22.02.10
✎
17:42
|
Подскажите плиз как удалить запись с пустым полем регистратор из регистра накопления? Проблема именно в том что ссылка на регистратор не битая а пустая.
|
|||
1
Михей
22.02.10
✎
17:46
|
ГДЕ НЕ Регистратор.Номер ЕСТЬ NULL
|
|||
2
DrShad
22.02.10
✎
17:53
|
(1) и что это даст?
|
|||
3
Sashko773
22.02.10
✎
17:59
|
(2)Наверное отобрать все записи с не пустым значением регистратора и перезаписать их в регистр
|
|||
4
DrShad
22.02.10
✎
18:00
|
в регистр без регистратора?
|
|||
5
DrShad
22.02.10
✎
18:01
|
я бы для начала запустил лекарство
|
|||
6
Sashko773
22.02.10
✎
18:02
|
(5) какое?
|
|||
7
Sashko773
22.02.10
✎
18:02
|
ТИИ?
|
|||
8
DrShad
22.02.10
✎
18:04
|
нивкоем случае
|
|||
9
DrShad
22.02.10
✎
18:04
|
chdbfl.exe
|
|||
10
IronDemon
22.02.10
✎
18:06
|
||||
11
Михей
22.02.10
✎
18:07
|
Запрос = Новый Запрос();
ТекстЗапроса = "ВЫБРАТЬ | Регистратор |ИЗ "+ТипРегистраЗ+"."+ИмяРегистра+" |ГДЕ | (НЕ Регистратор = &ПустаяСсылкаДокумента) | И Регистратор.Номер ЕСТЬ NULL"; Если ЕстьОрганизация Тогда ТекстЗапроса = ТекстЗапроса + " И " + ТипРегистраЗ+"."+ИмяРегистра+".Организация = &Организация "; Запрос.УстановитьПараметр("Организация", Организация); КонецЕсли; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ПустаяСсылкаДокумента", Неопределено); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Если Строка(Выборка.Регистратор) <> GUID Тогда Продолжить; КонецЕсли; Набор = ТипРегистра[ИмяРегистра].СоздатьНаборЗаписей(); Набор.Отбор.Регистратор.Установить(Выборка.Регистратор); Набор.ОбменДанными.Загрузка = Истина; Набор.Записать(); ОбработкаПрерыванияПользователя(); Состояние("Удаление битых ссылок в "+ТипРегистра+"."+ИмяРегистра); КонецЦикла; |
|||
12
Sashko773
22.02.10
✎
18:07
|
А разве это не тоже самое?
|
|||
13
Sashko773
22.02.10
✎
18:11
|
(11) Пробовал, не работает. Выскакивает ошибка о том что не задан отбор для регистратора
|
|||
14
Sashko773
22.02.10
✎
18:11
|
(10) щас попробую
|
|||
15
Sashko773
22.02.10
✎
18:19
|
(10) Вообще не пашит, даже ни одной кривой записи не находит
|
|||
16
DrShad
22.02.10
✎
18:20
|
тогда колись как и в каком регистре ты его обнаружил?
|
|||
17
IronDemon
22.02.10
✎
18:21
|
(15) Пашет, но ищет не пустые а битые
|
|||
18
Михей
22.02.10
✎
18:22
|
все там работает, запускал уже не раз
|
|||
19
Sashko773
22.02.10
✎
18:22
|
Да просто. Обнавлять не дается))). Открыл регистр РабочееВремяРаботниковОрганизаций а там пустых строк аж 120 штук
|
|||
20
Sashko773
22.02.10
✎
18:23
|
Все поля не заполнены. Думаю из-за потери связи с базой (на серваке) появились такие записи
|
|||
21
Sashko773
22.02.10
✎
18:24
|
(18) А у тебя именно пустые ссылки были или на несуществующие документы?
|
|||
22
Sashko773
22.02.10
✎
18:24
|
У миня пустые - NULL
|
|||
23
DrShad
22.02.10
✎
18:25
|
конфа?
|
|||
24
Михей
22.02.10
✎
18:25
|
(21) на не существующий документы
у которых <объект не найден> |
|||
25
Sashko773
22.02.10
✎
18:26
|
(23) ЗУП типовая
|
|||
26
Михей
22.02.10
✎
18:27
|
и шо у тебя возвращает вот это?
ВЫБРАТЬ * ИЗ РегистрСведений.РабочееВремяРаботниковОрганизаций ГДЕ ГДЕ НЕ Регистратор.Номер ЕСТЬ NULL |
|||
27
Sashko773
22.02.10
✎
18:29
|
(26) Все целые записи
|
|||
28
DrShad
22.02.10
✎
18:30
|
(27) не может быть
|
|||
29
Sashko773
22.02.10
✎
18:31
|
может :)
|
|||
30
shuhard
22.02.10
✎
18:33
|
(29) если может, то чему равен Регистратор.Номер ?
|
|||
31
Sashko773
22.02.10
✎
18:34
|
(30) Не понял тебя?
|
|||
32
DrShad
22.02.10
✎
18:35
|
народ а не может такой глюк быть, если дописали движения к документу не указав его при этом регистратором?
|
|||
33
73
22.02.10
✎
18:35
|
В (26) <ГДЕ НЕ ...> - не убери. И посмотри, что вернет.
|
|||
34
DrShad
22.02.10
✎
18:36
|
ведь форма списка регистра такая же форма как и все остальные и если тип значения в табоичном поле не соответствует присваемому то тоже пустая ячейка
|
|||
35
Sashko773
22.02.10
✎
18:36
|
(28) А чего удивительного то, условие если номер документа регистратора не равен NULL. Вот все записи у которых проставлен регистратор и отбираются
|
|||
36
Sashko773
22.02.10
✎
18:37
|
(33) ну соответственно все коцаные отобрал
|
|||
37
Михей
22.02.10
✎
18:38
|
тупанул там НЕ
не надо |
|||
38
DrShad
22.02.10
✎
18:38
|
(33) посыпаю голову пеплом
|
|||
39
Sashko773
22.02.10
✎
18:41
|
(37) Михей пробую твой код, я немного другой юзал. Ругается на Если Строка(Выборка.Регистратор) <> GUID Тогда
|
|||
40
Sashko773
22.02.10
✎
18:41
|
Переменная не определена (GUID)
|
|||
41
Sashko773
22.02.10
✎
18:41
|
Там чаго перед GUID дописать надо?
|
|||
42
DrShad
22.02.10
✎
18:42
|
(39) естественно
|
|||
43
Sashko773
22.02.10
✎
18:43
|
(42) и...
|
|||
44
DrShad
22.02.10
✎
18:44
|
(43) это переменная и надо ей присвоить значение
|
|||
45
Sashko773
22.02.10
✎
18:46
|
(44) Я просто не совсем вообще понимаю зачем этот кусок и что там проверяется
|
|||
46
DrShad
22.02.10
✎
18:47
|
там проверяется равенство ссылки
|
|||
47
Sashko773
22.02.10
✎
18:49
|
Ей надо присвоить идентификатор пустой ссылки что-ли?
|
|||
48
DrShad
22.02.10
✎
18:52
|
врядли
тогда просто можно было проверить на Пустая() |
|||
49
Sashko773
23.02.10
✎
16:46
|
Блин так ничего и не вышло. Тема актуальна. Алгоритм (11) работает только в случае с битыми но не пустыми ссылками. Есть еще предложения???
|
|||
50
H A D G E H O G s
23.02.10
✎
17:20
|
||||
51
Sashko773
23.02.10
✎
17:22
|
(50) Таблица не найдена "РегистрНакопления.РегистрНакопления"
<<?>>РегистрНакопления.РегистрНакопления КАК РегистрНакопления |
|||
52
Sashko773
23.02.10
✎
17:27
|
Подправил, но тем не менее это все равно не работает. Все таже ошибка -
Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Взаиморасчеты с работниками организаций) |
|||
53
Михей
23.02.10
✎
17:29
|
(52) это - Набор.Отбор.Регистратор.Установить(Регистратор);
есть перед записью? |
|||
54
Sashko773
23.02.10
✎
17:30
|
(53)Есть, но но там регистратор то пустой. Вот видимо он отбор по пустому установить и не может
|
|||
55
Sashko773
23.02.10
✎
17:31
|
Может быть можно отобрать только верные записи, очистить регистр и записать туда снова только их
|
|||
56
Sashko773
23.02.10
✎
17:31
|
Если да, то нипишите как сделать
|
|||
57
Михей
23.02.10
✎
17:32
|
записывать НаборЗаписей для РегистраНакопления можно только с установленным отбором по Регистратору
|
|||
58
Sashko773
23.02.10
✎
17:33
|
(57) я понял, а какой выход то найти?
|
|||
59
Михей
23.02.10
✎
17:34
|
точна уверен что регистратор именно ПустаяСсылка ?
|
|||
60
Михей
23.02.10
✎
17:35
|
ваще можно запустить ТиИ, с соответствующими настройками для начала
|
|||
61
Sashko773
23.02.10
✎
17:37
|
(59)точно пустая. Вот этим у меня все такие пустые записи отбираются
ВЫБРАТЬ * ИЗ РегистрСведений.РабочееВремяРаботниковОрганизаций ГДЕ Регистратор.Номер ЕСТЬ NULL |
|||
62
Sashko773
23.02.10
✎
17:37
|
(59)точно пустая. Вот этим у меня все такие пустые записи отбираются
ВЫБРАТЬ * ИЗ РегистрСведений.РабочееВремяРаботниковОрганизаций ГДЕ Регистратор ЕСТЬ NULL |
|||
63
Sashko773
23.02.10
✎
17:38
|
(60) Запускал, не помогает
|
|||
64
Михей
23.02.10
✎
17:39
|
(61) а вот этот?
ВЫБРАТЬ * ИЗ РегистрСведений.РабочееВремяРаботниковОрганизаций ГДЕ Регистратор = ЗНАЧЕНИЕ(Документ.ТвойДокумент.ПустаяСсылка) |
|||
65
73
23.02.10
✎
17:40
|
(62) А кстати, этот не должен выбирать...
|
|||
66
Sashko773
23.02.10
✎
17:41
|
(65) Да да этот не отбирает, обманул )
|
|||
67
Михей
23.02.10
✎
17:42
|
пушо у тебя там все таки не ПустаяСсылка
ссылка у регистратора есть, но нету данных на которые она ссылается так шо (11) тебя спасет |
|||
68
Sashko773
23.02.10
✎
17:44
|
(67) А как быть с этим?
Ошибка записи! Не установлен отбор по регистратору (Регистр накопления: Взаиморасчеты с работниками организаций) |
|||
69
73
23.02.10
✎
17:44
|
(66)Регистратор - один или неск типов? И что дает (64)?
|
|||
70
Михей
23.02.10
✎
17:45
|
(68) покажи свой код
|
|||
71
Sashko773
23.02.10
✎
17:46
|
(69) Один. Условие задать не получается такое. ЗНАЧЕНИЕ(Документ.ТабельУчетарабочегоВремениОрганизаций.ПустаяСсылка)
|
|||
72
Sashko773
23.02.10
✎
17:47
|
Процедура УдалениеБитыхСсылок()
Запрос = Новый Запрос(); ТекстЗапроса = "ВЫБРАТЬ |РабочееВремяРаботниковОрганизаций.Регистратор КАК Регистратор, |РабочееВремяРаботниковОрганизаций.ВидИспользованияРабочегоВремени КАК ВидВремени |ИЗ |РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций |ГДЕ //| (НЕ Регистратор = &ПустаяСсылкаДокумента) | Регистратор.Номер ЕСТЬ NULL"; //Если ЕстьОрганизация Тогда // ТекстЗапроса = ТекстЗапроса + " И " + ТипРегистраЗ+"."+ИмяРегистра+".Организация = &Организация "; // Запрос.УстановитьПараметр("Организация", Организация); //КонецЕсли; Запрос.Текст = ТекстЗапроса; Запрос.УстановитьПараметр("ПустаяСсылкаДокумента", Неопределено); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл //Если Строка(Выборка.Регистратор) <> GUID Тогда // Продолжить; //КонецЕсли; Набор = РегистрыНакопления.РабочееВремяРаботниковОрганизаций.СоздатьНаборЗаписей(); Набор.Отбор.Регистратор.Установить(Выборка.Регистратор); Набор.ОбменДанными.Загрузка = Истина; Набор.Записать(); ОбработкаПрерыванияПользователя(); Состояние("Удаление битых ссылок"); КонецЦикла; КонецПроцедуры |
|||
73
Sashko773
23.02.10
✎
17:48
|
Все подобные обработки на таком же алгоритме построенны и поэтому ни одна из них мне не помогла
|
|||
74
73
23.02.10
✎
17:50
|
(71) Как условие не получается? Должно получаться. Или ничего не выбирает? Уточни.
|
|||
75
Михей
23.02.10
✎
17:52
|
(72) может у тя есть какой то код в модуле набора записей регистра РабочееВремяРаботниковОрганизаций, что мешает записать
|
|||
76
Sashko773
23.02.10
✎
17:52
|
(74) Ругается вот на это
ЗНАЧЕНИЕ(Документ.ТабельУчетарабочегоВремениОрганизаций.ПустаяСсылка) не понимает |
|||
77
Sashko773
23.02.10
✎
17:53
|
(75) не понял
|
|||
78
Михей
23.02.10
✎
17:54
|
в модуле набора записей регистра РабочееВремяРаботниковОрганизаций
есть что то? |
|||
79
73
23.02.10
✎
17:54
|
(76) 1с 8.0 что ли?
|
|||
80
73
23.02.10
✎
17:56
|
Вместо (64) попробуй:
ВЫБРАТЬ * ИЗ РегистрСведений.РабочееВремяРаботниковОрганизаций ГДЕ Регистратор = &ПустаяСсылка и Запрос.УстановитьПараметр("ПустаяСсылка", Документы.ДДДДД.ПустаяСсылка()); |
|||
81
Sashko773
23.02.10
✎
17:56
|
(78) Это текст внешней обработки с одной единственной процедурой
|
|||
82
73
23.02.10
✎
17:58
|
(81) У самого регистра тоже модуль есть.... Клацни на нем правой кнопкой мыши в конфигураторе.
|
|||
83
Sashko773
23.02.10
✎
17:58
|
(80) Регистр кстати не сведений а накопления, просто сначала все с ошибкой начали писать
|
|||
84
73
23.02.10
✎
17:59
|
(83) Не суть. Копипастил...
|
|||
85
Sashko773
23.02.10
✎
18:03
|
(78) (81)
Процедура ПередЗаписью(Отказ, Замещение) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ЗарегистрироватьПерерасчеты(); КонецПроцедуры Процедура ПриЗаписи(Отказ, Замещение) Если ОбменДанными.Загрузка Тогда Возврат; КонецЕсли; ЗарегистрироватьПерерасчеты(); КонецПроцедуры Процедура ЗарегистрироватьПерерасчеты() Запрос = Новый Запрос( "ВЫБРАТЬ РАЗЛИЧНЫЕ | Основные.ФизЛицо, | Основные.Регистратор КАК Регистратор, | Основные.Организация, | Основные.Сотрудник |ИЗ | РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремя | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК Основные | ПО РабочееВремя.Период >= Основные.ПериодДействияНачало | И РабочееВремя.Период <= Основные.ПериодДействияКонец | И РабочееВремя.Сотрудник = Основные.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций.ПерерасчетОсновныхНачислений КАК Перерасчеты | ПО (Перерасчеты.ОбъектПерерасчета = Основные.Регистратор) | И (Перерасчеты.ФизЛицо = Основные.ФизЛицо) | И (Перерасчеты.ВидРасчета = ЗНАЧЕНИЕ(ПланВидовРасчета.ОсновныеНачисленияОрганизаций.ПустаяСсылка)) |ГДЕ | РабочееВремя.Регистратор = &Регистратор | И Перерасчеты.ФизЛицо ЕСТЬ NULL | И Основные.Регистратор ЕСТЬ НЕ NULL | |УПОРЯДОЧИТЬ ПО | Регистратор"); Запрос.УстановитьПараметр("Регистратор", Отбор.Регистратор.Значение); Выборка = Запрос.Выполнить().Выбрать(); ПроведениеРасчетов.ДописатьПерерасчетыОсновныхНачислений(Выборка); КонецПроцедуры |
|||
86
H A D G E H O G s
23.02.10
✎
18:04
|
У товарисча в регистре записи, с Пустым (не битым) регистраторов.
Регистратор = ПустойСсылке, UID ее =00000000-0000-0000-0000-000000000000. Только через SQL удалять. |
|||
87
H A D G E H O G s
23.02.10
✎
18:05
|
Либо регистр выгрузить в xml, удалить в конфигураторе, реструктуризовать, вставить такой же регистр из копии, загрузить данные их xml
|
|||
88
Sashko773
23.02.10
✎
18:08
|
(87) весело. Встречал уже такой вариант на одном форуме, думал есть попроще способ. Спасибо наверное так и буду делать. База типовая не хотелось такие манипуляции проводить
|
|||
89
Михей
23.02.10
✎
18:14
|
а как можно записать в регистр пустую ссылку?
|
|||
90
Sashko773
23.02.10
✎
18:16
|
(89) были частые прерывания связи с базой во время работы. Я думаю из-за этого так получилось
|
|||
91
73
23.02.10
✎
18:17
|
(90) Так (80) это подтвердил? Или я что-то пропустил?
|
|||
92
Sashko773
23.02.10
✎
18:31
|
(91) Запрос так и не сформировал.
ВЫБРАТЬ |РабочееВремяРаботниковОрганизаций.Регистратор КАК Регистратор |ИЗ РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК РабочееВремяРаботниковОрганизаций |ГДЕ Регистратор = &ПустаяСсылка" Запрос.УстановитьПараметр("ПустаяСсылка", Документы.ТабельУчетаРабочегоВремениОрганизации.ПустаяСсылка()); Регистратор Значение = Ошибка чтения значения |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |