Имя: Пароль:
1C
1С v8
Перенос из 7.7 через OLE
0 Sun125
 
08.02.12
22:48
Переношу данные справочника из 7.7, в нем один из реквизитов типа Перечисление. Как получить значение этого перечисления?

   Спр = База.CreateObject("Справочник.Работы");
   Спр.ВыбратьЭлементы();
   Пока Спр.ПолучитьЭлемент() Цикл
         Значение = Спр.ТипРаботы.Значение ???   // Перечисление
КонецЦикла;
1 Креатив
 
08.02.12
22:51
(0)Знакомая ситуация. Занимаюсь подобной деятельностью. Ты что дальше-то с ним делать будешь?
2 дущ
 
08.02.12
22:54
Ну может сработает что-то типа

Если Значение = База.Перечисление.ВидПеречисления.Значение1 Тогда
ИначеЕсли Значение = База.Перечисление.ВидПеречисления.Значение2 Тогда

Ну или тупо

Значение = Значение.Представление();
3 Sun125
 
08.02.12
22:56
Доступ к перечислениям базы OLE (аналогичен константе):ЗначениеПеречисленияOLE = БазаОле.Перечисление.Булево.НеЗнаю; // :)


Заметьте, что пользы для местной базы от переменной "ЗначениеПеречисленияOLE" особо-то и нет, ведь подобно справочнику и документу перечисление также напрямую недоступно для местной базы. Пожалуй, пример работы с ними может быть следующим (в качестве параметра условия): СмотретьТолькоВозвратыПоставщикам = 1;      // предположим, что это - флажок в форме диалога,
                                                                       // который мы либо устанавливаем, либо снимаем
ДокОле = БазаОле.CreateObject("Документ.РасходнаяНакладная");
ДокОле.ВыбратьДокументы(НачДата,КонДата); // НачДата и КонДата - также реквизиты формы
                                                                       // диалога, но база OLE прекрасно их понимает -
                                                                       // ведь это же даты!
Пока ДокОле.ПолучитьДокумент()=1 Цикл
    Если СмотретьТолькоВозвратыПоставщикам = 1 Тогда
         Если ДокОле.ПризнакНакладной <> БазаОле.Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда
              Продолжить;
         КонецЕсли;
    Иначе
         Если ДокОле.ПризнакНакладной = БазаОле.Перечисление.ПризнРасхНакл.ВозвратПоставщику Тогда
              Продолжить;
         КонецЕсли;
    КонецЕсли;
    Сообщить(ДокОле.Вид() + " № "+ДокОле.НомерДок + " от " + ДокОле.датаДок);
КонецЦикла;
4 Креатив
 
08.02.12
22:56
(2) Со значением не прокатывает. Так что тупо нужен Идентификатор(), если просто для сравнения.
5 Креатив
 
08.02.12
22:58
(3)ДокОле.ПризнакНакладной.Идентификатор() <> "ВозвратПоставщику"
Как-то так.
6 Креатив
 
08.02.12
22:59
(0)Хорошо тебе, ты только один справочник переносишь...
7 Сияющий Асинхраль
 
08.02.12
23:14
Да хоть все, а не проще использовать КД? На днях для того чтобы перенести остатки номенклатуры (включая и номенклатуру) между разными тис понадобилос часа полтора времени с помощью кд
8 Джинн
 
08.02.12
23:20
(7) Это Вы как-то не по-человечески... А где подвиг, героическое преодоление трудностей, ночи без сна? Где моральное удовлетворение? Взять просто так на 90% мышом перенос натыкать за полтора часа. Или хуже того, так низко пасть, чтобы подсмотреть перенос в типовых правилах и по аналогии сделать.

Это не наш метод!
9 Гот
 
08.02.12
23:22
Через ОЛЕ - это для тех, кому лень изучить КД?
10 Креатив
 
08.02.12
23:24
(7)Были до меня любители КД. Обещали всё сделать к середине декабря...
Надо либо быть гуру в КД, либо сразу забивать на это грязное дело.
(8)А если в исходной конфигурации нарушена методология учётной системы?
11 Сияющий Асинхраль
 
08.02.12
23:31
(10) ее там может вообще не быть (методологии то бишь), зато там есть информация, которую можно достать за пять минут
12 Креатив
 
08.02.12
23:33
(11)Дело вещь не в достать, а правильно интерпретировать. Тут без программного кода всё равно не обойтись. И я не знаю, так ли удобна КД, чтобы туда вставлять существенные его куски.
13 Джинн
 
08.02.12
23:34
(10) Коллега, я сегодня с утра дал задачу коллеге развернуть КД и настроить перенос из сильно нестандартной ТиС 7.7 в УПП. Около 11 часов утра. Примерно к часу дня номенклатура, контрагенты, контактная информация, контакты (7.7 с элементами CRM) уже переносилась в пробном варианте. Да, там местами подпилить нужно, местами пока не разобралась как сделать. Замечу, конфа крайне нестандартная - где-то из реквизита в регистр сведений, где-то из подчиненного справочника в реквизит или в табличную часть и т.п.

Я понимаю, что коллега очень толковая и опытная (хоть и с КД не работала). Но по крайней мере это говорит, что ничего особо заумного в КД нет. И... Разобравшись 1 раз, Вы сможете рулить данными как хотите легким движением мыши.

ЗЫ - лучше день потратить, но потом за 5 минут долететь (с)
14 Креатив
 
08.02.12
23:47
(13)Вообще-то "Лучше день потерять, а потом за пять минут долететь".
"где-то из реквизита в регистр сведений, где-то из подчиненного справочника в реквизит или в табличную часть и т.п. " Это да. Но когда часть документов нужно просто выкинуть при переносе, при этом из одного элемента справочника иногда нужно делать два.
И кстати, наибольшую засаду представляет интерпретация имеющейся в исходной базе информации. И само написание кода не отнимает так уж много времени в процентном соотношении.
Но может ты и прав. Только день-то всё равно нужно потерять. И есть небольшая вероятность, что в моём случае средств КД может и не хватить.
15 ProxyInspector
 
08.02.12
23:55
Перенос с использованием КД подходит для баз уровня ларька. Серьезную базу из 7-ки с помощью КД никогда не перенесешь. Дело в том, что что в процессе формирования файла выгрузки из 7-ки. Формируется список значений узлов ссылок. К сожалению 7-ка при некотором размере списка значений (где-то на уровне 600 тыс) тупо умирает.
16 Джинн
 
09.02.12
00:14
(14) Да легко! Это даже я, который КД пару раз открывал из академического интереса, понимаю как сделать. Там только с виду все непонятно.

(15) 480 тыс. элементов номенклатуры переносилось на моей памяти. И соответственно за ними тянулась связанная информация. Но остатки отдельно тянули, вторым проходом. И остатки взаиморасчетов третьим проходом. С размерами есть некоторые проблемы.
17 ProxyInspector
 
15.02.12
12:15
(16) Я же говорю - ларек. А если тебе надо перенести 10 тыс документов - оборот мелкой фирмы за месяц. КД потянет за этим все справочники и конец КД.
18 Guk
 
15.02.12
12:36
в 2011, с помощью правил КД, переносили элит-строительство с остатками и оборотами за 5 месяцев. порядка 200 тыс документов, 100 тыс номенклатуры, 10 тыс контрагентов. перенеслось без проблем. а послушали бы тогда ПроксиИнспектора, и наверное побоялись бы переносить...
19 ДенисЧ
 
15.02.12
12:38
(18) У меня один день производстсва на неслабой машине через КД выгружается 45 минут. Потом, если не проводить документы, грузится за 20, если проводить - полтора часа...
ПУБ-УПП
20 Guk
 
15.02.12
12:41
(19) перепиши обмен через ОЛЕ ;)...
21 ДенисЧ
 
15.02.12
12:42
(20) Не надо уже :-)
Это производство уже в 8ке нативно создаётся...
22 ProxyInspector
 
15.02.12
13:31
(18) Вы наверно переносили по частям, с магическими танцами и бубнами и оооочень долго :) И наверно вы переносили из 8-ки в 8-ку. Несмотря на тормоза 8-ки она лучше работает с большими списками и таблицами. В (16) я говорил о переносе 77-82
AdBlock убивает бесплатный контент. 1Сергей