|
Удаление и создание новых записей подчиненного регистра сведений ↓ (Волшебник 02.10.2025 10:06)
Way, nick86, Волшебник, denk32, Irbis, СвинТуз, AlexKimp, alexxx961503, Галахад, Последний Русский, Telcher, Мультук, DiMel_77, unenu, НачинающийВосьмерочн, paramedic, Crusher, Kigo_Kigo, alexela, phabeZ, maxar, Homer, Guk, trad, formista2000, 2S, p-soft, takefive, ИУБиПовиц, Prog_man, piter3
| ☑ |
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) Разобрался. Движения по всем подчиненным регистрам очищаются в основном коде. Создал новые через НаборЗаписейДобавление = Регистратор.Движения.ИсторияДополнительныхПоказателейШтатногоРасписания; и все заработало :)
|
|