Проверить изменена ли табличная часть документа

1. Дон Кихот 25.11.19 14:39 Сейчас в теме
Как перед записью проверить изменил ли пользователь табличную часть документа?
Перебрать все в цикле можно конечно, только есть ведь метод эффективней, подскажите пожалуйста.
По теме из базы знаний
Найденные решения
12. VmvLer 26.11.19 09:39 Сейчас в теме
в модуле ОбщегоНазначения метод КоллекцииИдентичны уже 100500 лет решает подобные задачи.
правда, ваша борьба с ветряной мельницой забавна, особенно если верить, что эта борьба реальна.
native-api; Luchano37; userAn; Georgii58; sizeoff; anykeyman; Doom2w; KAV2; AsPin123; +9 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. VmvLer 25.11.19 14:44 Сейчас в теме
самый суровый и верный варик:

НаСервере

Ссылка.Тч в ВТ1
Объект.Тч в ВТ2

Сравнить запросом ВТ1 и ВТ2
lmnlmn; danjer74; +2 Ответить
5. Дон Кихот 25.11.19 15:15 Сейчас в теме
(2)А как в запросе получить Объект.ТЧ чтобы поместить во временную таблицу?
7. VmvLer 25.11.19 15:58 Сейчас в теме
(5) Например,
ТзИзТчОбъекта = РеквизитФормыВЗначение("Объект").Товары.Вызрузить();

или более тоньше
ТзИзТчОбъекта = ДанныеФормыВЗначение(Объект.Товары, Тип("ТаблицаЗначений"));
13. lmnlmn 69 26.11.19 09:47 Сейчас в теме
Вариант из (2) наиболее понятный и простой в реализации. Можно ловить интерактивные изменения, но это вариант требует создания лога изменений, сравнений с первоначальными значениями при изменении строк. В общем всяких структур, обработчиков и некой логики. Я так делал, но для другой задачи. Без острой необходимости не советую.
3. podkova 25.11.19 14:45 Сейчас в теме
модифицированность()?
4. Дон Кихот 25.11.19 14:56 Сейчас в теме
(3)Модифицированность к форме можно применить? А к табличной части?
6. Ганс 25.11.19 15:48 Сейчас в теме
8. Дон Кихот 25.11.19 16:06 Сейчас в теме
Спасибо всем большое, сделал так:

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


работает, если это грубо напишите пожалуйста почему
9. VmvLer 25.11.19 16:15 Сейчас в теме
(8) если это решает задачу и вас не станут бить за слабый просчет вариков, то без разницы грубо или нет.
это ведь не секретная конфа, а ларек на Мойке, нэ?
так что, чтобы потроллить вашего приемника этого костыля вполне достаточно.
10. Дон Кихот 26.11.19 08:20 Сейчас в теме
(9)Нашел такую ошибку, пользователь может добавить строку и это не будет изменением, дописал в начале функции условие:
Если СсылкаТовары.Количество()<> ЭтотОбъектТовары.Количество() Тогда
Возврат Истина
КонецЕсли;
11. Дон Кихот 26.11.19 09:33 Сейчас в теме
(9)Нашел еще одну ошибку, если в ТЧ две или больше строк с одной номенклатурой, работает не правильно. Вместо метода Найти() использую НайтиСтроки, и, он помещает их в массив. Сейчас решаю задачу сравнения двух массивов, пока ищу решение.
12. VmvLer 26.11.19 09:39 Сейчас в теме
в модуле ОбщегоНазначения метод КоллекцииИдентичны уже 100500 лет решает подобные задачи.
правда, ваша борьба с ветряной мельницой забавна, особенно если верить, что эта борьба реальна.
native-api; Luchano37; userAn; Georgii58; sizeoff; anykeyman; Doom2w; KAV2; AsPin123; +9 Ответить
14. Дон Кихот 26.11.19 10:14 Сейчас в теме
(12)Спасибо, то что нужно, решать проблему было интересно, но время имеет значение
Оставьте свое сообщение

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