Имя: Пароль:
1C
 
Восстановить коды у элементов справочника
0 dvrk
 
14.02.23
10:32
Привет, есть база, у контрагентов поменяли коды, есть копия, где коды не изменены, как в рабочей базе сделать коды старые?
1 OldCondom
 
14.02.23
10:34
поиск по уид, впихать временные коды и восстановить последовательность нумерации. ИЛи надо коды 1 в 1?
2 dvrk
 
14.02.23
10:35
(1) надо коды вернуть, т.к. в БУХ контрагенты уже выгрузились с этими кодами и сейчас задваиваются при обмене
3 Aleksey
 
14.02.23
10:35
А зачем? Увас бизнес процессы завязаны на кодах клиента?
4 dvrk
 
14.02.23
10:35
(3) в 2 написал..
5 Aleksey
 
14.02.23
10:36
(2) обмен самописный? Потому что типовому обмену пофиг на коды
6 dvrk
 
14.02.23
10:36
(5) угу правила обмена написаны центральным офисом
7 dvrk
 
14.02.23
10:36
у меня задача именно вернуть все коды в рабочей базе какие были
8 arsik
 
гуру
14.02.23
10:41
(7) Ну самое простое в бэкапе, где коды нормальные, создай тз с колонками Контрагент, код и заполни ее.
Потом ЗначениевСтроку(ТЗ).
В основной базе ЗначениеИзСтроки(ТЗСтрокой).
Ну а далее разберешся.
9 dvrk
 
14.02.23
10:42
А если взять обработку обмена между идентичными конфигурациями, выгрузить справочник контрагентов из бэкапа и загрузить в рабочую, те, что с неправильными кодами перепишутся на правильный?
10 НЕА123
 
14.02.23
10:49
(9)
на форуме такой вопрос точно не следует задавать.
проконсультируйся со спецами на месте.
11 OldCondom
 
14.02.23
10:49
(9) если укажешь поиск по ГУИД, то перепишутся. Кстати тоже вариант.
12 OldCondom
 
14.02.23
10:50
(10) так он правила не пишет, там же ЦЕНТРАЛЬНЫЙ офис)
13 mikecool
 
14.02.23
10:53
(9) а также затрутся все изменения, что пользователи внесли в справочник
если задаешь такие вопросы - то лучше не занимайся этим
14 Kassern
 
14.02.23
10:55
(0) Если гуиды одинаковые, то задача простая. Сопоставляете по гуиду и меняете коды.
15 mistеr
 
14.02.23
10:59
(14) +1

Например с помощью обработки из ИР
16 dvrk
 
14.02.23
10:59
(13) про изменения я знаю, мне главное коды восстановить (14) а в случае чего уиды могут стать разными?
17 mistеr
 
14.02.23
11:02
(16) Если контрагенты не приходят извне (из бухии например), то не могут.
18 dvrk
 
14.02.23
11:04
(17) не, контрагенты заводятся в этой базе и ниоткуда не приходят, я поэтому и спросил с чего они могут стать разными мб после манипуляций какой нибудь обработкой с ними
ну попробую тогда выгрузкой...
19 Aleksey
 
14.02.23
11:15
(18) ну так кд 2.0 в руки добавь перенос 1 реквизита код и поставь галку не создавать если не найдены. Делов то, на 2 минуты мышкой покликать
20 dvrk
 
14.02.23
11:15
(19) ни разу кд не видел в глаза
21 Aleksey
 
14.02.23
11:16
главное не забудь прописать Объект.обменданными.загрузка = истина при записи, чтобы на дубли кодов не ругался
22 Kassern
 
14.02.23
11:16
(20) можно и без кд. В файлик выгрузите 2 колонки, первая гуид, вторая  - нужный код. В базе где корявые кода, загрузите этот файлик. Ищите по гуиду, если находите, то меняете код. Делов на 3мин
23 dvrk
 
14.02.23
11:21
(22) я не понимаю, мне обработку такую надо написать или вы о какой то готовой говорите?
24 mistеr
 
14.02.23
11:24
(23) Или написать или воспользоваться мега-универсальной Загрузка табличных данных из ИР.
Но в твоем случае наверное проще будет написать, чем разобраться в ней и не наделать ошибок. :)
25 mistеr
 
14.02.23
11:25
Кстати написать можно в консоли кода ИР
26 dvrk
 
14.02.23
11:26
(25) да я позавчера впервые узнал об ИР)
27 Kassern
 
14.02.23
11:29
(23) Напишите сами, это всего несколько строчек кода
28 dvrk
 
14.02.23
11:43
ещё вопрос, правильно ли будет сделать так:
База с правильными кодами, открываю список контрагентов - "вывести список", вывожу колонки Код и Наименование

База с неправильными, открываю загрузка данных из табличного документа, копирую список Код и наименование, делаю код и наименование колонками поиска, нажимаю галочку не создавать новые и "загрузить"
?
29 CepeLLlka
 
14.02.23
11:44
Если такие траблы с ИР, то используйте просто "ВыгрузкаЗагрузкаХМЛ", лишние галки уберите, чтобы выгрузились только нужные справочники
30 dvrk
 
14.02.23
11:45
(29) я подумал и понял, что мне не подойдёт, там реально много данных менялось и мне нужно чтобы поменялся ТОЛЬКО код
31 Kassern
 
14.02.23
11:47
(28) Вы программист 1с? Умеете писать код? Вы вообще поняли, что написали? По какой колонке вы собираетесь сопоставлять? По наименованию? Сами же пишите " там реально много данных менялось". Ответ на ваш вопрос тут: (27)
32 Kassern
 
14.02.23
11:48
Вы случаем не знакомы с ливингстаром и ночным охотником?)
33 mistеr
 
14.02.23
11:48
(28) Не правильно. И код и наименование могли поменяться
34 dvrk
 
14.02.23
11:48
(31) наименование не могло меняться, код менялся
35 Kassern
 
14.02.23
11:49
(34) "наименование не могло меняться" - зуб даете?)
36 OldCondom
 
14.02.23
11:53
Пиши в центральный офис, чтобы правила переделали на поиск по ГУИД. А то назревают проблемы по серьезнее.
37 dvrk
 
14.02.23
11:56
(35) в моем случае да, а в целом могло
38 CepeLLlka
 
14.02.23
11:56
(30)Если реально менялись, то конечно беда. Можно через ЖР посмотреть какие объекты менялись, и для них поменять код "вручную", если их немного конечно.
39 dvrk
 
14.02.23
12:21
чёт не пойму а как в экселе сделать такое:
есть 4 колонки
Код Наименование Код1 Наименование1
мне нужно сделать так, чтобы были только имеющиеся в обеих колонках наименования
40 JeHer
 
14.02.23
12:23
А нафига к этим кодам привязались? Ну изменились да изменились. И есть же ИНН
41 dvrk
 
14.02.23
12:24
(40) обмен такой в цо, нужно коды вернуть иначе дубликаты делаются
42 JeHer
 
14.02.23
12:25
Пусть перепишут на ГУИД или по ИНН
43 dvrk
 
14.02.23
12:27
(42) пусть перепишут, мне сейчас для сдачи отчетности нужно сделать то, о чем я написал..
44 OldCondom
 
14.02.23
12:31
То есть тебе не осилить задачу в выгрузке файла в две колонки "ГУИД|КОД" и загрузке этого файла, поиск по ГУИД -> замена кода?
45 OldCondom
 
14.02.23
12:36
Держи. Нейросеть не знает встроенных методов 1С, так что придется немного править. К примеру, sprav.НайтиПоЗначению("*");

Мне нужно в 1с написать код, который выгрузит GUID и код справочника "Контрагенты" в файл

Для выгрузки GUID и кода справочника "Контрагенты" в файл в 1С необходимо написать следующий код:


Copy code
// Получаем ссылку на справочник "Контрагенты"
sprav = Справочники.Контрагенты;

// Получаем все элементы справочника
всеЭлементы = sprav.НайтиПоЗначению("*");

// Создаем текстовый документ
файл = Новый ТекстовыйДокумент;

// Проходим по всем элементам справочника и записываем GUID и код в файл
Для каждого элемента Из всеЭлементы Цикл
    файл.ДобавитьСтроку(Элемент.Код + ";" + Элемент.GUID);
КонецЦикла;

// Сохраняем файл
файл.Записать("C:\путь\к\файлу.txt");
Здесь мы получаем ссылку на справочник "Контрагенты", получаем все элементы этого справочника, создаем новый текстовый документ, проходим по всем элементам справочника и записываем в файл GUID и код каждого элемента. Наконец, мы сохраняем файл по указанному пути.





как теперь по этим данным в другой базе найти Контрагентов по GUID и поставить им коды из файла?
Для того, чтобы по GUID из файла найти контрагентов в другой базе и присвоить им коды, можно написать следующий код на языке запросов (1C Query):


// Открываем файл с GUID и кодами
файл = Новый ТекстовыйДокумент;
файл.Прочитать("C:\путь\к\файлу.txt");

// Проходим по строкам файла и ищем контрагентов по GUID
Для каждой строки Из файл.ПолучитьТекст().Разделить("\r\n") Цикл
    // Разделяем строку на код и GUID
    элемент = СтрРазделить(строка, ";");

    // Находим контрагента по GUID
    контрагент = Справочники.Контрагенты.НайтиПоГУИД(элемент[1]);

    // Если контрагент найден, то присваиваем ему код из файла
    Если контрагент <> Неопределено Тогда
        контрагент.Код = элемент[0];
        контрагент.Записать();
    КонецЕсли;
КонецЦикла;
Здесь мы открываем файл с GUID и кодами, проходим по строкам файла и ищем контрагентов по GUID. Если контрагент найден, то присваиваем ему код из файла и записываем изменения в базу данных. Код можно выполнить в любом месте конфигурации 1С, например, в обработке.
46 Kassern
 
14.02.23
12:44
(45) Сейчас будут вопросы, что ошибки при записи файла: метод не определен "НайтиПоГУИД". ГПТ еще нужно подтянуть СП.
47 OldCondom
 
14.02.23
12:45
(46) вроде слышал, что она пишет на python и перевод на 1С)
А неделю назад два дня она вообще говорила, что я не знаю язык 1С. И правильно делала...
48 TormozIT
 
гуру
14.02.23
16:35
Если есть уверенность, что другие реквизиты в справочнике не менялись (обычно ее нет), то "Выгрузка/загрузка данных XML" кажется лучшим выбором. Ее аналог в ИР кстати тоже есть - "Выгрузка/загрузка данных через файл" (выгружать можно и через инструмент "Подбор и обработка объектов" https://www.youtube.com/watch?v=MgDXX-qUrx0&t=1651s ).

Если же такой уверенности нет, то инструмент "Загрузка табличных данных" действительно будет оптимальным выбором. https://studio.youtube.com/video/S1ovPH-OR5g/edit
49 TormozIT
 
гуру
14.02.23
16:36
(48) Последнюю ссылку исправляю https://www.youtube.com/watch?v=S1ovPH-OR5g