Как найти, что перезаполняет регистр сведений?
По теме из базы знаний
- Несколько рекомендаций готовящимся к 1С:Специалист по Платформе
- Согласование цен по заказу
- Полезные приемы при работе с Конвертацией данных 2.1. Логирование, интерактивное управление, дозаполнение и постпроведение документов
- Как сдать экзамен 1С:Специалист по платформе?
- Разбор задачи с собеседования: раскрытие потенциала Списка значений
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3) ну придется код ковырять, я и спросил "зачем" если все работало, а так надо найти объект в который вносятся нежелательные изменения, а потом в коде искать хотя бы получение этого объекта, по другому, к сожалению никак
(5)
Дополнение к условию вопроса: Глобальный поиск по конфигурции не нашел упоминаний в коде данного регистра.
Я вижу выход смотреть код каждого регзадания, но может есть варик проще?
Начните с поиска имени этого регистра в коде...
Дополнение к условию вопроса: Глобальный поиск по конфигурции не нашел упоминаний в коде данного регистра.
Я вижу выход смотреть код каждого регзадания, но может есть варик проще?
Добрый день!
Регистр очищает программный код.
Он может быть не только в рег задании и не только в конфе.
Он может быть в доп обработке (см.дополнительные отчеты и обработки), которая настроена выполняться по расписанию. Такое вы не найдете в глобальном поиске.
Так же он может быть и в расширении.
Ещё дополнительно можете глянуть журнал регистрации на предмет записей изменения этого регистра если у вас это подключено такое логирование.
Регистр очищает программный код.
Он может быть не только в рег задании и не только в конфе.
Он может быть в доп обработке (см.дополнительные отчеты и обработки), которая настроена выполняться по расписанию. Такое вы не найдете в глобальном поиске.
Так же он может быть и в расширении.
Ещё дополнительно можете глянуть журнал регистрации на предмет записей изменения этого регистра если у вас это подключено такое логирование.
Прописать в событие модуля набора записей (перед записью, при записи, найдете куда лучше), запись под каким пользователем и в какое время выполнялось удаление - если есть какая-то доступная серверу 1С шара, то лучше писать в файл, чтобы не открывать минут 20 журнал регистрации.
Но можно и в журнал.
Возможно, одного этого хватит. Даже если регистр чистит, что-то совсем уж внешнее, типа внешнего соединения, или "такая чуда" как "DELETE /ib/odata/standard.odata/InformationRegister_ ...".
Не поможет в случае чистки таблицы в самой базе данных. Вероятный вариант, т.к. вплоть до последних версий, удалить "чего-то много" у 1С наказывалось многочасовым удалением того, что в самой базе делается за минуту. Если чистится кем-то плохим, нарушающим лиц. соглашение, через что-то типа ADO, то ищите по коду наименование таблицы в регистре так, как оно называется в СУБД.
Еще вариант - выгружаете конфигурацию (и расширения) в файлы и ищете кто работает с этим РС - только учтите, что это не обязательно будет "РегистрыСведений.ВашРегистр", ищите только по его наименованию (в т.ч. и наименованию в базе).
Если и это не поможет, то цепляйте триггер на событие удаления в самой базе и пишите им куда хотите, но напоминаю, что это ая-яй и 1С такое делать запрещает.
Но можно и в журнал.
Возможно, одного этого хватит. Даже если регистр чистит, что-то совсем уж внешнее, типа внешнего соединения, или "такая чуда" как "DELETE /ib/odata/standard.odata/InformationRegister_ ...".
Не поможет в случае чистки таблицы в самой базе данных. Вероятный вариант, т.к. вплоть до последних версий, удалить "чего-то много" у 1С наказывалось многочасовым удалением того, что в самой базе делается за минуту. Если чистится кем-то плохим, нарушающим лиц. соглашение, через что-то типа ADO, то ищите по коду наименование таблицы в регистре так, как оно называется в СУБД.
Еще вариант - выгружаете конфигурацию (и расширения) в файлы и ищете кто работает с этим РС - только учтите, что это не обязательно будет "РегистрыСведений.ВашРегистр", ищите только по его наименованию (в т.ч. и наименованию в базе).
Если и это не поможет, то цепляйте триггер на событие удаления в самой базе и пишите им куда хотите, но напоминаю, что это ая-яй и 1С такое делать запрещает.
Вариант 1. Посмотреть по структуре хранения как называется таблица в БД, соответствующая регистру.
Включить на ночь ТЖ со сбором события SDBL.
Утром прийти, поискать в ТЖ по имени таблицы. В свойстве Context будет стек вызовов, откуда код вызывался.
Вариант 2. Добавить на ночь расширением в модуль набора записей что-то типа
Утром прийти, отобрать в ЖР по событию "Попался", увидеть стек вызовов.
Включить на ночь ТЖ со сбором события SDBL.
Утром прийти, поискать в ТЖ по имени таблицы. В свойстве Context будет стек вызовов, откуда код вызывался.
Вариант 2. Добавить на ночь расширением в модуль набора записей что-то типа
Попытка
А = 1 / 0;
Исключение
ЗаписьЖурналаРегистрации("Попался",,,,ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;Утром прийти, отобрать в ЖР по событию "Попался", увидеть стек вызовов.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот