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