Задать в Приемнике своё значение, которого нет в Источнике. Конвертация данных 1С

Публикация № 413178

Обмен - Перенос данных из 1C8 в 1C8

задать свое значение в конвертации данных

31
Рассмотрим на примере обмена ЗУП 2.5 - Бухгалтерия 3.0.
В Источнике и в Приемнике есть справочник "Резервы", но в Приемнике есть элемент "Резерв на взносы в Федеральный ФОМС" с кодом "000000004", а в Источнике такого элемента нет.

Суть задачи: Нужно, чтобы при переносе документа "Отражение зарплаты в регламентированном учете" СубконтоДт1 (тип СправочникСсылка.Резервы) имело другое Значение, то есть значение не из Источника.

Рассмотрим картинку:

Нужно, чтобы при условии, когда СчетДт="96" и СчетКт = "69.03.1" тогда СубконтоДт было равно "Резерв на взносы в Федеральный ФОМС". (А не "На оплату предстоящих отпусков", как видно на картинке).

Уточнение: этого не видно на картинке, но на самом деле под СубконтоДт подразумевается СубконтоДт1, а значение "Резерв на взносы в Федеральный ФОМС" - это значение элемента из Приемника.

Ниже на картинке я покажу, как выглядят эти справочники в Источнике и в Приемнике.

Надеюсь, что пояснила понятно.


Теперь в Конвертации данных:


Итог выгрузки:

 

Добавлено 09.11.15:

От обилия красного прямо рябит в глазах. Извините, я не специально!

 

Вариант 2:

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

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------

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

 

31

См. также

Специальные предложения

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

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

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


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

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

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


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

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


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

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

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

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

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

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



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

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

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

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


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


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

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

или может мне при выгрузке как то присвоить можно значение
18. perepetulichka 575 02.02.17 14:38 Сейчас в теме
(17)
Если НЕ Объект.ЭтоГруппа Тогда 
            Если Объект.Номенклатура.Услуга Тогда 
                Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000002");    
            Иначе 
                Объект.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоКоду("000000001");    ; 
            КонецЕсли;
КонецЕсли;
19. perepetulichka 575 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 Ответить
Оставьте свое сообщение