|
Реквизиты на УФ. Надо отследить их изменения | ☑ | ||
---|---|---|---|---|
0
first_may
06.11.17
✎
20:11
|
Добрый день.
Есть обработка на УФ и на ней, допустим три реквизита. Подскажите пож, как можно узнать при закрытии формы, что пару реквизитов были изменены? То есть надо сделать что то вроде истории изменения реквизитов. |
|||
1
Мимохожий Однако
06.11.17
✎
20:23
|
(0) Добавь периодический РС, заполняемый при закрытии обработки.
|
|||
2
Cyberhawk
06.11.17
✎
20:52
|
При открытии формы запоминай значения реквизитов, при закрытии - сравнивай
|
|||
3
lodger
06.11.17
✎
21:00
|
к (2)
делать это в событиях ПриЗагрузкеДанныхИзНастроек и ПриСохраненииДанныхВНастройках или что-то в этом духе. |
|||
4
first_may
07.11.17
✎
09:55
|
Спасибо..
В обычных формах делалось вот так Для каждого Реквизит из Метаданные().Реквизиты Цикл Если не Ссылка[Реквизит.Имя] = ЭтотОбъект[Реквизит.Имя] Тогда ИнфоСтрока = ИнфоСтрока + " * " + Реквизит.Синоним + " с """ + Ссылка[Реквизит.Имя] + """ на """ + ЭтотОбъект[Реквизит.Имя] + """" + Символы.ПС; КонецЕсли; КонецЦикла; то есть сравнивались значения реквизитов в открытом объекте и сохраненном в базе. На УФ что то похожее нельзя сделать? |
|||
5
DrShad
07.11.17
✎
10:00
|
(4) у обработки нет ссылки ни ан УФ ни в ОФ
|
|||
6
lodger
07.11.17
✎
10:02
|
"обработка на УФ" же.
А внутре у ней неонка же. |
|||
7
first_may
07.11.17
✎
10:03
|
(5) да, понимаю.. значит этот вариант не пойдет..
|
|||
8
DrShad
07.11.17
✎
10:05
|
(7) как бы ты это сделал на ОФ? так же и тут
|
|||
9
first_may
07.11.17
✎
10:07
|
(8) я показал, как работало на обычных формах..
а на УФ ты говоришь, что нет ссылки.. вот я и задал вопрос тут.. |
|||
10
lodger
07.11.17
✎
10:09
|
(9) так ты показал как это работало с Документом или Справочником. но спрашиваешь про Обработку.
чуешь разницу? |
|||
11
Мимохожий Однако
07.11.17
✎
10:12
|
При открытии запоминай, что было. При закрытии сравнивай, что стало.
|
|||
12
first_may
07.11.17
✎
10:14
|
(10) а-а-а.. точно.. вчера переработал :)..
да, в ОФ это справочник и в нем в модуле объекта все это написано.. просто делаем переход на новую конфу и тут УФ.. вот я и заменил на обработку.. то есть в ней только как написали в (3)? |
|||
13
DrShad
07.11.17
✎
10:15
|
*рукалицо*
тяжело же тебе будет |
|||
14
Юрий Лазаренко
07.11.17
✎
10:23
|
(12) В УФ тоже нормально сработает вариант из (4).
|
|||
15
DrShad
07.11.17
✎
10:25
|
(14) не для обработки
|
|||
16
first_may
07.11.17
✎
10:30
|
(14) как?
Еще раз, может не совсем правильно написал вопрос. 1 обработка при открытии получает некоторое значение данных 2 пользователь меняет поле Примечание, например пишет ААА 3 до этого в базе было БББ 4 при записи надо занести в регистр историй, что "пользователь сделал изменение в примечание с БББ на ААА" |
|||
17
Юрий Лазаренко
07.11.17
✎
10:32
|
(15) Я в курсе.
(16) &НаСервере в процедуре ПередзаписьюНаСервере, например. |
|||
18
Юрий Лазаренко
07.11.17
✎
10:37
|
(16) В процедуре ПриСозданииНаСервере создаем новую структуру. Перебираем циклом реквизиты обработки и запоминаем в структуре первоначальные значения реквизитов в формате "Ключ = Имя реквизита" и "Значение = Значение реквизита". Структуру кладем во временное хранилище, адрес хранилища запоминаем в переменной.
В процедуре ПередЗакрытием достаем структуру из временного хранилища, заново проходим по всем реквизитам и сравниваем их значения со значениями в структуре. |
|||
19
first_may
07.11.17
✎
10:37
|
(18) вот вот..
"Перебираем циклом реквизиты обработки" - это не знаю как делать в УФ. |
|||
20
DrShad
07.11.17
✎
10:42
|
так же как в ОФ
|
|||
21
first_may
07.11.17
✎
10:57
|
(20) так
Для каждого Реквизит из Метаданные().Реквизиты Цикл .. ?? |
|||
22
Юрий Лазаренко
07.11.17
✎
10:59
|
(21) Нет, так:
Для Каждого Реквизит Из ЭтаФорма.ПолучитьРеквизиты() Цикл |
|||
23
Юрий Лазаренко
07.11.17
✎
11:03
|
+(22) У тебя же на форме могут быть не только реквизиты, которые хранятся в метаданных, а и те, которые были созданы программно.
|
|||
24
DrShad
07.11.17
✎
11:03
|
(21) если встроена в конфиг, то можно и так
|
|||
25
DrShad
07.11.17
✎
11:04
|
(23) он еще не достиг дзена, когда может на УФ программно создавать реквизиты
|
|||
26
Юрий Лазаренко
07.11.17
✎
11:05
|
(25) Через полгода достигнет, создаст, а алгоритом проверки останется старый и перестанет нормально работать. Пусть сразу делает как положено.
|
|||
27
first_may
07.11.17
✎
11:07
|
(23) "которые были созданы программно." - такого не будет
"еще не достиг дзена" - точно :) Спасибо всем .. |
|||
28
Юрий Лазаренко
07.11.17
✎
11:09
|
(27) ""которые были созданы программно." - такого не будет" - поверь мне, как разработчику типовых решений, в 1С может быть все )
|
|||
29
first_may
07.11.17
✎
11:10
|
(28) но обработка же моя.. она внешняя.. я в нее сам поместил нужные реквизиты..
|
|||
30
Cyberhawk
07.11.17
✎
12:15
|
Делать как советует (18) в ПриСозданииНаСервере не надо, т.к. значения реквизитов формы могут автоматически восстанавливаться, а происходит это уже после указанного обработчика
|
|||
31
first_may
07.11.17
✎
12:16
|
(30) ПриОткрытии?
|
|||
32
Cyberhawk
07.11.17
✎
12:17
|
(31) Если удобно делать это на клиенте, то да. Иначе в (3). И почитай справку в СП к тому обработчику.
|
|||
33
Юрий Лазаренко
09.11.17
✎
13:17
|
Да, тут (30) прав. Могут восстанавливаться, поэтому заполнять структуру после чтения настроек.
|
|||
34
Buster007
09.11.17
✎
13:20
|
Скачиваешь БСП, встраиваешь в свою конфу и подключаешь объект к версионированию. Все работает, ничего придумывать не надо.
|
|||
35
catena
09.11.17
✎
13:33
|
(34)Версионирование умеет версионировать обработки?
|
|||
36
Radkt
09.11.17
✎
13:49
|
Как вариант сделать каждому реквизиту его копию чтобы сохранять при изменении старое значение, просто продумать чтобы много раз не заполнялись, при каждом изменении.
|
|||
37
first_may
09.11.17
✎
19:22
|
Добрый день..
Хотел бы спросить, при открытии у меня есть ЭтотОбъект.Заказ типа ДанныеФормыСтруктура ДанныеФормыСтруктура Можно ли запомнить это значение до закрытия формы? Можно ли перебрать ее? |
|||
38
trooba
09.11.17
✎
20:05
|
(37) Глобальный контекст.ЗначениеВСтрокуВнутр (Global context.ValueToStringInternal)
Глобальный контекст (Global context) ЗначениеВСтрокуВнутр (ValueToStringInternal) Синтаксис: ЗначениеВСтрокуВнутр(<Значение>) Параметры: <Значение> (обязательный) Тип: Произвольный. Преобразуемое значение. Возвращаемое значение: Тип: Строка. Системное представление значения в информационной базе. Описание: Получает системное строковое представление переданного значения. Доступность: Сервер, толстый клиент, внешнее соединение. Примечание: Используется для сохранения функциональной совместимости с 1С:Предприятием 7.7. Использовать для других целей не рекомендуется. Пример: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СоответствиеСчетовСрезПоследних.СчетХозрасчетный, | ... |ИЗ | РегистрСведений.СоответствиеСчетовБУиМСФО.СрезПоследних(&Период, ) КАК СоответствиеСчетовСрезПоследних"; Запрос.УстановитьПараметр("Период", Период); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); Файл = Новый ЗаписьXML; Файл.ОткрытьФайл(ИмяФайла); Файл.ЗаписатьОбъявлениеXML(); Файл.ЗаписатьНачалоЭлемента("СоответствиеСчетов"); Пока Выборка.Следующий() Цикл Файл.ЗаписатьНачалоЭлемента("Запись"); Файл.ЗаписатьНачалоЭлемента("СчетХозрасчетный"); Файл.ЗаписатьТекст(XMLСтрока(Выборка.СчетХозрасчетный)); Файл.ЗаписатьКонецЭлемента(); // ... Файл.ЗаписатьНачалоЭлемента("ЗначениеТип"); Файл.ЗаписатьТекст(ЗначениеВСтрокуВнутр(ТипЗнч(Выборка.Значение))); Файл.ЗаписатьКонецЭлемента(); Файл.ЗаписатьНачалоЭлемента("Значение"); Файл.ЗаписатьТекст(XMLСтрока(Выборка.Значение)); Файл.ЗаписатьКонецЭлемента(); // ... Файл.ЗаписатьКонецЭлемента(); КонецЦикла; Файл.ЗаписатьКонецЭлемента(); См. также: Глобальный контекст, метод ЗначениеИзСтрокиВнутр -------------------------------------------------------------------------------- Методическая информация |
|||
39
first_may
09.11.17
✎
20:20
|
(38) то есть
1 в моддуле формы объявляю Перем Тест; 2 затем запоминаю &НаСервере Процедура ПриОткрытииНаСервере() Тест = ЗначениеВСтрокуВнутр(ЭтотОбъект.Заказ); 3 а потом считываю &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Рез = ЗначениеИзСтрокиВнутр(Тест); так? |
|||
40
trooba
09.11.17
✎
20:54
|
(39) Например так
|
|||
41
first_may
09.11.17
✎
20:59
|
(40) тогда вот тут
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Рез = ЗначениеИзСтрокиВнутр(Тест); вижу, что Тест - неопределено :( |
|||
42
first_may
09.11.17
✎
21:29
|
Как можно сохранить ДанныеФормыСтруктура, полученные при открытии, до закрытия формы?
|
|||
43
h-sp
09.11.17
✎
21:37
|
(41) сделай реквизит формы Тест. А не Перем
|
|||
44
rozer76
09.11.17
✎
22:03
|
(41) нда, перем на сервере не доживает до след серверного вызова ты не знал?
|
|||
45
first_may
09.11.17
✎
22:09
|
(44) писать на УФ только учусь
|
|||
46
first_may
09.11.17
✎
22:09
|
(43) а тем этой переменной?
|
|||
47
first_may
09.11.17
✎
22:09
|
а-а-а.. строка
|
|||
48
first_may
09.11.17
✎
22:16
|
1 сделал Тест как реквизит формы
2 тогда тут &НаСервере Процедура ПриОткрытииНаСервере() Тест = ЗначениеВСтрокуВнутр(ЭтотОбъект.Заказ); Тест принимает значение {"#",afe4a3fc-31ab-435f-b2ab-eba881452f56} 3 а далее на форме что то меняю и нажимаю записать и в &НаСервере Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи) Рез = ЗначениеИзСтрокиВнутр(Тест); Тест = {"#",afe4a3fc-31ab-435f-b2ab-eba881452f56} Рез = Неопределенно то есть получается не считывает? все это хочу сделать, что бы потом данные ДанныеФормыСтруктура сравнить и понять что менялось |
|||
49
Юрий Лазаренко
13.11.17
✎
10:21
|
(48) А зачем переводить в строку внутр? Храни нужное значение в переменной прямо как ссылку, без конвертации.
|
|||
50
first_may
14.11.17
✎
00:20
|
Все спасибо, все получилось.
Один маленький вопрос - в типовых формах списка документов есть кнопка меню Все действия, а в ней Настройка списка. Можно ли такой пункт включить в своей форме? Подскажите пож, как это сделать? |
|||
51
first_may
14.11.17
✎
12:06
|
Очень нужен совет, как настроить меню Все действия, а в ней Настройка списка. ??
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |