Переношу номенклатуру в другую БД, хотел, чтоб в справочнике-приемнике при создании номенклатуры, по-умолчанию задавался реквизит НаборУпаковок ("Индивидуальный набор для номенклатуры"). В конфигурации-источнике такого реквизита нет, вот я и понять не могу как сделать-то?
Создал ПКО, в нем в обработчике "При загрузке" добавил такой код:
Объект.НаборУпаковок=Справочники.УпаковкиНоменклатуры.НайтиПоНаименованию("Индивидуальный набор для номенклатуры").Ссылка;
Но не срабатывает, реквизит остается пустым, что не так?
Варианты:
- Использовать событие "После загрузки" (обычно использую его);
- Отсутствие в справочнике УпаковкиНоменклатуры элемента "Индивидуальный набор для номенклатуры"
(скопируй из наименования элемента, либо вынеси на предопределенный элемент справочника);
- Возможно справочник УпаковкиНоменклатуры является подчиненным;
- Наличие перезаписи реквизита НаборУпаковок ниже по коду (перенеси код в самый низ);
- Возможно номенклатура уже существует в базе-приемнике и в ПКО стоит флаг "Не замещать существующие объекты в приемнике" (посмотри флаги "Загрузка данных" на закладке "Настройка" в ПКО);
Понял в чем была проблема, я выгружал напрямую в другую БД, при этом как оказалось не работет вышеуказаный обработчик. Поэтому пришлось выгружать через промежуточный файл.
Далее я выяснил, что элемент "Индивидуальный набор для номенклатуры" является предопределенным, и потому такой код:
Объект.НаборУпаковок=Справочники.УпаковкиНоменклатуры.НайтиПоНаименованию("Индивидуальный набор для номенклатуры");
Кстати, может кто подскажет, можно ли сделать так, чтоб реквизит Объекта-приемника "НаборУпаковок" получал предопределенное значение, но при этом миграция информации из одной базы в другую была "на прямую", т.е. без промежуточного файла?
tusv, извини, но не совсем понял. Так такового ПКО НаборыУпаковок не существует (система автоматически его не создала, в Базе-отправителе, нет ничего подобного НаборуУпаковок). Вышеуказанный код я засунул в ПКО Номенклатура (СправочникСсылка.Номенклатура -> СправочникСсылка.Номенклатура), в обработчик ПослеЗагрузки.
Вот ещё - <Такое то значение>, это:Справочники.НаборыУпаковок.ИндивидуальныйДляНоменклатуры.Ссылка?
И последнее, где в Конвертации значений можно установить "выбрать из списка предопределенных"?
PrintScreen
Делал РИБ на Рознице. Магазин разбит на 3 точки. Обмен данными настроил по e-mail.Год уже прога в таком режиме отработала, клиенты не жаловались. По поводу лицензий: купить доп лицензию не получится, перед тем как покупать ПО узнавал в 1С-е по этому поводу. Если у вас 3 точки, значит должно быть 3 коробки и никак иначе. Если же у вас терминал-сервер, тогда все по старому, одна коробка+ n количество лицензий...
ИндНабор = Справочники.УпаковкиНоменклатуры.НайтиПоНаименованию("Индивидуальный набор для номенклатуры", Истина);
Если ИндНабор = Объект.НаборУпаковок.ПустаяСсылка() Тогда
Сообщить("Не найдено по наименованию: Индивидуальный набор для номенклатуры");
Иначе
Объект.НаборУпаковок = ИндНабор;
КонецЕсли;
Показать
После такого, ты во всяком случае должен понять где проблема