Имя: Пароль:
1C
1С v8
ЗУП. Удалить суффиксы "осн" и "совм" у сотрудников
0 Panda_oOo
 
21.07.20
20:48
Всем доброго вечера.

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

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

Сам код:

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

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

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

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

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

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

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

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

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

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

А вообще, править собственные косяки в срочном темпе на рабочей базе это часть нашей работы)
10 SSz
 
22.07.20
05:55
(7) - Это уже совершенно другой момент. ;)
11 Panda_oOo
 
22.07.20
07:04
(5) Спасибо. Я что-то не обратил внимание. Просто увидел и засомневался.
(8) Можно подробнее?
12 Йохохо
 
22.07.20
07:10
(11) СотрудникСсылка присваивается сотрудникОбъект, это ни на что не влияет, просто коряво
13 Panda_oOo
 
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С не ругается, а просто очищает поле.

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

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

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

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

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

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