Имя: Пароль:
1C
1С v8
Перенос номенклатуры по свойству в КД
, ,
0 Viktosha
 
11.01.12
14:43
Обе базы УПП 1.3.20 Необходимо организовать перенос документов с помощью КД, но вся проблема в номенклатуре: часть из нее надо перенести так как она и есть, а часть по доп. свойству, которое есть и в базе источника и в базе приемника, называется и там и там одинаково и значения тоже. Одно значение свойства есть только у одной позиции номенклатуры в базе приемника, и у нескольких элементов в базе источника.

Подскажите пож-та, как надо прописать правило конвертации объекта Номенклатура, чтобы выполнялось это условие?
1 decdmb
 
11.01.12
14:50
А если просто все перенести, а лишнее удалить?
2 Viktosha
 
11.01.12
14:55
(1)нет, так нельзя, очень много номенклатуры и руками много надо будет исправлять в документах постоянно
3 Маркетолог
 
11.01.12
15:02
Если вот это верно :
"Одно значение свойства есть только у одной позиции номенклатуры в базе приемника, и у нескольких элементов в базе источника"
То получается по свойству нельзя синхронизировать.
4 Маркетолог
 
11.01.12
15:05
(3) Хотя нет, можно.
5 Viktosha
 
11.01.12
15:08
(3,4) можно, многие к одному получается

Понимаю, что надо использовать ПриВыгрузке в наименование наверное записывать свойство и может какой-то доп. реквизит создать булево, типа "ЗагрузкаПоСвойству", если заполнено свойство, то ставить его истина и искать номенклатуру в приемнике тоже по этому свойству но уже в "ПриЗагрузке" Правильно?
6 Маркетолог
 
11.01.12
15:12
(5) Как то так.
7 Viktosha
 
11.01.12
15:16
А что конкретно писать - вот тут трудности, так как с КД пока на "Вы"? Например, ПриЗагрузке у ПКО "Номенклатура" запросом вытаскиваю свойство, затем, если заполнено, то как записать в ПКС "Наименование" - наименование этого свойства и как надо добавить флажок?
8 Маркетолог
 
11.01.12
15:42
(7) Открой обработчик и нажми информация по обработчикам.
   Там очень хорошо расписано как обращаться к свойствам объектов.

   Например в ПослеЗагрузки

   Объект.Наименование = "ххххххх";
9 Маркетолог
 
11.01.12
15:44
Как вариант :)
Создать в базах в Номенклатурах Реквизит с этим свойством.
Заполнить его обработкой.
Синхронизировать по нему.
10 Viktosha
 
11.01.12
16:10
(9) не, не подойдет к сожалению
(8) а как флажку, который просто как некий параметр переносится присвоить
11 Viktosha
 
11.01.12
17:16
Создала у ПКО номенклатуры Новое ПКС где поставила передавать данные в параметр и у ПКС перед выгрузкой написала:
Если не Источник.ЭтоГруппа ТОгда
СвойствоВБУ = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Номенклатура в БУ");
Запрос = Новый Запрос;
Запрос.текст = "ВЫБРАТЬ
  |    ЗначенияСвойствОбъектов.Значение
  |ИЗ
  |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
  |ГДЕ
  |    ЗначенияСвойствОбъектов.Объект = &Объект
  |    И ЗначенияСвойствОбъектов.Свойство = &Свойство";
Запрос.УстановитьПараметр("Объект",Источник.Ссылка);
Запрос.УстановитьПараметр("Свойство",СвойствоВБУ);
 РегСв = Запрос.Выполнить().Выбрать();
Если РегСв.следующий() Тогда
    Значение = Истина;
Иначе
    Значение = Ложь;
КонецЕсли;

КонецЕсли;

А как теперь к этому параметры обратиться при загрузке? Я назвала его ИскатьПоСвойству - заполняет при выгрузке его правильно
12 Viktosha
 
11.01.12
18:22
При загрузке к нему никак не обратиться получается? Только после, а после меня уже не устраивает((( Он получается загрузит номенклатуру, а только потом посмотрит как ее загружать.
13 Жан Пердежон
 
11.01.12
19:20
(12) тебе нужно использовать обработчик "Поля поиска":
например, значение передать в параметр, а в обработчике что-то типа:

Запрос.Текст = "ВЫБРАТЬ...";
Запрос.УстановитьПараметр("ИмяСвойства", ПараметрыОбъекта["ИскатьПоСвойству"]);
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
   СсылкаНаОбъект = Выборка.Ссылка;
КонецЕсли;
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.