Имя: Пароль:
1C
1C 7.7
v7: Перенос данных по OLE
0 Virtmon
 
19.07.12
10:24
Пишу универсальную обработку по переносу данных по документам для идентичных конфигураций из ТИС в ТИС.
При переносе значений справочников возникла проблема: не все данные описаны в метаданных. Например: в справочнике "Номенклатура" поля "РеквБазоваяЕдиница" и "РеквВесБазовой". Их перенести не получается. Может кто подскажет решение проблемы?
1 Guk
 
19.07.12
10:25
подскажу. скачай универсальную обработку по переносу документов через OLE. в инете их море...
2 1Сергей
 
19.07.12
10:26
РеквБазоваяЕдиница = ЕдиницаИзмерения.Единица;
       РеквВесБазовой = ЕдиницаИзмерения.Вес;
       РеквШтрихкодБазовой    = ЕдиницаИзмерения.ШтрихКод;
3 Ёпрст
 
19.07.12
10:26
Да уж..
Переносить нужно подчиненный справочник Единицы и значения реквизитов ОсновнаяЕдиница и БазоваяЕдиница у Номенклатуры
4 Virtmon
 
19.07.12
10:48
(1)Универсальные обработки которые скачал не подходят. Они не универсальны до той степени, до которой мне нужно.
(2)А справочнику ее как присвоить? На
СпрНом = СоздатьОбъект("Справочник.Номенклатура");
СпрНом.РеквБазоваяЕдиница = ЕдиницаИзмерения.Единица;
1с ругается: Поле агрегатного объекта не обнаружено (РеквБазоваяЕдиница)
(3)Да уж...
5 Ёпрст
 
19.07.12
10:55
(4) если че, РеквБазоваяЕдиница,РеквВесБазовой - это реквизиты ФОРМЫ, они не хранятся в ИБ. Их значения устанавливаются при её открытии

так что читай (3) до полного просветления.
6 VladZ
 
19.07.12
10:57
(0) "Пишу универсальную обработку по переносу данных" - скучно? Заняться нечем? :)
7 пипец
 
19.07.12
10:58
8 Virtmon
 
19.07.12
11:09
(5)Ну это я понимаю, но я новичек, думал может кто подскажет решение. Видимо придется с формой мудохаться.
(6)Есть база с УРИБ и в ней ошибки в партиях в 2009, 2010 и 2011 годах. При тестировании и исправлении после проверки на логическую целостность в остатках Кишмиш творится. Надо перенести данные за 2012 год в новую базу, а остатки вводом остатков ввести, чтоб выправить партии.
9 Mikeware
 
19.07.12
11:11
(8)Тогда уж юзай КД. Универссальнее некуда
А вообще, присоединюсь к (6)
10 Virtmon
 
19.07.12
11:18
(7)Univrsam не подходит. т.к. надо будет создать центральную базу, создать распределенные и документы типа "ОтчетККМ" создавать в них. Общие же документы в общей базе. Даже если получится все перенести нормально, то с настройкой переноса можно пропариться дольше, чем написать обработку.
(9)Что есть КД?
11 1Сергей
 
19.07.12
11:18
(8) в УРИБ достаточно перезаписать объект, чтобы он попал в выгрузку
12 Mikeware
 
19.07.12
11:20
(10) 1. Никаких проблем сделать это и универсамом. Работать с УРБД несложно.
2.конвертация данных.
13 Virtmon
 
19.07.12
11:21
(11)По моему если он создан в центральной базе, то в распределенную он не попадет. Или к чему это?
14 France
 
19.07.12
11:23
тогда смотреть настройки...
в общем, тоже задаюсь вопросом:зачем???
типовые работают на урра..
15 Ёпрст
 
19.07.12
11:23
(13) это зависит от правил миграции
16 France
 
19.07.12
11:24
(15) Епрст, после 24 часов без сна забыл словосочетание "правила миграции". Спасибо мил человек - напомнил))
17 Virtmon
 
19.07.12
12:11
http://rapid.ufanet.ru/2432328 - правила миграции
18 Virtmon
 
19.07.12
13:16
Посмотрел Universam - по моему документы "строка выписки банка расход" ей нормально не перенесешь. Все же доделаю свою.
19 Virtmon
 
20.07.12
11:29
Написал процедуру:

Если ОбщАттр.Идентификатор = "Номенклатура" Тогда
   СпрЕд = СоздатьОбъект("Справочник.Единицы");
   СпрЕдОЛЕ = БазаОЛЕ.CreateObject("Справочник.Единицы");
   СпрЕд.ИспользоватьВладельца(ТекСправ.ТекущийЭлемент());
   СпрЕдОЛЕ.ИспользоватьВладельца(ЗначАтр.ТекущийЭлемент());
   СпрОКЕИ = СоздатьОбъект("Справочник.ОКЕИ");
   СпрЕд.ВыбратьЭлементы();
   СпрЕдОЛЕ.ВыбратьЭлементы();
   Пока СпрЕдОЛЕ.ПолучитьЭлемент() = 1 Цикл
       СпрЕд.Новый();
       СпрОКЕИ.НайтиПоНаименованию("шт");
       СпрЕд.ОКЕИ = СпрОКЕИ.ТекущийЭлемент();
       Сообщить("СпрЕдОЛЕ.ОКЕИ = "+СпрЕдОЛЕ.ОКЕИ);
       СпрЕд.Вес = СпрЕдОЛЕ.Вес;
       Сообщить("СпрЕдОЛЕ.Вес = "+СпрЕдОЛЕ.Вес);
       СпрЕд.Коэффициент = СпрЕдОЛЕ.Коэффициент;
       Сообщить("СпрЕд.Коэффициент = "+СпрЕд.Коэффициент);
       СпрЕд.ШтрихКод = СпрЕдОЛЕ.ШтрихКод;
       Сообщить("СпрЕдОЛЕ.ШтрихКод = "+СпрЕдОЛЕ.ШтрихКод);
       СпрЕд.Записать();
   КонецЦикла;
КонецЕсли;

При двойном клике по номенклатуре выдает ошибку: Для позиции номенклатуры "..." указана основная единица измерения, принадлежащая другому элементу справочника Номенклатура.
20 Ёпрст
 
20.07.12
11:31
(19) тихий ужас.
Единицы, если че, подчиненный справочник.
21 Virtmon
 
20.07.12
11:31
СпрЕд.ИспользоватьВладельца(ТекСправ.ТекущийЭлемент());
22 Ёпрст
 
20.07.12
11:32
СпрЕд.ВыбратьЭлементы();
   СпрЕдОЛЕ.ВыбратьЭлементы();

это тоже смело
23 Ёпрст
 
20.07.12
11:32
:)
24 Ёпрст
 
20.07.12
11:33
Если че. в Источнике надо перебирать, в приёмнике искать, если не найден - создавать
25 Virtmon
 
20.07.12
11:37
(24) Согласен, СпрЕд.ИспользоватьВладельца(ТекСправ.ТекущийЭлемент()); не надо. Можно и не искать, мне надо создать новые элементы, поэтому я упростил процедуру.
Почему подчинение устанавливается неправильно - вот в чем вопрос. Хотя когда заходишь в элемент и просматриваешь справочник Единицы, все элементы справочника заполнены
26 Прохожий
 
20.07.12
11:44
(0) Павел Шевченко. Универсал 2.6
Там все ответы...
27 Прохожий
 
20.07.12
11:45
Не трать время зря.