![]() |
![]() |
![]() |
|
Удаление и создание новых записей подчиненного регистра сведений ↓ (Волшебник 02.10.2025 10:06) |
☑ | ||
---|---|---|---|---|
0
Way
02.10.25
✎
09:01
|
Добрые люди, прошу помощи.При проведении документа записи регистра сведений успешно создаются, если перепровести документ, то записи по этому регистру не пересоздаются, а удаляются, но если провести третий раз - они снова создаются.
В чем причина? Влияет ли как-то тот факт, что регистр сведений создан в расширении? Процедура СформироватьДвиженияИсторииДополнительныхПоказателейШтатногоРасписания(Регистратор) Экспорт // Удаляем старые движения регистра УдалитьСтарыеЗаписиРегистра(Регистратор); НаборЗаписейДобавление = РегистрыСведений.ИсторияДополнительныхПоказателейШтатногоРасписания.СоздатьНаборЗаписей(); НаборЗаписейДобавление.Отбор.Регистратор.Установить(Регистратор); // Определяем дату в зависимости от типа документа Если ТипЗнч(Регистратор) = Тип("ДокументСсылка.ИзменениеШтатногоРасписания") Тогда Дата = Регистратор.ДатаВступленияВСилу; ИначеЕсли ТипЗнч(Регистратор) = Тип("ДокументСсылка.УтверждениеШтатногоРасписания") Тогда Дата = Регистратор.МесяцВступленияВСилу; КонецЕсли; // Добавляем новые записи Для каждого СтрокаТЧ из Регистратор.Позиции Цикл НоваяЗапись = НаборЗаписейДобавление.Добавить(); НоваяЗапись.Регистратор = Регистратор; НоваяЗапись.Дата = Дата; Если Не СтрокаТЧ.Позиция.Закрыта Тогда НоваяЗапись.Используется = Истина; Иначе НоваяЗапись.Используется = Ложь; КонецЕсли; НоваяЗапись.ПозицияШтатногоРасписания = СтрокаТЧ.Позиция; НоваяЗапись.КлассПозицииШтатногоРасписания = СтрокаТЧ.КлассПозицииШтатногоРасписания; НоваяЗапись.ПА_Категория = СтрокаТЧ.ПА_Категория; НоваяЗапись.ПА_Участок = СтрокаТЧ.ПА_Участок; НоваяЗапись.ПА_РазрядКатегорияИТР = СтрокаТЧ.ПА_РазрядКатегорияИТР; КонецЦикла; НаборЗаписейДобавление.Записать(); КонецПроцедуры Процедура УдалитьСтарыеЗаписиРегистра(Регистратор) НаборЗаписейУдаления = РегистрыСведений.ИсторияДополнительныхПоказателейШтатногоРасписания.СоздатьНаборЗаписей(); НаборЗаписейУдаления.Отбор.Регистратор.Установить(Регистратор); НаборЗаписейУдаления.Прочитать(); НаборЗаписейУдаления.Записать(); КонецПроцедуры |
|||
1
Волшебник
02.10.25
✎
09:13
|
Надо обращаться через Движения
|
|||
2
Way
02.10.25
✎
09:35
|
(1) Регистраторами выступают документ "Изменения штатного расписания" и "Утверждение штатного расписания". У них же нет движений
|
|||
3
Way
02.10.25
✎
09:40
|
(1) Я дурачек, движения есть, буду пробовать, спасибо!
|
|||
4
Irbis
02.10.25
✎
09:42
|
А зачем НаборЗаписейУдаления.Прочитать(); при очистке набора?
|
|||
5
СвинТуз
02.10.25
✎
09:44
|
(3)
Еще есть обработка проведения с конструктором движений. При этом если нормально организоваться удалять записи не нужно старые. Отборы ставить не надо. |
|||
6
СвинТуз
02.10.25
✎
09:45
|
Осторожно у неумелого программиста конструктор движений
стирает старый текст модуля обработки проведения. |
|||
7
Way
02.10.25
✎
09:47
|
(6) Можно пожалуйста подробнее, чтобы не попасть в просак
|
|||
8
СвинТуз
02.10.25
✎
09:49
|
просак это место у женщины между тем и этим
в книгах много что есть. |
|||
9
СвинТуз
02.10.25
✎
09:51
|
конструктор движений при вызове
должен предупреждать, что затрет обработку проведения. не игнорьте. откуда он вызывается? Коллег рядом совсем нет? |
|||
10
Way
02.10.25
✎
09:52
|
(8) Да, я в курсе
|
|||
11
СвинТуз
02.10.25
✎
09:56
|
(10)
Просак - это станок, предназначенный для плетения веревок и канатов. Попадание в него бороды или волос могло привести к тяжелым увечьям. |
|||
12
Way
02.10.25
✎
10:16
|
(11) Разобрался. Движения по всем подчиненным регистрам очищаются в основном коде. Создал новые через НаборЗаписейДобавление = Регистратор.Движения.ИсторияДополнительныхПоказателейШтатногоРасписания; и все заработало :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |