|
Заполнение доп. реквизитов через обработку Загрузка данных из ТД | ☑ | ||
---|---|---|---|---|
0
oqjawa
16.07.19
✎
14:47
|
Создал Доп реквизит с неограниченной длинной в справочнике номенклатура.
Загружаю в него значения с помощью обработки "загрузка данных из табличного документа" из экселя. Для Каждого ЭлементДопСвойства Из ДопСвойства Цикл ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЭлементДопСвойства.Ключ + " (" + Объект.ВидНоменклатуры + ")", Ложь); ТекЗначение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТекстыЯчеек[ЭлементДопСвойства.Значение], Ложь); Если Не ЗначениеЗаполнено(ТекСвойство) Тогда Сообщить("Не удалось найти свойство: """ + ЭлементДопСвойства.Ключ + " (" + Объект.ВидНоменклатуры + ")"""); Продолжить; КонецЕсли; Если Не ЗначениеЗаполнено(ТекЗначение) Тогда Сообщить("Создаем новое значение """ + ТекстыЯчеек[ЭлементДопСвойства.Значение] + """ для свойства """ + ТекСвойство + """"); НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); НовоеЗначение.Владелец = ТекСвойство; НовоеЗначение.Наименование = ТекстыЯчеек[ЭлементДопСвойства.Значение]; НовоеЗначение.Записать(); ТекЗначение = НовоеЗначение.Ссылка; КонецЕсли; МассивСтрок = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ТекСвойство)); Если МассивСтрок.Количество() = 0 Тогда ДопРеквизит = Объект.ДополнительныеРеквизиты.Добавить(); Иначе ДопРеквизит = МассивСтрок[0]; КонецЕсли; ДопРеквизит.Свойство = ТекСвойство; ДопРеквизит.Значение = ТекЗначение; КонецЦикла; Объект.Записать(); записывается только около 100 символов, хотя длинна строки позволяет вместить больше текста.. Дело вовсе не в длине реквизита? |
|||
1
DmitriyDI
16.07.19
✎
15:24
|
(0) Если это реквизит с типом строка, зачем добавлять для него элемент в ЗначенияСвойствОбъектов, просто тогда было бы:
ДопРеквизит.Значение = ТекстыЯчеек[ЭлементДопСвойства.Значение]; а тут получается уже не Доп реквизит с неограниченной длинной , а элемент справочника, где наименование помещает только 100 символов. |
|||
2
oqjawa
16.07.19
✎
15:41
|
а как по другому сделать?
|
|||
3
oqjawa
16.07.19
✎
15:54
|
Вы правы длинна наименования действительно 100
|
|||
4
DmitriyDI
16.07.19
✎
15:56
|
(2) Сделать доп реквизит, тип Строка Неограниченная,
Это убрать: Если Не ЗначениеЗаполнено(ТекЗначение) Тогда Сообщить("Создаем новое значение """ + ТекстыЯчеек[ЭлементДопСвойства.Значение] + """ для свойства """ + ТекСвойство + """"); НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); НовоеЗначение.Владелец = ТекСвойство; НовоеЗначение.Наименование = ТекстыЯчеек[ЭлементДопСвойства.Значение]; НовоеЗначение.Записать(); ТекЗначение = НовоеЗначение.Ссылка; КонецЕсли; Тут сделать так: ДопРеквизит.Значение = ТекстыЯчеек[ЭлементДопСвойства.Значение]; |
|||
5
oqjawa
16.07.19
✎
16:02
|
переменная не определена (ДопРеквизит)
|
|||
6
DmitriyDI
16.07.19
✎
16:04
|
Для Каждого ЭлементДопСвойства Из ДопСвойства Цикл
ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЭлементДопСвойства.Ключ + " (" + Объект.ВидНоменклатуры + ")", Ложь); Если Не ЗначениеЗаполнено(ТекСвойство) Тогда Сообщить("Не удалось найти свойство: """ + ЭлементДопСвойства.Ключ + " (" + Объект.ВидНоменклатуры + ")"""); Продолжить; КонецЕсли; МассивСтрок = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ТекСвойство)); Если МассивСтрок.Количество() = 0 Тогда ДопРеквизит = Объект.ДополнительныеРеквизиты.Добавить(); Иначе ДопРеквизит = МассивСтрок[0]; КонецЕсли; ДопРеквизит.Свойство = ТекСвойство; ДопРеквизит.Значение = ТекстыЯчеек[ЭлементДопСвойства.Значение]; КонецЦикла; Объект.Записать(); |
|||
7
oqjawa
16.07.19
✎
16:23
|
не удалось найти свойство.. и так для каждого доп реквизита
|
|||
8
oqjawa
16.07.19
✎
16:25
|
странно если я вот тут:
Если Не ЗначениеЗаполнено(ТекЗначение) Тогда Сообщить("Создаем новое значение """ + ТекстыЯчеек[ЭлементДопСвойства.Значение] + """ для свойства """ + ТекСвойство + """"); НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент(); НовоеЗначение.Владелец = ТекСвойство; НовоеЗначение.ПолноеНаименование = ТекстыЯчеек[ЭлементДопСвойства.Значение]; НовоеЗначение.Записать(); ТекЗначение = НовоеЗначение.Ссылка.ПолноеНаименование; КонецЕсли; он выводит немного больше текста но не весь.. хотя у реквизита Справочники.ЗначенияСвойствОбъектов.ПолноеНаименование длинна не ограничена |
|||
9
DmitriyDI
16.07.19
✎
16:27
|
(8) странно, что при том же коде он находит свойство), вот это странно)
|
|||
10
oqjawa
16.07.19
✎
16:29
|
нет нет) я ваш код вставлял когда он на свойства ругался
Для Каждого ЭлементДопСвойства Из ДопСвойства Цикл ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЭлементДопСвойства.Ключ + " (" + Объект.ВидНоменклатуры + ")", Ложь); Если Не ЗначениеЗаполнено(ТекСвойство) Тогда Сообщить("Не удалось найти свойство: """ + ЭлементДопСвойства.Ключ + " (" + Объект.ВидНоменклатуры + ")"""); Продолжить; КонецЕсли; МассивСтрок = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура("Свойство", ТекСвойство)); Если МассивСтрок.Количество() = 0 Тогда ДопРеквизит = Объект.ДополнительныеРеквизиты.Добавить(); Иначе ДопРеквизит = МассивСтрок[0]; КонецЕсли; ДопРеквизит.Свойство = ТекСвойство; ДопРеквизит.Значение = ТекстыЯчеек[ЭлементДопСвойства.Значение]; КонецЦикла; Объект.Записать(); |
|||
11
DmitriyDI
16.07.19
✎
16:31
|
(10) Видимо не туда вставил или не так, потому что мой код в плане поиска свойства ничем не отличается от указанного в шапке.
|
|||
12
oqjawa
16.07.19
✎
16:40
|
Действительно, не туда вставил.. зато теперь выводит 1024 символа.. это и есть неограниченная длинна?
|
|||
13
hhhh
16.07.19
✎
16:55
|
(12) ну так в конфе задано для ДопРеквизит.Значение. там ни фига не неограниченное.
|
|||
14
oqjawa
16.07.19
✎
16:59
|
(13)странно, а руками спокойно позволяет вбить хоть больше 1024
|
|||
15
oqjawa
16.07.19
✎
17:10
|
ладно странно что он руками позволяет вбить больше 1024 при неограниченной длине когда не загружает больше 1024 символов..
но когда я ставлю ограничение 1024 и пытаюсь руками написать больше.. тоже даёт мне это сделать |
|||
16
DmitriyDI
16.07.19
✎
17:18
|
(15) Надо попробовать сохранить больше чем 1024 и посмотреть в регистре ДополнительныеСведения как это выглядит и вообще сохранит ли он это значение?
|
|||
17
hhhh
16.07.19
✎
17:22
|
(16) всёж таки он не в регистр пишет, а в тч допреквизиты.
|
|||
18
oqjawa
16.07.19
✎
17:23
|
регистр пустой
|
|||
19
oqjawa
16.07.19
✎
17:23
|
ни одной записи
|
|||
20
hhhh
16.07.19
✎
17:24
|
(19) прикалываешься? тч дополнительные реквизиты, какой нахрен регистр?
|
|||
21
trooba
16.07.19
✎
17:30
|
(20) Он путает доп свойства с доп реквизитами, а они действительно в разных местах
|
|||
22
oqjawa
16.07.19
✎
17:33
|
(21) и в чем прикол?
|
|||
23
oqjawa
16.07.19
✎
17:34
|
(22) это может быть как то связано с тем что я немогу загрузить больше 1024 символов?
|
|||
24
oqjawa
16.07.19
✎
17:35
|
я сейчас серьёзно, не стебу, не язвлю скорее всего реально запутался
|
|||
25
trooba
16.07.19
✎
17:36
|
(23) Это связано с тем, что доп реквизиты в табличной части объекта расположены, а доп свойства в регистре.
|
|||
26
oqjawa
16.07.19
✎
17:39
|
ну мне же регистр и нафиг не нужен
|
|||
27
hhhh
16.07.19
✎
17:43
|
они просто издеваются, у них везде 1024. Номенклатура полное наименование 1024, описание тоже 1024. вот такая вот БСП.
|
|||
28
DmitriyDI
16.07.19
✎
18:25
|
(18) да, в тч надо смотреть на запись) сохраняется больше 1024?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |