Как скопривоти одну колонку в другую в регистре накопления?

1. Terabaytus 28.01.25 16:01 Сейчас в теме
Добрый день, подскажите не могу сообразить как можно в регистре накоплений из одной колонки допустим ОДИН с типом строка скопировать в колонку ДВА с ссылочным типом?
Найденные решения
9. SlavaKron 29.01.25 13:06 Сейчас в теме
(1) Для начала нужно создать маппинг (соответствие) текстовых данных к ссылочным. Потом обойти все наборы по регистраторам. Примерный код:
	// Формирование соответствия строковых и ссылочных значений
	Соответствие = Новый Соответствие;
	Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Справочник1");
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Соответствие[Выборка.Наименование] = Выборка.Ссылка;
	КонецЦикла;
	
	// Обновление записей регистра накопления
	Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ Регистратор ИЗ РегистрНакопления.РегистрНакопления1");
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		НаборЗаписей = РегистрыНакопления.РегистрНакопления1.СоздатьНаборЗаписей();
		НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
		НаборЗаписей.Прочитать();
		Для Каждого Запись Из НаборЗаписей Цикл
			Запись.Измерение2 = Соответствие[Запись.Измерение1];
		КонецЦикла;
		НаборЗаписей.ОбменДанными.Загрузка = Истина;
		НаборЗаписей.Записать();
	КонецЦикла;
Показать
Terabaytus; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 28.01.25 16:51 Сейчас в теме
(1) Никак. Типы разные.
user1619761; orakool; +2 Ответить
3. miniogn 44 28.01.25 17:47 Сейчас в теме
(2) Ну зачем сразу пугаешь. Технически можно скопировать, даже ошибка не выскочит. Единственно ссылка останется пустой, это да.
user1619761; orakool; +2 Ответить
9. SlavaKron 29.01.25 13:06 Сейчас в теме
(1) Для начала нужно создать маппинг (соответствие) текстовых данных к ссылочным. Потом обойти все наборы по регистраторам. Примерный код:
	// Формирование соответствия строковых и ссылочных значений
	Соответствие = Новый Соответствие;
	Запрос = Новый Запрос("ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Справочник1");
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Соответствие[Выборка.Наименование] = Выборка.Ссылка;
	КонецЦикла;
	
	// Обновление записей регистра накопления
	Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ Регистратор ИЗ РегистрНакопления.РегистрНакопления1");
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		НаборЗаписей = РегистрыНакопления.РегистрНакопления1.СоздатьНаборЗаписей();
		НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
		НаборЗаписей.Прочитать();
		Для Каждого Запись Из НаборЗаписей Цикл
			Запись.Измерение2 = Соответствие[Запись.Измерение1];
		КонецЦикла;
		НаборЗаписей.ОбменДанными.Загрузка = Истина;
		НаборЗаписей.Записать();
	КонецЦикла;
Показать
Terabaytus; +1 Ответить
4. miniogn 44 28.01.25 17:55 Сейчас в теме
По теме. В (1) тонко намекнули, что надо как-то получить ссылки из твоих строк. То есть по другому говоря, найти в справочнике элементы по твоим строкам.
Terabaytus; +1 Ответить
5. Terabaytus 28.01.25 21:07 Сейчас в теме
(4) У меня с намёками туго)
6. miniogn 44 29.01.25 11:06 Сейчас в теме
(5) На общие вопросы, обычно поступают общие ответы.
Разработай для начала функцию, которая по конкретной строке из исходного реквизита вернут ссылку для второго реквизита.
Terabaytus; +1 Ответить
7. Tigreno 29.01.25 11:34 Сейчас в теме
Здесь изначально неправильно поставлена задача. РН заполняются регистратором, значит если ты хочешь заполнить колонку ДВА надо прописать ее заполнение в обработкепроведения регистратора.

p.s. А как ты будешь получать ссылку для заполнения колонки ДВА - это уже совсем другая история.
Terabaytus; +1 Ответить
8. nomad_irk 81 29.01.25 11:39 Сейчас в теме
(7) далеко не всегда можно перепроводить документы для обновления данных одного из регистров
Оставьте свое сообщение

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