У меня есть задача. В задаче есть регистр сведений, и в этом регистре, как мне кажется, перепутаны измерения и ресурсы, а конкретно кое-какое измерение должно по идее быть ресурсом. Из-за этой путаницы невозможно сделать адекватную группировку данных, так как строки дублируются.
Я решил создать новый регистр на основе предыдущего, который будет таким же, однако с правильными ресурсами и измерениями.
Как я могу это сделать? Регистр из которого берем данные подчинен регистратору.
Я слышал что нужно использовать НаборЗаписей, однако что делать дальше я не понял. Как доставать данные из регистра, как их потом заносить в новый и что за ключевые поля, этого я не понял. Необходимо написать код который бы это делал
(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.Записать(Истина);
КонецЦикла;