Механизм проверки изменения объекта существует ? (до и после записи)
Добрый день !
Требуется реализовать следующее: при открытии карточки элемента справочника, - запомнить все "интересующие нас поля"
Когда юзер нажимает кнопку [Записать и закрыть] (или записать) сравниваем "интересующие нас поля" с ранее сохраненными; Если изменений нет - не записываем элемент, а просто закрываем.
Это необходимо, чтобы не срабатывала подписка на события по которой происходит обмен.
Подскажите как это реализовать ? И есть ли какие-нибудь стандартные методы (например где хранятся все данные элемента на момент открытия, до записи) для удобной реализации ?
Требуется реализовать следующее: при открытии карточки элемента справочника, - запомнить все "интересующие нас поля"
Когда юзер нажимает кнопку [Записать и закрыть] (или записать) сравниваем "интересующие нас поля" с ранее сохраненными; Если изменений нет - не записываем элемент, а просто закрываем.
Это необходимо, чтобы не срабатывала подписка на события по которой происходит обмен.
Подскажите как это реализовать ? И есть ли какие-нибудь стандартные методы (например где хранятся все данные элемента на момент открытия, до записи) для удобной реализации ?
По теме из базы знаний
- Выгрузка-загрузка любых данных из 1С (и измененных) в XML между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Типовой механизм упрощенного изменения конфигурации в ERP 2.0 и УТ 11
- Изменение реквизитов существующих объектов (документов) 1С без сохранения
- Надежная регистрация изменений. Версионирование объектов. Аудит. Все средствами SQL Server
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода - для УНФ, УТ, КА, ERP
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Если обмен написан через КД 2.1, то обычно изменения реквизитов объектов, которые не участвуют в правилах конвертации не приводят к регистрации объекта к обмену.
А если участвуют, то было бы странно не регистрировать объект к обмену, раз уж изменились реквизиты, которые должны быть одинаковы в синхронизируемых базах.
Это необходимо, чтобы не срабатывала подписка на события по которой происходит обмен.
Если обмен написан через КД 2.1, то обычно изменения реквизитов объектов, которые не участвуют в правилах конвертации не приводят к регистрации объекта к обмену.
А если участвуют, то было бы странно не регистрировать объект к обмену, раз уж изменились реквизиты, которые должны быть одинаковы в синхронизируемых базах.
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Проверка() Тогда
Отказ = Истина;
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция Проверка()
Если Объект.Ссылка.Наименование = Объект.Наименование Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
Если Проверка() Тогда
Отказ = Истина;
Закрыть();
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция Проверка()
Если Объект.Ссылка.Наименование = Объект.Наименование Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
такого типового механизма не знаю
по любому придется писать свой код и придумывать как сравнить элемент ПОСЛЕ открытия и ДО записи
вариантов всего два
1. сравнивать ВСЕ реквизиты
2. сравнивать КЛЮЧЕВЫЕ реквизиты
тут главное получить состояние ДО изменения
1. можно при открытии куда-нибудь их "запомнить"
2. можно перед записью их же получить запросом по ссылке
ну а дальше уже дело техники, сравнить значения из двух наборов не сложно
по любому придется писать свой код и придумывать как сравнить элемент ПОСЛЕ открытия и ДО записи
вариантов всего два
1. сравнивать ВСЕ реквизиты
2. сравнивать КЛЮЧЕВЫЕ реквизиты
тут главное получить состояние ДО изменения
1. можно при открытии куда-нибудь их "запомнить"
2. можно перед записью их же получить запросом по ссылке
ну а дальше уже дело техники, сравнить значения из двух наборов не сложно
При открытии прсвоим в переменные значения
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ВалютаДокумента = Объект.ВалютаДоговораЛизинга;
.......
.......
КонецПроцедуры
Можно воспользоваться БСП (выше 2.5) например Объект в структуру
ВыбранныеРеквизитыОбъекта =ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыбСсылка,"Ссылка, КассаККМ, Магазин, Организация, СуммаДокумента, СуммаВозвратов",Ложь);
А перед записью сравнить новую структуру. Потом принять решение.
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ВалютаДокумента = Объект.ВалютаДоговораЛизинга;
.......
.......
КонецПроцедуры
Можно воспользоваться БСП (выше 2.5) например Объект в структуру
ВыбранныеРеквизитыОбъекта =ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ВыбСсылка,"Ссылка, КассаККМ, Магазин, Организация, СуммаДокумента, СуммаВозвратов",Ложь);
А перед записью сравнить новую структуру. Потом принять решение.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот