|
|
Не переносится история периодических реквизитов из 1С7.7 в 1С8.2 |
☑ |
|
0
fdv_83
12.06.13
✎
12:21
|
Всем доброго дня. Имеются две самописные базы (1С7.7 и 1С8.2). Написал обработку по переносу данных. Но при попытке переноса истории периодических реквизитов справочников, выдаёт ошибку в методе OLEПериодический.ИспользоватьОбъект("КодКлиентаДляИстории",ВыбИсточник)
Пишет, что реквизит не является периодическим, хотя он периодический. Подскажите, пожалуйста, как можно решить данную проблему
|
|
|
1
Kreont
12.06.13
✎
12:35
|
значит не так период.реквизит подключаешь и перебираешь.
Попробуй тот же код напиши сначала в чистом 7.7, а уже потом по оле.
|
|
|
2
fdv_83
12.06.13
✎
12:58
|
В 7.7 этот же код работает.
OLEПериодический = OLEБаза.CreateObject("Периодический");
OLEПериодический.ИспользоватьОбъект("КодКлиентаДляИстории",ВыбИсточник);
OLEПериодический.ВыбратьЗначения();
Пока OLEПериодический.ПолучитьЗначение() = 1 Цикл
глТЗИмяОтбора_ЗначениеОтбора.Очистить();
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора = глТЗИмяОтбора_ЗначениеОтбора.Добавить();
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора.ИмяОтбора = "Клиент";
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора.ЗначениеОтбора = НовыйЭлемент;
ГлобальныйМодуль.глЗаписатьЗначениеВРегистрСведений("КодыКлиентов",глТЗИмяОтбора_ЗначениеОтбора,OLEПериодический.ДатаЗнач,"КодКлиента",OLEПериодический.Значение);
глТЗИмяОтбора_ЗначениеОтбора.Очистить();
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора = глТЗИмяОтбора_ЗначениеОтбора.Добавить();
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора.ИмяОтбора = "Элемент";
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора.ЗначениеОтбора = НовыйЭлемент;
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора = глТЗИмяОтбора_ЗначениеОтбора.Добавить();
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора.ИмяОтбора = "Реквизит";
НоваяСтрокаТЗИмяОтбора_ЗначениеОтбора.ЗначениеОтбора = Перечисления.ПериодическиеРеквизитыСправочникаКонтрагенты.КодКлиента;
ГлобальныйМодуль.глЗаписатьЗначениеВРегистрСведений("ПериодическиеРеквизитыСправочников",глТЗИмяОтбора_ЗначениеОтбора,OLEПериодический.ДатаЗнач,"Значение",OLEПериодический.Значение);
КонецЦикла;
|
|
|
3
Kreont
12.06.13
✎
13:06
|
а так:
(ВыбИсточник - оле справочник из 77?)
OLEПериодический = OLEБаза.EvalExpr("СоздатьОбъект(""Периодический"")");
OLEПериодический.ИспользоватьОбъект("КодКлиентаДляИстории",ВыбИсточник.ТекущийЭлемент());
Если OLEПериодический.ВыбратьЗначения() = 1 Тогда
Пока OLEПериодический.ПолучитьЗначение() = 1 Цикл
|
|
|
4
fdv_83
12.06.13
✎
13:18
|
Сейчас проверю
|
|
|
5
fdv_83
12.06.13
✎
14:13
|
Всё то же самое. Выдаёт ошибку:
{Обработка.ПереносДанных.Форма.Форма.Форма(114)}: Ошибка при вызове метода контекста (ИспользоватьОбъект)
OLEПериодический.ИспользоватьОбъект("КодКлиентаДляИстории",ВыбИсточник.ТекущийЭлемент());
по причине:
Произошла исключительная ситуация (1С:Предприятие): КодКлиентаДляИстории не является константой или периодическим параметром!
Параметр проверял, он периодический
|
|
|
6
Kreont
12.06.13
✎
14:36
|
"ВыбИсточник" проверь что б был точно объектом оле справочника
|
|
|
7
fdv_83
12.06.13
✎
15:50
|
Спасибо. Я разобрался. Оказалось, что вместо элемента была группа
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший