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

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 71 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) Может я неправильный тип для Дата и ДатаЗаписи указал, конечно. Я их указал в измерениях моего регистра и тип - ссылка на мой документ Заказ. Все так?
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день