Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 мая 2026, 17:03

Помогите со структурой РегистраНакопления

Автор Алексей_1985_06, 03 мая 2026, 14:59

0 Пользователей и 1 гость просматривают эту тему.

Алексей_1985_06

Уважаемые программисты и разработчики, мне необходимо вести учет неисправностей оборудования для чего я создал:
1. Документ "Регистрация неисправности" с реквизитами: Изделие и ДатаВозникновения
2. Документ "Устранение неисправности" с реквизитами: Изделие и ДатаУстранения.
3. Оборотный Регистр накопления "Учет неисправностей" Измерение: Изделие; Ресурс: КоличествоНеисправностей; Реквизиты: ДатаВозникновения и ДатаУстранения.

Код для проведения документа "РегистрацияНеисправности"

Процедура ОбработкаПроведения(Отказ, Режим)


Движения.УчетНеисправностей.Записывать = Истина;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РегН.Ссылка КАК Ссылка,
| РегН.ВерсияДанных КАК ВерсияДанных,
| РегН.ПометкаУдаления КАК ПометкаУдаления,
| РегН.Номер КАК Номер,
| РегН.Дата КАК Дата,
| РегН.Проведен КАК Проведен,
| РегН.Изделие КАК Изделие ,
| РегН.ДатаВозникновения КАК ДатаВозникновения
|ИЗ
| Документ.РегистрацияНеисправностей КАК РегН
|ГДЕ
| РегН.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
Запись = Движения.УчетНеисправностей.Добавить();
Запись.Период = Выборка.Дата;
Запись.Изделие  = Выборка.Изделие;
Запись.КоличествоНеисправностей = 1;
Запись.ДатаВыявленияНеисправности = Выборка.ДатаВозникновения;
КонецЦикла;

 
КонецПроцедуры

Вопрос:
1. Как сделать чтобы при проведении документа "УстранениеНеисправности" для соответствующей строки в поле РН "ДатаУстранения" было поставлено значение даты устранения.
2. Как вычислить количество дней - которое изделие было неисправно.

Прошу подсказать кому не сложно......

alexandr_ll

Алексей_1985_06, 1. Используйте конструктор движений регистра. Первый документ делает приход в регистр, второй  расход по нему.Не надо все писать в одну строку.
2. Синтакс-помощник РазностьДат

SwampOwl

Алексей_1985_06, выше верно подсказывают. Архитектура решения задачи должна быть пересмотрена. Пусть Д "Регистрация неисправности" создает запись со знаком плюс, а Д "Устранение неисправности" со знаком минус.

А ДатаВозникновения и ДатаУстранения слить в одно поле даты, вместо этих двух.
В зависимости от функциональной нагрузки подобрать верную комбинацию и(!) последовательность измерений, ресурсов, реквизитов. Здесь важна специфика именно вашей бизнеслогики, ибо можно сделать тяжелое неповоротливое решение, особенно как в текущем прототипе с этими реквизитами

Как доп. идея - скорее всего интереснее будет смотреться решение не РН оборотов, а РН накопления. Скажем, захочется увидеть отчет сколько всего изделей с неисправностью (сейчас или на какую-то дату).

Алексей_1985_06


LexaK

Алексей_1985_06, для этой задачи, скорее всего, вам подошел бы
(независимый?), периодический, регистр сведений
куда будет писаться
Период (дата события)
Изделие (и возможно его серийный номер)
Статус (перечисление: Новый, Неисправен, ВРемонте, Отремонтирован, Списан и др)
для справки возможны еще какие сведения

очень удобно, по СрезПоследних получать текущий статус Изделия
а в запросе легко получить разницу в днях между статусами Неисправен и Отремонтирован
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск