Имя: Пароль:
1C
 
Конвертация 2. Справочники из 7.7 - > Таб. часть документа 8.2
0 tiago
 
17.05.16
12:05
Доброго дня уважаемые!
Прошу вашего совета.
Переношу данные из самописной 7.7 (подобие бухгалтерии) в типовую бух. на 8.2.
Пытаюсь создать и заполнить документ "принятие на работу в 8.2". Все необходимые реквизиты хранятся в справочнике "сотрудники 7.7" (сам сотр., дата приема, должность, оклад, подразд.) - выбираю все элементы справочника и помещаю их в табличную часть.
Для этого делаю произвольную выборку из 7.7 со структурой, которая должна быть такой же, как структура документа 8.2.


//1. получим выборку всех сотрудников и выгрузим в ТЗ
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Сотр  = Справочник.Сотрудники.ТекущийЭлемент;
|Группировка Сотр;
|"//}}ЗАПРОС
;
Запрос.Выполнить(ТекстЗапроса);
//выгрузка
ТабСотры = "";
Запрос.Выгрузить(ТабСотры);            
//--------------------------------------


//2. Получим структуру документа (шапка и таб. части):
ТаблицаДанные = СоздатьОбъект("ТаблицаЗначений");
ТаблицаДанные.НоваяКолонка("Номер");
ТаблицаДанные.НоваяКолонка("Дата");
ТаблицаДанные.НоваяКолонка("РаботникиОрганизации");
//------------------------------------------------------


//3. Определим колонки табличной части и заполним её:
СписокСотрудников = СоздатьОбъект("ТаблицаЗначений");
СписокСотрудников.НоваяКолонка("ДатаПриема");
СписокСотрудников.НоваяКолонка("Сотрудник");
СписокСотрудников.НоваяКолонка("Должность");
СписокСотрудников.НоваяКолонка("Подразделение");
СписокСотрудников.НоваяКолонка("Оклад");
СписокСотрудников.НоваяКолонка("Ставка");
//заполнение
ТабСотры.ВыбратьСтроки();
Пока ТабСотры.ПолучитьСтроку()=1 Цикл
    СписокСотрудников.НоваяСтрока();
    СписокСотрудников.ДатаПриема       = ТабСотры.Сотр.Дата_Приема.Получить(ТекущаяДата());
    СписокСотрудников.Сотрудник        = ТабСотры.Сотр;
    СписокСотрудников.Должность        = ТабСотры.Сотр.Должность.Получить(ТекущаяДата());
    СписокСотрудников.Подразделение    = ТабСотры.Сотр.Подразделение.Получить(ТекущаяДата());
    СписокСотрудников.Оклад            = ТабСотры.Сотр.Оклад.Получить(ТекущаяДата());
    СписокСотрудников.Ставка           = ТабСотры.Сотр.Ставка.Получить(ТекущаяДата());
КонецЦикла;  
//-------------------------------------------------------


//4. Заполним реквизиты шапки и передадим данные в таб. часть:
НоваяСтрокаДанные = ТаблицаДанные.НоваяСтрока();
НоваяСтрокаДанные.Номер = "00001";
НоваяСтрокаДанные.РаботникиОрганизации = СписокСотрудников;
//--------------------------------------------------------------


//5. Вернем полученную выборку с реквизитами шапки и таб. частями:
ВыборкаДанных = ТаблицаДанные;  


Выгрузка останавливается с ошибкой
- Значение не представляет агрегатный объект (Номер)

Что не так ?
1 Cyberhawk
 
17.05.16
12:07
Отключи номер в ПКС
2 tiago
 
17.05.16
12:11
(1) Не помогло.
http://c2n.me/3y8ihB4



Уточню ошибку:

Ошибка исполнения обработчика:  ПВД_ПередОбработкойПравила_ПриемНаРаботуВсехСотрудников
  - Значение не представляет агрегатный объект (Номер)

указанный код - ПВД(Перед обработкой)
http://c2n.me/3y8hqJs
3 Cyberhawk
 
17.05.16
12:12
Попробуй вместо "ВыборкаДанных = ТаблицаДанные" написать "ВыгрузитьПоПравилу(ТаблицаДанные)", если при выгрузке из 7.7 так можно, конечно
4 Cyberhawk
 
17.05.16
12:13
+ имя ПКО укажи в методе ВыгрузитьПоПравилу
5 Cyberhawk
 
17.05.16
12:13
5 параметр, кажись
6 tiago
 
17.05.16
12:21
(3) Оно туда ещё не доходит, валится на строке из примера:

НоваяСтрокаДанные.Номер = "00001";

Если отказать от этой строки и поставить автоматич. присвоение номера, то проблема в следующей строке

НоваяСтрокаДанные.РаботникиОрганизации = СписокСотрудников;

не желает ничего присваивать здесь.
7 sonne666
 
17.05.16
12:24
(6) плохо помню 7.7, но может, должно быть так:

//4. Заполним реквизиты шапки и передадим данные в таб. часть:

ТаблицаДанные.НоваяСтрока();
ТаблицаДанные.Номер = "00001";
ТаблицаДанные.РаботникиОрганизации = СписокСотрудников;
8 tiago
 
17.05.16
12:54
(7) Да, верно, код в 7.7 следует писать именно так.

Выгрузка пошла, но
Ошибка выбора объектов коллекции
Выгружено объектов:   424

Смотрю в модуле:

    Попытка
        КоллекцияОбъектов.ВыбратьСтроки();
    Исключение
        ВывестиСообщение("Ошибка выбора объектов коллекции", "!!!");
        Возврат;
    КонецПопытки;

В КоллекцияОбъектов ничего нет. С чем может быть связано?

Уточню, что в ПСК в "Перед выгрузкой" пишу так: Значение = ОбъектКоллекции.Должность;
А где приемник табличная часть, в источнике ничего не указывал.
9 sonne666
 
17.05.16
13:07
(8) вот из описания обработчиков:
"Важно:
Если для выборки данных ПВД используется произвольный алгоритм и в обработчике ПВД "Перед обработкой" инициируется параметр ВыборкаДанных, то для ПКО следует установить признак "Не запоминать выгруженные объекты".
"

Стоит эта галочка?
10 sonne666
 
17.05.16
13:13
+(9) В ПКС, по-моему, не нужно переопределять значения, у вас просто названия полей должны совпадать.
11 tiago
 
17.05.16
13:22
(9) Да, есть такая отметка.
(10) Имеете в виду не указывать Источник в свойствах? А где же тогда для каждого свойства указывать Правило конвертации? Ведь типы у источника и приемника не примитивные/разные и нужны правила...
12 tiago
 
17.05.16
14:51
Только сейчас дошел смысл написанного в (10)...

В общем все получилось, в моем случае выглядит так
http://c2n.me/3y8PNro

Благодарю вас всех!!!
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан