нужна наводка в обработке

1. Nadushka74 5 19.10.12 09:07 Сейчас в теме
Делаю обработку для переноса контактной информации. Нужно сделать переброс из одного вида в другой по определенному контрагенту. Срочна нужна подсказка!!! (ну не у кого больше спросить?)
загвоздка именно с переносам по полям и дальнейшие чистки данных у одного из видов контактной информации.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
11. KVIKS 436 23.10.12 22:07 Сейчас в теме
меняю ФактАдресКонтрагента на ЮрАдресКонтрагента
проверено на Бухгалтерии для Казахстана, но я думаю от Российской не отличается
//меняю ФактАдресКонтрагента на ЮрАдресКонтрагента
	НаборЗаписей=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.объект.Установить(Контрагент);
	НаборЗаписей.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);
	НаборЗаписей.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
	НаборЗаписей.Прочитать();
	для Каждого стр из НаборЗаписей цикл
		Запись=РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
		ЗаполнитьЗначенияСвойств(Запись,Стр);
		Запись.Вид=Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
		Запись.Записать(Истина);
	КонецЦикла;	
	НаборЗаписей.Очистить();
	НаборЗаписей.Записать(Истина);
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. M.Shalimov 206 19.10.12 10:11 Сейчас в теме
(1) Nadushka74, Приведите пример "Переброса из одного вида в другой".

Если Вы, например, хотите сменить для контрагента Юридических адрес на фактический (или что-то подобное), тогда создавайте необходимый Вам набор, читайте его и циклом изменяйте поля и записывайте набор.
Набор.Прочитать();
Для Каждого Запись ИЗ Набор Цикл
Если блабла Тогда
Запись.ВидКонтактнойИнфомрации = ...;
КонецЕсли;
КонецЦикла;
Набор.Записать();

С созданием набора Вам уже помогли чуть выше:)
2. mymyka 19.10.12 09:23 Сейчас в теме
Если структура полей не отличается(фактический адрес в почтовый например), то что-то вроде:
НабЗап = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(Отбор);
НабЗап.Отбор.Установить.Объект = Контрагент;
НабЗап.Отбор.Установить.Вид = ИскомыйВид;
НабЗап.Отбор.Установить.Тип= ИскомыйТип;
НабЗап.Прочитать();
Для Каждого Запись из НаборЗаписей Цикл
Запись.Вид = НовыйВид;
Запись.тип = НовыйТип;
КонецЦикла;
НабЗап.Записать(Истина);
Показать
3. Buster 19.10.12 10:04 Сейчас в теме
НабЗап.Отбор.Установить.Объект = Контрагент;

только не так
НабЗап.Отбор.Объект.Установить(Контрагент);
5. Nadushka74 5 22.10.12 09:39 Сейчас в теме
прошу проверить в чем ошибка
Если Строка.метка=Истина тогда
			Контрагент=Строка.Контрагент;
			КонтактнаяИнформация = РегистрыСведений.КонтактнаяИнформация;
			НабЗап=КонтактнаяИнформация.СоздатьНаборЗаписей() ;
			НабЗап.Отбор.Вид.Установить(ИскомыйВид); 
			НабЗап.Отбор.Тип.Установить(ИскомыйТип); 
			НабЗап.Отбор.Объект.Установить(Контрагент.Ссылка);
			НабЗап.Прочитать();	
			Для Каждого Запись из НабЗап Цикл
				НовыйАдрес=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
				НовыйАдрес.Объект=         НабЗап.Объект;
				НовыйАдрес.Тип=            НовыйТип;
				Новыйадрес.Вид=            НовыйВид;
				НовыйАдрес.Представление=  НабЗап.Представление;
				НовыйАдрес.Поле1=          НабЗап.Поле1;
				НовыйАдрес.Поле2=          НабЗап.Поле2;
				НовыйАдрес.Поле3=          НабЗап.Поле3;
				НовыйАдрес.Поле4=          НабЗап.Поле4;
				НовыйАдрес.Поле5=          НабЗап.Поле5;
				НовыйАдрес.Поле6=          НабЗап.Поле6;
				НовыйАдрес.Поле7=          НабЗап.Поле7;
				НовыйАдрес.Поле8=          НабЗап.Поле8;
				НовыйАдрес.Поле9=          НабЗап.Поле9;
				НовыйАдрес.Поле10=         НабЗап.Поле10;
				НовыйАдрес.Комментарий=    НабЗап.Комментарий;
				НовыйАдрес.ЗначениеПоУмолчанию=НабЗап.ЗначениеПоУмолчанию;
				НовыйАдрес.Записать(Истина);
			КонецЦикла;
		Иначе КонецЕсли;
Показать

ну а потом можно и тапками закидать, но нового адреса не записывается
7. YNik 23.10.12 03:37 Сейчас в теме
(5) Nadushka74,
            ...
            НабЗап.Прочитать();    
            НовыйНабор=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
            НовыйНабор.Отбор.Вид.Установить(НовыйВид); 
            НовыйНабор.Отбор.Тип.Установить(НовыйТип); 
            НовыйНабор.Отбор.Объект.Установить(Контрагент.Ссылка);
            Для Каждого Запись из НабЗап Цикл
                НовыйАдрес=НовыйНабор.Добавить();
                НовыйАдрес.Объект=         НабЗап.Объект;
                НовыйАдрес.Тип=            НовыйТип;
                Новыйадрес.Вид=            НовыйВид;
                НовыйАдрес.Представление=  НабЗап.Представление;
                НовыйАдрес.Поле1=          НабЗап.Поле1;
                НовыйАдрес.Поле2=          НабЗап.Поле2;
                НовыйАдрес.Поле3=          НабЗап.Поле3;
                НовыйАдрес.Поле4=          НабЗап.Поле4;
                НовыйАдрес.Поле5=          НабЗап.Поле5;
                НовыйАдрес.Поле6=          НабЗап.Поле6;
                НовыйАдрес.Поле7=          НабЗап.Поле7;
                НовыйАдрес.Поле8=          НабЗап.Поле8;
                НовыйАдрес.Поле9=          НабЗап.Поле9;
                НовыйАдрес.Поле10=         НабЗап.Поле10;
                НовыйАдрес.Комментарий=    НабЗап.Комментарий;
                НовыйАдрес.ЗначениеПоУмолчанию=НабЗап.ЗначениеПоУмолчанию;
            КонецЦикла;
            НовыйНабор.Записать(Истина);
Показать
6. masterkio 346 22.10.12 23:00 Сейчас в теме
Если в цикл заходит, то я бы проверил типы данных
НовыйАдрес.Тип= НовыйТип; Новыйадрес.Вид= НовыйВид;
8. Nadushka74 5 23.10.12 07:12 Сейчас в теме
(6) masterkio, (7) YNik, считывает данные он правильно, у меня есть искомый вид и тип, там все данные. Мне нужно записать эти данные под новым видом и типом. Во именно записи новой контактной информации и не происходит. Вознаграждение за решение гарантирую....
9. YNik 23.10.12 09:37 Сейчас в теме
Мой вариант проверили?
10. mymyka 23.10.12 10:11 Сейчас в теме
У тебя не пишется, т.к. после НовыйАдрес=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей(); пропущено НоваяЗапись = НовыйАдрес.Добавить(); но и в этом случае, такой код обнулит тебе вообще весь регистр. Для создания единственной записи стоит использовать МенеджерЗаписи.
11. KVIKS 436 23.10.12 22:07 Сейчас в теме
меняю ФактАдресКонтрагента на ЮрАдресКонтрагента
проверено на Бухгалтерии для Казахстана, но я думаю от Российской не отличается
//меняю ФактАдресКонтрагента на ЮрАдресКонтрагента
	НаборЗаписей=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
	НаборЗаписей.Отбор.объект.Установить(Контрагент);
	НаборЗаписей.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);
	НаборЗаписей.Отбор.Вид.Установить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
	НаборЗаписей.Прочитать();
	для Каждого стр из НаборЗаписей цикл
		Запись=РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();
		ЗаполнитьЗначенияСвойств(Запись,Стр);
		Запись.Вид=Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента;
		Запись.Записать(Истина);
	КонецЦикла;	
	НаборЗаписей.Очистить();
	НаборЗаписей.Записать(Истина);
Показать
12. Nadushka74 5 24.10.12 13:05 Сейчас в теме
прошу прощения проверила все варианты и видимо пора закидать меня тапками, но решила вставить проверку на количество и количество записей оказалось =0. Т.е. не происходит запись первичных данных - что мы переносим, ну соответственно и дальше мы ни чего записать не можем
НаборЗаписей=РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.объект.Установить(Контрагент);
    НаборЗаписей.Отбор.Тип.Установить(Перечисления.ТипыКонтактнойИнформации.Адрес);

    НаборЗаписей.Отбор.Вид.Установить(ИскомыйВид);
    НаборЗаписей.Прочитать();
	Если НаборЗаписей.Количество()=0 тогда ....

где тут может быть ошибка??? ну очень надо, в базе дублей основных видов накопилось уйма, нужно все это привести к единому формату, хочу обмен с документооборотом наладить, но не выгружать же мне 5 физ адресов????
14. taiba 87 24.10.12 14:03 Сейчас в теме
(12) Nadushka74, Может значение, занесенное в ИскомыйВид отлично по типу (СправочникОбъект вместо СправочникСсылка) или же указано значение, которого нет в регистре, а есть похожее, но другое. Попробуйте запросом вывести коды
ВЫБРАТЬ РАЗЛИЧНЫЕ
	КонтактнаяИнформация.Вид,
	КонтактнаяИнформация.Вид.Код КАК ВидКод,
	КонтактнаяИнформация.Вид.Наименование КАК ВидНаименование
ИЗ
	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация

УПОРЯДОЧИТЬ ПО
	ВидКод,
	ВидНаименование
Показать


И сверьте с передаваемым значением.
15. Nadushka74 5 24.10.12 14:21 Сейчас в теме
(14) taiba, точно объект вместо ссылка. (11) Vik_Krivobok, спасибо за основной код
13. DrDrey 24.10.12 13:44 Сейчас в теме
Если нужно масштабно то можно получить запросом все данные из регистра "Контактная информация"

ВЫБРАТЬ
*
ИЗ
РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация

обработать прямо в запросе или уже результат запроса выгрузить в табличную часть и потом загрузить в менеджер запись и записать обратно в регистр

Делаю обработку для переноса контактной информации.


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

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