Как в 1с посмотреть кто поставил пометку на удаление
Всем привет!
Пользователь при вводе контрагента в документе набивает, например, «ООО Контрагент»,
Вылетает 2 «ООО Контрагент», но 1 из них – помеченный на удаление!
Как сделать так, чтобы в этом списке удаленные не показывались? Формы обычные
Документы помеченные на удаление
Ситуация: в 2008 г. до 2011 г. сидели все кому не лень за 1с, по 76 счету ( мы по нему ведем расчет.
Не отображать записи, помеченные на удаление. 1С V77
Возникла необходимость не отображать помеченные на удаление записи в различных местах. Например в.
Загрузить помеченные на удаление записи из dbf
Импортирую dbf-файл VFP, используя провайдер Microsoft OLE DB Provider for Visual FoxPro Set cnn =.
ПолеВвода (TextBox)
ОкончаниеВводаТекста (TextEditEnd)
Синтаксис:
Тип: Строка.
Строка текста, введенная в поле ввода.
Тип: Значение; СписокЗначений.
Параметр может содержать значение для размещения в поле ввода или список значений для последующего выбора одного из них и размещения в поле ввода.
Параметр заполняется списком значений для последующего выбора одного из них и размещения его в поле ввода. Если список содержит единственное значение система автоматически подставит его в поле ввода. Пометки элементов этого списка значений могут использоваться для отметки значений, соответствующих помеченным на удаление объектам. В том случае, если пользователь выберет одно из помеченных значений, система выдаст стандартное предупреждение о выборе помеченного на удаление объекта.
Тип: Булево.
В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.
Значение по умолчанию: Истина.
Описание:
Возникает при формировании значения по отредактированному тексту. Например, в момент перехода на другой элемент управления формы, при закрытии формы и т.д.
ищу негодяя - кто пометил весь спр. физ лица на удаление. Через Журнал регистрации не нашел. в отборе поставил фильтр на "Данные"-"Удаление".
Что я делаю не так?
ну да. согласен. изменения были зафиксированы, их я нашел, но вот как доказать что это именно пометка на удаление? там об этом не написано.
(5) Восстановить из резервной копии на момент до этого изменения, посмотреть на пометку. Если ее нет, и в ЖР события Изменения только от одного пользователя - значит он)
Если "весь спр. физ лица" то будет на каждом элементе.
А вообще ты подумай, может сам написал г*вно код который метит на удаление, вот он и на метил! (встречал такое!)
(9) . паяешь машину времени, возвращаешься назад и настраиваешь каждодневные бекапы?
(10) (15) пользователь сделает корочьи глаза и скажет - я ни чо не это, аносамо. Следствие зайдет в тупик - проходили неоднократно
(0) Да то же с удивлением узнал что 1С убрал из журнала регистрации логирование такого полезного дествия.
А то пометили, а ты потом удалил если ссылок на объект нет и ппц. Кто чо ищи потом ветра в поле.
Чует моё сердце, что _весь_справочник пометить на удаление - не руками сделано. А стало быть, либо какая обработка была написана, либо "Обработка справочников и документов" была сделана. Что касается самописной обработки - это к автору. А вот насчёт штатной - выполнение обработки журнал не фиксирует. Но вот изменения по всему справочнику от одного пользователя - как бы намекают.
(19) Может у них весь справочник в одной группе - тогда достаточно группу на удаление поменить - вот и весь справочник :)
(20) у рядовых пользюков, у которых ни мозгов, ни ответственности, не должно быть прав на пометку удаления
(21) Тогда в журнале будет "изменение" для той самой верхней группы. И этого изменившего - брать за жабры и иные деликатные места.
(24) по всем записям будет событие (кроме тех, которые уже были помечены) + по всем подчиненным справочникам.
Но за жабры однозначно :)
(25) А тут (если все - в одной группе) все записи смотреть не надо. Отфильтровать по головной группе - и того за жабры.
(0) > кто пометил весь спр. физ лица на удаление
Нефиг разрешать юзверю множественное выделение в списках
(31) Что-то потерял нить той дискуссии, если не трудно, скинь, пожалуйста ссылку на тему. Давно это было, кажись
А по делу: в 1С есть возможно программно логгировать действия пользователя в журнале регистрации. Интреактивные действия с объектами конфигурации (открыти, сохранение, начало проведения. ) сохраняются автоматически. Никто не мешает натыкать своих записей
Пока был 1с-ником, все действия над БД отлавливал. Опасные обработки снабжал "ручными" записями в журнал регистрации. Ни одна бабушка не ушла ))
буквально на днях писал подписку на событие ПередЗаписью, которое срет в журнал регистрации при пометке на удаление/снятие пометки
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
Особенности использования поля "ПометкаУдаления" объектов базы данных
В структуре объектов базы данных 1С:Предприятия 8 имеется поле ПометкаУдаления. Оно предназначено для работы механизма удаления с контролем ссылочной целостности. Данный механизм позволяет исключить удаление пользователем объекта, если на него имеются ссылки в других данных хранящихся в базе данных.
С точки зрения системы, удаление без контроля ссылочной целостности (непосредственное удаление) допускается, и наличие в базе данных ссылок на отсутствующие объекты не является ошибкой. Область использования механизма удаления с контролем ссылочной целостности определяется разработчиком конфигурации и администратором. Разработчик конфигурации может регулировать возможность вызова непосредственного удаления пользователями для конкретных типов объектов с помощью права "Интерактивное удаление". Например, возможность непосредственного удаления может быть запрещена для всех пользователей или может быть оставлена только ответственным пользователям. Данное право влияет только на интерактивные действия, вызываемые стандартными командами системы. Если удаление выполняется средствами встроенного языка, то данное право может проверяться в модуле. Разумеется, в некоторых случаях непосредственное удаление должно выполняться, если это предусмотрено логикой решаемой задачи. Например, если выполняется массированное удаление данных регламентной обработкой. Тогда проверка права может не выполняться.
Механизм удаления с контролем ссылочной целостности предоставляет определенный сервис, но при этом не нарушает работу остальных механизмов. Пометка на удаление является только признаком того, что пользователь намеревается удалить объект. Поле ПометкаУдаления в 1С:Предприятии 8 по своему поведению, в основном, не отличается от других системных полей объекта. Оно может быть установлено присваиванием значения свойства объекта, и после выполнения записи объект будет фактически помечен на удаление.
Кроме возможности установки пометки удаления путем непосредственного присваивания свойства и записи объекта, существует метод УстановитьПометкуУдаления() . Этот метод выполняет установку свойства в указанное в параметре значение, запись объекта, а также дополнительные действия, содержание которых зависит от типа объекта. Например, для проведенного документа выполняется отмена проведения, а для справочника выполняется пометка на удаление всех подчиненных элементов в этом справочнике и в подчиненных справочниках. При выполнении пометки на удаление стандартными командами пользовательского интерфейса выполняются действия, соответствующие этому методу. Однако следует учитывать, что эти действия являются только рекомендованным типовым способом выполнения пометки на удаление. Они не являются обязательными. При установке пометки удаления путем присвоения значения свойства и записи объекта дополнительных действий не производится. Таким образом, разработчик может при необходимости выполнить пометку удаления без дополнительных действий.
Пометка на удаление является полем, значение которого используется системой в механизме удаления с контролем ссылочной целостности, однако сам процесс пометки на удаление и снятие пометки на удаление не является, с точки зрения объекта, каким-то выделенным процессом. Поэтому специального обработчика, сопровождающего пометку и снятие пометки, не существует. Так же как и для любого другого поля объекта, значение поля ПометкаУдаления может анализироваться в обработчиках ПередЗаписью() и ПриЗаписи() для выполнения каких-либо проверок или других действий. Если необходимо анализировать только записываемое значение, то достаточно проверять собственно значение поля. Если необходимо определить факт записи измененного значения, то в обработчике ПередЗаписью() необходимо организовать считывание значения данного поля из базы данных и сравнивать полученное значение с текущим значением.
Следует заметить, что в расширениях табличного поля существуют события ПередУстановкойПометкиУдаления . Однако эти события сопровождают только вызов пометки удаления с помощью стандартной команды. Поэтому эти события могут использоваться только для анализа интерактивного вызова пользователем пометки удаления в конкретной форме, а для решения общих задач контроля значения данного поля или выполнения связанных действий необходимо использовать события самого объекта.
Если документ помечен на удаление, то не допускается выполнение проведения этого документа. Однако допускается наличие движений у документа, помеченного на удаление, так как в 1С:Предприятии 8 понятие проведенности документа не связано жестко с наличием движений. Например, это используется для документов, предназначенных для ручного редактирования движений. В них при пометке на удаление не должно выполняться удаление движений, так как пользователь может снять пометку на удаление, и движения при этом не должны потеряться. В конфигурации средствами встроенного языка может быть реализовано снятие активности с записей регистров при установке пометки удаления такого документа. Однако это будет являться методологическим приемом, совмещающим пометку на удаление и отключение активности движений.
Необходимо получить список всех помеченных на удаление элементах, в ОПРЕДЕЛЁННЫХ объектах конфигурации. Использую:
Возвращаются ВСЕ помеченные объекты, во всех справочниках, документах и т.п.
Ни каких ошибок, просто игнорирует параметры отбора и всё. Пытался передать массив со списком справочников первым параметром - ошибка несоответствия типов. Где-то вычитал, что в первый параметр надо пустой массив, а во второй уже список - результата нет. Оставлял первый параметр пустым - тот же эффект. СП читал долго и нудно. Версия платформы 8.3.15, совместимости нет.
Заранее спасибо за отклик!
Поиск по конкретным объектам метаданным не работает, но можно исключить остальные объекты метаданных.
Всем большое спасибо за участие в столь горячем обсуждении! Пошёл путем заполнения третьего параметра т.е. указания объектов которые НЕ надо искать. Работает! С точки зрения архитектуры - криво, с точки зрения реального продакшена - самый адекватный вариант. Обращаться в 1с ни какого смысла не вижу, они об этой проблеме явно знают. Почему воз и ныне там - вопрос риторический. Заинтересовал, однако, другой вопрос: что должно быть в первом параметре? Общие реквизиты-разделители? В СП как-то так написано, что примерно понятно, но по факту понятно слабо. Есть у кого-нибудь примеры, использовал кто-нибудь?
Ну судя по платформе и отсутствию режима совместимости, то должно работать.
Кроме номенклатуры находит и другие объекты?
Тогда ставьте последнюю платформу тестируйте, если воспроизводится пишите в 1С.
(4) Так и я думаю, что должно работать, а не работает) В 1с можно писать годами, а решение нужно сейчас. С платформой, чисто ради интереса, поиграюсь. Но во-первых, не думаю что это что-то даст. Во-вторых, продакшен будет всё равно на этой платформе.
(5) не правда, грамотный вопрос и ответ в течении пары дней. А на форуме платформу не пишут, а только дают советы как кто-то наступал на такие же грабли и возможно нашел решение!
- может быстрее будет запросом? программно сформировать текст запроса по требуемым объектам метаданных.
(2) Вот мой последний вариант, здесь приведенный, он как раз по этому шаблону. Единственное, поясните (не могу понять):
Какой смысл несет? Этот массив нигде не используется ведь?
(3) Не мобильная, обычная платформа. Код исполняется в серверном привилегированном модуле, проблем с правами тоже не должно быть.
(8) Тут с вами не согласен. Просто, если проблему ни кто не встречал, то на её решение требуется время, а иногда у людей его не много и приходится ждать.
Хотя в 1С можно написать параллельно, они может что то официально ответят про особенности.
Поиск по конкретным объектам метаданным не работает, но можно исключить остальные объекты метаданных.
На одном форуме нашел описание опытов человека, он пишет что:
1) Если первый параметр указать, то будет работать второй параметр.
2) Если не указать, то будет искать везде, если не указаны исключения.
Видимо поэтому в примерах указывается первый параметр как пустой массив. Но видимо так не работает и надо что бы массив был не пустым. Но у меня нет базы для проверки этой теории, так как ни общие реквизиты, ни разделение данных не используется. А городить тестовую базу нет возможности.
(11) ранее на форуме писали, что нужно пошаманить, в справке в принципе все расписано, нужно только тестировать.
(12) В справке описан поиск всех объектов и что можно добавить или исключить объекты поиска, но о том что это как то по особому работает, ничего не написано. Пока не проверен вариант с разделением данных (первый параметр), то предполагаю, что поиск работает везде, если не указано исключение.
Глобальный контекст (Global context)
НайтиПомеченныеНаУдаление (FindMarkedForDeletion)
Синтаксис:
НайтиПомеченныеНаУдаление(, , )
Параметры:
(необязательный)
Тип: Массив.
Определяет область поиска объектов, помеченных на удаление. Область устанавливается комбинацией разделителей, в состав которых включены объекты метаданных, среди данных которых следует выполнять поиск.
Элемент массива имеет тип Массив.
Элемент вложенного массива имеет тип:
Объект метаданных – Общий реквизит, разделяющий данные.
Строка – имя общего реквизита, разделяющего данные.
По умолчанию имеет значение Неопределено.
Допустимые значения:
Неопределено - выбираются все объекты метаданных, если параметр также имеет значение Неопределено. Иначе равносильно передаче пустого массива.
Массив с комбинациями разделителей, определяющий область поиска.
Примечание. Если комбинация разделителей содержит повторы, то вызывается исключение, т.к. в конфигурации не может быть объектов метаданных, дважды включенных в состав одного разделителя.
Значение по умолчанию: Неопределено.
(необязательный)
Тип: Массив.
Позволяет явно указать объекты метаданных, которые должны присутствовать в области поиска ссылок помеченных на удаление объектов.
Элементом массива могут быть:
Объект метаданных.
Строка – полное имя объекта метаданных.
Допустимые значения:
Неопределено,
Пустой массив,
Массив объектов метаданных.
Значение по умолчанию: Неопределено.
(необязательный)
Тип: Массив.
В качестве элементов массива могут выступать:
Объект метаданных,
Строка – полное имя объекта метаданных.
Свойство позволяет явно указать объекты метаданных, которые следует исключить из области поиска объектов, помеченных на удаление.
Допустимые значения:
Неопределено
Пустой массив (нет объектов, которые необходимо дополнительно включить в область поиска).
Массив объектов метаданных.
Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: Массив.
Массив со списком ссылок помеченных на удаление объектов.
Описание:
Осуществляет поиск всех помеченных на удаление объектов, которые доступны пользователю в рамках текущего сеанса и которые попадают в область поиска, заданную параметрами , и .
Если параметр не определен или используется режим совместимости конфигурации Версия8_3_4 и ниже, поиск осуществляется среди всех объектов, которые доступны в рамках текущего сеанса с учетом разделения (учитывается и условное разделение). При этом параметры и не учитываются.
Если режим совместимости не используется и параметры и имеют , отличном от Неопределено выполняет поиск всех помеченных на удаление объектов, которые доступны пользователю из текущего сеанса и которые попадают в область поиска, заданную параметрами , и .
Поиск выполняется среди доступных пользователю данных: у пользователя должно быть право на чтение объекта, данные выбираются только после проверки прав ограничения доступа.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
Вызов метода выполняет обращение к серверу.
Примечание:
На мобильной платформе параметры , и игнорируются.
Пример:
ПомеченныеОбъекты = НайтиПомеченныеНаУдаление();
Для Каждого ПомеченныйЭлемент Из ПомеченныеОбъекты Цикл
Сообщить("Помечен на удаление: " + ПомеченныйЭлемент);
КонецЦикла;
Использование в версии:
Доступен, начиная с версии 8.3.5.
Методическая информация
Глобальный контекст (Global context)
НайтиПомеченныеНаУдаление (FindMarkedForDeletion)
Синтаксис:
НайтиПомеченныеНаУдаление(, , )
Параметры:
(необязательный)
Тип: Массив.
Определяет область поиска объектов, помеченных на удаление. Область устанавливается комбинацией разделителей, в состав которых включены объекты метаданных, среди данных которых следует выполнять поиск.
Элемент массива имеет тип Массив.
Элемент вложенного массива имеет тип:
Объект метаданных – Общий реквизит, разделяющий данные.
Строка – имя общего реквизита, разделяющего данные.
По умолчанию имеет значение Неопределено.
Допустимые значения:
Неопределено - выбираются все объекты метаданных, если параметр также имеет значение Неопределено. Иначе равносильно передаче пустого массива.
Массив с комбинациями разделителей, определяющий область поиска.
Примечание. Если комбинация разделителей содержит повторы, то вызывается исключение, т.к. в конфигурации не может быть объектов метаданных, дважды включенных в состав одного разделителя.
Значение по умолчанию: Неопределено.
(необязательный)
Тип: Массив.
Позволяет явно указать объекты метаданных, которые должны присутствовать в области поиска ссылок помеченных на удаление объектов.
Элементом массива могут быть:
Объект метаданных.
Строка – полное имя объекта метаданных.
Допустимые значения:
Неопределено,
Пустой массив,
Массив объектов метаданных.
Значение по умолчанию: Неопределено.
(необязательный)
Тип: Массив.
В качестве элементов массива могут выступать:
Объект метаданных,
Строка – полное имя объекта метаданных.
Свойство позволяет явно указать объекты метаданных, которые следует исключить из области поиска объектов, помеченных на удаление.
Допустимые значения:
Неопределено
Пустой массив (нет объектов, которые необходимо дополнительно включить в область поиска).
Массив объектов метаданных.
Значение по умолчанию: Неопределено.
Возвращаемое значение:
Тип: Массив.
Массив со списком ссылок помеченных на удаление объектов.
Описание:
Осуществляет поиск всех помеченных на удаление объектов, которые доступны пользователю в рамках текущего сеанса и которые попадают в область поиска, заданную параметрами , и .
Если параметр не определен или используется режим совместимости конфигурации Версия8_3_4 и ниже, поиск осуществляется среди всех объектов, которые доступны в рамках текущего сеанса с учетом разделения (учитывается и условное разделение). При этом параметры и не учитываются.
Если режим совместимости не используется и параметры и имеют , отличном от Неопределено выполняет поиск всех помеченных на удаление объектов, которые доступны пользователю из текущего сеанса и которые попадают в область поиска, заданную параметрами , и .
Поиск выполняется среди доступных пользователю данных: у пользователя должно быть право на чтение объекта, данные выбираются только после проверки прав ограничения доступа.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Вызов метода выполняет обращение к серверу.
Примечание:
На мобильной платформе параметры , и игнорируются.
Пример:
ПомеченныеОбъекты = НайтиПомеченныеНаУдаление();
Для Каждого ПомеченныйЭлемент Из ПомеченныеОбъекты Цикл
Сообщить("Помечен на удаление: " + ПомеченныйЭлемент);
КонецЦикла;
Использование в версии:
Доступен, начиная с версии 8.3.5.
Методическая информация
Ситуация в следующем, в справочнике "Договоры контрагентов" было помечено на удаление одно из свойств. При чистке помеченных на удаление и свойство и данные этого свойства удалились из базы.
Восстановить данные, я восстановлю(благо есть копия базы). Вопрос в следующем, как найти того, кто пометил на удаление?
Т.к. история изменения объектов пишется только по справочникам и документам, а свойство - Планы видов характеристик
В журнале регистрации тоже нет такого объекта, как Планы видов характеристик "Свойства объектов".
Как узнать кто занимает кто потребляет всю ширину канала
У меня вопрос в тему: 1) роутер (zyxel keenetic dsl) + USB-модем (Хуавей H3270s, короче.
Как узнать свойство Name TWebBrowser
Как узнать свойство Name TWebBrowser, Обратившись к WebBrowser1.Name он выдает 'Элемент управления.
Как узнать свойство Сaption файла?
У меня есть файлы форматов pdf, chm, djvu и мне надо управлять этими окнами через дескрипторы. Есть.
Как узнать какой свойство css используется
Здравствуйте. Подскажите, какое свойство css использовать, чтобы получить выпадающее меню, которое.
В журнале регистрации пишутся все изменения, нельзя что-то отключить. Либо покажите, что вы имеете ввиду под
Ну и настройте нормально роли, чтобы пользователи не могли помечать на удаление нужные объекты конфигурации.
В журнале регистрации пишутся все изменения, нельзя что-то отключить. Либо покажите, что вы имеете ввиду под
В рабочей базе, в журнале регистрации действительно отображены "Планы видов характеристик".
Я же искала в восстановленной копии рабочей базы. Т.е. копия делается ночью, архивируется и хранится. После удаления данных одну из таких копий восстановили в тестовую базу и вот в ней в журнале регистраций нет "Планов видов характеристик", вернее есть, но один только объект - "Вопросы для анкетирования"(которых нет в рабочей).
Рабочая база от 20.09, а восстановленная копия от 10.09. Почему разные данные в журнале регистраций?
В рабочей нашла, кто напакостил)))))
Ну и настройте нормально роли, чтобы пользователи не могли помечать на удаление нужные объекты конфигурации.
Читайте также: