Имя: Пароль:
1C
 
Замена партнера и контрагента во всех возможных объектах
0 NIGHTHUNTER
 
08.08.21
13:39
Здравствуйте!

УТ 11.4. Подскажите пожалуйста по коду.

Необходимо по наеденным ссылкам, менять в этих объектах партнера. Затем так же по контрагенту.
Вопрос в том что заранее не известно в каких справочниках или документах. появится этот партнер и контрагент,
где нужно будет произвести его замену. Пока что, не встречал такого. и решил узнать.
Можно ли автоматизировать универсально этот процесс? Что бы подменять контрагента во всех возможных встретившихся объектах.
1 ДенисЧ
 
08.08.21
13:49
2 NIGHTHUNTER
 
08.08.21
13:50
Вот например по партнеру. По уже известным объектам. Но как в общем универсиализировать код?

    ПартнерДляЗамены    = Справочники.Партнеры.НайтиПоКоду(ОбрабатываемыйКодПартнера);
    Если Не ПартнерДляЗамены = Справочники.Партнеры.ПустаяСсылка() Тогда
        //
        ПартнерНаЗамену = Справочники.Партнеры.НайтиПоКоду(ОбрабатываемыеДубли);
        Если Не ПартнерНаЗамену = Справочники.Партнеры.ПустаяСсылка() Тогда
            //
            ЗаменаУдалениеСсылокПоПартнеру(ПартнерДляЗамены, ПартнерНаЗамену);

Процедура ЗаменаУдалениеСсылокПоПартнеру(ПартнерДляЗамены, ПартнерНаЗамену)
    //
    // ДЕЙСТВИЯ С НАЙДЕННЫМИ ССЫЛКАМИ ПАРТНЕР ->
    МассивПартнерДляЗамены = Новый Массив;
    МассивПартнерДляЗамены.Добавить(ПартнерДляЗамены);
    СсылкиНаОбъектПоПартнеру = НайтиПоСсылкам(МассивПартнерДляЗамены);
    Для Каждого Элем Из СсылкиНаОбъектПоПартнеру Цикл
        //
        Если ТипЗнч(Элем.Данные) = Тип("СправочникСсылка.Контрагенты") Тогда
            // Справочник.Контрагенты
            //
            //КонтрагентОбъект         = Элем.Данные.ПолучитьОбъект();
            //КонтрагентОбъект.Партнер = ПартнерНаЗамену;
            //КонтрагентОбъект.Записать();
            //
            //КонтрагентСсылка         = Справочники.Контрагенты.НайтиПоРеквизиту("Партнер", Элем.Ссылка);
            //Если Не КонтрагентСсылка = Справочники.Контрагенты.ПустаяСсылка() Тогда
            //    КонтрагентОбъект         = КонтрагентСсылка.ПолучитьОбъект();
            //    КонтрагентОбъект.Партнер = ПартнерНаЗамену;
            //    КонтрагентОбъект.Записать();
            //КонецЕсли;
        ИначеЕсли ТипЗнч(Элем.Данные) = Тип("СправочникСсылка.КартыЛояльности") Тогда
            // Справочник.КартыЛояльности
            //
            КартыЛояльностиОбъект         = Элем.Данные.ПолучитьОбъект();
            КартыЛояльностиОбъект.Партнер = ПартнерНаЗамену;
            КартыЛояльностиОбъект.Записать();
            //
            //КартыЛояльностиСсылка         = Справочники.КартыЛояльности.НайтиПоРеквизиту("Партнер", Элем.Ссылка);
            //Если Не КартыЛояльностиСсылка = Справочники.КартыЛояльности.ПустаяСсылка() Тогда
            //    КартыЛояльностиОбъект         = КартыЛояльностиСсылка.ПолучитьОбъект();
            //    КартыЛояльностиОбъект.Партнер = ПартнерНаЗамену;
            //    КартыЛояльностиОбъект.Записать();
            //КонецЕсли;
        ИначеЕсли ТипЗнч(Элем.Данные) = Тип("СправочникСсылка.КлючиАналитикиУчетаПоПартнерам") Тогда
            // Справочник.КлючиАналитикиУчетаПоПартнерам
            //
            КлючиАналитикиУчетаПоПартнерамОбъект = Элем.Данные.ПолучитьОбъект();
            КлючиАналитикиУчетаПоПартнерамОбъект.Удалить();
            //
            //КлючиАналитикиУчетаПоПартнерамСсылка = Справочники.КлючиАналитикиУчетаПоПартнерам.НайтиПоРеквизиту("Партнер", Элем.Ссылка);
            //Если Не КлючиАналитикиУчетаПоПартнерамСсылка = Справочники.КлючиАналитикиУчетаПоПартнерам.ПустаяСсылка() Тогда
            //    КлючиАналитикиУчетаПоПартнерамОбъект = КлючиАналитикиУчетаПоПартнерамСсылка.ПолучитьОбъект();
            //    КлючиАналитикиУчетаПоПартнерамОбъект.Удалить();
            //КонецЕсли;
        ИначеЕсли ТипЗнч(Элем.Данные) = Тип("СправочникСсылка.КлючиРеестраДокументов") Тогда
            // Справочник.КлючиРеестраДокументов
            //
            КлючиРеестраДокументовОбъект = Элем.Данные.ПолучитьОбъект();
            КлючиРеестраДокументовОбъект.Удалить();
            //
            //КлючиРеестраДокументовСсылка = Справочники.КлючиРеестраДокументов.НайтиПоРеквизиту("Ключ", Элем.Ссылка);
            //Если Не КлючиРеестраДокументовСсылка = Справочники.КлючиРеестраДокументов.ПустаяСсылка() Тогда
            //    КлючиРеестраДокументовОбъект = КлючиРеестраДокументовСсылка.ПолучитьОбъект();
            //    КлючиРеестраДокументовОбъект.Удалить();
            //КонецЕсли;
        ИначеЕсли ТипЗнч(Элем.Данные) = Тип("РегистрСведенийКлючЗаписи.АналитикаУчетаПопартнерам") Тогда
            // РегистрСведений.АналитикаУчетаПоПартнерам (Не периодический, не зависимый)
            //
            Запись             = РегистрыСведений.АналитикаУчетаПоПартнерам.СоздатьМенеджерЗаписи();
            Запись.Партнер     = Элем.Ссылка;
            Запись.Организация = Элем.Данные.Организация;
            Запись.Удалить();                    
            //
        ИначеЕсли ТипЗнч(Элем.Данные) = Тип("РегистрСведенийКлючЗаписи.ГруппыЗначенийДоступа") Тогда
3 NIGHTHUNTER
 
08.08.21
13:50
(1) Совсем не к месту вы.
4 timurhv
 
08.08.21
13:50
(0) стандартная обработка "Поиск и замена дублей"?
5 timurhv
 
08.08.21
13:55
(2) Универсально:
ОбщегоНазначения.ЗаменитьСсылки
6 acanta
 
08.08.21
14:11
Вы хотите сказать, что функция НайтиСсылки() возвращает таблицу значений, в которой есть название реквизита, в котором эта ссылка участвует?
7 Злопчинский
 
08.08.21
14:41
не взлетит по простому.
этак у тебя в документе вместо Васи станет Петя, а договор останется от Васи.
8 NIGHTHUNTER
 
08.08.21
14:52
(6) Да там все есть.
9 NIGHTHUNTER
 
08.08.21
14:53
(7) Значит и договор следует подменять.
10 d_monah
 
08.08.21
15:04
Есть мнение,что базе будет кирдык,сегодня или завтра.Я немного за темой три дня смотрю,вижу что камрад идет к успеху.
11 NIGHTHUNTER
 
08.08.21
15:04
(6) Возвращает http://joxi.ru/l2Zz3VECRzjnN2

Ссылка - ссылка на которую произведен поиск ссылок
Данные - сами ссылки на все найденные объекты
Метаданные
12 NIGHTHUNTER
 
08.08.21
15:06
(10) Я попросил, подскажите по коду, замены партнера, договора, если что ещё нужно, по документам.

А то сам пока их не виду. По возможным документам и справочникам.

Что бы если попадаются не учтенные для обработки, справочники, документы, что бы в них делать подмену.
13 acht
 
08.08.21
15:07
(10) >  три дня смотрю

А мы - 16 лет, дядь Дим. 16 гребаных лет...
14 acht
 
08.08.21
15:11
Кстати. Провести ретроспективу вопросов LivingStar через falselight, TolstiyBeremenniy, кого-то может и забыл, до текущего NIGHTHUNTER было б весьма интересено. Вопрос - насколько может быть продуктивен результат работы и псевдообучения путем допроса форума на протяжении 16 лет, мог бы быть отличной темой проекта.

Жалко, что я не доктор.
15 NIGHTHUNTER
 
08.08.21
15:15
(7) Как правильно подменять договор?
16 GANR
 
08.08.21
15:19
(7) На самом деле замена ссылок и в договоре подменит ссылку на нового контрагента. Но побочка будет - это факт. Документы после проведения другие проводки могут дать, чем если бы был старый контрагент.
17 Иванович Михаил
 
08.08.21
15:25
(15) Может не надо?
18 d_monah
 
08.08.21
15:32
(13) Да ну нах((,я до конца не дочитал,вижу стаж 11 месяцев.Думаю под..ть чуток,для тонуса,а там интриги,тайны.Раньше то я не флудил)).Ладненько,ознакомимся с вопросом поплотнее.
19 d_monah
 
08.08.21
15:35
(14) Таак,а ну подвиньсь,доктор тут буду я.По выходным.Больше времени нет.))
20 d_monah
 
08.08.21
15:37
(15) У тебя печать хоть есть?
21 hhhh
 
08.08.21
18:13
(15) а обмена с бухгалтерией нет? Если вдруг есть, то после этих пертрубаций в бузгалтерии наступит полный п.ц.
22 DJ Anthon
 
08.08.21
18:44
третий акт марлезонского балета?
23 DJ Anthon
 
08.08.21
18:45
когда у тебя наступит стадия принятия? тебе уже весь форум одно и то же говорит
24 hhhh
 
08.08.21
19:32
(23) у него рабочий день с 4 часов утра.
25 Злопчинский
 
08.08.21
20:11
(9) а при смене договора надо, возморжно, выполнить кучу пересчетов
26 NIGHTHUNTER
 
09.08.21
03:23
(23) Я делаю свою обработку и продвигаюсь по решению.
Мне важно понимать как и что работает.
27 rphosts
 
09.08.21
05:12
(0) C ИТС  "Поиск и замена"
28 NIGHTHUNTER
 
09.08.21
05:25
(27) Я делаю под лист эксель более 50000 строк
29 NIGHTHUNTER
 
09.08.21
05:25
(27) там наверное не разобраться в этой обработке ((((( Я сам начал делать и продолжаю.
30 DJ Anthon
 
09.08.21
07:59
(29) ну, раз у тебя такой энтузиазм, то продолжай. как раз к новому году и справишься. все равно у тебя будет та же самая обработка, только кривая. не умеешь читать код, так учись, без этого ты дальше не продвинешься.
31 Скользящий
 
09.08.21
08:02
Я смотрю, время летит, а дятлы с титановыми клювами не меняются.
32 ДенисЧ
 
09.08.21
08:04
(31) Титан не ржавеет...
33 rphosts
 
09.08.21
08:07
(29) Если тебе в этом не разобраться - свою никогда не напишешь...
PS Может тебе просто переименовать контрагента (изменить ему наимаеновнаие, инн, кпп, ...). Гусары, молчать!
34 DJ Anthon
 
09.08.21
08:09
(33) не-не, пусть жуёт кактус
35 вым
 
09.08.21
09:28
а перепечатывать первичку, подписывать и отправлять счет-фактуры и тд тоже автоматом? ну и вопросы законности оного решать
36 hhhh
 
09.08.21
09:36
(35) дубли же.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший