Имя: Пароль:
1C
 
Восстановление удаленной номенклатуры
0 kn
 
06.05.10
07:54
Вопрос такой - в БП была "чистка" справочника Номенклатуры, в результате чего удалились нужные элементы(по ним имеются остатки по 41 счету)Как восстановить эти элементы, не восстанавливая все.Надо восстановить порядка 30 элементов,наименование каждого выискивать в ЖР и потом переносить из архива не хочется.Есть ли более быстрый способ?
1 Мерседес
 
06.05.10
08:40
Волшебный способ ?
2 kn
 
06.05.10
08:41
ну хотябы как наименования узнать не из ЖР а по-быстрей из базы архива?
3 Mitriy
 
06.05.10
08:41
из бекапа... а программисту табуреткой по пальцам...
4 Ksandr
 
06.05.10
08:41
он называется Бэкап? Вы еще этого не делали?
5 Ksandr
 
06.05.10
08:41
теперь будете
6 Mitriy
 
06.05.10
08:42
на ИТС есть обработка ВыгрузкаЗагрузкаДанныхXML.epf
7 Mitriy
 
06.05.10
08:42
(6) к (2)
8 kn
 
06.05.10
08:43
(5)как умно-то
(6)чет не понимаю как эта обработка поможет узнать наименвоания
9 Ksandr
 
06.05.10
08:46
(8) Не, серьезно, бэкап есть?
10 kn
 
06.05.10
08:46
А в ЖР у что-то поиск по этой битой ссылке не идет, так глазами если только искать что очень долго,удаляли несколько дней
11 Mitriy
 
06.05.10
08:46
(8) я тоже не знаю, знаю только, что с помощью этой обработки ты можешь восстановить номенклатуру из бекапа...
12 kn
 
06.05.10
08:47
надо не всю вот.
13 kn
 
06.05.10
09:16
(11)а поле отбора какое?Если бы знать их наименования или коды, а по тому что от элемента осталось отбор то нельзя сделать.
14 Mitriy
 
06.05.10
09:23
(13) либо полностью загружать, либо ваять свою обработку, с поиском битых ссылок, поиском гуидов в старой базе и загрузке их в новую... можно поискать на инфостарте, вроде бы уже кто-то такое ваял, хотя на сто процентов не уверен...
15 kn
 
06.05.10
09:28
а можно по гуиду получить наименование или код (в бэкапе)?Как?
16 Mitriy
 
06.05.10
09:30
ПолучитьСсылку
17 kn
 
06.05.10
09:33
а тогда еще вопрос вот у этого <Объект не найден> (33:8fc2000423b2e8b611dab4de88c7104e) гуид какой?
18 DmitrO
 
06.05.10
09:37
1.Разворачиваешь копию из бекапа в новую базу.
2.Пишешь обработку, которая делает слежующее:
2.1.Открывает копию по OLE (ComConnector-ом)
2.2.Запросом по 41 счету получает список ссылок номенклатуры которые надо восстановить.
2.3.По каждой ссылке по OLE через сериализацию XDTO тащишь объекты номенклатуры в свою базу и записываешь их, объекты перенесутся со всеми реквизитами.

Работы на 20 минут, код уместится на одной страничке.
19 Defender aka LINN
 
06.05.10
09:40
(17) У него ГУИД - УникальныйИдентификатор()!
20 kn
 
06.05.10
09:42
(18)спасибо но с XDTO не умею работать,ближе КД и xml.
(19)ну догадываюсь что это синонимы
21 kn
 
06.05.10
09:53
(18)а как получить список номенклатуры которую надо восстановить по 41 счету,может я через КД смогу потом перенести?
22 Mitriy
 
06.05.10
09:55
(21) запросом
23 kn
 
06.05.10
09:56
как условие на битость ссылки наложить?
24 DmitrO
 
06.05.10
09:57
(23) где Субконто1.Ссылка есть NULL
25 Mitriy
 
06.05.10
09:59
(23) да можешь просто выгрузить из бекапа только ту номенклатуру, которая есть на 41-ом счете... и загрузить ее в базу... тогда не надо будет заморачиваться с гуидами...
26 kn
 
06.05.10
10:05
(24)спс,во темнота-то.
(25)ну можно но удаляли несколько дней,если возьму какой нибудь древний бэкап то
после то могли по номенклатуре быть движения.
27 hhhh
 
06.05.10
10:21
(26) еще можно ТИИ запустить с флажком "Добавлять объекты". Он тебе эту номенклатуру добавит, но с нестандартными кодами и наименованиями: F00000001, F00000002 и т.д. И уже в них можешь вбивать наименования.
28 Megas
 
06.05.10
10:24
(0) Что означает "Не восстанавливая всё" и "Произвели чистку"

Вы что непосредственно поудаляли номенклатуру ? Невзирая на ссылки?
29 kn
 
06.05.10
10:26
(27)не это по-моему ну очень долго.
(28)В УТ удаляли там ссылок не было при переносе удалились из БП а там оказалось
что ссылки были(у нас нестандартный обмен)
30 hhhh
 
06.05.10
10:30
(29) а что, большая база? Можно запускать не всё ТИИ, а только один пункт: проверка логической целостности.
31 Megas
 
06.05.10
10:31
(17) Помню делал как то восстановление номенклатуры... выискивал ГУИД и ПОДСТАВЛЯЛ .

(30) Я для 1 элемента задолбался ТИИ делать..  и как то тупо восстановилось
32 hhhh
 
06.05.10
10:37
(31) да там без разницы: 1 элемент или 30. По времени одинаково.
33 пента
 
06.05.10
10:41
+1 на ИТС есть обработка ВыгрузкаЗагрузкаДанныхXML.epf
легко и быстро :)
34 DmitrO
 
06.05.10
11:08
легко и быстро это вот так примерно:
Процедура ВосстановлениеНоменклатуры(СтрокаПодключенияККопии)
   Connector = Новый ComОбъект("V81.ComConnector");
   БазаКопия = Connector.Connect(СтрокаПодключенияККопии);
   Запрос = Новый Запрос;
   Запрос.Текст = "
   |выбрать
   |    Обороты.Субконто1 как Номенклатура
   |из РегистрБухгалтерии.Хозрасчетный.Обороты(,,,Счет = Значение(ПланыСчетов.Хозрасчетный.ТоварыНаСкладах)) как Обороты
   |где Обороты.Субконто1.Ссылка есть Null
   |";
   БазаТипНом = БазаКопия.NewObject("ОписаниеТипов", "СправочникСсылка.Номенклатура").Типы().Получить(0);
   БазаЗаписьXML = БазаКопия.NewObject("ЗаписьXML");
   ЧтениеXML = Новый ЧтениеXML;
   Выб = Запрос.Выполнить().Выбрать();
   Пока Выб.Следующий() Цикл
       БазаЗаписьXML.УстановитьСтроку();
       БазаКопия.СериализаторXDTO.ЗаписатьXML(БазаЗаписьXML, БазаКопия.ЗначениеXML(БазаТипНом, XMLСтрока(Выб.Номенклатура)).ПолучитьОбъект());
       ЧтениеXML.УстановитьСтроку(БазаЗаписьXML.Закрыть());
       ОбъектНоменклатуры = СериализаторXDTO.ПрочитатьXML(ЧтениеXML);
       ЧтениеXML.Закрыть();
       ОбъектНоменклатуры.ОбменДанными.Загрузка = Истина;
       ОбъектНоменклатуры.Записать();
   КонецЦикла;
КонецПроцедуры

Раз тема живет написал иллюстрацию к (18)
35 kn
 
06.05.10
11:14
(34)попробую, спасибо за код.
36 kn
 
06.05.10
12:15
(34)Глянь пжл-та, что-то ругается "Метод объекта не обнаружен (ЗначениеXML)"
37 DmitrO
 
06.05.10
12:57
Правильно ругается чо, потому что надо так: XMLЗначение
38 kn
 
06.05.10
13:12
ну все сработало,спс.
39 DmitrO
 
06.05.10
13:24
Во всем разобраться, все детали изучить, что не понятно не стесняться - спросить, можно по аське.
40 kn
 
06.05.10
13:31
хорошо.
AdBlock убивает бесплатный контент. 1Сергей