Как программно перенести данные из одного регистра сведений в другой

1. user2097013 22.07.24 15:50 Сейчас в теме
У меня есть задача. В задаче есть регистр сведений, и в этом регистре, как мне кажется, перепутаны измерения и ресурсы, а конкретно кое-какое измерение должно по идее быть ресурсом. Из-за этой путаницы невозможно сделать адекватную группировку данных, так как строки дублируются.
Я решил создать новый регистр на основе предыдущего, который будет таким же, однако с правильными ресурсами и измерениями.
Как я могу это сделать? Регистр из которого берем данные подчинен регистратору.
Я слышал что нужно использовать НаборЗаписей, однако что делать дальше я не понял. Как доставать данные из регистра, как их потом заносить в новый и что за ключевые поля, этого я не понял. Необходимо написать код который бы это делал
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. lefthander 22.07.24 15:55 Сейчас в теме
(1) Посмотрите как регистратор(ваши документы) пишут в регистр данные. аналогично напишите для нового регистра, вот только если дубли то надо подумать как разруливать эти коллизии.
user2097013; +1 Ответить
10. independ 1544 22.07.24 19:51 Сейчас в теме
(1)

НаборЗаписей = РегистрыСведений.РС1.СоздатьНаборЗаписей(); 
НаборЗаписей.Прочитать(); 

ТЗ=НаборЗаписей.Выгрузить(); 

НаборЗаписей = РегистрыСведений.РС2.СоздатьНаборЗаписей(); 
НаборЗаписей.Загрузить(ТЗ); 
НаборЗаписей.Записать();
user2097013; starik-2005; +2 Ответить
2. usershmuser 22.07.24 15:52 Сейчас в теме
Новый регистр прикручивай к нужному регистратору и перепроводи регистратора - самое простое решение
4. user2097013 22.07.24 16:04 Сейчас в теме
(2) А каким образом я мог бы это сделать? Я бы хотел увидеть примерный код, просто я новичок, не очень хорошо разбираюсь.
5. usershmuser 22.07.24 16:24 Сейчас в теме
(4) можно начать изучение с вот этого - https://its.1c.ru/db/pubprogforbeginners#content:99:hdoc

а по поводу "Как сделать?" - ты как то сделал регистр и определил, что он неправильный, делай правильный, перепроводи документы и удаляй неправильный.

Тут скорее всего и код писать не нужно
6. soft_wind 22.07.24 16:29 Сейчас в теме
можно использовать консоль запросов
получаешь данные из неправильного регистра (нужные измерения) и обработчиком результата помещаешь в правильный!,

или еще как вариант через выгрузку и загрузку данных через табличныйдокумент
1.выгрузили все данные из регистра в файл Екслеь
2.загрузили данные из файла Ексель в нужный регистр

и всеми любимая КД2.1 (пару ПКО написать) и так же Выгрузить - загрузить данные
7. user2097013 22.07.24 16:32 Сейчас в теме
(6) А как можно сделать что бы перенос по нажатию кнопки в форме происходил?
8. usershmuser 22.07.24 16:50 Сейчас в теме
Что то мне подсказывает, что автор проходит обучение, но документацию читать лень...
Задача в реальности решается очень просто без программирования.
Какой код нужен непонятно, на какой именно форме нужно кнопку нажать так же непонятно.
Хоть бы скинул конкретный текст задачи
9. user2097013 22.07.24 18:18 Сейчас в теме
(8) В изначальной задаче мне нужно сделать группировку по некоторым полям, однако из-за того что в регистре сведений есть лишнее измерение провести эту группировку правильно не получается, и строки дублируются. Я создал новый регистр сведений в котором верно указаны. Я хочу что бы этот регистр автоматически заполнялся на основе старого регистра во время некоторого события, не важно какого: нажатие кнопки, старт программы и тд.
Если есть документация на эту тему то я бы почитал ее, была бы ссылка.

Если что вот текст запроса

Выбрать
              НормДаты.Контрагент КАК Контрагент,
                             НормДаты.Дистрибутив КАК Дистрибутив,
                             МАКСИМУМ(НормДаты.Приоритет) КАК Приоритет
                         ИЗ
                             (ВЫБРАТЬ
                                 СкидкиСистем.Период КАК Период,
                                 СкидкиСистем.Контрагент КАК Контрагент,
                                 СкидкиСистем.Дистрибутив КАК Дистрибутив,
                                 СкидкиСистем.Скидка КАК Скидка,
                                 ВЫБОР
                                     КОГДА СкидкиСистем.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
                                         ТОГДА ДАТАВРЕМЯ(3000, 1, 1)
                                     ИНАЧЕ СкидкиСистем.ДатаОкончания
                                 КОНЕЦ КАК ДатаОкончания,
                                 ВЫБОР
                                     КОГДА СкидкиСистем.Скидка В (&Проценты)
                                         ТОГДА 1
                                     КОГДА СкидкиСистем.Скидка В (&Предоплаты)
                                         ТОГДА 2
                                 КОНЕЦ КАК Приоритет
                             ИЗ
                                 РегистрСведений.СкидкиСистем КАК СкидкиСистем) КАК НормДаты
                                 ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СкидкиСистем КАК СкидкиСистем
                                 ПО НормДаты.Контрагент = СкидкиСистем.Контрагент
                                     И НормДаты.Дистрибутив = СкидкиСистем.Дистрибутив
                         ГДЕ
                             НормДаты.ДатаОкончания > &ДатаВыбранная
                             И НормДаты.Период < &ДатаВыбранная

                         СГРУППИРОВАТЬ ПО
                             НормДаты.Контрагент,
                             НормДаты.Дистрибутив
Показать


Как только я добавляю в вывод измерение Скидка из РС СкидкиСистем, то вывод становится неправильным. поэтому я решил создать новый РС
11. Vadim-SH 23.07.24 08:01 Сейчас в теме
(9) Для запроса нет разницы измерение это или ресурс. Новый РС не нужен.

ВЫБРАТЬ
	РС.Измерение1 КАК Измерение1,
	РС.Измерение2 КАК Измерение2,
	РС.Измерение3 КАК Измерение3,
	РС.Ресурс1 КАК Ресурс1,
	РС.Ресурс2 КАК Ресурс2
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
	РегистрСведений.РС КАК РС
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ.Измерение1 КАК Измерение1,
	ВТ.Измерение2 КАК Измерение2,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ.Измерение3) КАК Измерение3,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ.Ресурс1) КАК Ресурс1,
	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ.Ресурс2) КАК Ресурс2
ИЗ
	ВременнаяТаблица КАК ВТ

СГРУППИРОВАТЬ ПО
	ВТ.Измерение1,
	ВТ.Измерение2
Показать


Непонятно какую информацию должно показывать поле
МАКСИМУМ(НормДаты.Приоритет) КАК Приоритет
12. starik-2005 3081 23.07.24 10:48 Сейчас в теме
Куда катиться мир....
Запрос = Новый Запрос("Выбрать Различные Регистратор ИЗ РегистрСведений.Р1");
Для Каждого Ст ИЗ Запрос.Выполнить().Выгрузить() Цикл
  Объект = Ст.Регистратор.ПолучитьОбъект();
  Объект.Движения.Р1.Прочитать();
  Объект.Движения.Р2.Загрузить(Объект.Движения.Р1.Выгрузить());
  Объект.Движения.Р2.Записать(Истина);
КонецЦикла;
Оставьте свое сообщение

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