|
Конвертация 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 Благодарю вас всех!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |