Имя: Пароль:
1C
 
КД 2.1 обрез строки
0 Начинающий гуру
 
11.07.25
15:17
В ПКО в событии при выгрузке пишу
Если СТРДлина(Источник.Код) > 9 Тогда
    Источник.Код = Лев(Источник.Код,9);
КонецЕсли;

У меня в базе приёмника код имеет 9 строк и я хочу обрезать в источнике эту строку, как сделать?
1 Волшебник
 
11.07.25
15:20
а зачем здесь условие?
2 Начинающий гуру
 
11.07.25
15:21
(1) у некоторых код 6 символов
3 Начинающий гуру
 
11.07.25
15:26
Ошибка при выгрузке данных: {Обработка.УниверсальныйОбменДаннымиXML.МодульОбъекта(1694)}: Ошибка в обработчике события ПередВыгрузкой (свойства)
    ПКО                    =  СтатьиЗатрат  (Справочник: Статьи затрат)
    ПКС                    =  2  (Код --> Код)
    Объект                 =  20 Расходы, связанные с режимом работы, с условиями труда (в том числе надбавки)  (Статья затрат)
    СвойствоПриемника      =  Код  (Строка)
    Обработчик             =  ПередВыгрузкойСвойства
    ОписаниеОшибки         =  Поле объекта недоступно для записи (Код)
    ПозицияМодуля          =  <Неизвестный модуль>(3)
    КодСообщения           =  55
4 timurhv
 
11.07.25
15:27
(0) Мир окончательно сошел сума:
у некоторых код 6 символов
...
У меня в базе приёмника код имеет 9 строк

СтроковыеФункцииКлиентСервер.ДополнитьСтроку
Или
Лев("000000000" + Источник.Код, 9)
5 timurhv
 
11.07.25
15:28
(3) ошибка верная, не трогайте источник
6 timurhv
 
11.07.25
15:32
(3) Справку в пользовательском режиме КД 2.1 нажмите, там она толково сделана и сразу видно все параметры.
7 maxar
 
11.07.25
15:38
(0) - а зачем менять код источника
Значение = ЛЕВ(...
8 СвинТуз
 
11.07.25
15:42
В ПКС (Код)

Значение = Лев(Значение,9);

Туплю наверняка, но КД не под рукой
9 takefive
 
11.07.25
15:44
В ПКС пишите Значение =
И не Лев а Прав...
10 СвинТуз
 
11.07.25
15:44
Если СтрДлина(Значение) > 9 Тогда
    Значение = Лев(Значение,9);
КонецЕсли;
11 timurhv
 
11.07.25
15:46
(9) верно подметили! Чет повелся на Лев)
12 СвинТуз
 
11.07.25
15:47
Формат(, "ЧЦ=9; ЧДЦ=0; ЧВН=");
13 Начинающий гуру
 
11.07.25
15:49
(4) Получается в источнике код имеет всегда длину 15, а в приёмнике 9,получается он никогда не найдёт код анологичный, а при создании будет сокращать и выдавать ошибку,что не уникальный код,тогда как поступить?
14 СвинТуз
 
11.07.25
15:50
(4)

" код имеет 9 строк"
Точно?
15 Климов Сергей
 
11.07.25
15:52
(13) Если по факту значимая часть кода умещается в 9 символов, то всё сопоставится. В противном случае придётся отказаться от синхронизации по коду.
А сколько элементов в справочнике? Неужели больше 999 999 999 штук?
16 СвинТуз
 
11.07.25
15:52
(13)
Дополнительное поле для поиска "КодВСтаройБазе"
Ищет сначала по ссылке.
17 СвинТуз
 
11.07.25
15:53
И если не найдет уже по полям поиска.
Хотя как настроено конечно.
18 Начинающий гуру
 
11.07.25
15:53
(15) Справочник.СтатьиЗатрат и прочиедоходыирасходы
19 timurhv
 
11.07.25
15:54
(13) тогда не переносите код, поставьте галочку автонумерации или как-то так у ПКО.
Искать по ссылкам в правилах или по другим полям, какие укажете.
20 DiMel_77
 
11.07.25
15:54
(0) ПКС, свойство "
Автоматически приводить значение к длине приемника"

Автоматически приводить значение к длине приемника - флаг, позволяет включить автоматическое приведение Номера или Кода справочника соответствующему значению в приемнике по длине. При этом префиксы сохраняются, а числовые части преобразуются под длину поля в приемнике.
21 Климов Сергей
 
11.07.25
15:56
(18) Неважно, какой справочник. Строк в нём сколько?
22 Начинающий гуру
 
11.07.25
15:58
(20) он приводит 15 к 9 и выдаёт ошибка,что код не уникален и не происходит загрузка объекта.Но он никогда не найдёт наименование другое и код сравнивается 15 с 9.
23 Начинающий гуру
 
11.07.25
20:06
Там не строк, а длина,перепутал
24 maxar
 
11.07.25
16:45
(18) перенос кода убрать, поставить автогенерацию кода в приемнике, и переносите поиском по наименованию + еще какие-то поля если они нужны , тогда ваши задвоенные по наименованию статьи сольются в одну - что даже лучше
25 craxx
 
11.07.25
22:13
(0)
Если СТРДлина(Источник.Код) > 9 Тогда
    Значение = Лев(Источник.Код,9);
Иначе
    Значение = Источник.Код;
КонецЕсли;
26 Волшебник
 
11.07.25
22:20
(25) Зачем здесь условие? я повторяю (1)
см (9)
27 craxx
 
11.07.25
22:24
(26) Согласен. Тупанул к вечеру.