Обойти проблему совпадения названия измерения в регистре

1. psa247 21 27.02.23 10:05 Сейчас в теме
Коллеги, добрый день!
Подскажите, пожалуйста, советом как решить текущую проблему в КД 2.1:
Конвертирую регистр сведений у которого одно из измерений называется "Значение", в базе-приемнике оно тоже имеет название "Значение".
Из-за того, что имя измерения совпадает с служебным словом "Значение" - значения не выгружаются, соответственно, не перезагружаются в базу-приемник.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
5. VmvLer 27.02.23 16:24 Сейчас в теме +1 $m
(3) попробуйте

- в таблице конвертации свойств отключайте выгрузку поля "Значение"
- в таблице конвертации свойств добавляете новое поле без выбора поля источнника
- в диалоге ставите точку "передавать данные в параметр"
- в этом же диалоге задаете уникальное имя поля-параметра, например "ЗначениеПараметр"
- в этом же диалоге в обработчке "ПриВыгрузке" пишите строку кода:
Значение = Источник.Значение;

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

далее, в ПКО вашего регистра в обработчике "ПослеЗагрузки" достатете это поле-параметр
и записиваете его содержимое в поле приемника.

Последнее самое "скользкое", т.к. там набор записей. В отладке можно разобраться.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 14 27.02.23 10:45 Сейчас в теме
(1)
имя измерения совпадает с служебным словом "Значение" - значения не выгружаются
Разовое решение: продублировать (обработкой) измерение или весь регистр с другим названием измерения и конвертировать уже его.

Радикальное решение: изменить проблемное название измерения, чтобы никогда в будущем больше не спотыкаться об эту кочку.
user705522_constantin_h; +1 Ответить
3. psa247 21 27.02.23 13:13 Сейчас в теме
(2) Да, как вариант, но это типовая конфа и много таких клиентов. Думаю, посмотреть в сторону выгрузки таблицы значений в регистр и передавать в виде доп. поля, перед записью объекта заполнять.
4. user856012 14 27.02.23 13:42 Сейчас в теме
(3)
это типовая конфа и много таких клиентов
А я думал - всего один... как стартмани. ;-)

В таком случае лично я вообще не изгалялся бы с заполнением этого реквизита в КД, а отдельной простенькой обработкой выгружал бы его в файл из базы-источника, а после конвертации - другой обработкой заполнял из этого файла в базе-приемнике.

Ну, или одной обработкой подключался бы из приемника к источнику через СОМ и переносил данные - не знаю, как вам проще.
7. psa247 21 05.03.23 10:03 Сейчас в теме
(4) Спасибо, рассматривал такой вариант, хочется, чтобы была какая-то универсальность все-в-одном
5. VmvLer 27.02.23 16:24 Сейчас в теме +1 $m
(3) попробуйте

- в таблице конвертации свойств отключайте выгрузку поля "Значение"
- в таблице конвертации свойств добавляете новое поле без выбора поля источнника
- в диалоге ставите точку "передавать данные в параметр"
- в этом же диалоге задаете уникальное имя поля-параметра, например "ЗначениеПараметр"
- в этом же диалоге в обработчке "ПриВыгрузке" пишите строку кода:
Значение = Источник.Значение;

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

далее, в ПКО вашего регистра в обработчике "ПослеЗагрузки" достатете это поле-параметр
и записиваете его содержимое в поле приемника.

Последнее самое "скользкое", т.к. там набор записей. В отладке можно разобраться.
6. psa247 21 05.03.23 10:00 Сейчас в теме
(5) Спасибо, так и сделал.
1. ПВД - указал объект выгрузки, произвольный алгоритм, запросом выбрал то, что нужно, переименовал колонку "Значение" в "ЗначениеРег"
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
				|	Автомобили.Период КАК Период,
				|	Автомобили.Автомобиль КАК Автомобиль,
				|	Автомобили.ВидЗначения КАК ВидЗначения,
				|	Автомобили.Значение КАК ЗначениеРег
				|ИЗ
				|	РегистрСведений.Автомобили КАК Автомобили";

ВыборкаДанных = Запрос.Выполнить().Выгрузить();
Для Каждого Тек ИЗ ВыборкаДанных Цикл
	ВыгрузитьПоПравилу(Тек,,,,"ХарактеристикиАвто2");	
КонецЦикла;
Показать


2. В ПКО в "ПослеЗагрузки"
Если ПараметрыОбъекта <> Неопределено Тогда
	Объект.Значение = ПараметрыОбъекта["ЗначениеРег"];
КонецЕсли;


3. В ПКС Источник - пустой, ПередаватьВПараметр = ИСТИНА, параметр назвал "ЗначениеРег"
Здесь же

"ПриВыгрузке" 
Если ТипЗнч(Источник.ЗначениеРег) = Тип("СправочникСсылка.Контрагенты") Тогда
	ИмяПКО = "Контрагенты";
ИначеЕсли ТипЗнч(Источник.ЗначениеРег) = Тип("СправочникСсылка.ПодтверждающиеДокументы") Тогда
	ИмяПКО = "ПодтверждающиеДокументы";
ИначеЕсли ТипЗнч(Источник.ЗначениеРег) = Тип("ПеречислениеСсылка.ВидАвтомобиля") Тогда
	ИмяПКО = "ВидАвтомобиля";
КонецЕсли;  
Значение = Источник.ЗначениеРег;
Показать
Student1C; +1 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот