Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

ЗУП. Удалить суффиксы "осн" и "совм" у сотрудников

ЗУП. Удалить суффиксы
Я
   Panda_oOo
 
21.07.20 - 20:48
Всем доброго вечера.

Потихоньку занимаюсь 1С. учусь. И вот столкнулся с такой задачей: из ЗУПа 2.0 в ЗУП 3.1 были перенесены сотрудники (не знаю, чем и как, до меня было). У некоторых сотрудников в имени появилась приставка (совм.) и (осн.). Как эти приставки ставятся программно, я в принципе знаю. И в 2-ке, и в 3.1. Но прикол в том, что данная приписка существует как бы сама по себе, и в 3.1 не получается отключить.

Мной героически было принято решение написать обработку, которая бы стирала эти приписки у сотрудника. Собственно, этот код я и прошу глянуть.
Вроде бы я на тестовой протестировал, все приписки удалятся без последствий, ссылки на сотрудников работают корректно, документы открываются. Но по причине малого опыта прошу посмотреть, и если я где-то ошибся, то направить))

Сам код:

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

      КонецЦикла;
    КонецЕсли;
    

КонецПроцедуры

&НаКлиенте
Процедура КнопкаВыполнить(Команда)
  КнопкаВыполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура УдалитьОСННаСервере()
  
  Запрос = Новый Запрос;
  Запрос.УстановитьПараметр("ПараметрСтрокаПоиска", "%" + "(осн.)");
    Запрос.Текст =
      "ВЫБРАТЬ
        |  Ссылка,
      |  Наименование,
      |  ФизическоеЛицо
      |ИЗ
      |  Справочник.Сотрудники
      |ГДЕ
      |  Наименование ПОДОБНО &ПараметрСтрокаПоиска";
    
    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    Если Результат.Пустой() Тогда
      Сообщить("Таких нет!");
    Иначе
      Пока Выборка.Следующий() Цикл
        СотрудникСсылка = Выборка.Ссылка.ПолучитьОбъект();
        СотрудникСсылка.Наименование = Лев(СотрудникСсылка.Наименование, СтрДлина(СотрудникСсылка.Наименование) - 6);
        СотрудникСсылка.ГоловнойСотрудник = Лев(СотрудникСсылка.ГоловнойСотрудник, СтрДлина(СотрудникСсылка.ГоловнойСотрудник) - 6);
        СотрудникСсылка.Записать();

      КонецЦикла;
    КонецЕсли;
  
КонецПроцедуры

&НаКлиенте
Процедура УдалитьОСН(Команда)
  УдалитьОСННаСервере();
КонецПроцедуры

Немного страшно запускать на боевой, это одна из первых обработок. Спасибо всем, кто откликнется
   mikecool
 
1 - 21.07.20 - 20:58
запускай на копии
   Panda_oOo
 
2 - 21.07.20 - 21:00
(1) На копии запустил, работает. Имена сменились. Завтра надо будет на рабочей исправлять. Но что-то у меня есть чувство, что где-то сломается
   Ненавижу 1С
 
3 - 21.07.20 - 21:00
Начнем с того: чем это мешало? Ведь это сотрудники, а не физ.лица
   Panda_oOo
 
4 - 21.07.20 - 21:01
(3) Ну это пришло сверху. Мы люди маленькие. Начальник дал отмашку, мол, делай.
   hhhh
 
5 - 21.07.20 - 22:21
(4) вот это что за фигня?

       СотрудникСсылка.ГоловнойСотрудник = Лев(СотрудникСсылка.ГоловнойСотрудник, СтрДлина(СотрудникСсылка.ГоловнойСотрудник) - 6); 

выбросьте эту строчку.
   SSz
 
6 - 22.07.20 - 05:31
(5) - Эта строчка возвращает содержимое исходной строки без шести последних символов.
   hhhh
 
7 - 22.07.20 - 05:43
(6) поле Головной сотрудник не строчное. На хрена туда содержимое пихать? Оно не впихнется.
   Йохохо
 
8 - 22.07.20 - 05:50
СотрудникСсылка.Наименование = СокрЛП(СтрЗаменить(СотрудникСсылка.Наименование, "(совм.)", ""))
// СотрудникСсылка = Выборка.Ссылка.ПолучитьОбъект(); такто не ссылка а объект
   Пробел
 
9 - 22.07.20 - 05:53
(2) Сделайте бэкап рабочей перед исправлением.

А вообще, править собственные косяки в срочном темпе на рабочей базе это часть нашей работы)
   SSz
 
10 - 22.07.20 - 05:55
(7) - Это уже совершенно другой момент. ;)
   Panda_oOo
 
11 - 22.07.20 - 07:04
(5) Спасибо. Я что-то не обратил внимание. Просто увидел и засомневался.
(8) Можно подробнее?
   Йохохо
 
12 - 22.07.20 - 07:10
(11) СотрудникСсылка присваивается сотрудникОбъект, это ни на что не влияет, просто коряво
   Panda_oOo
 
13 - 22.07.20 - 07:25
(12) Т.е. мне переменную надо было Назвать СотрудникОбъект?
   МимохожийОднако
 
14 - 22.07.20 - 07:29
Научись пользоваться режимом отладки. Большинство вопросов отпадёт при просмотре твоего кода по шагам
   МимохожийОднако
 
15 - 22.07.20 - 07:30
(13) Называть можно хоть чертом лысым. Важнее содержание
   Йохохо
 
16 - 22.07.20 - 07:36
(13) важно только что твой код пробел не удаляет
   Волшебник
 
17 - 22.07.20 - 07:37
Спр.ГоловнойСотрудник = <здесь должна быть СправочникСсылка, а не строка>
   Волшебник
 
18 - 22.07.20 - 07:38
Если типы не соответствуют, то 1С не ругается, а просто очищает поле.

Программный код очищает реквизиты ГоловнойСотрудник для всех сотрудников, попавших под раздачу.
   Panda_oOo
 
19 - 22.07.20 - 09:00
(17) (18) Ну там в принципе всё нормально получилось. Я проверил, в реквизитах ГоловнойСотрудник все заполнено, там стоит ссылка на сотрудника. Но на будущее буду более внимательным, спасибо.

Ещё, я удалил строки СотрудникСсылка.ГоловнойСотрудник = Лев(СотрудникСсылка.ГоловнойСотрудник, СтрДлина(СотрудникСсылка.ГоловнойСотрудник) - 6); и СотрудникСсылка.ГоловнойСотрудник = Лев(СотрудникСсылка.ГоловнойСотрудник, СтрДлина(СотрудникСсылка.ГоловнойСотрудник) - 7); видимо они не нужны.

Может ли подобное исправление имени (код выше) сломать что-нибудь в регистрах/документах/ещё где-нибудь?
   hhhh
 
20 - 22.07.20 - 09:32
(19) ну, теперь в базе сотрудников будут одинаковые строчки и все будут путаться.
   МимохожийОднако
 
21 - 22.07.20 - 09:34
(20) ОФФ."Могу копать, могу не копать". ТС без работы не останется.
   Panda_oOo
 
22 - 22.07.20 - 09:41
(20) Да, это тоже будет забавный момент. Сейчас на копии смотрел, неудобно. И нет табельного, чтобы посмотреть, какой именно это сотрудник. Ну ничего, поработают, придут просить перделать что-то)
   El_Duke
 
23 - 22.07.20 - 09:51
(4) >>Начальник дал отмашку

А ему не похрен ли кто как в базе именован ? Других проблем видать нет ?
Вот уж воистину: когда коту делать нефиг - он ... сидит грустит
   Йохохо
 
24 - 22.07.20 - 09:58
(19) (22) боги, корона породила анти ливинстара
   Panda_oOo
 
25 - 22.07.20 - 10:30
(24) я бы вместе с вами возмутился, но к сожалению, не знаю, о чём вы говорите
   Panda_oOo
 
26 - 22.07.20 - 10:31
(23) да работа то есть, но как я говорил, только начинаю изучать, поэтому такая вот практика) Приятное с полезным)
   hhhh
 
27 - 22.07.20 - 10:34
(25) ливингстар - это живая легенда нашего форума.

Очищение поля у регистров накопления
   Panda_oOo
 
28 - 22.07.20 - 10:55
(27) Интересно. Не слышал. И какое отношение к моему вопросу имеет ссылка на данную тему?
   El_Duke
 
29 - 22.07.20 - 11:46
(26) вот и займитесь работой
То что вы сейчас делаете - это пересадка правого яйца на место левого
   Panda_oOo
 
30 - 22.07.20 - 11:52
(29) Это и есть моя работа) Делать, что скажут) Если я на этой фигне хоть чему-то научусь - значит, не так уж и бесполезно это было)
 
 Рекламное место пустует
   МимохожийОднако
 
31 - 22.07.20 - 11:59
(30) На фигне и научишься фигне...
   Panda_oOo
 
32 - 22.07.20 - 12:09
(31) Вопрос был в том, ничего ли я не сломаю, изменяя таким образом. А не в том, фигнёй ли я страдаю, или нет
   El_Duke
 
33 - 22.07.20 - 12:13
(30) Делать что скажут - удел бестолкового исполнителя
Прежде чем делать, надо хорошо подумать: а надо ли оно, есть ли от этого польза ? Может через неделю все придется возвращать обратно

И если оно так, то сказать ЛПР:"Полиграф Полиграфыч, Вы вот тут бабуйню придумали, она не нужна"
   Фрэнки
 
34 - 22.07.20 - 12:57
чему-то научусь... страдать бесполезной фигней :-)
   Fergus
 
35 - 22.07.20 - 22:52
начальника на мыло
расчетный бухгалтер за удаление лайфхаков будет плеваться ядом
   Panda_oOo
 
36 - 23.07.20 - 07:36
(35) Это не лайфхак, а косяк при переносе. Они тупо вписались в ссылку.
А вообще такие дополнения (совм.), (осн.) можно программно ставить в настройках. Настройки - Кадровый учёт - Правило формирования представления элементов справочника сотрудники в отчетах и документах.
Не путайте теплое с мягким, пожалуйста.
   Kesim
 
37 - 24.07.20 - 12:26
(19) .ГоловнойСотрудник -  скорее всего ссылка на самого себя, не нужно менять.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.