Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Программирование 1C: Предприятие

Здравствуйте. Такой вопрос. У меня есть документ "Назначения" и у него в табличной части есть несколько строк с названием. Каждую строку можно отметить как "Выполнено", поставив галочку (тип Булево). Я хочу, чтобы когда кто-то ставит галочку, в регистр сведений записывалось название строки и дата, когда галочку поставили. Как это сделать?

По дате
По рейтингу
Аватар пользователя
Ученик
1мес

Здравствуйте! Для реализации автоматической записи названия строки и даты при установке галочки в табличной части документа "Назначения" создайте обработчик события "ПередЗаписью" или "ПередИзменением" формы документа. В нем добавьте проверку изменения булева поля и при срабатывании запишите соответствующие данные в регистр сведений. Рекомендую ознакомиться с материалами информационного портала по 1С, там много полезных статей по обработке событий и работе с регистрами.

Аватар пользователя
Ученик
1мес
  1. Добавьте обработчик события "ПриИзменении" для элемента "Выполнено" в табличной части.

  2. В этом обработчике проверьте, что галочка установилась (значение стало Истина).

  3. Если условие выполнено, запишите в регистр сведений название строки и текущую дату.


Аватар пользователя
Знаток
2мес

Здравствуйте! Чтобы реализовать автоматическую запись в регистр сведений при установке флажка "Выполнено" в табличной части документа "Назначения", нужно использовать обработчик события изменения данных в табличной части + программно внести запись в регистр сведений.

Вот пошаговая инструкция:

🔧 Предположения:
Документ "Назначения"

Табличная часть Строки

Поля в табличной части:

Название — Строка (наименование назначения)

Выполнено — Булево

Регистр сведений: РегистрВыполненныхНазначений с измерениями:

Название (строка или ссылка на что-то)

ДатаВыполнения (дата)

✅ Шаг 1: Создайте регистр сведений
Создайте регистр сведений с такими свойствами:

Имя: РегистрВыполненныхНазначений

Тип регистра: Непериодический (если важна только дата выполнения)

Ресурсы:

ДатаВыполнения (Тип: Дата)

Измерения:

Название (Тип: Строка)

Или можно использовать ссылку на документ + номер строки — если хотите уникальность по строке документа.

✅ Шаг 2: В модуле объекта документа "Назначения" добавьте обработчик
Добавим проверку и запись в регистр в BeforeWrite() или в ОбработкаПроведения — но лучше отслеживать изменение флага.

Если хотите отслеживать в момент нажатия галочки (интерактивно), используйте модуль формы.

💡 Вариант 1: Проверка изменений в модуле формы документа (интерактивно)
1C



Процедура СтрокиПриИзменении(Элемент) Экспорт
Для Каждого Стр ИзмСтруктура Из СтрокиЦФорма.Строки Цикл
Если Стр.Выполнено И Не ЗначениеЗаполнено(Стр.ДатаВыполнения) Тогда
// Запись в регистр
НоваяЗапись = РегистрСведений.РегистрВыполненныхНазначений.СоздатьМенеджерЗаписи();
НоваяЗапись.Название = Стр.Название;
НоваяЗапись.ДатаВыполнения = ТекущаяДата();
НоваяЗапись.Записать();

// Можно сохранить дату в строке, если нужно
Стр.ДатаВыполнения = ТекущаяДата();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
💬 Подпишите обработчик на событие ПриИзменении колонки Выполнено.

💡 Вариант 2: Обработка в модуле объекта при записи
Если вы хотите обрабатывать это при проведении, добавьте в ОбработкаПроведения или ПередЗаписью:

1C

Процедура ПередЗаписью(Отказ, РежимЗаписи)
Для Каждого Стр Из Строки Цикл
Если Стр.Выполнено Тогда
НоваяЗапись = РегистрСведений.РегистрВыполненныхНазначений.СоздатьМенеджерЗаписи();
НоваяЗапись.Название = Стр.Название;
НоваяЗапись.ДатаВыполнения = ТекущаяДата();
НоваяЗапись.Записать();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
🧠 Альтернатива: Проверка на смену состояния
Если вам нужно, чтобы только при установке галочки происходила запись (а не каждый раз при сохранении), сравнивайте старое и новое значение через Объект и ЭтотОбъект.

Пример:

1C


Если Стр.Выполнено И Не ЭтотОбъект.Строки[Индекс].Выполнено Тогда
// Только при смене флага
🔚 Заключение
Вам нужно:

Создать регистр сведений с нужными измерениями.

В обработчике (формы или объекта) отследить установку флажка.

При изменении — внести запись в регистр с названием и текущей датой.


Информация подготовлена GLAVQA