Имя: Пароль:
1C
1С v8
Не переносится история периодических реквизитов из 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
Спасибо. Я разобрался. Оказалось, что вместо элемента была группа
Программист всегда исправляет последнюю ошибку.