Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Удалить данные из регистра сведений и регистра накопления          
Genda Подменю пользователя
сообщение 01.10.12, 16:14
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Добрый вечер! Перенесли данные из ЗиК 7.7 в ЗБУ 8.2. Теперь требуется удалить сотрудников-военных и соответственно все документы по ним и данные из регистров. С документами вроде как разобралась. Движения по регистрам, как я поняла, создает документ Перенос данных. Для удаления данных по определенному сотруднику из регистра сведений РаботникиОрганизаций написала следующий код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
       спр=Справочники.СотрудникиОрганизаций.Выбрать();

       Пока спр.Следующий() Цикл
             Если СокрЛП(спр.ВидДоговора)="Военная служба по контракту" ИЛИ СокрЛП(спр.ВидДоговора)="Военная служба по призыву" Тогда
           спрОб=спр.ПолучитьОбъект();
        Если спрОб.ПометкаУдаления=Ложь Тогда
              спрОб.УстановитьПометкуУдаления(Истина,);
        КонецЕсли;
           ФЛ=спр.Физлицо;
                     Сообщить(ФЛ);
                                    
                              Запрос=Новый Запрос;
            Запрос.Текст="ВЫБРАТЬ
            |    РаботникиОрганизаций.Регистратор КАК Регистратор,
            |    РаботникиОрганизаций.Сотрудник.Физлицо.Наименование КАК Физлицо
            |ИЗ
            |    РегистрСведений.РаботникиОрганизаций КАК РаботникиОрганизаций";
            
            ТабРез=Запрос.Выполнить().Выгрузить();
            
            НаборЗаписей=РегистрыСведений.РаботникиОрганизаций.СоздатьНаборЗаписей();
            
            Для НомерСтроки=0 По ТабРез.Количество()-1 Цикл
                Если Лев(СокрЛП(ТабРез[НомерСтроки].Регистратор),14)="Перенос данных" Тогда
                    Если СокрЛП(ТабРез[НомерСтроки].Физлицо)=СокрЛП(ФЛ) Тогда
                        НаборЗаписей.Отбор.Регистратор.Установить(СокрЛП(ТабРез[НомерСтроки].Регистратор));
                        НаборЗаписей.Записать();
                    Иначе
                        Продолжить;
                    КонецЕсли;
                Иначе
                    Продолжить;
                КонецЕсли;
            КонецЦикла;
                      КонецЕсли;
            
        КонецЦикла;
                
                      
КонецПроцедуры


Но так удаляются все данные из этого регистра. Если пишу НаборЗаписей.Отбор.Сотрудник.Установить(СокрЛП(ФЛ)), то ругается на "Сотрудник".
Подскажите, пожалуйста,в чем моя ошибка?

Ardi Подменю пользователя
сообщение 01.10.12, 16:20
Сообщение #2

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Тип должен соответствовать

Что делает "СокрЛП()"?
Оно берёт данные, получает СТРОКОВОЕ представление объекта. Потом оно обрезает пробелы слева и справа.

Что делает "СокрЛП()"?
Оно берёт данные, получает СТРОКОВОЕ представление объекта. Потом оно обрезает пробелы слева и справа.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Genda Подменю пользователя
сообщение 01.10.12, 16:26
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Ardi @ 01.10.12, 20:20) *
Тип должен соответствовать

Что делает "СокрЛП()"?
Оно берёт данные, получает СТРОКОВОЕ представление объекта. Потом оно обрезает пробелы слева и справа.

Что делает "СокрЛП()"?
Оно берёт данные, получает СТРОКОВОЕ представление объекта. Потом оно обрезает пробелы слева и справа.


Написала без сокрлп строчку:
НаборЗаписей.Отбор.Регистратор.Установить(ТабРез[НомерСтроки].Регистратор);

все равно удалил все записи регистра



Ardi Подменю пользователя
сообщение 01.10.12, 16:29
Сообщение #4

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

А где же
НаборЗаписей.Отбор.Сотрудник.Установить(ФЛ)


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Genda Подменю пользователя
сообщение 01.10.12, 16:30
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Цитата(Ardi @ 01.10.12, 20:29) *
А где же
НаборЗаписей.Отбор.Сотрудник.Установить(ФЛ)


На такую запись ругается "Поле объекта не обнаружено (Сотрудник)"...

Ardi Подменю пользователя
сообщение 01.10.12, 16:37
Сообщение #6

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

При удалении документов записи и так удалятся.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Zaval Подменю пользователя
сообщение 01.10.12, 16:37
Сообщение #7

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(Genda @ 01.10.12, 17:14) *
С документами вроде как разобралась.


Вот это что значит?
Почему нельзя по условию удалить строки из документа и просто перепровести его?

Ardi Подменю пользователя
сообщение 01.10.12, 16:39
Сообщение #8

Живет на форуме
***********
Гений телепатии и социального моделирования
Группа: Пользователи
Сообщений: 4121
Из: Киев
Спасибо сказали: 957 раз
Рейтинг: 0

Цитата(Zaval @ 01.10.12, 17:37) *
Начал искать работу )))

Вовка наверно заразный.


Signature
Услуги 1С программиста 8.2, 7.7 (Плохо, дорого, очередь). Киев.

Vofka Подменю пользователя
сообщение 01.10.12, 16:44
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(Ardi @ 01.10.12, 17:39) *
Вовка наверно заразный.

Если в этом ключе рассуждать, то Вовка как раз таки подцепил заразу.

Zaval Подменю пользователя
сообщение 01.10.12, 16:45
Сообщение #10

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(Ardi @ 01.10.12, 17:39) *
Вовка наверно заразный.

Не, у меня свои тарканы. )
Так сложилось, 7 месяцев "отпуск" был)

Genda Подменю пользователя
сообщение 01.10.12, 17:39
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

К примеру есть документ Кадровое перемещение военнослужащих.
Удаляю в нем строки следующим образом:
ВыборкаКадрВоен=Документы.КадровоеПеремещениеВоеннослужащих.Выбрать();
Пока ВыборкаКадрВоен.Следующий() Цикл
     ДокКадрВоен=ВыборкаКадрВоен.ПолучитьОбъект();
        Если СокрЛП(ДокКадрВоен.Номер)="" Тогда
             Продолжить;
                     КонецЕсли;
               дк=ДокКадрВоен.Военнослужащие.Количество()-1;
                    Пока дк>=0 Цикл
                     ТабДокКадрВоен=ДокКадрВоен.Военнослужащие;
                             стрДК=ТабДокКадрВоен.Получить(дк);
                       Если СокрЛП(стрДК.ФизЛицо)=СокрЛП(ФЛ) Тогда
                                          ТабДокКадрВоен.Удалить(дк);
                                                 Сообщить("Документ "+ДокКадрВоен);
                                     Сообщить("удалена строка по сотруднику "+СокрЛП(ФЛ));
                                          Иначе
                                        дк=дк-1;
                                                Продолжить;
                                     КонецЕсли;
                                                 дк=дк-1;
                     КонецЦикла;
                      ДокКадрВоен.Записать(РежимЗаписиДокумента.Запись);
                      ДокКадрВоен.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;


Но из регистра сведений записи при этом не удаляются. Видимо из-за того, что записи регистра связаны с документом Перенос данных. В одном из доков Перенос данных есть таблица регистра сведений РаботникиОрганизаций.

Вот про такой документ Перенос данных говорю:

Zaval Подменю пользователя
сообщение 02.10.12, 1:35
Сообщение #12

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Как-то все у Вас слишком сложно...
Документы КадровоеПеремещениеВоеннослужащих, как я понимаю, можно было просто все пометить на удаление.
Если их много - то через УниверсальныйПодборИОбработкаОбъектов( есть на дисках ИТС, встречается в некоторых конфигурациях).

Перенос - там повеселее.
Цитата(Genda @ 01.10.12, 17:14) *
Но так удаляются все данные из этого регистра.

Вы создали НаборЗаписей с определенными свойствами. Поскольку Вы забыли его "Прочитать" - он так и остался пустым. Затем - "Записать!", и система послушно затирает все записи Набора.

Попробуйте сделать так.
1. Создайте НоборЗаписей с отбором по Регистратору( добавьте в обработку реквизит и вынесите его на форму, не нужно будет искать док программно - просто выберете его).
2. Прочитайте НаборЗаписей.
3. Перебирайте Набор( используйте "Для каждого ... Из ... Цикл"). Для каждой записи проверяйте ВидДоговора. Если "служба" - удаляйте запись из Набора.
4. Запишите НаборЗаписей.

Все должно получиться. Смотрите в СП, если непонятно - "Описание встроенного языка" или ищите примеры в других пособиях.
Включайте Отладчик - обращайте внимание на типы значений переменных.


ЗЫ. smile.gif По поводу "система ругается"... Радуйтесь, за переменную с именем "НаборЗаписей" в след раз и отшлепать может...

Сообщение отредактировал Zaval - 02.10.12, 1:52

Спасибо сказали: Genda,

Genda Подменю пользователя
сообщение 02.10.12, 5:17
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Zaval , большое спасибо за исчерпывающий ответ! Буду пробовать.

Vofka Подменю пользователя
сообщение 02.10.12, 8:11
Сообщение #14

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(Zaval @ 02.10.12, 2:35) *
3. Перебирайте Набор( используйте "Для каждого ... Из ... Цикл")

А я бы посоветовал обходить набор записей с конца.

Спасибо сказали: Genda, S_D_M,

Genda Подменю пользователя
сообщение 02.10.12, 8:59
Сообщение #15

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Zaval , еще раз большое спасибо, ваше детальное описание мне очень помогло. Но еще есть одна небольшая проблемка) Почему то не все записи удаляются с первого раза, приходится несколько раз запускать обработку. Можно ли решить это как-то?

Vofka Подменю пользователя
сообщение 02.10.12, 9:14
Сообщение #16

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Проигнорировали пост №14? Ха-ха-ха.

Спасибо сказали: Genda,

Genda Подменю пользователя
сообщение 02.10.12, 11:46
Сообщение #17

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

Vofka , и вам спасибо;) учла ваш пост, все с первого раза теперь удаляется.

Zaval Подменю пользователя
сообщение 02.10.12, 13:12
Сообщение #18

Крутой
Иконка группы
Группа: Местный
Сообщений: 1994
Из: Киева и окрестностей
Спасибо сказали: 406 раз
Рейтинг: 0

Цитата(Genda @ 02.10.12, 9:59) *
Почему то не все записи удаляются с первого раза, приходится несколько раз запускать обработку.

smile.gif Упс! А как же код в посте 11? Я решил, что фишка с обратным перебором Вам уже известна.

Спасибо сказали: Genda,

Genda Подменю пользователя
сообщение 02.10.12, 13:28
Сообщение #19

Общительный
**
Группа: Пользователи
Сообщений: 44
Спасибо сказали: 1 раз
Рейтинг: 0

То, что это является фишкой не знала) но теперь буду знать) еще раз всем спасибо за помощь

Vofka Подменю пользователя
сообщение 02.10.12, 14:39
Сообщение #20

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Пояснение "фишки": http://pro1c.org.ua/index.php?showtopic=6524 . Пусть вас не сбивает с толку, что там про ТЗ говорится, с набором записей дела обстоят так же.

Сообщение отредактировал Vofka - 02.10.12, 14:40

Спасибо сказали: Genda,

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 25.04.24, 10:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!