В данной заметке хотелось бы рассмотреть вопрос: Как загрузить дополнительные реквизиты номенклатуры при помощи обработки с диска ИТС «Загрузка данных из табличного документа (управляемые формы)»?
В качестве примера, будем использовать конфигурацию 1С:ERP Управление предприятием 2, аналогичным смособом можно будет загрузить в Управление торговлей 11 или любую другую, подобную конфигурацию.
Дополнительные реквизиты хранятся в табличной части «ДополнительныеРеквизиты» справочника «Номенклатура». Из обработки «Загрузка данных из табличного документа» можно добраться только к табличной части одной, выбранной номенклатуре, через тип данных «Позиция номенклатуры».
Но такой способ нам не подходит, т.к. мы будем загружать дополнительные реквизиты для списка номенклатуры. Для примера загрузим одну номенклатуру и два ее дополнительных реквизита: «Формат» и «Толщина».
Настроим поиск номенклатуры по наименованию из колонки с номером один.
Теперь немного займемся программированием. Откроем событие «При записи объекта» и добавим туда следующий программный код:
Объект.ДополнительныеРеквизиты.Очистить(); // Предварительно удаляем все доп. реквизиты. Если не нужно — закомментировать.ДопСвойства = Новый Соответствие;
ДопСвойства.Вставить(«11», 91); // Наименование свойства, номер ячейки
ДопСвойства.Вставить(«АКЦИЯ», 92);
ДопСвойства.Вставить(«Размер,мм», 93);
ДопСвойства.Вставить(«Формат», 94);
ДопСвойства.Вставить(«Номер цвета», 95);
ДопСвойства.Вставить(«Цвет», 96);
ДопСвойства.Вставить(«шт./м2», 97);
ДопСвойства.Вставить(«шт. / палетта», 98);
ДопСвойства.Вставить(«вес, кг/шт.», 99);Для Каждого
ЭлементДопСвойства Из ДопСвойства ЦиклТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)», Ложь);
ТекЗначение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТекстыЯчеек[ЭлементДопСвойства.Значение], Ложь);
Если Не ЗначениеЗаполнено(ТекСвойство) Тогда
Сообщить(«Не удалось найти свойство: «»» + ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)»»»);
Продолжить;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекЗначение) Тогда
Сообщить(«Создаем новое значение «»» + ТекстыЯчеек[ЭлементДопСвойства.Значение] + «»» для свойства «»» + ТекСвойство + «»»»);
НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
НовоеЗначение.Владелец = ТекСвойство;
НовоеЗначение.Наименование = ТекстыЯчеек[ЭлементДопСвойства.Значение];
НовоеЗначение.Записать();
ТекЗначение = НовоеЗначение.Ссылка;
КонецЕсли;МассивСтрок = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура(«Свойство», ТекСвойство));
Если МассивСтрок.Количество() = 0 Тогда
ДопРеквизит = Объект.ДополнительныеРеквизиты.Добавить();
Иначе
ДопРеквизит = МассивСтрок[0];
КонецЕсли;
ДопРеквизит.Свойство = ТекСвойство;
ДопРеквизит.Значение = ТекЗначение;КонецЦикла;
Объект.Записать();
В соответствие «ДопСвойста» нужно вставить столько записей, сколько требуется загрузить дополнительных реквизитов. В качестве ключа указываем текстовое наименование дополнительного реквизита, а в качестве значения — номе строки табличного документа, где это значение храниться.
Заполнение любых дополнительных реквизитов в любых справочниках и документах системы из табличного файла (excel, dbf, mxl) а также выгрузка во внешний файл и удаление значений дополнительных реквизитов.
-
Основное
-
Совместимость
-
Доп. информация
Артикул | 464 |
Обновлено | 21.12.2022 |
Исходный код | Открыт |
Изменение конфигурации | Не требуется |
Покупок | 69 |
- BAS ERP (UA)
- BAS Комплексное управление предприятием 2 (UA)
- BAS Управление торговлей 3 (UA)
- Бухгалтерия предприятия 3.0
- Зарплата и управление персоналом 3.1
- Комплексная автоматизация 2.4 (BY)
- Комплексная автоматизация 2.4 (KZ)
- Комплексная автоматизация 2.4 и 2.5
- Розница 2.2 и 2.3
- Управление нашей фирмой 1.6
- Управление нашей фирмой 3.0
- Управление предприятием ERP 2.4 и 2.5
- Управление торговлей 11.4 и 11.5
- Управление торговлей 3 (BY)
- Управление торговлей 3 (KZ)
Обработка позволяет заполнить ЛЮБЫЕ дополнительные реквизиты в ЛЮБЫХ справочниках системы из табличного файла (Excel, dbf и прочих). Допустим для номенклатуры назначены следующие дополнительные реквизиты, причем с разным типом значения.
И у нас есть файл Excel, из которого будем заполнять реквизиты в карточках (в данном случае доп.реквизиты будем грузить в номенклатуру). Открываем обработку, в правой части вставляем содержимое файла в табличную область. Вставку можно делать с помощью буфера обмена или по кнопке Загрузить из файла (второй способ подходит только для файлов Microsoft Excel и OpenOffice Calc).
В левой части выбираем тип объекта Справочник, имя объекта Номенклатура, указываем граничные строки таблицы данных и номер колонки с полем для поиска нужного элемента справочника. В случае номенклатуры, в этой колонке может быть указан код, наименование или артикул товара. Для остальных справочников поиск осуществляется по коду и наименованию.
В нижней части нужно заполнить таблицу загружаемых реквизитов — выбрать какие именно реквизиты загружать, из каких колонок и нужно ли автоматически создавать ненайденные значения (актуально только для дополнительных реквизитов с типом Дополнительное значение).
Обработка может единоразово загружать значения любого количества дополнительных реквизитов.
После выполнения всех настроек нажимаем Заполнить. В результате в номенклатурной карточке успешно заполнятся дополнительные реквизиты.
В случае, если реквизиты нужно загружать для документов, в качестве полей поиска необходимо указывать номер и дату документа.
Если в процессе выполнения загрузки возникнут какие-то ошибки/коллизии, они будут отражены в итоговом протоколе.
Релиз 464.1.1.2 от 16.06.2020
Если загружаются дополнительные реквизиты номенклатуры, есть возможность автоматически заполнить таблицу настроек по списку реквизитов, относящихся к определенному виду номенклатуры. Удобно пользоваться, если список реквизитов большой, экономит время.
Релиз 464.1.1.3 от 26.07.2020
При загрузке дополнительных реквизитов номенклатуры теперь можно выбрать вариант поиска нужных товаров. Доступны следующие варианты поиска:
- по наименованию,
- по коду,
- по артикулу,
- по артикулу и наименованию,
- по штрихкоду.
Появилась возможность не только загружать, но и выгружать дополнительные реквизиты из базы во внешний табличный файл (Excel, OpenOffice, MXL). Например, для того чтобы проверить/поправить/загрузить доп.реквизиты в другую базу.
Для этого сделана отдельная закладка на форме.
Для выборочной выгрузки сведений можно воспользоваться фильтром на форме (работает по ЛЮБЫМ реквизитам исходного справочника или документа).
К примеру выгрузим доп.реквизиты товаров (исключая услуги):
В результате получаем сформированную талицу, которую можно сохранить во внешний файл. Потом из этой же таблицы можно без проблем сделать перезаполнение реквизитов в базе.
Релиз 464.1.1.4 от 27.01.2021
Теперь можно очищать значения дополнительных реквизитов в справочниках и документах системы. При этом можно использовать удобный фильтр для отбора нужных данных (например по владельцам и/или списку реквизитов). На скрине ниже показано удаление значений двух дополнительных реквизитов в номенклатурной справочнике.
После выполнения операции появится итоговый протокол:
Релиз 464.1.1.5 от 20.08.2021
Добавлена возможность сохранения настроек загрузки дополнительных реквизитов. Рядом с полем Имя объекта расположены две кнопки — одна для сохранения текущей настройки, другая для выбора сохраненной ранее настройки. Для любого справочника или документа можно сохранить неограниченное количество настроек.
Для номенклатурного справочника добавлен вариант поиска по артикулу и производителю. При этом можно указать как конкретного производителя, так и номер колонки таблицы, откуда его нужно взять.
Добавлена возможность заполнения списка значений для дополнительных реквизитов с типом Дополнительное значение.
Необходимо заполнить таблицу данных, указать номера граничных строк для загрузки, номер колонки со значением и выбрать дополнительный реквизит. Если значения для него нужно разбивать на группы, можно дополнительно выбрать группу значений для загружаемых данных.
Релиз 464.1.1.6 от 14.03.2022
Если вы приобрели обработку по учету множественных реквизитов номенклатуры, то с помощью данной разработки вы теперь сможете загрузить эти множественные значения в номенклатурный справочник. Для этого нужно указать используемый разделитель значений.
Чтобы оставить комментарий, зарегистрируйтесь и авторизуйтесь на сайте.
Файл обработки: tekdata-ru-zagruzka-rekvizita-spravochnika-1s-iz-excel-rabotaet-do-20231231.epf
Тестировалось в программе: 1С:Розница 2.2.11, 2.2.13, 2.3.4, 2.3.6, 2.3.7, 2.3.11; 1С:Управление торговлей 11.4.10, 11.4.14, 11.5.7, 11.5.8; 1С:Управление нашей фирмой 1.6.19, 1.6.24; 1С:Бухгалтерия предприятия 3.0.89 Как узнать версию программы?
Разработка скачивалась: Да
Закрытый программный код: Да (если на странице не указано обратное)
Работает только в операционной системе: Windows
Внимание! Данная имеет ограничение по сроку действия!
Внимание! Данная обработка работоспособна до конца того года, в котором она была приобретена и после этой даты будет неработоспособна! Т.о. данную обработку необходимо приобретать каджый год заново.
Перед использованием обработки рекомендуется создать резервную копию базы!
Данная обработка является универсальной и с ее помощью загрузить произвольный реквизит выбранного справочника из Excel или другой таблицы в большинстве программ 1С:Предприятие 8.3.
С помощью данной обработки можно загрузить реквизиты типовых программ 1С:Преприятие 8.3, таких как:
1С:Управление торговлей 11.4,
1С:Розница 2.3,
1С:Управление нашей фирмой 1.6,
1С:Бухгалтерия 3.0.
Обработка загружает не абсолютно любой реквизит, но большинство из них.
В 2022 году добавили возможность загрузки дополнительного реквизита справочника.
При загрузке дополнительного реквизита, необходимо сначала заполнить этот дополнительный реквизит у любого элемента справочника (так обработка поймет тип значения этого дополнительно реквизита).
Обработка не анализирует принадлежность дополнительного реквизита к определенному виду (например к виду номенклатуры), поэтому желательно загружать именно общие дополнительные реквизиты для справочника.
Для того, чтобы проверить подойдет ли именно в вашем случае данная обработка рекомендуется перед приобретением воспользоваться демо-версией обработки, которую Вы можете скачать нажав на кнопку ниже. Демо-версия позволяет загрузить только 3 строки.
В видео показано как работает обработка (на примере другой похожей обработки для справочника номенклатура в УТ 11.4)
Обработка Загрузка произвольного реквизита справочника 1С 8.3 может быть полезна для того, чтобы догрузить данные после загрузки одной из наших обработок загрузки данных из Excel.
Например Вы сможете загрузить реквизит Текстовое описание или Полное наименование, также можно догрузить информацию о производителе, бренде (марке) или поставщике. Возможно кому-то необходимо загрузить информацию о весе товара, это также можно сделать с помощью данной обработки.
Данная обработка поможет также упростить ручное изменение реквизитов, ведь при ручном изменении реквизитов в 1С необходимо открывать каждую карточку товара, затем находить нужный реквизит и только после этого изменить его, а затем еще нужно будет нажать кнопку Записать. Кроме того в некоторых программах, например в 1С:Розница 2.3, для того, чтобы изменить некоторые реквизиты необходимо разблокировать их нажав Еще — Разрешить редактирование реквизитов — Разрешить.
Гораздо проще выгрузить список справочника в Excel (нажав Еще — Вывести список в форме списка справочника), затем отредактировать значения в этом Excel-файле и затем загрузить значения данной обработкой. Это поможет сэкономить много времени.
Обработка запускается через Файл-Открыть.
Дополнительные условия приобретения данной обработки:
Условия приобретения данной разработки были указаны при покупке разработки.
Кроме того, для данной обработки существуют следующие особенности.
Данная обработка работоспособна до конца того года в котором она была приобретена. Т.е. если обработка была приобретена 1-го января 2021 года, то она будет работоспособна до 31 декабря 2021 года.
Решение ограничить по времени работоспособность обработки было принято для того, чтобы дополнительно защитить разработку, а также чтобы снизить ее стоимость.
При принятии данного решения предполагалось, что обработка будет применяться для разового использования, например для первоначальной загрузки данных.
Обработка обращается к сайту tekdata.ru в процессе своей работы, поэтому необходимо чтобы на компьютере был доступ в интернет для программы 1С:Предприятие, а также, чтобы был доступен наш сайт tekdata.ru.
Наша обработка помогла Вам? Оставьте, пожалуйста, комментарий ниже.
Бывает так, что надо заполнить дополнительный реквизит справочника, документа, ПВХ и т.д. значениями. Например, есть таблица соответствия кодов элементов справочника и значений доп.реквизита. Тогда , с помощью данной обработки, это легко сделать.
Мне пришлось заниматься переводом организации с учета в 1С на SAP, и вот тут-то мне пришлось заполнять доп.реквизиты кодами элементов в SAP, чтобы в дальнейшем выгружать проводки по остаткам.
Обработка на входе принимает следующие данные:
— путь к файлу соответствий. Файл должен быть текстовым (TextUnicode) с разделителями «табуляция». Это обусловлено тем, что теперь из Excel 2007(2010) в формат DBASE IV уже не сохранить, а в текст юникод — очень просто. Вот так примерно должно выглядеть содержимое файла, если будем заполнять доп. реквизит по ИНН и КПП
ИНН КПП КодСАП
0028033349 402302001 123456
0275005860 027501001 123457
0275048529 027501001 123458
0278034771 027801001 123459
0326023099 713302001 123460
— дополнительный реквизит (свойство объекта) из ПланаВидовХарактеристик — СвойстваОбъектов. При выборе автоматически определится тип объекта, для которого определен доп. реквизит;
— указать, каким способом необходимо искать объекты в базе. Есть два способа:
а). По коду объекта (кроме документов),
б). По значениям реквизитов. Реквизиты должны иметь базовый тип (строка, число, дата, булево). Например, можно искать контрагентов по ИНН и КПП.
Вот и всё. Теперь необходимо заполнить (обновить) таблицу соответствий, а затем нажать на кнопку [Выполнить]. Начнется процесс заполнения дополнительного реквизита на основании таблицы соответствий.
Примечание:
Если Вас интересует как загрузить в 1с данные из файла csv посмотрите эту статью. В ней я выложил обработку-шаблон для импорта в 1с данных из csv-файла.
Задача:
Конфигурация 1с УНФ 1.6.13(для 1с УТ эта обработка тоже подойдет) Загрузить данные с сайта в 1С. 150’000 товаров. Если грузить напрямую то данные в 1с импортируются «криво», все уходит в дополнительные сведения «кучей».
Предварительная оценка:
Выгрузку с сайта сделали в csv. Проблема: Выгрузка csv вначале тоже была некорректной. Внутри полей встречались разделители и переносы строк.
Загружать буду своей обработкой.
Конфигурацию менять нельзя.
Картинки к товарам нужно закачивать в 1с по ссылке. Одну из картинок нужно назначать основной.
Дополнительные реквизиты обработка должна создавать автоматически.
Если значения доп реквизитов «Дополнительное значение», т.е. значения которые выбираются из списка, то список будем создавать по мере загрузки товаров. Если значение в списке есть, то подставляем в доп реквизит, если значения нет, создаем значение доп. реквизита и подставляем его.
Решение:
1 Приводим в порядок CSV файл.
Выгрузка csv вначале тоже была некорректной. Внутри полей встречались разделители и переносы строк. Это приводило к неправильному преобразованию в поля. Пришлось переделывать выгрузку. Для Excell она бы подошла, а вот 1с читает этот файл построчно и разбивает на поля по указанному разделителю.
Приведем выгрузку к понятному 1с виду.
Выгрузка до
После обработки:
Процедура, которая привела выгрузку к нормальному виду. Выкладываю как есть. Разделитель «^» выбран т.к. он во всем тексте ни разу не встречался.
// приводим файл выгрузки в порядок &НаКлиенте Процедура УбратьЛишниеПереносы(Команда) Источник=новый ТекстовыйДокумент; Источник.Прочитать("d:items_new2.csv"); // ИмяФайла - путь к файлу на диске Победа // Определяем количество колонок по шапке таблицы, для этого исползуем // стандартную процедуру РазложитьСтрокуВМассивПодстрок КоличествоКолонок=СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Источник.ПолучитьСтроку(1), ";").Количество(); // убираем лишние переносы и сохраняем в файл ПривестиКНужномуФормату(Источник.ПолучитьТекст(),";", КоличествоКолонок); возврат; // Читаем данные файла, шапку можно отсечь потом МассивКол = ПрочитатьCSV(Источник.ПолучитьТекст(),";", КоличествоКолонок); Для каждого Товар из МассивКол Цикл //переменная МассивКол содержит массив строк таблицы из файла CSV. //Каждый элемент массива в свою очередь представляет массив колонок. // В этом цикле можно сделать все необходимое с полученными данными. КонецЦикла; КонецПроцедуры # область ОтформатироватьВыгрузку &наКлиенте Функция ПрочитатьCSV(Знач Строка, Разделитель, КоличествоКолонок) Результат = Новый Массив; // массив строк Скобка=ЛОЖЬ; Начало=1; Колонка=0; СтрокаФайла=новый Массив; // массив колонок в строке для Позиция=1 по СтрДлина(Строка) Цикл // обходим файл посимвольно Символ=Сред(Строка, Позиция, 1); //если встречается кавычка, фиксируем ее открытие, прекращаем итерацию и продолжаем цикл. Если Символ="""" И Скобка=Ложь Тогда Скобка=Истина; Продолжить; //Если встречается закрывающаяся кавычка, фиксируем ее закрытие и тоже продолжаем цикл ИначеЕсли Символ="""" И Скобка=Истина ТОгда Скобка=Ложь; Продолжить; КонецЕсли; //Если встречается разделитель или перенос строки вне кавычек, //вносим информацию в массив Если (Символ=Разделитель ИЛИ Символ=Символы.ПС) И Скобка=Ложь Тогда Конец=Позиция; Колонка=Колонка+1; СтрокаФайла.Добавить(Сред(Строка, Начало, Конец-Начало)); //Если набралось количество колонок, равное их количеству в шапке, записываем всю строку //в массив и переходим к следующей Если Колонка=КоличествоКолонок Тогда Результат.Добавить(СтрокаФайла); СтрокаФайла=Новый Массив; Колонка=0; КонецЕсли; Начало=Позиция+1; КонецЕсли; КонецЦикла; //Удаляем шапку таблицы из массива строк Результат.Удалить(0); Возврат Результат; КонецФункции &наКлиенте процедура ПривестиКНужномуФормату(Знач Строка, Разделитель, КоличествоКолонок) // сохраняем в формат csv Результат = Новый ТекстовыйДокумент; // массив строк Скобка=ЛОЖЬ; Начало=1; Колонка=0; СтрокаФайла=новый Массив; // массив колонок в строке для Позиция=1 по СтрДлина(Строка) Цикл // обходим файл посимвольно Символ=Сред(Строка, Позиция, 1); //если встречается кавычка, фиксируем ее открытие, прекращаем итерацию и продолжаем цикл. Если Символ="""" И Скобка=Ложь Тогда Скобка=Истина; Продолжить; //Если встречается закрывающаяся кавычка, фиксируем ее закрытие и тоже продолжаем цикл ИначеЕсли Символ="""" И Скобка=Истина ТОгда Скобка=Ложь; Продолжить; КонецЕсли; //Если встречается разделитель или перенос строки вне кавычек, //вносим информацию в массив Если (Символ=Разделитель ИЛИ Символ=Символы.ПС) И Скобка=Ложь Тогда Конец=Позиция; Колонка=Колонка+1; СтрокаФайла.Добавить(Сред(Строка, Начало, Конец-Начало)); //Если набралось количество колонок, равное их количеству в шапке, записываем всю строку //в массив и переходим к следующей Если Колонка=КоличествоКолонок Тогда // сделаем нужную строку строкаДляЗаписи=""; для нн=0 по строкаФайла.Количество()-1 цикл если нн=0 тогда //СтрокаФайла[нн]=СтрЗаменить(СтрокаФайла[нн],""",""); //СтрокаФайла[нн]=СтрЗаменить(СтрокаФайла[нн],";","^"); // удаляю все лишние ; и заменяю их ^ - этого символа в выгрузке нет строкаДляЗаписи=СтрЗаменить(СтрокаФайла[нн],символы.ПС," "); иначе //СтрокаФайла[нн]=СтрЗаменить(СтрокаФайла[нн],""",""); //СтрокаФайла[нн]=СтрЗаменить(СтрокаФайла[нн],";","^"); строкаДляЗаписи=строкаДляЗаписи+"^"+СтрЗаменить(СтрокаФайла[нн],символы.ПС," "); // тут ; - разделитель конецЕсли; конецЦикла; Результат.ДобавитьСтроку(строкаДляЗаписи); СтрокаФайла=Новый Массив; Колонка=0; КонецЕсли; Начало=Позиция+1; КонецЕсли; КонецЦикла; //Удаляем шапку таблицы из массива строк //Результат.Удалить(0); результат.Записать("l:PosleFormat.csv"); конецПроцедуры
2 Загрузка номенклатуры
Далее нужно разобраться с загружаемыми полями из файла csv.
Определить их свойства:
- Название доп реквизита
- Тип
- Список это или простой тип строка, число, дата.
- Загружать его или нет
- Являются ли они доп реквизитами или будем подставлять в стандартные реквизиты
- Множественный он или нет.
С множественными проблема т.к. в 1с без изменения конфигурации множественные просто так не загрузить. Поэтому решено множественные разбивать на несколько простых доп реквизитов.
Выгрузка csv содержит поля, которые нужно грузить в дополнительные реквизиты и основные реквизиты. Некоторые поля вообще не нужно грузить.
Чтобы удобнее было работать с полями сделал таблицу значений, где указал нужные свойства полей
Если грузить в номенклатуру только стандартные реквизиты, тогда эта таблица не нужна.
Загружаем данные из csv в 1с.
Обработка Первоначальная загрузка номенклатуры.zip
Что делает обработка
- Создает номенклатуру
- Заполняет основные реквизиты
- Заполняет, а в случае отсутствия, создает доп реквизиты с указанным типом значения.
- Если доп реквизит это список, то в случае отсутствия, нужное значение создается.
- С сайта по ссылке скачиваются картинки и прикрепляются к номенклатуре. Указывается главная картинка.
- Устанавливается цена
Эта обработка нуждается в адаптации под конкретные нужды, она не универсальная. Писал ее конкретно под клиента.
Ее можно доработать под свои нужды, но надеяться что она заработает сразу под ваш csv файл не стоит.
Характеристики в этой обработке не грузятся , т.к. клиент дал другую выгрузку для характеристик позже.
Характеристики грузил из другогих csv файлов.
Обработка создать характеристики и оприходовать остатки
Что делает обработка
- Создает характеристики номенклатуры
- Присваивает характеристикам имя в зависимости от значений
- Оприходует товар по 1шт.
Эта обработка нуждается в адаптации под конкретные нужды, она не универсальная. Писал ее конкретно под клиента.
Ее можно доработать под свои нужды, но надеяться что она заработает сразу под ваш csv файл не стоит.
Заполнение доп. реквизитов через обработку Загрузка данных из ТД |
Я |
16.07.19 — 14:47
Создал Доп реквизит с неограниченной длинной в справочнике номенклатура.
Загружаю в него значения с помощью обработки «загрузка данных из табличного документа» из экселя.
Для Каждого ЭлементДопСвойства Из ДопСвойства Цикл
ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)», Ложь);
ТекЗначение = Справочники.ЗначенияСвойствОбъектов.НайтиПоНаименованию(ТекстыЯчеек[ЭлементДопСвойства.Значение], Ложь);
Если Не ЗначениеЗаполнено(ТекСвойство) Тогда
Сообщить(«Не удалось найти свойство: «»» + ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)»»»);
Продолжить;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекЗначение) Тогда
Сообщить(«Создаем новое значение «»» + ТекстыЯчеек[ЭлементДопСвойства.Значение] + «»» для свойства «»» + ТекСвойство + «»»»);
НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
НовоеЗначение.Владелец = ТекСвойство;
НовоеЗначение.Наименование = ТекстыЯчеек[ЭлементДопСвойства.Значение];
НовоеЗначение.Записать();
ТекЗначение = НовоеЗначение.Ссылка;
КонецЕсли;
МассивСтрок = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура(«Свойство», ТекСвойство));
Если МассивСтрок.Количество() = 0 Тогда
ДопРеквизит = Объект.ДополнительныеРеквизиты.Добавить();
Иначе
ДопРеквизит = МассивСтрок[0];
КонецЕсли;
ДопРеквизит.Свойство = ТекСвойство;
ДопРеквизит.Значение = ТекЗначение;
КонецЦикла;
Объект.Записать();
записывается только около 100 символов, хотя длинна строки позволяет вместить больше текста..
Дело вовсе не в длине реквизита?
1 — 16.07.19 — 15:24
(0) Если это реквизит с типом строка, зачем добавлять для него элемент в ЗначенияСвойствОбъектов, просто тогда было бы:
ДопРеквизит.Значение = ТекстыЯчеек[ЭлементДопСвойства.Значение];
а тут получается уже не Доп реквизит с неограниченной длинной , а элемент справочника, где наименование помещает только 100 символов.
2 — 16.07.19 — 15:41
а как по другому сделать?
3 — 16.07.19 — 15:54
Вы правы длинна наименования действительно 100
4 — 16.07.19 — 15:56
(2) Сделать доп реквизит, тип Строка Неограниченная,
Это убрать:
Если Не ЗначениеЗаполнено(ТекЗначение) Тогда
Сообщить(«Создаем новое значение «»» + ТекстыЯчеек[ЭлементДопСвойства.Значение] + «»» для свойства «»» + ТекСвойство + «»»»);
НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
НовоеЗначение.Владелец = ТекСвойство;
НовоеЗначение.Наименование = ТекстыЯчеек[ЭлементДопСвойства.Значение];
НовоеЗначение.Записать();
ТекЗначение = НовоеЗначение.Ссылка;
КонецЕсли;
Тут сделать так:
ДопРеквизит.Значение = ТекстыЯчеек[ЭлементДопСвойства.Значение];
5 — 16.07.19 — 16:02
переменная не определена (ДопРеквизит)
6 — 16.07.19 — 16:04
Для Каждого ЭлементДопСвойства Из ДопСвойства Цикл
ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)», Ложь);
Если Не ЗначениеЗаполнено(ТекСвойство) Тогда
Сообщить(«Не удалось найти свойство: «»» + ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)»»»);
Продолжить;
КонецЕсли;
МассивСтрок = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура(«Свойство», ТекСвойство));
Если МассивСтрок.Количество() = 0 Тогда
ДопРеквизит = Объект.ДополнительныеРеквизиты.Добавить();
Иначе
ДопРеквизит = МассивСтрок[0];
КонецЕсли;
ДопРеквизит.Свойство = ТекСвойство;
ДопРеквизит.Значение = ТекстыЯчеек[ЭлементДопСвойства.Значение];
КонецЦикла;
Объект.Записать();
7 — 16.07.19 — 16:23
не удалось найти свойство.. и так для каждого доп реквизита
8 — 16.07.19 — 16:25
странно если я вот тут:
Если Не ЗначениеЗаполнено(ТекЗначение) Тогда
Сообщить(«Создаем новое значение «»» + ТекстыЯчеек[ЭлементДопСвойства.Значение] + «»» для свойства «»» + ТекСвойство + «»»»);
НовоеЗначение = Справочники.ЗначенияСвойствОбъектов.СоздатьЭлемент();
НовоеЗначение.Владелец = ТекСвойство;
НовоеЗначение.ПолноеНаименование = ТекстыЯчеек[ЭлементДопСвойства.Значение];
НовоеЗначение.Записать();
ТекЗначение = НовоеЗначение.Ссылка.ПолноеНаименование;
КонецЕсли;
он выводит немного больше текста но не весь.. хотя у реквизита Справочники.ЗначенияСвойствОбъектов.ПолноеНаименование длинна не ограничена
9 — 16.07.19 — 16:27
(8) странно, что при том же коде он находит свойство), вот это странно)
10 — 16.07.19 — 16:29
нет нет) я ваш код вставлял когда он на свойства ругался
Для Каждого ЭлементДопСвойства Из ДопСвойства Цикл
ТекСвойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)», Ложь);
Если Не ЗначениеЗаполнено(ТекСвойство) Тогда
Сообщить(«Не удалось найти свойство: «»» + ЭлементДопСвойства.Ключ + » (» + Объект.ВидНоменклатуры + «)»»»);
Продолжить;
КонецЕсли;
МассивСтрок = Объект.ДополнительныеРеквизиты.НайтиСтроки(Новый Структура(«Свойство», ТекСвойство));
Если МассивСтрок.Количество() = 0 Тогда
ДопРеквизит = Объект.ДополнительныеРеквизиты.Добавить();
Иначе
ДопРеквизит = МассивСтрок[0];
КонецЕсли;
ДопРеквизит.Свойство = ТекСвойство;
ДопРеквизит.Значение = ТекстыЯчеек[ЭлементДопСвойства.Значение];
КонецЦикла;
Объект.Записать();
11 — 16.07.19 — 16:31
(10) Видимо не туда вставил или не так, потому что мой код в плане поиска свойства ничем не отличается от указанного в шапке.
12 — 16.07.19 — 16:40
Действительно, не туда вставил.. зато теперь выводит 1024 символа.. это и есть неограниченная длинна?
13 — 16.07.19 — 16:55
(12) ну так в конфе задано для ДопРеквизит.Значение. там ни фига не неограниченное.
14 — 16.07.19 — 16:59
(13)странно, а руками спокойно позволяет вбить хоть больше 1024
15 — 16.07.19 — 17:10
ладно странно что он руками позволяет вбить больше 1024 при неограниченной длине когда не загружает больше 1024 символов..
но когда я ставлю ограничение 1024 и пытаюсь руками написать больше.. тоже даёт мне это сделать
16 — 16.07.19 — 17:18
(15) Надо попробовать сохранить больше чем 1024 и посмотреть в регистре ДополнительныеСведения как это выглядит и вообще сохранит ли он это значение?
17 — 16.07.19 — 17:22
(16) всёж таки он не в регистр пишет, а в тч допреквизиты.
18 — 16.07.19 — 17:23
регистр пустой
19 — 16.07.19 — 17:23
ни одной записи
20 — 16.07.19 — 17:24
(19) прикалываешься? тч дополнительные реквизиты, какой нахрен регистр?
21 — 16.07.19 — 17:30
(20) Он путает доп свойства с доп реквизитами, а они действительно в разных местах
22 — 16.07.19 — 17:33
(21) и в чем прикол?
23 — 16.07.19 — 17:34
(22) это может быть как то связано с тем что я немогу загрузить больше 1024 символов?
24 — 16.07.19 — 17:35
я сейчас серьёзно, не стебу, не язвлю скорее всего реально запутался
25 — 16.07.19 — 17:36
(23) Это связано с тем, что доп реквизиты в табличной части объекта расположены, а доп свойства в регистре.
26 — 16.07.19 — 17:39
ну мне же регистр и нафиг не нужен
27 — 16.07.19 — 17:43
они просто издеваются, у них везде 1024. Номенклатура полное наименование 1024, описание тоже 1024. вот такая вот БСП.
DmitriyDI
28 — 16.07.19 — 18:25
(18) да, в тч надо смотреть на запись) сохраняется больше 1024?