![]() |
|
v7: Как проверить редактирование табличной части? | ☑ | ||
---|---|---|---|---|
0
Ночной Эльф
06.05.13
✎
08:54
|
Всем доброго времени суток.
Имеется 1с 7.7 необходимо проверять изменения табличной части в документе т.е. если табличная часть была изменена то выполнять одно действие если не было изменений то другое. Думал через флаг которому присваивать значение 1 в процедуре Процедура ПриОкончанииРедактированияСтроки() но выставляется 1 даже если и не было не каких изменений Как тут лучше сделать? |
|||
1
zak555
06.05.13
✎
08:55
|
> проверять изменения табличной части в документе
пере записью документа ? |
|||
2
1Сергей
06.05.13
✎
08:56
|
Навскидку два варианта:
1 сравнить с сохраненной копией документа 2 при изминении каждой колонки ТЧ взводить флаг |
|||
3
Ночной Эльф
06.05.13
✎
08:56
|
Еще есть вариант при открытии документа выгружать табличную часть в таблицу значение а потом сравнивать ее с таблицой документа но как производить сравнение таблицы значения и табличной части документа нельзя же просто знаком равно =
|
|||
4
Ночной Эльф
06.05.13
✎
08:56
|
(1) нет не перед записью
|
|||
5
zak555
06.05.13
✎
08:57
|
(4) в какой момент ?
|
|||
6
1Сергей
06.05.13
✎
08:57
|
(3) построчно, пореквизитно
|
|||
7
Ночной Эльф
06.05.13
✎
08:59
|
(6) это через чур геморойно слишком много колонок разного типа, а нельзя сразу всю таблицу сравнивать?
|
|||
8
zak555
06.05.13
✎
08:59
|
(7) два цикла это долго ?
|
|||
9
1Сергей
06.05.13
✎
08:59
|
(7) ничего геморного. пишется в несколько строк кода.
|
|||
10
Ночной Эльф
06.05.13
✎
09:00
|
только как выгрузить табличную часть документа в таблицу значений? не пойму?
|
|||
11
1Сергей
06.05.13
✎
09:03
|
(10) о, это большое шаманство. Без СП не взлетит
|
|||
12
Ночной Эльф
06.05.13
✎
09:08
|
А можно как нибудь запоминать значение в процедуре
Процедура ПриНачалеРедактированияСтроки() А потом сравнивать в процедуре Процедура ПриОкончанииРедактированияСтроки() Только вот как в первой процедуре получить значение данной колонки по выбранному столбцу не знаю |
|||
13
1Сергей
06.05.13
✎
09:08
|
(10) кстати, при открытии ничего запоминать не надо. Можно взять ТЧ из сохраненной копии Документа в любой момент
|
|||
14
kosts
06.05.13
✎
09:10
|
Есть еще изменение ТЧ при удалении, добавлении и сортировке.
|
|||
15
1Сергей
06.05.13
✎
09:11
|
(12)
ПолучитьСтрокуПоНомеру(НомерСтроки); ЗначениеРеквизита = ПолучитьАтрибут("ИмяКолонки"); |
|||
16
Ковычки
06.05.13
✎
09:13
|
Перем ТЧДо;
Процедура ПриОткрытии() ТЧДо=СоздатьОбъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(ТЧДо); КонецПроцедуры ... Если Модифицированность()=1 Тогда ТЧПосле=СоздатьОбъект("ТаблицаЗначений"); ВыгрузитьТабличнуюЧасть(ТЧПосле); Если Не ЗначениеВСтроку(ТЧДо)=ЗначениеВСтроку(ТЧПосле) Тогда Предупреждение("ТЧ изменено!"); КонецЕсли; КонецЕсли; |
|||
17
Ночной Эльф
06.05.13
✎
09:13
|
(15) так вот именно я не знаю какая именно колонка?
(13) это как ? |
|||
18
Ночной Эльф
06.05.13
✎
09:14
|
(16) Вот точно я именно так и думал, просто не знал как это на языке реализовать спасибо
|
|||
19
Ковычки
06.05.13
✎
09:15
|
(17) 2-ой раз открыть форму
|
|||
20
1Сергей
06.05.13
✎
09:15
|
(17) Кури Метаданные
|
|||
21
kosts
06.05.13
✎
09:15
|
(17) Удалили строку - вот и изменение.
|
|||
22
Ночной Эльф
06.05.13
✎
09:15
|
а разве вот так нельзя
Если ЗначениеВСтроку(ТЧДо)<>ЗначениеВСтроку(ТЧПосле) Тогда без НЕ ? |
|||
23
1Сергей
06.05.13
✎
09:16
|
ТекущийДокумент().ВыгрузитьТабличнуюЧасть( - возьмёт из сохраненной копии
|
|||
24
1Сергей
06.05.13
✎
09:16
|
(22) можно, но не всегда при равных ТЧ вернёт ложь
|
|||
25
Ночной Эльф
06.05.13
✎
09:19
|
Всем большое спасибо. Только поясните пожалуйста про
ЗначениеВСтроку Справку то я прочитал по ней а вот на деле что она делает просто берет каждый элемент табличной части и записывает поочередно в неограниченную строку? |
|||
26
Aleksey
06.05.13
✎
09:41
|
(25)
{"VT","1",{"0",{{"","0","0","0","","2"}, {"НомерСтрокиДокумента","","1","0","0",{"N","6","0","0","0","0"},"","2", { {"N","6","0","0","0","0"," 1"} } }, {"Номенклатура","Номенклатура","1","0","1",{"B","0","0","84","0","0"},"","0", { {"B","0","0","84","0","0"," 153807 "} } }, {"Количество","Количество","1","0","2",{"N","10","3","0","1","0"},"","2", { {"N","10","3","0","1","0"," 1.000"} } }, {"Единица","Единица","1","0","3",{"B","0","0","75","0","0"},"","0", { {"B","0","0","75","0","0"," 72865 "} } }, {"Коэффициент","Коэффициент","1","0","4",{"N","6","2","0","0","0"},"","2", { {"N","6","2","0","0","0"," 1.00"} } }, {"Цена","Цена","1","0","5",{"N","10","2","0","1","1"},"","2", { {"N","10","2","0","1","1"," 433.00"} } }, {"Сумма","Сумма","1","0","6",{"N","12","2","0","1","1"},"","2", { {"N","12","2","0","1","1"," 433.00"} } }, {"СтавкаНДС","СтавкаНДС","1","0","7",{"E","0","0","653","0","0"},"","0", { {"E","0","0","653","0","0"," 27486 "} } }, {"СуммаНДС","СуммаНДС","1","0","8",{"N","12","3","0","1","1"},"","2", { {"N","12","3","0","1","1"," 0.000"} } }, {"Партия","Партия","1","0","9",{"B","0","0","214","0","0"},"","0", { {"B","0","0","214","0","0"," 0 "} } }}}} |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |