Добавление записи в регистр сведений

1. Sp1ke666 11.05.21 18:24 Сейчас в теме
Привет! Подскажите, пожалуйста, как сделать так, чтобы когда я в заказе менял реквизит Статус и проводил документ, то регистр сведений ИсторияСтатуса не менял уже существую запись с изменением в ней статуса. А добавлял бы новую. Чтобы действительно можно было проследить весь путь Статуса.
Например, при смене статуса документа (реквизит "статус") с "поступил в производство" на "произведен" должна добавиться запись в регистр сведений со статусом "произведен" и датой. Старая запись не должна удалиться при перепроведении.

В итоге должны быть 2 записи в регистре. Например,
Дата: 12.10.2020 | Статус: Поступил в производство
Дата: 15.10.2020 | Статус: Произведен
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. tolyan_ekb 104 11.05.21 20:15 Сейчас в теме
(1) регистр сведений периодический?
4. Sp1ke666 11.05.21 20:41 Сейчас в теме
(3) Ну я создал периодический, но если правильный вариант - непериодический, то могу поменять)
2. starjevschik 11.05.21 19:58 Сейчас в теме
надо сделать в документе реквизит - дату смены статуса. В обработке проведения написать две записи в регистр. Собственно и все.
5. Sp1ke666 11.05.21 20:41 Сейчас в теме
(2) Блин, добавил дату, теперь при проведении заказа пишет, что поле добавленного реквизита не обнаружено(
6. FatPanzer 11.05.21 20:43 Сейчас в теме
(5) На форме сделали, да? А в метаданных не учили, так?
7. Sp1ke666 11.05.21 20:45 Сейчас в теме
8. FatPanzer 11.05.21 21:07 Сейчас в теме
(2) А если статусов будет 5? Будете 5 дат заводить в документе?
9. Sp1ke666 11.05.21 22:03 Сейчас в теме
(8) Актуальный статус заказа может быть только один. Но кстати отобразить в регистре так и не получилось(
10. FatPanzer 11.05.21 22:25 Сейчас в теме
(9) Вот и надо писать в регистре только один статус при проведении документа текущей датой (если он изменился), а не придумывать хрень с наборами дат.
1. Регистр - независимый, периодический.
2. Измерения - Заказ, Статус.
11. Sp1ke666 11.05.21 22:56 Сейчас в теме
(10) Но у меня все та же проблема - я меняю статус, провожу заново документ. И хочу, чтобы он добавлял новую запись в регистре, а он меняет в уже существующей статус. По итогу не могу отследить историю изменения статуса((
12. FatPanzer 11.05.21 23:17 Сейчас в теме
(11) Потому что я не зря уже несколько раз сказал про текущую дату и про независимый регистр.
Так и будем играть в телепатов?
13. Sp1ke666 11.05.21 23:43 Сейчас в теме
(12) Ахахах, понял, а что в ресурсы записать?
15. DENSKR 15 12.05.21 00:11 Сейчас в теме
Измерения: ДатаЗаписи / Дата / Статус
Пример:
//Для начала создадим набор записей
			ВашРег = РегистрыСведений.ВашРегистрСведений.СоздатьНаборЗаписей();
			//Поищем совпадения, но из за "текущей даты" у вас их скорее всего не будет
			ВашРег.Отбор.ДатаЗаписи.Установить(ТекущаяДата());
			ВашРег.Отбор.Дата.Установить(ВашДокумент.Дата);
			ВашРег.Отбор.Статус.Установить(ВашДокумент.Статус);
			ВашРег.Прочитать();
			//Добавляем новую запись
			НоваяЗапись = ВашРег.Добавить(); 
			НоваяЗапись.ДатаЗаписи=ТекущаяДата();
			НоваяЗапись.Дата=ВашДокумент.Дата;
                        НоваяЗапись.Статус=ВашДокумент.Статус;
			Попытка
				ВашРег.Записать(ЛОЖЬ);   
			Исключение	
				Сообщить(ОписаниеОшибки());
			КонецПопытки;
Показать

(13)
17. Sp1ke666 12.05.21 00:16 Сейчас в теме
(15) Ой, не сразу увидел. Спасибо. А можешь только соориентировать, регистр независимым делать или подчиненным. И что указывать в измерениях и ресурсах? У меня пока так
Прикрепленные файлы:
27. FatPanzer 12.05.21 06:54 Сейчас в теме
(17)
регистр независимым делать или подчиненным.
А перечитать? Или повторить в третий раз?
18. Sp1ke666 12.05.21 00:18 Сейчас в теме
(15) Про измерения увидел, спасибо) А куда вообще вставлять этот код? В модуль документа?
29. FatPanzer 12.05.21 06:57 Сейчас в теме
(15) Проверять надо только срез последних (или вообще статус документа по ссылке и сравнивать его со статусом объекта). И проверять только его (чтобы не плодить статусов при неоднократном перепроведении документа без изменения статуса)
14. Sp1ke666 12.05.21 00:05 Сейчас в теме
(12) Затестил. Но я даже конструктором движений не могу воспользоваться в документе заказ, потому что регистр независимый( Что делать?
16. DENSKR 15 12.05.21 00:12 Сейчас в теме
(14) Попробуйте так как я предложил.
19. DENSKR 15 12.05.21 00:20 Сейчас в теме
(14) Ну смотря для чего он в конечном итоге нужен будет, если для простоты то "Независимый" и "Непериодический"
Прикрепленные файлы:
20. Sp1ke666 12.05.21 00:22 Сейчас в теме
(19) У меня куча вопросов) Например, Дата и ДатаЗаписи чем различаются? У меня в стандартных реквизитах документа есть Заказ. Куда вставлять код?
21. Sp1ke666 12.05.21 00:29 Сейчас в теме
(19) Просто у меня уже есть документ Заказ с реквизитом Статус. И мне нужен регистр сведений, чтобы можно было отслеживать историю изменения статуса заказа. Но у меня получалось лишь, чтобы при изменении статуса документа и его проведении, в регистре ИсторияЗаказа менялась лишь строчка, а не добавлялась новая. Вот так
22. DENSKR 15 12.05.21 00:29 Сейчас в теме
(21)(20) Если вникнуть в код отправленный мной ранее то будет понятны различия.
У формы документов как правило есть события "При записи", "Перед записью", "После записи", вот в них например можно вызывать процедуру :)
Как минимум книга Радченко в помощь)))
23. Sp1ke666 12.05.21 00:32 Сейчас в теме
(22) О, это я знаю) Просто не понимаю разницы между Дата и ДатаЗаписи))
30. FatPanzer 12.05.21 06:58 Сейчас в теме
(19) Нужен именно периодический, для возможности пользоваться срезом последних. Например, найти все документы в статусе "Статус 48". Пользоваться для этого физической таблицей - контрпродуктивно.
31. nomad_irk 72 12.05.21 07:47 Сейчас в теме
(30)ой, исходя из последних тенденций в типовых, как раз таки СрезПоследних - это контрпродуктивно :)
Сама 1С "вручную" делает срез последних по данным реальной таблицы РС, либо городит рядом еще один регистр, в который записывает параллельно данные в нужной структуре для дальнейшего использования
32. FatPanzer 12.05.21 08:04 Сейчас в теме
(31) Есть такая тенденция, да, не спорю...
37. FatPanzer 12.05.21 09:10 Сейчас в теме
(31) Я кстати, делал что-то похожее. Статусы актуальных заказов оставлял в периодическом регистре, а статусы закрытых заказов выкидывал в отдельных архивный непериодический регистр (через 5 дней после закрытия, или с любым другим интервалом). И в актуальном регистре всегда было небольшое количество записей, что позволяло срезу последних работать ровно так, как и должно.
28. FatPanzer 12.05.21 06:54 Сейчас в теме
(14)
Что делать?
Писать руками. Тыжпрограммист!
33. starjevschik 12.05.21 09:00 Сейчас в теме
(8) да. Документ при перепроведении должен обеспечить правильные записи во всех движениях. Пять значит пять
34. FatPanzer 12.05.21 09:02 Сейчас в теме
(33) Тогда уж заводите табличную часть со статусами. Раз уж решили делать криво, то давайте ломать по полной... А то потом седьмой статус появится... Или девятый...
35. starjevschik 12.05.21 09:05 Сейчас в теме
(34) это зависит от требуемой логики. Может и табличную часть. Но по моему опыту подобных статусов больше двух бывает очень редко.
В 1С вообще не хватает деления проведения на два, что-то вроде предварительно проведен и окончательно проведен. Очень много в каких случаях нужно.
36. FatPanzer 12.05.21 09:07 Сейчас в теме
(35) Статусы бывают разные. Например, стадии о статусе заказа во внешней системе WMS. У меня было семь статусов. В документе ничего не хранилось само собой.
24. DENSKR 15 12.05.21 00:36 Сейчас в теме
(23) В моем коде "Дата" - Это дата документа, точнее его создания (Объект.Дата)
"ДатаЗаписи" - Это Текущее время (момент в который записывается запись)

Процитирую:
 НоваяЗапись.ДатаЗаписи=ТекущаяДата();
            НоваяЗапись.Дата=ВашДокумент.Дата;
25. Sp1ke666 12.05.21 00:37 Сейчас в теме
(24)Выдает ошибку. Можешь посмотреть пожалуйста, как ты понял - я полный 0 в этом всем))
Прикрепленные файлы:
26. Sp1ke666 12.05.21 00:42 Сейчас в теме
(24) Может я неправильный тип для Дата и ДатаЗаписи указал, конечно. Я их указал в измерениях моего регистра и тип - ссылка на мой документ Заказ. Все так?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот