СправочникОбъект не всегда корректно записывается #134512


#0 by Bigfoot
Наши операторы частенько забивают в справочник Номенклатура товары, и при этом ставят ПРОБЕЛЫ в начале и конце Наименования и НаименованияПолного. В результате сортировка отдыхает, они путаются, и создают двойные позиции, ну и прочие косяки прут... У данной проблемы есть два решения: 1) убить операторов 2) написать процедуру, которая это исправляет. Первое решение (к сожалению) мне воплотить не удалось (защищаются гады!), а для второго я написал вот что: Так вот. Запускаю я эту процедуру и она -- надо же! -- работает! :) НО: не до конца справочника, а вот как: обрабатывает несколько позиций (штук 5-7), после чего вылазит сообщение: Операция не может быть выполнена из-за несоответствия версии или отсутствия записи базы данных (возможно, запись была изменена или удалена)! Причем, что странно, когда запустишь её же второй раз, она эту "проблемную" позицию обрабатывает нормально. Зато чуть позже "спотыкается" на какой-нибудь другой. У меня подозрение, что это происходит из-за какой-то задержки на пути "Модуль --> Платформа --> Сервер --> SQL Server --> файл БД". Он как бы... не успевает записать измененный объект, что ли... Не подскажете, в чём дело? Какую инструкцию вставить, чтобы гарантированно записать изменения в БД, и только ПОСЛЕ этого переходить к следующему элементу справочника?
#1 by Волшебник
Достаточно просто вызвать СокрЛП
#2 by alexb
#3 by Bigfoot
Спасибо, господа, за ваши ответы. Немного поясню, почему я сначала проверял наличие пробелов: это чтобы ЛИШНИЙ РАЗ не вызывать ПолучитьОбъект и не заставлять тем самым платформу совершать лишние, ненужные действия. У меня объект меняется и записывается только в случае необходимости. Я, так сказать, экономно себя вести стараюсь. Не хочу зря растрачивать процессорное время. По этой же причине код alexb использовать не буду, извините за наглость, он мне кажется слишком примитивным (хотя работать должен, факт). Я разобрался, в чём косяк: Когда у номенклатуры есть лишние пробелы в ОБОИХ наименованиях, то выполняются оба условия моей процедуры. Первое условие выполняется хорошо, а второе -- как-то не может найти и ПолучитьОбъект. Видимо, после того, как его в первом условии записали обратно в базу, выборка его как-то теряет, что ли... и заново ПолучитьОбъект не может. Я сделал короче два цикла. Один пробегает выборку и исправляет все Наименования, другой заново пробегает выборку и исправляет все НаименованияПолные. Опять же, экономно, только те, у которых есть эти самые лишние пробелы. Финальная версия процедуры представлена ниже:
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С