Перенос номенклатуры и размещение характеристик в свойствах
По теме из базы знаний
- Всякие полезности
- Ведение учета услуг в разрезе характеристик для УТ 10.3
- Алгоритмы с решениями для экзамена Специалист УТ 11.1
- Концепция автоматизации многопрофильного Холдинга в системе АУБ на платформе 1С
- Принципы проектирования справочников номенклатуры в 1С: Управление Предприятием 2 (ERP 2.4.6)
Найденные решения
Приложил пример, можно использовать как пример)) номенклатура выгружается по каждой характеристики из документа
Прикрепленные файлы:
упп-бп реализация.xml
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) tolyan_ekb, да, именно так! Я думаю сначала перенести все свойства характеристик из регистра сведений "значения свойств объектов"(УТ 10.3) в справочник "значения свойств объектов"(УТ 11.1) стандартными правилами без привязки к объекту(так как в УТ 11 этого нет), а затем как-то придётся при переносе делать столько позиций номенклатуры, сколько есть наборов характеристик, при этом подставлять нужные значения в свойства, поиском из уже перенесённых свойств.
Проясните пожалуйста конечную цель в переносе справочника.
(6)(8) Необходимо перенести номенклатуру как есть, с учетом характеристик? И вы не можете этого сделать?
(1) Или необходимо перенести номенклатуру если не ведется по ней учет по доп.характеристикам, а если ведется, тогда создать nn'ое количество элементов номенклатора с наименованием Наименование + СвойствоХарактеристики + ЗначениеХарактеристики? Пример: Блузка размер S
Могу предоставить решение как для одного варианта, так и для другого.
(6)(8) Необходимо перенести номенклатуру как есть, с учетом характеристик? И вы не можете этого сделать?
(1) Или необходимо перенести номенклатуру если не ведется по ней учет по доп.характеристикам, а если ведется, тогда создать nn'ое количество элементов номенклатора с наименованием Наименование + СвойствоХарактеристики + ЗначениеХарактеристики? Пример: Блузка размер S
Могу предоставить решение как для одного варианта, так и для другого.
(9) denis_aka_wolf, фирма хочет отказаться от использования ведения номенклатуры в разрезе характеристик. Сейчас работаем в УТ 10.3, планируется переход на УТ 11.1. Нужно перенести номенклатуру, для каждой характеристики создавать отдельную позицию номеклатуры, то есть второй вариант.
Если сам планируешь делать, то спрашивай, чего не понятно. Конкретно таких правил не попадалось, но их не сложно сделать.
Начни, задавай вопросы, думаю помогут. Первый вопрос, не очень понятен, если можно, пример приведи.
Навскидку думаю, что здесь в наименование номенклатуры надо добавить Характеристику и искать по Наименованию, а также не забыть указать КлючВыгружаемыхДанных (или как он там называется, с учетом измененных реквизитов синхронизации, а то номенклатура в одну выгрузится)
Начни, задавай вопросы, думаю помогут. Первый вопрос, не очень понятен, если можно, пример приведи.
Навскидку думаю, что здесь в наименование номенклатуры надо добавить Характеристику и искать по Наименованию, а также не забыть указать КлючВыгружаемыхДанных (или как он там называется, с учетом измененных реквизитов синхронизации, а то номенклатура в одну выгрузится)
в УТ 11 есть справочник "значения свойств объектов", где представлены все возможные наборы Свойство - Значение, при создании номенклатуры, я выбираю вид номенклатуры, с указанным набором свойств и выбираю нужное значение для каждого свойства. То есть свойства и значения не имеют ссылки на владельца(номенклатуру), а хранятся как табличная часть
(11) В УТ11 дополнительные реквизиты и дополнительные сведения это и есть свойства и категории, просто другое название. Чтобы их использовать необходимо включить в настройках параметров учета "Использовать дополнительные реквизиты и сведения".
PS: отписался на электронную почту, жду ответа.
PS: отписался на электронную почту, жду ответа.
готов помочь, но не совсем понимаю результат, для начала, есть источник, номенклатура "ботинки", у ней в свойствах указано "белые", тогда в базе приемник создается характеристика "ботинки белые", а номенклатура из чего будет создаваться из ботинок? или не так задам вопрос что в источнике является товаров, который должен стать товаров в приемнике?
в целом думаю где то так
создаем ПКО из номенклатуры -> номенклатуру
создаем кпо свойство->характеристика, но у ПКС владелец, указываем в "перед выгрузкой" значение = источник.Объект, тогда получится что владельцем характеристики будет объект свойства, а он у нас номенклатура, вот так и получится связка.
создаем ПКО из номенклатуры -> номенклатуру
создаем кпо свойство->характеристика, но у ПКС владелец, указываем в "перед выгрузкой" значение = источник.Объект, тогда получится что владельцем характеристики будет объект свойства, а он у нас номенклатура, вот так и получится связка.
немного не так :)
ПКО номенклатура
ПКО характеристика из спр значение свойст, оно из структуры будет заполняться
ПКО регистр значение свойств в значение свойств
пкс "Объект" здесь делаем "Перед выгрузкой" делаем как:
ПКО номенклатура
ПКО характеристика из спр значение свойст, оно из структуры будет заполняться
ПКО регистр значение свойств в значение свойств
пкс "Объект" здесь делаем "Перед выгрузкой" делаем как:
ВладелецТЗ = создатьОбъект("ТаблицаЗначений");
ВладелецТЗ.НоваяКолонка("Владелец");
ВладелецТЗ.НоваяКолонка("Наименование");
ВладелецТЗ.НоваяКолонка("ПометкаУдаления");
ВладелецТЗ.НоваяСтрока();
ВладелецТЗ.Владелец = Источник.Объект;
ВладелецТЗ.Наименование = Источник.Свойство.Наименование;
ВладелецТЗ.ПометкаУдаления = Ложь;
Значение = ВладелецТЗ;
Показать
Допустим в ПКО "Номенклатура" у тебя получатся реквизиты:
Наименование
ДополнительныеРеквизиты(табличная часть)
-Свойство
-Значение
В ПВД для номенклатуры пишешь:
ТаблицаХарактеристик = Новый ТаблицаЗначений;
ТаблицаХарактеристик.Колонки.Добавить("Свойство");
ТаблицаХарактеристик.Колонки.Добавить("Значение");
Для Каждого Эл Из КоллекцияХарактеристик Цикл // КоллекцияХарактеристик - сам пожалуйста заполни
НоваяСтрока = КоллекцияОбъектов.Добавить();
НоваяСтрока.Наименование = Эл.Наименование; // с учетом наименования номенкалтуры и характеристики
НоваяСтрока.ДополнительныеРеквизиты = ТаблицаХарактеристик.Скопировать();
НоваяХарактеристика = НоваяСтрока.ДополнительныеРеквизиты.Добавить();
НоваяХарактеристика.Свойство = ...
НоваяХарактеристика.Значение = ...
КонецЦикла
Наименование
ДополнительныеРеквизиты(табличная часть)
-Свойство
-Значение
В ПВД для номенклатуры пишешь:
ТаблицаХарактеристик = Новый ТаблицаЗначений;
ТаблицаХарактеристик.Колонки.Добавить("Свойство");
ТаблицаХарактеристик.Колонки.Добавить("Значение");
Для Каждого Эл Из КоллекцияХарактеристик Цикл // КоллекцияХарактеристик - сам пожалуйста заполни
НоваяСтрока = КоллекцияОбъектов.Добавить();
НоваяСтрока.Наименование = Эл.Наименование; // с учетом наименования номенкалтуры и характеристики
НоваяСтрока.ДополнительныеРеквизиты = ТаблицаХарактеристик.Скопировать();
НоваяХарактеристика = НоваяСтрока.ДополнительныеРеквизиты.Добавить();
НоваяХарактеристика.Свойство = ...
НоваяХарактеристика.Значение = ...
КонецЦикла
(22) одна строка в КоллекцияОБъектов это одна номенклатура, поэтому добавля столько строк, сколько характеристик, Код номенклатуры пусть автоматом генерится, синхронизируй по наименованию (в котором будет включено Наиименование номенклатуры, и характеристика), только следи, чтобы наименования были разные
что-то зашёл в тупик. пишу такой код в ПВД номенклатуры в обработчике "ПередОбработкой":
Запросы.ПроверкаНаличияХарактеристик.УстановитьПараметр("Владелец", Источник.Ссылка);
Выборка = Запрос.Выполнить().Выгрузить();
Если Выборка.Следующий() <> Ложь Тогда
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка.Ссылка, , , ,"ХарактеристикиНоменклатуры");
КонецЦикла;
Иначе
ВыгрузитьПоПравилу(Источник, , , ,"Номенклатура");
КонецЕсли;
выдает ошибку при выгрузке данных:
Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = Номенклатура
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML(10245)
КодСообщения = 31
в чем может быть проблема?
Запросы.ПроверкаНаличияХарактеристик.УстановитьПараметр("Владелец", Источник.Ссылка);
Выборка = Запрос.Выполнить().Выгрузить();
Если Выборка.Следующий() <> Ложь Тогда
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка.Ссылка, , , ,"ХарактеристикиНоменклатуры");
КонецЦикла;
Иначе
ВыгрузитьПоПравилу(Источник, , , ,"Номенклатура");
КонецЕсли;
выдает ошибку при выгрузке данных:
Ошибка в обработчике события ПередОбработкойПравилаВыгрузки
ПВД = Номенклатура
Обработчик = ПередОбработкойВыгрузкиДанных
ОписаниеОшибки = Ошибка компиляции при вычислении выражения или выполнении фрагмента кода
ПозицияМодуля = Обработка.УниверсальныйОбменДаннымиXML(10245)
КодСообщения = 31
в чем может быть проблема?
(27) scorp_23,
После выполнения первой строки в переменной Выборка содержится таблица значений. У таблицы значений нет метода .Следующий() Исправьте строку "Запрос.Выполнить().Выгрузить();" на "Запрос.Выполнить().Выбрать();" И тогда в Выборка будет выборка запроса, а не таблица значений.
Вы принципиально хотите использовать правила конвертации? Если это единоразовая задача не проще ли сделать внешнюю обработку?
Выборка = Запрос.Выполнить().Выгрузить();
Если Выборка.Следующий() <> Ложь Тогда
Пока Выборка.Следующий() Цикл
После выполнения первой строки в переменной Выборка содержится таблица значений. У таблицы значений нет метода .Следующий() Исправьте строку "Запрос.Выполнить().Выгрузить();" на "Запрос.Выполнить().Выбрать();" И тогда в Выборка будет выборка запроса, а не таблица значений.
Вы принципиально хотите использовать правила конвертации? Если это единоразовая задача не проще ли сделать внешнюю обработку?
(29) scorp_23, Если Вы про это , то, полагаю, верно. Вообще использование правил конвертации мне кажется слишком сложным для разового использования, подробно с ними не разбирался, поэтому не знаю особенностей работы этого механизма, везде ограничивался внешней обработкой, com соединениями и excel.
Запросы.ПроверкаНаличияХарактеристик.УстановитьПараметр("Владелец", Источник.Ссылка);
что-то не понятно, судя по всему, запросом является Запросы.ПроверкаНаличияХарактеристик (именно для него устанавливаете параметр), значит и результат должен быть либо
ТЗ = Запросы.ПроверкаНаличияХарактеристик.Выполнить().Выгрузить();
либо
Выборка = Запросы.ПроверкаНаличияХарактеристик.Выполнить().Выбрать()
Для Выборка используете Пока Выборка.Следущий() Цикл
Для ТЗ - Для каждого Стр ИЗ ТЗ Цикл
Предварительно проверять условие ни в коем случае не надо (такая проверка тоже изменяет позицию выборки)
ТЗ = Запросы.ПроверкаНаличияХарактеристик.Выполнить().Выгрузить();
либо
Выборка = Запросы.ПроверкаНаличияХарактеристик.Выполнить().Выбрать()
Для Выборка используете Пока Выборка.Следущий() Цикл
Для ТЗ - Для каждого Стр ИЗ ТЗ Цикл
Предварительно проверять условие ни в коем случае не надо (такая проверка тоже изменяет позицию выборки)
Приложил пример, можно использовать как пример)) номенклатура выгружается по каждой характеристики из документа
Прикрепленные файлы:
упп-бп реализация.xml
Практически всё готово - содаётся такое количество позиций номенклатуры, сколько есть характеристик, есть выгруженные свойтва характеристик и их значения, осталось дело за малым - заполнить дополнительные реквизиты в базе приёмнике(по аналогии с заполненными характеристиками в базе источнике).
Делаю отбор свойств и значений характеристики номенкларуры:
Как теперь этими значениями заполнить соотвествующие значения дополнительных реквизитов(имя свойства характеристи в базе-источнике соотвествует имени дополнительного реквизита в базе-приёмнике)?
Запрос = Новый Запрос("
|ВЫБРАТЬ
| ЗначенияСвойствОбъектов.Свойство КАК Свойство,
| ЗначенияСвойствОбъектов.Значение КАК Значение
|ИЗ
| РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
|ГДЕ
| ЗначенияСвойствОбъектов.Объект = &Объект
|");
Запрос.УстановитьПараметр("Объект", Источник.Ссылка);
КоллекцияОбъектов = Запрос.Выполнить().Выгрузить();
ПоказатьКак теперь этими значениями заполнить соотвествующие значения дополнительных реквизитов(имя свойства характеристи в базе-источнике соотвествует имени дополнительного реквизита в базе-приёмнике)?
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот