Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Удаление записей из регистра остатков с битыми ссылками (http://forums.kuban.ru/f1040/udalenie_zapisej_iz_registra_ostatkov_s_bitymi_ssylkami-6581818.html)

Pusto 11.03.2015 07:59

Удаление записей из регистра остатков с битыми ссылками
 
Как удалить из регистра остатков записи с битыми ссылками
при помощи обработки

roma n 11.03.2015 08:10

ммм.... написать обработку, которая будет определять факт "битости" не предлагать?
В просторечии "битая" означает отсутствие записи в основной таблице. Дальше сам.

wowick 11.03.2015 08:44

А разве, когда в конфигураторе запускаешь режим проверки и исправления ошибок, там не спрашивает, что делать с "битыми" ссылками? Удалять, или создавать новые объекты. Где-то такое было...

Pusto 11.03.2015 08:54

Я хочу именно обработкой удалить из регистра остатков эти записи

xxc 11.03.2015 09:10

если тема о 7ке, то по прежнему непонятно в чём собственно загвоздка?

user1C 11.03.2015 09:16

(3)
разрешаем... не благодари)

Pusto 11.03.2015 09:55

как обработкой указать регистратор.
Ведь документ который сделал движения удален а движения его остались?

xxc 11.03.2015 09:59

сильно! этот вопрос (6), но сформулированный иначе меня интриговал с 9:10

GariPortman 11.03.2015 10:12

в 8-ке очень помогло
[url]http://w1c.ru/files/epf/GUID_300114.rar[/url]

roma n 11.03.2015 11:45

(6) и что?
Ссылка на регистратор есть? есть, хотя и "битая".
Отбор по ней кто-то запрещает установить? В чём проблема-то?

Pusto 11.03.2015 13:02

Мне нужно сделать это обработкой в 7.7
Как я запишу регистратор обработкой?
и как я получу этот регистратор, ведь если я выгружаю итоги регистра - регистратора я не вижу.

Pusto 11.03.2015 13:04

ВремРег = СоздатьОбъект("Регистры");
Рег = ВремРег.ОстаткиТовара;
Если Дта<ПолучитьДатуТА() Тогда
Рег.ВременныйРасчет();
КонецЕсли;
Рег.УстановитьФильтр(,ВыбСклад);
Если Дта<ПолучитьДатуТА() Тогда
ВремРег.РассчитатьРегистрыПо(Дта);
КонецЕсли;
Рег.ВыгрузитьИтоги(Табл,1,1);

Табл.ВыбратьСтроки();
Пока Табл.ПолучитьСтроку()=1 Цикл
Регистр.ОстаткиТовара.Товар=Табл.Товар;
Регистр.ОстаткиТовара.Склад=Табл.Склад;
Регистр.ОстаткиТовара.Количество=Табл.Количество;
Регистр.ОстаткиТовара.Стоимость=Табл.Сумма;
Регистр.ОстаткиТоваровСк.ДвижениеРасходВыполнить();
КонецЦикла;
а куда записать регистратор?

VZ 11.03.2015 13:20

11-Pusto > Неправильно.
Не надо ничего записывать в регистр: надо восстановить [b]объект метаданных[/b].
Т.е., если "битая ссылка" является указателем на несуществующую запись справочника Номенклатура, то надо создать по новому свежую запись Номенклатуры [b]с прежним значением ID[/b].

P.S. Для этого достаточно запустить ТиИ с оцией "Исправить".
P.P.S. А потом убить ап стену того типа, который разрешил непосредственное удаление объектов. С особой жестокостью.

Pusto 11.03.2015 13:23

Это периферийная база и запускать ТиИ (проверка логической целостности) нельзя так как это чревато другими последствиями. Центральная база больше ПБ раз в 50. Поэтому нужна только обработка.

VZ 11.03.2015 13:37

13-Pusto > Регистратор записывается самим регистратором из Модуля документа.
Разработчики 1Cv7 смотрят на тебя с интересом.

Чучундер 11.03.2015 22:27

Можно сделать
Так как в регистр штатно доступ только через документ
То есть два варианта
Прямыми запросами ищешь битые ссылки и удаляешь записи с такими ссылками
Виорой вариант запускаешь тии с опуией исправить
Она тебе нарожает кучу дркументов которые отсутствуют в базе но по которым есть движения в регистре
Далее в модуле этих документов делаешь вставку чтобы отрабатывала только удаление записей при проведении и делаешь проведение и распроведение этих доков потом удаляешь эти доки штатно
А потом снимаешьчистишь таблицу регистрации изменений чтобы вся эта муть не ушла в цб

Но прямыми запросами быстрее будет наверное
Посмотри на исе разработку
Граната для обезьянки

Чучундер 11.03.2015 22:29

10-Pusto > итоги по регистру это отдельная таблица
Так как итоги по регистратору бессмыслены то в таблице итогов ссыли на регистратор нет
Регистратор есть только в таблице движений
Более подробно инфу можно почерпнуть в словаре данных
Это файлик с расширением dd или dds


Текущее время: 22:32. Часовой пояс GMT +3.