Почему устанавливается модифицированность

1. romulanin 31.10.24 11:11 Сейчас в теме
Добавил на форму документа в табличную часть колонку реквизита формы булево "печатать", на форме есть кнопка печать, так вот, при выделении строк, срабатывает модифицированность, при нажатии на кнопку печать просит записать, если записать признак слетает.
Как обойти ? У элемента нет свойства изменяет данные.
В "при изменении", то модифицированность изначально = Ложь, если писать = Ложь всегда, то она все равно после выхода из процедура взводится в истина
ЭтотОбъект.Модифицированность
ЭтаФорма.Модифицированность
По теме из базы знаний
Найденные решения
16. user1863362 31.10.24 12:34 Сейчас в теме
(15) В данном случае надо вообще все решение перепроектировать, пока оно далеко не ушло. Исправить-то да, исправить тут просто. Только не поймет же пациент нихрена и пойдет дальше дичь лютую творить.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 31.10.24 11:24 Сейчас в теме
(1) Проверь у команды флаг Изменяет сохраняемые данные. Надо снять.
3. romulanin 31.10.24 11:29 Сейчас в теме
(2) команда печать БСПшная, и модифицированность уже есть на форме, до нажатия кнопки
4. Sashares 35 31.10.24 11:37 Сейчас в теме
(3) Установка отметки в реквизите таблицы вызывает модифицированность, если это таблица объекта.
5. Sashares 35 31.10.24 11:53 Сейчас в теме
(3) Как вариант - вместо флага на форму выводить картинку флага.
Сделать обработчик события Выбор таблицы - если текущая колонка нужная, программно устанавливать значение. Чтобы модифицированность не включилась.
romulanin; +1 Ответить
6. user1863362 31.10.24 12:01 Сейчас в теме
(3)
команда печать БСПшная
Если почитать документацию по БСП, то в ней можно найти параметр команды печати, отменяющий запись при выставленной модифицированности формы. Параметр указывается при добавлении команды, одновременно с идентификатором и т.п.
7. Sashares 35 31.10.24 12:04 Сейчас в теме
(6) Так себе вариант.
Модифицированность может устанавливаться при изменении реальных реквизитов объекта.
И печатать всегда то что записано, а не то что видит пользователь - ну сомнительно, как по мне.
8. user1863362 31.10.24 12:07 Сейчас в теме
(7)
печатать всегда
Вот тут у тебя ошибка.

Это поведение задается в разрезе конкретной команды конкретной печати. Для получения одной печатной формы ставь, для другой не ставь.
9. Sashares 35 31.10.24 12:09 Сейчас в теме
(8) Пользователь изменил количество в одной строке ТЧ, добавил еще пару строк и выбрал печатать эту форму, которая не проверяет модифированность. Получил не то что ожидал.
Ну такое себе =)
11. user1863362 31.10.24 12:10 Сейчас в теме
(9) А кто тебе мешает для конкретной команды конкретной печати выбирать данные не из формы, а из базы?
15. Sashares 35 31.10.24 12:25 Сейчас в теме
(11) Имхо, в данном случае корректнее исправить причину, а не следствие.
Тем более это достаточно просто.
user1863362; +1 Ответить
16. user1863362 31.10.24 12:34 Сейчас в теме
(15) В данном случае надо вообще все решение перепроектировать, пока оно далеко не ушло. Исправить-то да, исправить тут просто. Только не поймет же пациент нихрена и пойдет дальше дичь лютую творить.
17. пользователь 31.10.24 12:36
Сообщение было скрыто модератором.
...
19. пользователь 31.10.24 12:44
Сообщение было скрыто модератором.
...
20. пользователь 31.10.24 12:57
Сообщение было скрыто модератором.
...
10. romulanin 31.10.24 12:09 Сейчас в теме
(8)
Про какой параметр идет речь ?

* Команды - ТаблицаЗначений - настройки команд, поставляемых внешней обработкой (необязательно для отчетов):
//           ** Идентификатор - Строка - внутреннее имя команды. Для внешних печатных форм (когда Вид = "ПечатнаяФорма"):
//                 Идентификатор может содержать имена одной или нескольких команд печати,
//                 разделенные запятыми. Подробнее см. описание колонки Идентификатор
//                 в функции УправлениеПечатью.СоздатьКоллекциюКомандПечати.
//           ** Представление - Строка - пользовательское представление команды.
//           ** Использование - Строка - тип команды:
//               "ВызовКлиентскогоМетода",
//               "ВызовСерверногоМетода",
//               "ЗаполнениеФормы",
//               "ОткрытиеФормы" или
//               "СценарийВБезопасномРежиме".
//               Для получения типов команд рекомендуется использовать функции
//               ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКоманды<ИмяТипа>.
//               В комментариях к этим функциям также даны шаблоны процедур-обработчиков команд.
//           ** ПоказыватьОповещение - Булево - если Истина, то при запуске команды выводится оповещение "Команда выполняется...".
//              Действует для всех типов команд, кроме команд по открытию формы (Использование = "ОткрытиеФормы").
//           ** Модификатор - Строка - дополнительная классификация команды.
//               Для внешних печатных форм (когда Вид = "ПечатнаяФорма"):
//                 "ПечатьMXL" - для печатных форм на основе табличных макетов.
//               Для загрузки данных из файла (когда Вид = "ПечатнаяФорма" и Использование = "ЗагрузкаДанныхИзФайла"):
//                 Модификатор является обязательным для заполнения
//                 и должен содержать полное имя объекта метаданных (справочника),
//                 для которого выполняется загрузка данных.
//           ** Скрыть - Булево - необязательный. Признак того, что это служебная команда.
//               Если установить в значение Истина, то команда скрывается в карточке дополнительного объекта.


Функция СведенияОВнешнейОбработке(ВерсияБСП = "") Экспорт
	ПараметрыРегистрации = Новый Структура;
	
	ПараметрыРегистрации.Вставить("Вид", "");
	ПараметрыРегистрации.Вставить("Версия", "0.0");
	ПараметрыРегистрации.Вставить("Назначение", Новый Массив);
	ПараметрыРегистрации.Вставить("Наименование", Неопределено);
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
	ПараметрыРегистрации.Вставить("Информация", Неопределено);
	ПараметрыРегистрации.Вставить("ВерсияБСП", ВерсияБСП);
	ПараметрыРегистрации.Вставить("ОпределитьНастройкиФормы", Ложь);
	Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ВариантыОтчетов") Тогда
		МодульВариантыОтчетовСлужебный = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетовСлужебный");
		ПараметрыРегистрации.Вставить("НазначениеВариантаОтчета",
			МодульВариантыОтчетовСлужебный.ПустоеНазначениеВариантаОтчета());
	КонецЕсли;
	
	РеквизитыТабличнойЧасти = Метаданные.Справочники.ДополнительныеОтчетыИОбработки.ТабличныеЧасти.Команды.Реквизиты;
	
	ТаблицаКоманд = Новый ТаблицаЗначений;
	ТаблицаКоманд.Колонки.Добавить("Представление", РеквизитыТабличнойЧасти.Представление.Тип);
	ТаблицаКоманд.Колонки.Добавить("Идентификатор", РеквизитыТабличнойЧасти.Идентификатор.Тип);
	ТаблицаКоманд.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
	ТаблицаКоманд.Колонки.Добавить("ПоказыватьОповещение", РеквизитыТабличнойЧасти.ПоказыватьОповещение.Тип);
	ТаблицаКоманд.Колонки.Добавить("Модификатор", РеквизитыТабличнойЧасти.Модификатор.Тип);
	ТаблицаКоманд.Колонки.Добавить("Скрыть",      РеквизитыТабличнойЧасти.Скрыть.Тип);
	ТаблицаКоманд.Колонки.Добавить("ЗаменяемыеКоманды", РеквизитыТабличнойЧасти.ЗаменяемыеКоманды.Тип);
	
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	ПараметрыРегистрации.Вставить("Разрешения", Новый Массив);
	
	Возврат ПараметрыРегистрации;
КонецФункции

Показать
12. user1863362 31.10.24 12:11 Сейчас в теме
(10)
Про какой
Я тебя куда послал? Документацию читать. А ты что принес? Свой код. Зачем?
14. romulanin 31.10.24 12:16 Сейчас в теме
Это код общего модуля, а команда печати во внешней обработке. о каком параметре какой команды печати идет речь? об этом ведь и спрашиваю, а то иди ищи. А что искать то ???
18. user1863362 31.10.24 12:42 Сейчас в теме
(14) Ты вот как андроид тупой, как слово "документация" не вложили в тебя, так ты его и не замечаешь.

Вендор БСП, фирма 1С, которая, мало того что курсы по ее использованию ведет, так еще и предоставляет документацию по ее составу, внедрению и использованию Как для программиста, так и для пользователя.
Для чтения документации открываешь сайт ИТС и читаешь там:
- Главная -> Инструкции по разработке на 1С -> Библиотека стандартных подсистем -> <Версия БСП (сейчас 3.1.10 по моему) -> Глава 3. Настройка и использование подсистем при разработке конфигурации -> Печать
И там же рядом Подключаемые команды, где ты вообще всю логику сам делаешь.
22. starik-2005 3091 31.10.24 14:09 Сейчас в теме
13. user1863362 31.10.24 12:12 Сейчас в теме
И к тому же ты приводишь пример не печати, а подключаемых команд
21. starik-2005 3091 31.10.24 14:07 Сейчас в теме
Да, взводится флаг модифицированности, даже если это добавленный реквизит. Обработать можно в событии таблицы (не поля таблицы, а таблицы целиком) "ПослеОкончанияРедактирования" (ну или как-то так - ищи). Там как раз можно указать "Модицифированность = Ложь".

С другой стороны, если речь идет о том, чтобы выводить на печать только отмеченные строки, я бы выводил только выделенные строки (контрл+лкм, шифт+лкм, контрл+а после отбора альт+ф, ...). В итоге отобрал все болты и гайки, нажал контр+а, нажал "Печаль" - профит!
romulanin; +1 Ответить
23. пользователь 31.10.24 16:09
Сообщение было скрыто модератором.
...
Оставьте свое сообщение

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