Как программно перенести данные из одного регистра сведений в другой
1С:Предприятие 8
Windows
Корп. решения 1С
Образование
Обучение
Программист
Стажер
Бесплатно (free)
Вопрос
У меня есть задача. В задаче есть регистр сведений, и в этом регистре, как мне кажется, перепутаны измерения и ресурсы, а конкретно кое-какое измерение должно по идее быть ресурсом. Из-за этой путаницы невозможно сделать адекватную группировку данных, так как строки дублируются.
Я решил создать новый регистр на основе предыдущего, который будет таким же, однако с правильными ресурсами и измерениями.
Как я могу это сделать? Регистр из которого берем данные подчинен регистратору.
Я слышал что нужно использовать НаборЗаписей, однако что делать дальше я не понял. Как доставать данные из регистра, как их потом заносить в новый и что за ключевые поля, этого я не понял. Необходимо написать код который бы это делал
Я решил создать новый регистр на основе предыдущего, который будет таким же, однако с правильными ресурсами и измерениями.
Как я могу это сделать? Регистр из которого берем данные подчинен регистратору.
Я слышал что нужно использовать НаборЗаписей, однако что делать дальше я не понял. Как доставать данные из регистра, как их потом заносить в новый и что за ключевые поля, этого я не понял. Необходимо написать код который бы это делал
По теме из базы знаний
- Перенос данных и обмен из УТ 10.3 в УТ 11 / КА 2 / ERP 2. Переносятся документы, справочники и остатки
- Обсудим планы обмена. Способы регистрации объектов к обмену
- Как сделать обмен данными через универсальный формат быстрее? Реализация многопоточного обмена данными
- Ни в ЗУП ногой!? А мне нравится! Часть 4. Главное - правильный перенос данных!
- Как не отстать от развития экосистемы 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
НаборЗаписей = РегистрыСведений.РС1.СоздатьНаборЗаписей();
НаборЗаписей.Прочитать();
ТЗ=НаборЗаписей.Выгрузить();
НаборЗаписей = РегистрыСведений.РС2.СоздатьНаборЗаписей();
НаборЗаписей.Загрузить(ТЗ);
НаборЗаписей.Записать();
(4) можно начать изучение с вот этого -
а по поводу "Как сделать?" - ты как то сделал регистр и определил, что он неправильный, делай правильный, перепроводи документы и удаляй неправильный.
Тут скорее всего и код писать не нужно
а по поводу "Как сделать?" - ты как то сделал регистр и определил, что он неправильный, делай правильный, перепроводи документы и удаляй неправильный.
Тут скорее всего и код писать не нужно
можно использовать консоль запросов
получаешь данные из неправильного регистра (нужные измерения) и обработчиком результата помещаешь в правильный!,
или еще как вариант через выгрузку и загрузку данных через табличныйдокумент
1.выгрузили все данные из регистра в файл Екслеь
2.загрузили данные из файла Ексель в нужный регистр
и всеми любимая КД2.1 (пару ПКО написать) и так же Выгрузить - загрузить данные
получаешь данные из неправильного регистра (нужные измерения) и обработчиком результата помещаешь в правильный!,
или еще как вариант через выгрузку и загрузку данных через табличныйдокумент
1.выгрузили все данные из регистра в файл Екслеь
2.загрузили данные из файла Ексель в нужный регистр
и всеми любимая КД2.1 (пару ПКО написать) и так же Выгрузить - загрузить данные
Что то мне подсказывает, что автор проходит обучение, но документацию читать лень...
Задача в реальности решается очень просто без программирования.
Какой код нужен непонятно, на какой именно форме нужно кнопку нажать так же непонятно.
Хоть бы скинул конкретный текст задачи
Задача в реальности решается очень просто без программирования.
Какой код нужен непонятно, на какой именно форме нужно кнопку нажать так же непонятно.
Хоть бы скинул конкретный текст задачи
(8) В изначальной задаче мне нужно сделать группировку по некоторым полям, однако из-за того что в регистре сведений есть лишнее измерение провести эту группировку правильно не получается, и строки дублируются. Я создал новый регистр сведений в котором верно указаны. Я хочу что бы этот регистр автоматически заполнялся на основе старого регистра во время некоторого события, не важно какого: нажатие кнопки, старт программы и тд.
Если есть документация на эту тему то я бы почитал ее, была бы ссылка.
Если что вот текст запроса
Как только я добавляю в вывод измерение Скидка из РС СкидкиСистем, то вывод становится неправильным. поэтому я решил создать новый РС
Если есть документация на эту тему то я бы почитал ее, была бы ссылка.
Если что вот текст запроса
Выбрать
НормДаты.Контрагент КАК Контрагент,
НормДаты.Дистрибутив КАК Дистрибутив,
МАКСИМУМ(НормДаты.Приоритет) КАК Приоритет
ИЗ
(ВЫБРАТЬ
СкидкиСистем.Период КАК Период,
СкидкиСистем.Контрагент КАК Контрагент,
СкидкиСистем.Дистрибутив КАК Дистрибутив,
СкидкиСистем.Скидка КАК Скидка,
ВЫБОР
КОГДА СкидкиСистем.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
ТОГДА ДАТАВРЕМЯ(3000, 1, 1)
ИНАЧЕ СкидкиСистем.ДатаОкончания
КОНЕЦ КАК ДатаОкончания,
ВЫБОР
КОГДА СкидкиСистем.Скидка В (&Проценты)
ТОГДА 1
КОГДА СкидкиСистем.Скидка В (&Предоплаты)
ТОГДА 2
КОНЕЦ КАК Приоритет
ИЗ
РегистрСведений.СкидкиСистем КАК СкидкиСистем) КАК НормДаты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СкидкиСистем КАК СкидкиСистем
ПО НормДаты.Контрагент = СкидкиСистем.Контрагент
И НормДаты.Дистрибутив = СкидкиСистем.Дистрибутив
ГДЕ
НормДаты.ДатаОкончания > &ДатаВыбранная
И НормДаты.Период < &ДатаВыбранная
СГРУППИРОВАТЬ ПО
НормДаты.Контрагент,
НормДаты.Дистрибутив ПоказатьКак только я добавляю в вывод измерение Скидка из РС СкидкиСистем, то вывод становится неправильным. поэтому я решил создать новый РС
(9) Для запроса нет разницы измерение это или ресурс. Новый РС не нужен.
Непонятно какую информацию должно показывать поле
МАКСИМУМ(НормДаты.Приоритет) КАК Приоритет
ВЫБРАТЬ
РС.Измерение1 КАК Измерение1,
РС.Измерение2 КАК Измерение2,
РС.Измерение3 КАК Измерение3,
РС.Ресурс1 КАК Ресурс1,
РС.Ресурс2 КАК Ресурс2
ПОМЕСТИТЬ ВременнаяТаблица
ИЗ
РегистрСведений.РС КАК РС
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
ВТ.Измерение1 КАК Измерение1,
ВТ.Измерение2 КАК Измерение2,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ.Измерение3) КАК Измерение3,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ.Ресурс1) КАК Ресурс1,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ.Ресурс2) КАК Ресурс2
ИЗ
ВременнаяТаблица КАК ВТ
СГРУППИРОВАТЬ ПО
ВТ.Измерение1,
ВТ.Измерение2
ПоказатьНепонятно какую информацию должно показывать поле
МАКСИМУМ(НормДаты.Приоритет) КАК Приоритет
Куда катиться мир....
Запрос = Новый Запрос("Выбрать Различные Регистратор ИЗ РегистрСведений.Р1");
Для Каждого Ст ИЗ Запрос.Выполнить().Выгрузить() Цикл
Объект = Ст.Регистратор.ПолучитьОбъект();
Объект.Движения.Р1.Прочитать();
Объект.Движения.Р2.Загрузить(Объект.Движения.Р1.Выгрузить());
Объект.Движения.Р2.Записать(Истина);
КонецЦикла;
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот
