Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0
Добрый вечер! Перенесли данные из ЗиК 7.7 в ЗБУ 8.2. Теперь требуется удалить сотрудников-военных и соответственно все документы по ним и данные из регистров. С документами вроде как разобралась. Движения по регистрам, как я поняла, создает документ Перенос данных. Для удаления данных по определенному сотруднику из регистра сведений РаботникиОрганизаций написала следующий код:
Пока спр.Следующий() Цикл Если СокрЛП(спр.ВидДоговора)="Военная служба по контракту" ИЛИ СокрЛП(спр.ВидДоговора)="Военная служба по призыву" Тогда спрОб=спр.ПолучитьОбъект(); Если спрОб.ПометкаУдаления=Ложь Тогда спрОб.УстановитьПометкуУдаления(Истина,); КонецЕсли; ФЛ=спр.Физлицо; Сообщить(ФЛ);
Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | РаботникиОрганизаций.Регистратор КАК Регистратор, | РаботникиОрганизаций.Сотрудник.Физлицо.Наименование КАК Физлицо |ИЗ | РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций";
Для НомерСтроки=0 По ТабРез.Количество()-1 Цикл Если Лев(СокрЛП(ТабРез[НомерСтроки].Регистратор),14)="Перенос данных" Тогда Если СокрЛП(ТабРез[НомерСтроки].Физлицо)=СокрЛП(ФЛ) Тогда НаборЗаписей.Отбор.Регистратор.Установить(СокрЛП(ТабРез[НомерСтроки].Регистратор)); НаборЗаписей.Записать(); Иначе Продолжить; КонецЕсли; Иначе Продолжить; КонецЕсли; КонецЦикла; КонецЕсли;
КонецЦикла;
КонецПроцедуры
Но так удаляются все данные из этого регистра. Если пишу НаборЗаписей.Отбор.Сотрудник.Установить(СокрЛП(ФЛ)), то ругается на "Сотрудник". Подскажите, пожалуйста,в чем моя ошибка?
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0
К примеру есть документ Кадровое перемещение военнослужащих. Удаляю в нем строки следующим образом:
ВыборкаКадрВоен=Документы.КадровоеПеремещениеВоеннослужащих.Выбрать(); Пока ВыборкаКадрВоен.Следующий() Цикл ДокКадрВоен=ВыборкаКадрВоен.ПолучитьОбъект(); Если СокрЛП(ДокКадрВоен.Номер)="" Тогда Продолжить; КонецЕсли; дк=ДокКадрВоен.Военнослужащие.Количество()-1; Пока дк>=0 Цикл ТабДокКадрВоен=ДокКадрВоен.Военнослужащие; стрДК=ТабДокКадрВоен.Получить(дк); Если СокрЛП(стрДК.ФизЛицо)=СокрЛП(ФЛ) Тогда ТабДокКадрВоен.Удалить(дк); Сообщить("Документ "+ДокКадрВоен); Сообщить("удалена строка по сотруднику "+СокрЛП(ФЛ)); Иначе дк=дк-1; Продолжить; КонецЕсли; дк=дк-1; КонецЦикла; ДокКадрВоен.Записать(РежимЗаписиДокумента.Запись); ДокКадрВоен.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла;
Но из регистра сведений записи при этом не удаляются. Видимо из-за того, что записи регистра связаны с документом Перенос данных. В одном из доков Перенос данных есть таблица регистра сведений РаботникиОрганизаций.
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0
Как-то все у Вас слишком сложно... Документы КадровоеПеремещениеВоеннослужащих, как я понимаю, можно было просто все пометить на удаление. Если их много - то через УниверсальныйПодборИОбработкаОбъектов( есть на дисках ИТС, встречается в некоторых конфигурациях).
Перенос - там повеселее.
Цитата(Genda @ 01.10.12, 17:14)
Но так удаляются все данные из этого регистра.
Вы создали НаборЗаписей с определенными свойствами. Поскольку Вы забыли его "Прочитать" - он так и остался пустым. Затем - "Записать!", и система послушно затирает все записи Набора.
Попробуйте сделать так. 1. Создайте НоборЗаписей с отбором по Регистратору( добавьте в обработку реквизит и вынесите его на форму, не нужно будет искать док программно - просто выберете его). 2. Прочитайте НаборЗаписей. 3. Перебирайте Набор( используйте "Для каждого ... Из ... Цикл"). Для каждой записи проверяйте ВидДоговора. Если "служба" - удаляйте запись из Набора. 4. Запишите НаборЗаписей.
Все должно получиться. Смотрите в СП, если непонятно - "Описание встроенного языка" или ищите примеры в других пособиях. Включайте Отладчик - обращайте внимание на типы значений переменных.
ЗЫ. По поводу "система ругается"... Радуйтесь, за переменную с именем "НаборЗаписей" в след раз и отшлепать может...
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0
Zaval , еще раз большое спасибо, ваше детальное описание мне очень помогло. Но еще есть одна небольшая проблемка) Почему то не все записи удаляются с первого раза, приходится несколько раз запускать обработку. Можно ли решить это как-то?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!