Формирование ПКС. Конвертация данных 1С 2.1

27.03.21

Интеграция - Обмен между базами 1C

В статье рассмотрены некоторые примеры конвертации свойств. Если кому-то пригодится, одной из лучших благодарностей будет являться ваш лайк.

1. Выгрузка в ПКС любой ссылки, кроме перечисления. Перечисление будет в пункте 2.

 

Вариант А) Классика:

Рис. 1

Из Рис. 1 в качестве примера возьмём вторую строку. У нас есть Источник - в данном случае это Ссылка на "Начисление" (план видов расчета), для которого задано ПКО "Начисления". 

 

Откроем правило конвертации объекта (ПКО) "Начисления" (Рис. 2).

Рис. 2

 

Рис. 3

Здесь всё просто, если объект не найден по УИДу, загрузка будет искать его по реквизиту "Код". 

 

Немного теории: При выгрузке объекта в ПКС, не зарегистрированного для выгрузки, Объект не выгружается, а выгружается Ссылка и её поля поиска (указанные в правиле конвертации объекта - ПКО). 

В моём примере это УИД и Код.

На Рис. 4 свойство "Начисление" в файле выгрузки (сформированное ПКС "Начисление" из Рис. 1):

Рис. 4

Как видно из Рис. 4, поля "Наименование" нет. Из свойства не создаётся объект. Если поискать Объект в файле по выгруженному УИД (УникальныйИдентификатор), то его там не будет.

 

Вариант Б) Нам всё же нужно создать объект, выгружаемый в ПКС. В качестве примера возьмём "Вариант А".

 

Чтобы не зарегистрированная Ссылка была выгружена полностью, нужно задать параметр (Пример в Рис. 5):

ВыгрузитьОбъект = Истина;

Рис. 5

 

Выгрузим документ повторно. Теперь в файле есть Объект.

Рис. 6

Теперь при загрузке, если объект не будет найден по УИД или Коду, то создастся новый.

 

Чтобы новый не был создан, нужно задать настройки "Не создавать новый объект в приемнике, если он НЕ найден":

Рис. 7

Настройка "Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их" - нужна для того, чтобы если объект найден, но его "Наименование" отличается от загружаемого, то оно не было бы замещено. Но, если объект не найден, он будет создан с загружаемым УИД, Кодом и Наименованием. 

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

Рис. 8

 

Немного уточняющих деталей ниже.

Если не ясен момент, почему Ссылка не зарегистрирована для выгрузки и что под этим подразумевается, попробую объяснить.

В системе есть некий план обмена, в моём примере это ЗУП 3.1 - БП 3.0. В этом плане обмена задан состав регистрируемых для выгрузки объектов (Рис. 9).

 

Рис. 9

Как видно из Рис. 9 ни один план видов расчета не регистрируется для обмена (именно его мы выгружали выше). Соответственно для него нет ПВД (правило выгрузки данных).  

И его (плана вида расчетов) так же нет в Регистрации изменений для обмена (Рис. 10). То есть необязательно проверять в конфигураторе, можно это увидеть и из пользовательского режима. 

Рис. 10

 

Вариант В) Нужно выгрузить ссылку по одному свойству строкового типа. Для примера выгрузим "Начисление" по Наименованию. Считаем, что в принимающей базе начисления есть, но УИДы и Коды с базой источником точно не совпадают.

Создадим новое ПКО и назовём его "НачисленияИзСтроки".

 

Переопределим Значение свойства "Начисление" Рис. 11. (В справке указано "Значение - это конвертируемое значение свойства.")

Значение = ОбъектКоллекции.Начисление.Наименование;

Рис. 11

Другими словами мы "отправляем" в ПКО в качестве источника не ссылку, а строку.

 

Поскольку в моём примере "Начисление" находится в строке табличной части, то я использую параметр ОбъектКоллекции. (Если бы "Начисление" было реквизитом, то я бы написала Источник.Начисление.Наименование.)

 

В ПКО выделенные в Рис. 12 настройки должны быть сняты, поскольку у строки УИДа нет. Объект-источник не заполнен.

Рис. 12

 

Поиск будет выполняться по свойству Наименование, это нужно отметить флажком во второй колонке. Выделила на Рис. 13.

Рис. 13

В свойстве "Наименование" перед выгрузкой укажем:

Значение = Источник;

Рис. 14

 

Вариант Г) Нужно выгрузить ссылку из структуры.

 

Например, по какой-то причине Начисление задано структурой.

ПКО назовём "НачисленияИзСтруктуры".

 

В КД 2.1 есть возможность использовать параметры: ИсходящиеДанные и ВходящиеДанные.

Рис. 15

 

ИсходящиеДанные зададим как Структура Рис. 16.

Рис. 16

 

ПКО "НачисленияИзСтруктуры" будет вида:

Рис. 17

В ПКС "Код" и "Наименование" ничего не указано. В колонках "Поиск" и "Получить из входящих данных" установлены флажки.

 

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

 

Рис. 18

 

Используем параметр "Выражение".

Выражение = "Справочники.ВидыВычетовНДФЛ.Код108";

Рис. 19

 

2. Выгрузка перечисления, когда нужно указать конкретное значение.

 

В ПКС указываем ПКО, источник не задаём.

Рис. 18

 

Перед выгрузкой в Значение задаём имя нужного перечисления Рис. 19.

Рис. 19

 

 

Ниже оставшийся текст первоначальной версии статьи от октября 2015 года.

 

Вариант 1

Задать своё значение Наименования.

 

 

 

Вариант 2 

Запрет выгрузки "Групп" справочников в конвертации данных.

 

задать свое значение в КД 2.1

См. также

SALE! 20%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

45650 36520 руб.

04.08.2015    159662    363    267    

345

SALE! 15%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 22572 руб.

12.06.2017    134915    722    291    

388

SALE! 20%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 27720 руб.

15.04.2019    68410    178    138    

111

SALE! 20%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 34760 руб.

03.12.2020    34166    80    58    

78

SALE! 10%

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 25200 руб.

23.07.2020    46281    196    64    

157

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    231386    124    327    

295

Перенос данных из Парус 10 в ЗГУ ред.3

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Обмен между базами 1C Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 10 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

60000 руб.

05.10.2022    9204    9    8    

10

SALE! 10%

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.223.x) и БП 3.0 (3.0.149.x). Правила подходят для версии ПРОФ и КОРП.

28000 25200 руб.

15.12.2021    20232    132    38    

90
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kit 73 28.10.15 18:40 Сейчас в теме
Как пример задания конкретного значения в приёмнике имеет право на существование. А вообще, разве нельзя синхронизировать эти справочники переносом данных из БП 3.0 в ЗУП 2.5?
2. perepetulichka 886 28.10.15 19:00 Сейчас в теме
(1) kit, можно конечно :)
Но политика нашей организации такова, что Оценочные обязательства и резервы в системе ЗУП давно утверждены и централизованы. Центральный аппарат этим пользуется, им вполне хватает. А регионы только переходят на ЗУП (РИБ), причем в каждой отдельной системе проводки формируют по-разному, да еще и в разные Бухгалтерии (у кого-то 7-ка, у кого-то Бухгалтерия 8.2, у избранных - 8.3), и бухгалтерия требует, чтобы "было как раньше" до перехода.
В общем, они хотят, чтобы справочники в ЗУПе в ЦА и регионах совпадали, так что мы пока не можем из всех бухгалтерий синхронизировать справочники.
Возможно, когда Бухгалтерия так же станет общей, сделаем синхронизацию.
3. Oleg_nsk 277 29.10.15 06:50 Сейчас в теме
Аналогичную задачу решал добавлением параметра объекта в который записывал код, а свойство выводил в "отказ = истина". При загрузке объекта, если свойство не задано, а параметр существует - выполнял поиск элемента справочника по значению параметра.
4. K_A_O 538 30.10.15 12:13 Сейчас в теме
А еще можно написать Выражение=...
Выполнится на стороне приемника
5. karapuzzzz 63 04.11.15 12:18 Сейчас в теме
Ради одного элемента такое делать (создавать ПКО) нет необходимости.
Самый идеальный вариант это сделать элементы предопределенными и синхронизировать по значению. Использовать в коде конструкции с проверками кода или наименования элементов очень и очень плохое занятие.
Другой вариант (раз уж связываемся с кодом или наименованием) это передавать наименование значения реквизита как строку через параметр. И уже после загрузки данных анализировать значение параметра и в зависимости от него подставлять необходимое значение в реквизит.
6. olbu 11.12.15 09:46 Сейчас в теме
Сам с аналогичным заданием "мучился", все же КД - "темная лошадка", или просто я "не умею ее готовить"...
7. pas86 20.07.16 06:33 Сейчас в теме
Всем привет. А может кто подскажет?
Есть у меня Реквизит в табличной части Источника, но его нет в Табличной части Приемника. Как правильно его передать через параметр?
Источник это реквизит СубконтоНУ, тип справочник ФизЛицо.
Приемник должен быть СубконтоБУ и тип справочник Контрагент(Поиск по наименованиею). Но НЕ во всех местах. Где-то в СубконтоБУ, по определённому мной условию, должно остаться физ.лицо из реквизита Источника СубконтоБУ.
8. perepetulichka 886 20.07.16 10:53 Сейчас в теме
(7) pas86, возможно стоит пойти путём произвольного алгоритма?

Делаешь выборку в источнике, обходишь её и в случае (пример):

Если Выборка.СчетДт = ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы Тогда


в твоей таблице значений для "СубконтоБУ" задаешь Выборка.Физлицо

У тебя ведь для каждого счета заданы свои субконто. Вот в зависимости от этого и можно сформировать полученную таблицу ВыборкиДанных.
9. N_s_s 2 31.01.17 16:05 Сейчас в теме
Добрый день, подскажите, как мне можно перенести элемент из источника в приемник, если в источнике элемент непосредственно не задан, определяется так:

	// Заполнить список выбора номенклатуры
	ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Товар");
	ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Услуга");
	// ДАЛИОНПРО – начало
	ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Комплект");
	ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Продукция");	
	// ДАЛИОНПРО – конец
	// ДалионУМ - начало
	Если Алкоголь ИЛИ Константы.УчитыватьАлкоголь.Получить() Тогда
		ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Алкоголь");
	КонецЕсли;
	
	Если Сертификат ИЛИ Константы.ИспользоватьПодарочныеСертификаты.Получить() Тогда
		ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Сертификат");
	КонецЕсли;
	
	Если ТабачныеИзделия Или Константы.ИспользоватьМеханизмМРЦДляSet10.Получить() Тогда
		ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Табак");
	КонецЕсли;
Показать


Меня интересуют только товар и услуги, для их выгрузки использую в обработке перед выгрузкой следующий код:

Если Источник.Услуга = "Да" Тогда
	Значение = "Товар";
Иначе 
	Значение = "Услуга"
КонецЕсли;


Но вот как проанализировать при загрузке не пойму.
10. perepetulichka 886 31.01.17 21:06 Сейчас в теме
Значение в данном случае немного не то.
Пример использования "Значение": у вас есть справочник "Организации", у которого и Коды и Наименование в двух разных системах по одной организации отличаются, тогда вы можете снять поиск с Кода, а в Наименование вписываете Значение = "ООО Ромашка"; (то Наименование, которое есть в базе-приемнике). И тогда при загрузке система найдет организацию с наименованием "ООО Ромашка".

Насколько я понимаю, свойство ".Услуга" вы берете у какого-то реквизита, например "Номенклатура", которая выгружается.

Моё мнение, вам нужно в ПКО документа "После загрузки":
Пример:

Форма = Объект.Ссылка.ПолучитьФорму("ФормаДокумента");
Если Объект.Номенклатура.Услуга Тогда
ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Товар");
Иначе
ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Услуга");
КонецЕсли;

11. N_s_s 2 01.02.17 15:36 Сейчас в теме
Что то пошло не так:

Ошибка при вызове метода контекста (ПолучитьФорму): Элемент не выбран!
12. perepetulichka 886 01.02.17 15:59 Сейчас в теме
(11)
Форма = Объект.ПолучитьФорму("ФормаДокумента");
Если Объект.Номенклатура.Услуга Тогда 
Форма.ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Товар"); 
Иначе 
Форма.ЭлементыФормы.ВидНоменклатуры.СписокВыбора.Добавить("Услуга"); 
КонецЕсли;
13. perepetulichka 886 01.02.17 16:20 Сейчас в теме
Проверила в ЗУПе (обычные формы) по документу "Начисление по больничному листу", у нас на форме два реквизита: ПервыйГодРасчета, ВторойГодРасчета.
Всё норм записалось.



14. N_s_s 2 01.02.17 16:26 Сейчас в теме
ОписаниеОшибки = Ошибка при вызове метода контекста (ПолучитьФорму): Недопустимое значение параметра (параметр номер '1')

теперь вот так.. не понимаю сути того что пытаюсь сделать. Что в данном случае объект? источник?
15. perepetulichka 886 01.02.17 16:42 Сейчас в теме
(14) у вас это вообще документ? Возможно у вас справочник? ...тогда получайте форму справочника ("ФормаЭлемента").
Я привела для вас пример, на основании которого подстройте свой код.
Объект в данном случае - Объект.

Так же вы можете открыть файл выгрузки и ознакомиться с ним.
Событие происходит после загрузки, обратите внимание, в 4-ой строке я обращаюсь к процедуре общего модуля.

Ниже приведен кусок из моего xml файла:
<ПослеЗагрузки>Форма = Объект.ПолучитьФорму("ФормаДокумента");
Форма.ЭлементыФормы.ПервыйГодРасчета.Значение = 2040;
Форма.ЭлементыФормы.ВторойГодРасчета.Значение = 2060;
РаботаСДиалогамиЗК.ЗаписатьГодыРасчетаСреднего2011(Объект, Форма);</ПослеЗагрузки>
16. perepetulichka 886 01.02.17 16:57 Сейчас в теме
(14)
Что в данном случае объект?


Ссылка - указатель, Объект - объект (мы с ним работаем, мы у него изменяем значения и тп), это как бы основы.
ДокОбъект = СсылкаНаДок.ПолучитьОбъект();


Все, что вы хотели бы сделать с объектом, например из внешней обработки, вы можете вписать в событие "После загрузки".
17. N_s_s 2 02.02.17 11:39 Сейчас в теме
Попытался сам разобраться, но не очень получается. Давайте я ещё раз обрисую ситуацию.
У меня есть база источник, в ней у меня непосредственно нет видов номенклатуры, но есть элемент у справочника номенклатура "Услуга", если он установлен значит выгружаемый элемент услуга, если не установлен значит товар.
Есть база приемник, в ней у справочника номенклатура есть элемент вид номенклатуры, мне нужно каким то образом объяснить базе приемнику какой вид номенклатуры должен стать у загружаемого элемента.
Посмотрел через отладку событие после загрузки, не вижу возможности там присвоить, точнее не присвоить а там провести анализ, ведь там у нас только объект.
Если НЕ Объект.ЭтоГруппа Тогда 
			Если Услуга Тогда 
				Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000002");	
			Иначе 
				Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000001");	; 
			КонецЕсли;
КонецЕсли; 

Что за анализ должен здесь быть, как мне понять какой там вид на базе источнике?

или может мне при выгрузке как то присвоить можно значение
18. perepetulichka 886 02.02.17 14:38 Сейчас в теме
(17)
Если НЕ Объект.ЭтоГруппа Тогда 
            Если Объект.Номенклатура.Услуга Тогда 
                Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000002");    
            Иначе 
                Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000001");    ; 
            КонецЕсли;
КонецЕсли;
19. perepetulichka 886 02.02.17 15:00 Сейчас в теме
Или сразу в конвертации свойств Документа у ВидНоменклатуры укажите:

Если ОбъектКоллекции.Номенклатура.Услуга Тогда
Значение = "000000002";
Иначе
Значение = "000000001";
КонецЕсли;

Источник = "";
ИмяПКО = "ВидНоменклатуры";

Далее создайте правило для справочника "ВидыНоменлатуры".

У свойства "Код" установите:

Значение = Источник;
Свойство Наименование - отключите!
20. avz_1C 10 24.01.18 20:19 Сейчас в теме
21. allo4kapower 26.03.18 13:33 Сейчас в теме
Спасите пожалуйста)))
в источнике пусто, в приемнике есть пункт способы погашения задолженности,вид перечисление.
Я так понимаю мне нужно написать код в ПКС, но что писать вообще не пойму.
cloudspb; +1 Ответить
22. m.gimaev 24.04.21 07:06 Сейчас в теме
Ну почему нельзя поставить сразу миллиард лайков!!!!!
Спасибо огромное, одна строчка из этой статьи сберегла тонну нервов.

Спасибо еще раз!
perepetulichka; +1 Ответить
23. FistaLLIka 13.12.22 08:58 Сейчас в теме
Почему нельзя вот ТАК писать про конвертацию. Только эта статья помогла над пониманием и поиска решения задачи. Спасибо большое!
24. IVC_goal 213 22.02.23 15:17 Сейчас в теме
Здравствуйте. Стоит задача - Есть Правила обмена ЗУП 2.5 корп - БУХ 3.0. Загружаются из ЗУП проводки Док ОтражениеЗарплатыВРеглУчете. Необходимо в приемнике для всех проводок по Кредиту счета 76.41 поменять субконото1 на Контрагента который находится в приемнике (Бухгалтерия) =Справочники.Контрагенты.НайтиПоНаименованию("Расчеты по исполнительным листам"). Как корректно это сделать?
25. perepetulichka 886 22.02.23 15:33 Сейчас в теме
(24) практически ваш пример в другой моей статье: https://infostart.ru/1c/articles/597573/

Номер 8. Заголовок: Задать своё значение реквизиту табличной части в ПКС, использование Алгоритма, задать другое ПКО.

Примерно так:
Если ОбъектКоллекции.СчетКт.ПринадлежитЭлементу.. (в статье описано) Тогда
Значение = Справочники.Контрагенты.Найти..
КонецЕсли;

Иначе я так полагаю описывать не надо. Другими словами - иначе стандартное значение.
26. perepetulichka 886 22.02.23 15:35 Сейчас в теме
(24) если у вас подсчетов 76.41.1 или 76.42.2 нет, тогда не обязательно ПринадлежитЭлементу, можно просто сделать проверку на равенство.
27. IVC_goal 213 22.02.23 15:44 Сейчас в теме
(25) Да я смотрел этот пример. То есть, этот код "Перед выгрузкой", будет выполняться на стороне приемника и будет корректно найден контрагент в приемнике?
28. IVC_goal 213 22.02.23 15:47 Сейчас в теме
Если ОбъектКоллекции.СчетКт.Код = "76.41" Тогда

ИсполнитЛист = Справочники.Контрагенты.НайтиПоНаименованию("Расчеты по исполнительным листам");
Если ЗначениеЗаполнено(ИсполнитЛист) Тогда
Значение = ИсполнитЛист;
КонецЕсли;

КонецЕсли;
29. IVC_goal 213 22.02.23 15:49 Сейчас в теме
Рассейте мои сомнения по поводу поиска на стороне приемника
30. perepetulichka 886 22.02.23 16:27 Сейчас в теме
(28) ох да, вы правы.
Прошу прощения, давно не занималась обменами, не посмотрела.
Конечно нет, в вашем случае не так.

Вариантов вижу два.

Вариант 1 (не элегантный): в ПКО после загрузки обойти все записи табличной части и в нужных местах подменить.

Вариант 2: подменить контрагента при выгрузке. В ПКО Контрагентов снять галку поиска по индентификатору (гуиду), оставить код и наименование и в исходных данных передать Код и Наименование вашего контрагента.

В ПКС по контрагенту перед выгрузкой:
Если ОбъектКоллекции.СчетКт.Код = "76.41" Тогда
ИсходящиеДанные = Новый Структура (Рис. 16 выше)
ИсходящиеДанные.Код = "ВашКод";
ИсходящиеДанные.Наименование = "ВашеНаименование";
Иначе
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Код = Источник.Код;
ИсходящиеДанные.Наименование = Источник.Наименование;
КонецЕсли;
Показать


Но важно проверить, что для контрагента по ссылке ничего не сломается. Вероятно это ПКО где-то еще используется.



Вариант 3: Сделать два ПКО: Контрагент, КонтрагентОпределенный

Если ОбъектКоллекции.СчетКт.Код = "76.41" Тогда

ИсходящиеДанные = Новый Структура (Рис. 16 выше)
ИсходящиеДанные.Код = "ВашКод";
ИсходящиеДанные.Наименование = "ВашеНаименование";

ИмяПКО = "КонтрагентОпределенный";


Иначе
//тут уже структура не нужна, идем в обычный ПКО 

ИмяПКО = "Контрагент";

КонецЕсли;
Показать
31. IVC_goal 213 22.02.23 16:36 Сейчас в теме
(30) Вопрос по 1-му варианту. [в ПКО после загрузки обойти все записи табличной части и в нужных местах подменить.]. Подскажите как обратиться к табличной части ДокументСсылка.ОтражениеЗарплатыВУчете?
Прикрепленные файлы:
32. perepetulichka 886 22.02.23 17:18 Сейчас в теме
(31) это ваш объект.

Ниже вашего кода пишите:

Для каждого Запись Из Объект.НазваниеТабЧасти Цикл
Если Запись.СчетКт = ПланыСчетов.Хозрастченый.НазваниеСчета Тогда
Запись.СубконтоКт2 = Справочники.Контрагенты.НайтиПоНаименованию(".."); //у вас вероятно это СубконтоКт1
КонецЕсли;
КонецЦикла;

//самой не верится, что такое пишу...
//это очень очень дурной тон так делать ((
Показать
33. perepetulichka 886 22.02.23 17:19 Сейчас в теме
(32) НазваниеСчета посмотрите в предопределенных названиях плана счетов Хозрасчетный
34. perepetulichka 886 22.02.23 17:21 Сейчас в теме
(32) Какое именно у вас Субконто: СубконтоКт1 или СубконтоКт2 (или вообще 3) - так же в самом счете увидите.
На каком месте стоит - та и цифра. Стандартно их максимум 3.
35. IVC_goal 213 24.02.23 06:06 Сейчас в теме
(32) Третий вариант очень изящный. Но не очевидный для меня. Это ПКО делается для справочника "Контрагенты", но там же нет "ОбъектКоллекции" документа ОтражениеЗарплатыВУчете ЗУПРа. Или есть? [Если ОбъектКоллекции.СчетКт.Код = "76.41" Тогда], это условие будет корректно выполняться?
36. perepetulichka 886 27.02.23 10:30 Сейчас в теме
(35) в ПКС "Контрагенты" (в вашей табличной части) в ПКО "ОтражениеЗарплаты" вам нужно это писать.
Вообще рекомендую ознакомиться с принципами Конвертации.
1. В ПКО вы попадаете из ПКС. Если открыть ПКС там есть поле - "Правило конвертации", это и есть ПКО.
2. В ПКО вы попадаете из ПВД.

Источник - это сам Объект. Через Источник мы можем обратиться к реквизитам Объекта.
Источник.Организация, Источник.Дата..

ОбъектКоллекции - это запись той табличной части в ПКС которой нужно что-то проверить.
Если ОбъектКоллекции.СчетКт = ПланыСчетов.Хозрасчетный..
Оставьте свое сообщение