Конвертация реквизит шапки в табличную часть 1с

Конвертация шапки документа в табличную часть

Ключевые слова: Конвертация данных

Столкнулся как то спроблемой конвертации реквизитов шапки одного документа в табличную часть

другого документа.

Если кто знает в УПП есть документ «Взаимозачет» который содержит табличную часть «СуммыДолга».

Вот в его ТЧ и надо было

сконвертировать документ из нетиповой конфигурации «Перезачет», в нем есть два реквизита

«КонтрагентС» и «КонтрагентНа» и реквизит «СуммаДолга».

Задача в том чтобы эти реквизиты шапки перейшли в ТЧ «СуммыДолга» документа «Взаимозачет».

Решение:

1. Создаем ПКО Перезачет->Взаимозачет.

2. Создаем ПКС конвертации простых типов (Дата и Номер документа):

                 ДатаДок -> Дата

                 НомерДок -> Номер

3. Создаем ПКГС только с заполненным Приемником «СуммыДолга» (табличная часть документа

Взаимозачет).

4. В обработчике ПередОбработкой ПКГС  заполняем встроенную переменную КоллекцияОбъектов (тип

ТаблицаЗначений) значениями с шапки:

                       
                  КоллекцияОбъектов = СоздатьОбъект(«ТаблицаЗначений»);

                  КоллекцияОбъектов.НоваяКолонка(«Контрагент»);

                  КоллекцияОбъектов.НоваяКолонка(«ДоговорКонтрагента»);

                  КоллекцияОбъектов.НоваяКолонка(«СуммаУвеличение»);

                  КоллекцияОбъектов.НоваяКолонка(«СуммаУменьшение»);

             
                  КоллекцияОбъектов.НоваяСтрока();

              КоллекцияОбъектов.Контрагент         = Источник.КонтрагентC;  

              КоллекцияОбъектов.ДоговорКонтрагента = Источник.КонтрагентC.Договор;

              КоллекцияОбъектов.СуммаУвеличение    = 0;

              КоллекцияОбъектов.СуммаУменьшение    = Источник.СуммаДолга;

              КоллекцияОбъектов.НоваяСтрока();

              КоллекцияОбъектов.Контрагент         = Источник.КонтрагентНа;  

              КоллекцияОбъектов.ДоговорКонтрагента =

Источник.КонтрагентНа.Договор;

              КоллекцияОбъектов.СуммаУвеличение    = Источник.СуммаДолга;

              КоллекцияОбъектов.СуммаУменьшение    = 0;    

   
5. Создаем четыре (в моем случае) ПКС табличной части с пустыми источниками:

                        -> Контрагент

                        -> ДоговорКонтрагента

                        -> СуммаУвеличение

                        -> СуммаУменьшение

6. Все правило конвертации готово!

КД Перенос реквизита из шапки документа в табличную часть

Я
   Dark778

10.10.19 — 13:40

Не так давно в КД, помогайте :) 1С Бух в КД 2.4. Конверчу документ «ПоступлениеТоваровУслуг» из Бух в документ «ПриобретениеТоваровУслуг» КА. Необходимо закинуть реквизит СуммаДокумента в табличную часть ЭтапыГрафикаОплаты. Следую одной статье, а именно:

{

Для того чтобы выгрузить (произвольные) реквизиты шапки документа базы отправителя, в (произвольную) табличную часть базы получателя, необходимо сделать всего несколько простых вещей.

1) Для правила конвертации объекта (ПКО) в событии перед выгрузкой инициализировать таблицу значений

ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить(«ИмяКолонки»);

// Имена колонок должны соответствовать именам реквизитов табличной части в базе приемнике

// Либо получить таблицу выполнением запроса

ТЗ = ЗапросДанных.Выполнить().Выгрузить();

2) Полученную таблицу значений поместить во «ВходящиеДанные»

ВходящиеДанные = Новый Структура;

ВходящиеДанные.Вставить(<ИмяТабличнойЧастиПолучателя>, <ТаблицаЗначений>);

3) Далее. В правилах конвертации свойств (ПКС) создать ПКГС (правило конвертации группы свойств, иными словами табличную часть), так как показано на рисунке. Конечно в Вашем случае количество и имена реквизитов будут другими. ГЛАВНОЕ чтобы имена и количество реквизитов, соспадали с именами колонок передаваемой таблицы значений.

}

Но не выходит каменный цветок (( В моём случае в ПКО перед выгрузкой:

ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить(«Заказ»);

ТЗ.Колонки.Добавить(«СверхЗаказа»);

ТЗ.Колонки.Добавить(«ВариантОплаты»);

ТЗ.Колонки.Добавить(«ДатаПлатежа»);

ТЗ.Колонки.Добавить(«Сдвиг»);

ТЗ.Колонки.Добавить(«ПроцентПлатежа»);

ТЗ.Колонки.Добавить(«СуммаПлатежа»);

ТЗ.Колонки.Добавить(«ПроцентЗалогаЗаТару»);

ТЗ.Колонки.Добавить(«СуммаЗалогаЗаТару»);

ТЗ.Колонки.Добавить(«СуммаВзаиморасчетов»);

ТЗ.Колонки.Добавить(«СуммаВзаиморасчетовПоТаре»);

ТЗ.Добавить();

ТЗ.СуммаПлатежа = Источник.СуммаДокумента;

ТЗ.ВариантОплаты = «ПредоплатаДоПоступления»;

ТЗ.ДатаПлатежа       = ‘20191010’;

ТЗ.ПроцентПлатежа    = 100;

ВходящиеДанные = Новый Структура;

ВходящиеДанные.Вставить(ЭтапыГрафикаОплаты, ТЗ);

В результате имею ошибку на выгрузке из Бух

Ошибка в обработчике события ПередВыгрузкойОбъекта

    ПКО                    =  ПриобретениеТоваровУслуг  (Документ: Поступление (акты, накладные))

    Объект                 =  Поступление (акт, накладная) 00БП-000435 от 01.06.2019 7:00:00  (Поступление (акт, накладная))

    Обработчик             =  ПередВыгрузкойОбъекта

    ОписаниеОшибки         =  Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(25,25)}: Переменная не определена (ЭтапыГрафикаОплаты)

    ПозицияМодуля          =  Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1706)

    КодСообщения           =  41

Где неправ, объясните?

  

Партнерская программа EFSOL Oblako

   vicof

1 — 10.10.19 — 13:42

ВходящиеДанные.Вставить(«ЭтапыГрафикаОплаты», ТЗ); не?

   Йохохо

2 — 10.10.19 — 13:44

на ПКГС нет галки получить из входящих данных?

   Dark778

3 — 10.10.19 — 13:47

О, продвинулся ) Спасибо!

Теперь новой счастье

Ошибка в обработчике события ПередВыгрузкойОбъекта

    ПКО                    =  ПриобретениеТоваровУслуг  (Документ: Поступление (акты, накладные))

    Объект                 =  Поступление (акт, накладная) 00БП-000435 от 01.06.2019 7:00:00  (Поступление (акт, накладная))

    Обработчик             =  ПередВыгрузкойОбъекта

    ОписаниеОшибки         =  Поле объекта не обнаружено (СуммаПлатежа)

    ПозицияМодуля          =  (18)

    КодСообщения           =  41

   Dark778

4 — 10.10.19 — 13:48

галка стоит

   hhhh

5 — 10.10.19 — 13:56

(3) ну, 18ю строчку в студию!

   Йохохо

6 — 10.10.19 — 13:57

(3) «Обработчик             =  ПередВыгрузкойОбъекта» это не ПКГС

   Dark778

7 — 10.10.19 — 14:48

(5) Закоментил строку

// ТЗ.СуммаПлатежа = Источник.СуммаДокумента; (это 18-я строка)

После этого стал ругаться на следующую

ТЗ.ВариантОплаты = «ПредоплатаДоПоступления»;

Ошибка в обработчике события ПередВыгрузкойОбъекта

    ПКО                    =  ПриобретениеТоваровУслуг  (Документ: Поступление (акты, накладные))

    Объект                 =  Поступление (акт, накладная) 00БП-000435 от 01.06.2019 7:00:00  (Поступление (акт, накладная))

    Обработчик             =  ПередВыгрузкойОбъекта

    ОписаниеОшибки         =  Поле объекта не обнаружено (ВариантОплаты)

    ПозицияМодуля          =  (19)

    КодСообщения           =  41

Что не так?

   Dark778

8 — 10.10.19 — 14:49

(6) Так в статье говориться о ПередВыгрузкой у ПКО https://qa.erpstat.ru/public/00009.html

  

Dark778

9 — 10.10.19 — 15:01

Переделал код на

ТЗ = Новый ТаблицаЗначений;

ТЗ.Колонки.Добавить(«Заказ»);

ТЗ.Колонки.Добавить(«СверхЗаказа»);

ТЗ.Колонки.Добавить(«ВариантОплаты»);

ТЗ.Колонки.Добавить(«ДатаПлатежа»);

ТЗ.Колонки.Добавить(«Сдвиг»);

ТЗ.Колонки.Добавить(«ПроцентПлатежа»);

ТЗ.Колонки.Добавить(«СуммаПлатежа»);

ТЗ.Колонки.Добавить(«ПроцентЗалогаЗаТару»);

ТЗ.Колонки.Добавить(«СуммаЗалогаЗаТару»);

ТЗ.Колонки.Добавить(«СуммаВзаиморасчетов»);

ТЗ.Колонки.Добавить(«СуммаВзаиморасчетовПоТаре»);

Стр = ТЗ.Добавить();

Стр.СуммаПлатежа = Источник.СуммаДокумента;

Стр.ВариантОплаты = «ПредоплатаДоПоступления»;

Стр.ДатаПлатежа       = ‘20191010’;

Стр.ПроцентПлатежа    = 100;

Выгрузил без ошибки )

Доброго времени суток. Переношу данные из ПУБ 7, ред. 2.8 в УНФ 8, использую КД. В 7 документ ВыпускПродукцииРазделка, у него реквизиты Материал, КоличествоМатериалов. Переношу в 8 документ СборкаЗапасов , нужно, чтобы эти реквизиты(Материал и КоличествоМатериалов) попали в табличную часть Продукция, в Номенклатура и Количество соответственно. Создала ПКО, в ПКС создала группу с пустым источником, приемником указала Продукция. Поставила галочку «Получить из входящих данных».Внутри группы создала 2 реквизита с пустыми источниками, галочки не ставила. В ПКГС в перед обработкой прописала: Сохранила, пытаюсь выгрузить данные из 7, ругается: «Функция не обнаружена(ПКГС_ПередОбработкойВыгрузки_ВыпускПродукцииРазделка_Продукция_ТабличнаяЧасть17) Ошибка выбора объектов коллекции» Подскажите, пожалуйста, что не так делаю.. Пробовала переносить только количество, результат тот же. Замучалась уже, в конвертации новичок, куда копать?…

модуль то в обработке меняла?

Пропустила букву, пишу еще раз, чтобы не запутать.. В 7 документ ВыпускПродукцииРазделка надо перенести в 8 в документ СборкаЗапасов. У шапки документа ВыпускПродукцииРазделка есть реквизиты Материал, КоличествоМатериалов. У документа СборкаЗапасов есть табличная часть Продукция с реквизитами Номенклатура, Количество. Нужно перегрузить из ВыпускПродукцииРазделка.Материал-> СборкаЗапасов.Продукция.Номенклатура и из ВыпускПродукцииРазделка.КоличествоМатериалов->СборкаЗапасов.Продукция.Количество

про модуль уже встречала, но как поменять не знаю((( подскажите, пожалуйста..

это моя первая конверташка, не кидайтесь тапками, если туплю))) help..

когда жмешь сохранить правила где то галка есть Выгружать модуль обработки, потом берешь 7шную обработку открываешь в конфигураторе и весь текст меняешь на то что выгрузилось

или я делаю, сразу в начале кода обработки пишу #ЗагрузитьИзФайла Модуль.txt и сохраняю соответственно в файл с таким названием, главное не забывать обработку переоткрывать после сохранения Правил+Модуль

m-serg74, большое ,большое спасибо! сделала, как вы написали, все выгрузилось и загрузилось. Ура :-)

После переноса и Номенклатура, и Количество отобразились в документе, но документ не проводится, выдает ошибку «Преобразование значения к типу Число не может быть выполнено». Подозреваю, что это связано с тем, что в ПКС, внутри группы, у реквизита Количество тип источника не указан.. Если в перенесенном документе удалить строку с номенклатурой и количеством и выбрать их же вручную, документ проводится без ошибок. В конвертации для Номенклатуры я указала правило переноса, а как быть с Количеством? Тип приемника у него — число.

/Преобразование значения к типу Число не может быть выполнено/ Отладчик на проведение и смотреть на какое именно значение ругается, а не угадывать…

кстати вполне может быть, но чем гадать быстрее посмотреть

Ругается… Ошибка при выполнении обработчика — ‘ОбработкаПроведения’ по причине: {Документ.СборкаЗапасов.МодульМенеджера}: Преобразование значения к типу Число не может быть выполнено Смотрю в табло,СтрокаРапределения.Количество имеет null, насколько я понимаю, в это поле попадает переносимое значение КоличествоМатериалов.. И вот еще проблема, не знаю, связаны ли они, может, кто-то сталкивался.. Другие документы проводятся, но в движения попадает количество не по всем товарам. Контроль остатков отключен, карточки номенклатуры на вид абсолютно идентичны, не могу понять, что же я не так сделала, в конвертации ли вообще дело…

Другие документы — я имела ввиду перемещения, реализация, их тоже переносила через конвертацию, только в них реквизит количество из табличной части в табличную переносится.

И еще один вопросик) чтобы уж сразу, набраться уму-разуму)) Если часть реквизитов табличной части в документе-приемнике должны заполнится соответствующими реквизитами  ТЧ  документа-источника, а один из реквизитов ТЧ в приемнике заполняется реквизитом из шапки источника, как сделать, чтобы при конвертации все реквизиты ТЧ заполнялись? По отдельности это работает, а вместе нет. Т.е. либо переносятся реквизиты ТЧ источник-ТЧ приемник, а реквизит ТЧ приемника, который должен браться из шапки источника, остается незаполненным, либо наоборот. Экспериментировала с галочками «не замещать значение свойства у существующих объектов в приенике», не помогло..Подскажите, пожалуйста..

сделай вообще перед выгрузкой документа заполнение таблицы значений данными из ТЧ документа в 7ке, добавь колонку в которой будет значение из шапки, заполни всю ее этим значением и напиши ВыгрузитьПоПравилу(…….  ну и т.д. в в ПКСах поставь получать данные из входящих…

Т.е. в ПКО переносимого документа я пишу в перед выгрузкой КоллекцияОбъектов = СоздатьОбъект(«ТаблицаЗначений»); КоллекцияОбъектов.НоваяКолонка(«КоличествоПродукции»); У переносимого документа есть реквизиты в ТЧ КоличествоПродукции, Элемент, Норма. В приемнике в ТЧ Состав есть реквизиты Номенклатура, Количество, и в шапке реквизит Количество… Что-то не нравится мне код.. недопонимаю….

/В приемнике в ТЧ Состав есть реквизиты Номенклатура, Количество, и в шапке реквизит Количество/ это все проприемник?

Ой, напутала я….В источнике есть шапка и табличная часть. В шапке реквизит Количество, в ТЧ реквизиты Элемент, Норма. В приемнике есть ТЧ Состав с реквизитами КоличествоПродукции, Номенклатура, Количество. И надо сопоставить: Источник.Количество -> Приемник.Состав.КоличествоПродукции Тогда бы надо написать: Только поймет ли конвертация, из какой строки ТЧ источника брать Номенклатуру и Количество, т.е. пойдет ли выгрузка-загрузка построково, или это надо как-то прописать циклом?…. В источнике в ТЧ и в примнике в ТЧ есть еще и реквизит с типом перечисление, для которого я прописывала соответствие в конвертации значений. Как его запихать в данном случае совсем не представляю, но пока хотя бы без него разобраться..

нет надо создавать ТЗ с такой структурой как в приемнике

Блин :-) я что-то совсем как во сне пишу…. Третий день уже сижу над несколькими документами и поля плывут) спасибо большое!

:-) Тыкните носом еще, пожалуйста, ВыгрузитьПоПравилу — это в ПВД указать для выгрузки этого документа, где способ выборки, заменить «стандартная выборка» на «произвольный алгоритм»?

смотря что делаешь если так как в то не надо ВыгрузитьПоПравилу, просто ТЧ Источника пустую оставь и все, а в обработчик ПередОбработкой этот код, а спсоб выборки вообще к этому не имеет отношения

а тим вивера нету, что то сбила с толку и я фигню уже какую то понес… и там и там есть ТЧ значит вообще никакие Коллекции не надо формировать

Источник.Норма — Применик.Количество Пусто — Применик.КоличествоПродукции, и перед выгрузкой в последнем Значение = Источник.Количество

тимик есть :-) сейчас попробую, напишу о результатах) спасибо!!

Все получилось очень хорошо :-) Даже перечисления перенеслись и не пришлось с ними возиться) А галочку «получить из входящих данных » не нужно ставить у реквизита, который из шапки переносится?

на скрине увидела, что галочки нет, а я поставила и тоже перенеслось) вот стало интересно, когда ее ставить, когда не надо)

ставить надо когда брать неоткуда и значения есть только в ВходящиеДанные

прямое присвоение Значение = … заменяет в большем приоритете все что прилетело до этого

поняла, спасибо. От всей души благодарю вас за помощь :-) хороших выходных!:-)

:-)благодаря вам это осуществится)))))

обращайтесь, чем смогу…

:-) можно еще один вопрос)) проблема обнаружилась большая… во всех документах, которые бы я не переносила, 8-ка как будто бы не видит количество… и в источнике и в приемнике количество — это реквизит ТЧ, переношу как число-число, без какого-либо правила. в 8-ке количество в ТЧ отображается, но при перепроведении документа по регистрам количество не проходит.. может, это как-то связано с представлением числа в 7 и в 8? Длина и точность совпадает, если в конфигураторе смотреть у свойства реквизита. А в пользовательском режиме в 8 будет так: 1 150,50  , а в 7 то же самое число: 1,150.50 Раньше с таким не сталкивалась, влияет ли это на что-то и где еще посмотреть, что может не так быть?….

сразу после переноса в ней посмотри что куда в документах перенеслось

так долго отвечаешь что можно уснуть :)

:-) вроде вижу нормальные данные.. в количестве — числа, в таком же представлении, как и в документах

может уже тим вивер и по домам :)

сейчас запущу)пароли в личку пришлю)

Тэги: 1С 7.7 и ранее

Комментарии доступны только авторизированным пользователям

0 / 0 / 0

Регистрация: 30.09.2010

Сообщений: 31

1

Автозаполнение из шапки в табличную часть

20.05.2014, 00:47. Показов 2517. Ответов 4


Здравствуйте, я столкнулась с такой проблемой.. у меня в реквизитах шапки есть поле Дата1 и создана табличная часть «Погрузка» и в ней есть поле Дата2. Как сделать так чтобы при заполнении поля Дата1 в шапке документа, эти данные переносились в табл часть в поле Дата2?



0



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

20.05.2014, 11:49

2

В событии Дата1ПриИзменении()



0



афродита

0 / 0 / 0

Регистрация: 30.09.2010

Сообщений: 31

20.05.2014, 13:03

 [ТС]

3

Писала

1C
1
2
3
4
5
Процедура Дата1ПриИзменении(Элемент)
            Для Каждого Строка ИЗ Объект.Погрузка Цикл
  Объект.Дата1 = Объект.Погрузка.Дата2;
КонецЦикла;       // Вставить содержимое обработчика.
            КонецПроцедуры

Ругается что поле объекта Дата2 не обнаружено



0



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

20.05.2014, 22:31

4

Строка.Дата2=Объект.Дата1;



0



0 / 0 / 0

Регистрация: 30.09.2010

Сообщений: 31

21.05.2014, 18:50

 [ТС]

5

Спасибо



0



Категории

  Иногда требуется передать параметр для строки табличной части в выгрузке конвертации.

  Например, такая задача может возникнуть если одна из конфигураций была изменена(добавлен реквизит в табличную часть). В моем случае это конфигурация-приемник. В табличную часть «Товары» документа «Отчет о розничных продажах», конфигурации «Управление торговлей» 10.3 добавлен реквизит «Консультант» типа «Справочник.ФизическиеЛица». В него надо передавать значение реквизита «Продавец» из табличной части «Товары», из конфигурации «Розница» 2.х.

  Задачу можно решить, например, обновлением метаданных конфигурации-приемника, но быстрее, в данном случае будет передать это значение через параметр.

  В табличной части «Товары» ПКО «Отчет о розничных продажах» создаем новый параметр:

  

 Далее прописываем в обработчик «ПослеЗагрузки» ПКО «Отчет о розничных продажах» следующий код:

ПараметрыТовары = ПараметрыОбъекта["ТоварыТабличнаяЧасть"];
Для каждого Строка Из Объект.Товары Цикл
	
	 Ст = ПараметрыТовары[Объект.Товары.Индекс(Строка)] ;
	 Строка.Консультант = Ст.Консультант;
	 
КонецЦикла;

Автоматизация хаоса

Контакты:

Телефон: +7 963 570 26 00

E-mail: al_zzz@mail.ru

Дизайн сайта:

Веб-дизайн и верстка: Зелёнкина Елена

8 963 578 05 35, lena_431@mail.ru

Понравилась статья? Поделить с друзьями:
  • Конкурентная позиция компании на рынке отражает
  • Конкурентное преимущество строительной компании
  • Конкурентные преимущества транспортной компании
  • Конкурс в сфере предпринимательства бизнес дона
  • Конкурс на управление мкд управляющей компанией