Перенос данных одной табличной части в другую (Одного и того же справочника)
Прошу прощения за оффтоп,т.к я уже создавал обращение по этому вопросу,но сейчас я чуть более складно сформулировал свою проблему,чтобы снова ее опубликовать
У меня имеется справочник "Классы",вне табличной части которого есть реквизиты "КлассУчеников","СтаростаКласса","КлассныйРуководитель" (Связан с другим справочником "СписокУчителей") и реквизиты табличной части: "ФИО"(Связан с другим справочником "СписокУчеников") и ДатаРождения.Вот сама задача: Сделать так,чтобы школьники после наступления в календаре 1-го сентября,автоматически перемещались на класс повыше,т.е,к примеру изначально они находились в 1А,а затем уже переносились во 2А и т.д
У меня имеется справочник "Классы",вне табличной части которого есть реквизиты "КлассУчеников","СтаростаКласса","КлассныйРуководитель" (Связан с другим справочником "СписокУчителей") и реквизиты табличной части: "ФИО"(Связан с другим справочником "СписокУчеников") и ДатаРождения.Вот сама задача: Сделать так,чтобы школьники после наступления в календаре 1-го сентября,автоматически перемещались на класс повыше,т.е,к примеру изначально они находились в 1А,а затем уже переносились во 2А и т.д
Прикрепленные файлы:
По теме из базы знаний
- Способы оптимизации переносов данных
- Как автоматически заполнить обработкой табличную часть документа "Ввод начальных остатков" (Тип операции = "Расчеты с партнерами"). 1С: ERP
- Лайфхаки конвертации данных 2.1 (часть 2)
- DaJet Exchange: обмен данными с 1С (часть 1)
- DaJet Stream: потоковый обмен данными
Найденные решения
Тут проблема в том, что задача не очень корректная. Так как по задаче класс - ссылка, то переход учеников в другой класс должен фиксироваться документом, а не регламентным заданием, иначе не понятно как разрешать ситуации по типу отчисления ученика, совмещения двух классов в один (часто 2-3 9ых класса объединяют в один 10) и др.
Ну, какое задание, такое и решение:
Структура следующая:
Регистр сведений с измерением "Ученик" и ресурсом "Класс"
Справочник "Ученики"
Справочник "Классы" с реквизитами: "Номер", "Буква"
При помощи данного обработчика получаем все текущие записи регистра (это значит, что при первом использовании в регистр необходимо загрузить "остатки" (текущее положение учеников в классах)), присоединяем следующий класс с такой же буквой (это значит, что все классы также нужно занести заранее),а затем циклом формируем новый набор записей, где у учеников изменен класс. Дополнительно можно в цикле добавить условие на то, что "СледующийКласс" не заполнен и запись не добавлять. В таком случае ученики не будут переведены в 12-ый несуществующий класс.
Ну, какое задание, такое и решение:
Процедура ПереводУчениковВСледующийКласс() Экспорт
Запрос = Новый Запрос("ВЫБРАТЬ
| КлассыУчеников.Ученик КАК Ученик,
| КлассыУчеников.Класс КАК ТекущийКласс,
| Классы.Ссылка КАК СледующийКласс
|ИЗ
| РегистрСведений.КлассыУчеников КАК КлассыУчеников
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Классы КАК Классы
| ПО (КлассыУчеников.Класс.Номер + 1 = Классы.Номер)
| И КлассыУчеников.Класс.Буква = Классы.Буква");
Выборка = Запрос.Выполнить().Выбрать();
НаборЗаписей = РегистрыСведений.КлассыУчеников.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
Запись = НаборЗаписей.Добавить();
Запись.Ученик = Выборка.Ученик;
Запись.Класс = Выборка.СледующийКласс;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
ПоказатьСтруктура следующая:
Регистр сведений с измерением "Ученик" и ресурсом "Класс"
Справочник "Ученики"
Справочник "Классы" с реквизитами: "Номер", "Буква"
При помощи данного обработчика получаем все текущие записи регистра (это значит, что при первом использовании в регистр необходимо загрузить "остатки" (текущее положение учеников в классах)), присоединяем следующий класс с такой же буквой (это значит, что все классы также нужно занести заранее),а затем циклом формируем новый набор записей, где у учеников изменен класс. Дополнительно можно в цикле добавить условие на то, что "СледующийКласс" не заполнен и запись не добавлять. В таком случае ученики не будут переведены в 12-ый несуществующий класс.
Прикрепленные файлы:
1Cv8.dt
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Возможно лучше классы учеников учитывать в регистре сведений, где измерением будут классы , а ресурсами ученики(на счёт ресурсов и измерений можно подумать еще)? А в справочник подтягивать информацию из этого регистра. А для переноса на след год, сделать обработку(общую форму или общий модуль), которая будет их добавлять в регистр сведений, а обработку(общ форму/модуль) запускать по регламентному заданию или в ручную ! Информацию хранить в табличных частях объекта, не совсем корректно, надо табличную часть на форме элемента сделать и удалить из объекта.
Тут проблема в том, что задача не очень корректная. Так как по задаче класс - ссылка, то переход учеников в другой класс должен фиксироваться документом, а не регламентным заданием, иначе не понятно как разрешать ситуации по типу отчисления ученика, совмещения двух классов в один (часто 2-3 9ых класса объединяют в один 10) и др.
Ну, какое задание, такое и решение:
Структура следующая:
Регистр сведений с измерением "Ученик" и ресурсом "Класс"
Справочник "Ученики"
Справочник "Классы" с реквизитами: "Номер", "Буква"
При помощи данного обработчика получаем все текущие записи регистра (это значит, что при первом использовании в регистр необходимо загрузить "остатки" (текущее положение учеников в классах)), присоединяем следующий класс с такой же буквой (это значит, что все классы также нужно занести заранее),а затем циклом формируем новый набор записей, где у учеников изменен класс. Дополнительно можно в цикле добавить условие на то, что "СледующийКласс" не заполнен и запись не добавлять. В таком случае ученики не будут переведены в 12-ый несуществующий класс.
Ну, какое задание, такое и решение:
Процедура ПереводУчениковВСледующийКласс() Экспорт
Запрос = Новый Запрос("ВЫБРАТЬ
| КлассыУчеников.Ученик КАК Ученик,
| КлассыУчеников.Класс КАК ТекущийКласс,
| Классы.Ссылка КАК СледующийКласс
|ИЗ
| РегистрСведений.КлассыУчеников КАК КлассыУчеников
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Классы КАК Классы
| ПО (КлассыУчеников.Класс.Номер + 1 = Классы.Номер)
| И КлассыУчеников.Класс.Буква = Классы.Буква");
Выборка = Запрос.Выполнить().Выбрать();
НаборЗаписей = РегистрыСведений.КлассыУчеников.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
Запись = НаборЗаписей.Добавить();
Запись.Ученик = Выборка.Ученик;
Запись.Класс = Выборка.СледующийКласс;
КонецЦикла;
НаборЗаписей.Записать();
КонецПроцедуры
ПоказатьСтруктура следующая:
Регистр сведений с измерением "Ученик" и ресурсом "Класс"
Справочник "Ученики"
Справочник "Классы" с реквизитами: "Номер", "Буква"
При помощи данного обработчика получаем все текущие записи регистра (это значит, что при первом использовании в регистр необходимо загрузить "остатки" (текущее положение учеников в классах)), присоединяем следующий класс с такой же буквой (это значит, что все классы также нужно занести заранее),а затем циклом формируем новый набор записей, где у учеников изменен класс. Дополнительно можно в цикле добавить условие на то, что "СледующийКласс" не заполнен и запись не добавлять. В таком случае ученики не будут переведены в 12-ый несуществующий класс.
Прикрепленные файлы:
1Cv8.dt
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот