Очистка регистра

Декоративное изображение

Для получения доступа к форуму необходимо авторизоваться
или зарегистрироваться на сайте.

Пользователь ПП
RSS
Добрый день.  Имеем Альфа-Авто ААА 4.1.01.13, ТДМС + переписанная нами.
Недавно начались непонятные проблемы регистр сведений Контактная информация очищается самопроизвольно. Никаких записей в журнале не остается что манипуляции были проделаны с регистром. Отработали варианты ошибок в коде, тоже нету. Проблема пришла неожиданно, до этого кардинального ничего не дорабатывали. Сделали слежку по результату запроса и сколько тратится времени на очистку 6-8 секунд (объем регистра 80 тысяч записей). В какую сторону идти, что может послужить периодическому удалению данных без оставления следов в журнале регистрации…
Декоративное изображение 124
Сотрудник 1С-Рарус
Добрый день,
Данная ошибка является ошибкой релиза. Просьба обновить конфигурацию.
Пользователь ПП
Цитата
Вера  Васильева  пишет:
Добрый день,
Данная ошибка является ошибкой релиза. Просьба обновить конфигурацию.

Вера, а почему тогда раньше эта ошибка не проявлялась никак? Еще уточните пожалуйста какие именно модули ошибка затрагивает? киКонтактнаяИнформация и Контрагенты? Или еще какие то моменты? Или ошибка в компоненте?
Интересующийся
У меня не было возможности обновить поэтому сделал очень просто
В модуле набора записи регистра сведений контактная информация добавил
Код
Процедура ПередЗаписью(Отказ, Замещение)
   

   Если обЗначениеНеЗаполнено(ЭтотОбъект.Отбор.Объект.Значение) Тогда
      Сообщить("Попытка удалить всю контактную информацию");
      Отказ=Истина;
      Возврат;
   КонецЕсли;
   
КонецПроцедуры



Ну а потом все просто. Пользователи сами сообщили что у них не получается сделать.
Пользователь ПП
Евгений Шульц,
От полной очистки регистра и так стоит защита...
Код
   
// проверка для предотвращения попытки полной зачистки регистра
   Если ЭтотОбъект.Количество() = 0 Тогда
      Если ОбЗначениеНеЗаполнено(ЭтотОбъект.Отбор.Объект.Значение) и
         ОбЗначениеНеЗаполнено(ЭтотОбъект.Отбор.Тип.Значение) и
         ОбЗначениеНеЗаполнено(ЭтотОбъект.Отбор.Вид.Значение) Тогда
         СтрокаОтказа = "";
         Отказ = Истина;
      КонецЕсли;
   КонецЕсли;
Интересующийся
Цитата
Сергей Терпугов пишет:
От полной очистки регистра и так стоит защита...
Как видно одна не срабатывает.
Интересующийся
У нас 19 релиз и точно такая же петрушка с регистром "Кураторы".
У вас в каждом релизе разные регистры чтоли очищаются?
Пользователь ПП
Skrepka Skrepka,
Такие же симптомы? Независимая очистка, без следов в журнале регистрации?
Интересующийся
Да, в какой-то момент просто пропадают все записи. Пришлось дорабатывать справочник "Договоры взаиморасчётов" и хранить информацию о кураторах непосредственно в нём, не задействуя регистр.
Пользователь ПП
Что то сотрудника компании Рарус притихли...
Сотрудник 1С-Рарус
Как уже было написано выше данная ошибка исправлена (и достаточно давно). В какой именно строке кода было исправление уже тяжело вспомнить.
Суть исправления заключалась в том, что перед записью контактной информации не осуществлялось чтение набора записей для данного контрагента. И при записи вот такой эффект возникал. Сейчас это исправлено.
Пользователь ПП
Скачал сейчас последний релиз 4 альфы, в модуле РС контактной информации точно такая же процедура "ПередЗаписью" собственно вот что у нас:
Код
Процедура ПередЗаписью(Отказ, Замещение)
   // проверка для предотвращения попытки полной зачистки регистра
   Если ЭтотОбъект.Количество() = 0 Тогда
      Если ОбЗначениеНеЗаполнено(ЭтотОбъект.Отбор.Объект.Значение) и
         ОбЗначениеНеЗаполнено(ЭтотОбъект.Отбор.Тип.Значение) и
         ОбЗначениеНеЗаполнено(ЭтотОбъект.Отбор.Вид.Значение) Тогда
         СтрокаОтказа = "";
         Отказ = Истина;
      КонецЕсли;
   КонецЕсли;
   
   // проверки оставлены в модуле на случай редактирования КИ в строке
   // Вообще проверка делается локально в каждой форме записи КИ
   Для каждого Запись Из ЭтотОбъект Цикл
      
      Если ОбЗначениеНеЗаполнено(Запись.Объект) Тогда
         Отказ = Истина;
         СтрокаОтказа = "Не заполнено поле ""Владелец"". Запись невозможна!";
         Продолжить;
      КонецЕсли; 
      
      Если Запись.Объект.ЭтоГруппа Тогда
         Отказ = Истина;
         СтрокаОтказа = "Нельзя использовать группу в качестве объекта контактной информации.";
         Прервать;
      КонецЕсли;
      
      Если ОбЗначениеНеЗаполнено(Запись.Вид) Тогда
         Отказ = Истина;
         СтрокаОтказа = "Не заполнено поле ""Вид"". Запись невозможна!";
         Прервать;
      КонецЕсли;
      
      Если ОбЗначениеНеЗаполнено(Запись.Представление) Тогда
         Отказ = Истина;
         СтрокаОтказа = "Не заполнено представление контактной информации. Запись невозможна!";
         Прервать;
      КонецЕсли;
   КонецЦикла;
   
   Если Отказ Тогда
      Сообщить(СтрокаОтказа);
   КонецЕсли; 
   
КонецПроцедуры

Так что дело в чем то другом товарищи знатоки...
П.С. Сверил модуль киКонтактнаяИнформация, глобального тоже ничего нету...
Интересующийся
Используйте проверенный вариант.

Код
 Процедура ПередЗаписью(Отказ, Замещение)
   

   Если обЗначениеНеЗаполнено(ЭтотОбъект.Отбор.Объект.Значение) Тогда
      Сообщить("Попытка удалить всю контактную информацию");
      Отказ=Истина;
      Возврат;
   КонецЕсли;
   
КонецПроцедуры

 
Интересующийся
Хорошо, допустим вы иправили ошибку из 13 релиза с регистром "Контактная информация", почему тогда возникает подобная ситуация в 19 релизе с регистром "Кураторы"?

Цитата
Евгений Шульц пишет:
Используйте проверенный вариант.

Знаете, не хочется дописывать программу из-за ошибок разработчика, и так много изменений. Пусть я даже изменю код, но он будет от разработчиков, а не самописный.
Интересующийся
Цитата
Skrepka Skrepka пишет:
Знаете, не хочется дописывать программу из-за ошибок разработчика, и так много изменений. Пусть я даже изменю код, но он будет от разработчиков, а не самописный.
Изменением больше, изменением меньше. Какая разница? Если бы вообще не было изменения или вы бы регулярно обновлялись я понимаю, а так никакой разницы.
Интересующийся
Я смотрю, либо у вас конфа не особо дописанная, либо вы вообще не обновляетесь, но для меня уже критично любое изменение, т.к. каждое новое увеличивает затраченное на обновление время, а знаете, обновлять базу по месяцу (а на данный момент наверное уже и больше) не очень прикольно.
Пользователь ПП
Ничего не помогает, регистр всё так же чистится..  :!:  :!:
Пользователь ПП
Даже если это ошибка релиза, где в конфигурации есть запись этого регистра в транзакции. При одновременной "очистке-падении" и восстановлении стандартной обработкой загрузки выдается сообщение: Ошибка записи объекта
ТипОбъекта             =  Регистр сведений запись: Контактная информация
Объект                 =  РегистрСведенийНаборЗаписей.КонтактнаяИнформация
ОписаниеОшибки         =  Ошибка при вызове метода контекста (Записать): Конфликт блокировок при выполнении транзакции:
Microsoft OLE DB Provider for SQL Server: Transaction (Process ID 67) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
HRESULT=80004005, SQLSrvr: SQLSTATE=40001, state=30, Severity=D, native=1205, line=1
Сотрудник 1С-Рарус
Цитата
Сергей Терпугов пишет:
Ничего не помогает, регистр всё так же чистится.
Можно получить CF Вашей конфигурации? Будем разбираться.
Пользователь ПП
Александр Яблочкин,
Да, конечно. Куда отправлять?
Пользователь ПП
Апну тему!
Такая же петрушка творится и с регистром сведений "Напоминания"... Очищается самопроизвольно.. без каких-либо следов...
Интересующийся
Цитата
Андрей Д пишет:
Апну тему!
Такая же петрушка творится и с регистром сведений "Напоминания"... Очищается самопроизвольно.. без каких-либо следов...
У меня на это было завязана небольшая бизнес логика. Пришлось приписать на документ и регистр сделать подчиненный регистратура.
Пользователь ПП
Цитата
Евгений Шульц пишет:
Цитата
Андрей Д пишет:
Апну тему!
Такая же петрушка творится и с регистром сведений "Напоминания"... Очищается самопроизвольно.. без каких-либо следов...
У меня на это было завязана небольшая бизнес логика. Пришлось приписать на документ и регистр сделать подчиненный регистратура.

Ну я считаю, что это не совсем правильно... Если есть ошибка - то разработчики должны выяснить в чем проблема и исправить это.
Интересующийся
Цитата
Андрей Д пишет:
Ну я считаю, что это не совсем правильно... Если есть ошибка - то разработчики должны выяснить в чем проблема и исправить это.
Ошибка в том что там используют независимый регистр сведений. Очистить его без следа достаточно просто. Достаточно записать без отбора и все.
Разработчики скажут что эта не ошибка а особенности работы.
Пользователь ПП
У нас был косяк в том что при открытии не инициализировался набор записей, что  в итоге приводило к записе пустого набора, никаких следов не было, регистр очищался в раз.
Если конфа не тронутая то косяк конечно =) а так может злые руки очистить на разок=)
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С