|
УПП: Загрузка характеристик номенклатуры и их свойств | ☑ | ||
---|---|---|---|---|
0
Alex3000
12.07.11
✎
20:03
|
Добрый день!
У нас на предприятии стоит УПП. Если это важно, то недавно перешли на 8.2. У номенклатуры есть свойство - Заказ-комплект из справочника Номера заказ комплектов. Выглядит это примерно так: [URL=http://www.radikal.ru][IMG]http://s001.radikal.ru/i196/1107/7e/c3f6258db936.jpg[/IMG][/URL] На всякий случай дублирую ссылку, не знаю, отобразится ли в форуме: http://s001.radikal.ru/i196/1107/7e/c3f6258db936.jpg Есть необходимость подгрузить перечень характеристик номенклатуры. Делаю это при помощи обработки ИТС - загрузка в табличную часть - благо там есть возможность загрузки в справочник: http://i012.radikal.ru/1107/ad/d72c10016ecb.jpg Вставляю код При записи объекта - при загрузке в справочник Номера заказ комплектов: http://s61.radikal.ru/i174/1107/3b/99c5d4544d82.jpg НачинаяС=Объект.Код-Объект.КоличествоНомеров+1 ; КоличествоНомеров =Объект.КоличествоНомеров; Попытка Номенклатура=Объект.Владелец ; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | _НомераЗаказКомплектов.Ссылка КАК Ссылка, | _НомераЗаказКомплектов.Код КАК Код, | _НомераЗаказКомплектов.Наименование КАК Наименование |ИЗ | Справочник._НомераЗаказКомплектов КАК _НомераЗаказКомплектов |ГДЕ | (&НачальныйНомер >= _НомераЗаказКомплектов.Код - _НомераЗаказКомплектов.КоличествоНомеров + 1 | И &НачальныйНомер <= _НомераЗаказКомплектов.Код | ИЛИ &КонечныйНомер >= _НомераЗаказКомплектов.Код - _НомераЗаказКомплектов.КоличествоНомеров + 1 | И &КонечныйНомер <= _НомераЗаказКомплектов.Код) | И _НомераЗаказКомплектов.Владелец = &Номенклатура"; Запрос.УстановитьПараметр("НачальныйНомер", Объект.Код-Объект.КоличествоНомеров+1); Запрос.УстановитьПараметр("КонечныйНомер", Объект.Код); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Выборка = Запрос.Выполнить(); Если НЕ Выборка.Пустой() Тогда Выборка = Выборка.Выбрать(); Выборка.Следующий(); Если Объект.КоличествоНомеров=1 Тогда ВызватьИсключение "Данный номер ("+Формат(НачинаяС,"ЧГ=0")+") уже использован в заказ-комплекте ("+Формат(Выборка.Код,"ЧГ=0")+": "+СокрЛП(Выборка.Наименование)+")"; Иначе ВызватьИсключение "Данный диапазон("+Формат(НачинаяС,"ЧГ=0")+"-"+Формат(НачинаяС+КоличествоНомеров-1,"ЧГ=0")+") уже использован в заказ-комплекте ("+Формат(Выборка.Код,"ЧГ=0")+": "+СокрЛП(Выборка.Наименование)+")"; КонецЕсли; Иначе НовыйЭлемент = Справочники._НомераЗаказКомплектов.СоздатьЭлемент(); НовыйЭлемент.Владелец = Номенклатура; НовыйЭлемент.Код = НачинаяС+КоличествоНомеров-1; НовыйЭлемент.КоличествоНомеров = КоличествоНомеров; НовыйЭлемент.Наименование = ?(КоличествоНомеров=1, Формат(НачинаяС,"ЧГ=0"), Формат(НачинаяС,"ЧГ=0")+"-"+Формат(НачинаяС+КоличествоНомеров-1,"ЧГ=0")); НовыйЭлемент.Записать(); НоваяХарактеристика = Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); НоваяХарактеристика.Владелец = Номенклатура; НоваяХарактеристика.Активная = Истина; НоваяХарактеристика.Наименование = НовыйЭлемент.Наименование; НоваяХарактеристика.Записать(); Ответ = НоваяХарактеристика.Ссылка; Набор = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Набор.Отбор.Объект.Установить(НоваяХарактеристика.Ссылка); Набор.Отбор.Свойство.Установить(Справочники._ГлобальныеЗначения.СвойствоЗаказКомплект.Значение); НоваяСтрокаНабора = Набор.Добавить(); НоваяСтрокаНабора.Объект = НоваяХарактеристика.Ссылка; НоваяСтрокаНабора.Свойство = Справочники._ГлобальныеЗначения.СвойствоЗаказКомплект.Значение; НоваяСтрокаНабора.Значение = НовыйЭлемент.Ссылка; Набор.Записать(); ОписаниеОшибки=""; КонецЕсли; Исключение ОписаниеОшибки = ОписаниеОшибки(); КонецПопытки; Загрузка успешно происходит: http://s60.radikal.ru/i169/1107/99/30e48b5c174c.jpg Следующим этапом - загружаю в справочник Характеристика номенклатуры: http://i040.radikal.ru/1107/f3/ead5cabf724b.jpg http://s004.radikal.ru/i206/1107/c2/1713b30b3497.jpg Характеристика номенклатуры появляется в перечне - при редактировании элемента номенклатуры: http://s015.radikal.ru/i333/1107/ce/edd9354b3c09.jpg Но при открытии элемента характеристики номенклатуры, видно, что свойство Заказ-комплект - пустое. http://s005.radikal.ru/i209/1107/2f/7074e63bc886.jpg Что я делаю неправильно? Как подключить это свойство и на каком этапе подскажите, пожалуйста. |
|||
1
zag2art
12.07.11
✎
20:10
|
Регистр сведений "Значения свойств объектов" заполнил?
|
|||
2
Maniac
12.07.11
✎
20:12
|
в регистр надо загружать
|
|||
3
zag2art
12.07.11
✎
20:12
|
Там "Свойство" - должна быть ссылка по моему на план видов характеристик.
|
|||
4
zag2art
12.07.11
✎
20:12
|
Здесь - НоваяСтрокаНабора.Свойство = Справочники._ГлобальныеЗначения.СвойствоЗаказКомплект.Значение;
|
|||
5
Alex3000
12.07.11
✎
20:40
|
А вот этот код:
Набор = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Набор.Отбор.Объект.Установить(НоваяХарактеристика.Ссылка); Набор.Отбор.Свойство.Установить(Справочники._ГлобальныеЗначения.СвойствоЗаказКомплект.Значение); НоваяСтрокаНабора = Набор.Добавить(); НоваяСтрокаНабора.Объект = НоваяХарактеристика.Ссылка; НоваяСтрокаНабора.Свойство = Справочники._ГлобальныеЗначения.СвойствоЗаказКомплект.Значение; НоваяСтрокаНабора.Значение = НовыйЭлемент.Ссылка; Набор.Записать(); не записывает разве с в значения свойств объектов? После загрузки номеров заказов и указанного кода - в данном справочнике появляется новое значение, я проверял. |
|||
6
zag2art
12.07.11
✎
22:10
|
посмотри еще раз (3)
|
|||
7
Alex3000
13.07.11
✎
09:15
|
После того, как заменил
НоваяСтрокаНабора.Свойство = Справочники._ГлобальныеЗначения.СвойствоЗаказКомплект.Значение; на НоваяСтрокаНабора.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Заказ-комплект") т.е. сделал ссылку на планы видов характеристик - в регистре значения свойств объектов запись перестала появляться. |
|||
8
Alex3000
14.07.11
✎
13:03
|
Всё, решил.
В коде была ошибка. Вставил код в обработку при загрузке не справочника а характеристик. Во вкладку При записи: Объект.Записать(); Если Найти(Объект.Наименование,"-")=0 Тогда ОдноЗначение=Ложь; НачальныйКомплект=Число(Объект.Наименование); КонечныйКомплект=Число(Объект.Наименование); //Сообщить( НачальныйКомплект); //Сообщить( КонечныйКомплект); Иначе ОдноЗначение=Истина; НачальныйКомплект=Число(Лев(Объект.Наименование,Найти(Объект.Наименование,"-")-1)); КонечныйКомплект=Число(Прав(Объект.Наименование,СтрДлина(Объект.Наименование)- Найти(Объект.Наименование,"-"))); //Сообщить( НачальныйКомплект); //Сообщить( КонечныйКомплект); КонецЕсли; НачинаяС=НачальныйКомплект; //КоличествоНомеров =Объект.КоличествоНомеров; КоличествоНомеров=КонечныйКомплект-НачальныйКомплект+1; КодНомераЗаказа=КонечныйКомплект; Попытка Номенклатура=Объект.Владелец ; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | _НомераЗаказКомплектов.Ссылка КАК Ссылка, | _НомераЗаказКомплектов.Код КАК Код, | _НомераЗаказКомплектов.Наименование КАК Наименование |ИЗ | Справочник._НомераЗаказКомплектов КАК _НомераЗаказКомплектов |ГДЕ | (&НачальныйНомер >= _НомераЗаказКомплектов.Код - _НомераЗаказКомплектов.КоличествоНомеров + 1 | И &НачальныйНомер <= _НомераЗаказКомплектов.Код | ИЛИ &КонечныйНомер >= _НомераЗаказКомплектов.Код - _НомераЗаказКомплектов.КоличествоНомеров + 1 | И &КонечныйНомер <= _НомераЗаказКомплектов.Код) | И _НомераЗаказКомплектов.Владелец = &Номенклатура"; Запрос.УстановитьПараметр("НачальныйНомер", НачинаяС); Запрос.УстановитьПараметр("КонечныйНомер", Объект.Код); Запрос.УстановитьПараметр("Номенклатура", Номенклатура); Выборка = Запрос.Выполнить(); Если НЕ Выборка.Пустой() Тогда Выборка = Выборка.Выбрать(); Выборка.Следующий(); Если Объект.КоличествоНомеров=1 Тогда ВызватьИсключение "Данный номер ("+Формат(НачинаяС,"ЧГ=0")+") уже использован в заказ-комплекте ("+Формат(Выборка.Код,"ЧГ=0")+": "+СокрЛП(Выборка.Наименование)+")"; Иначе ВызватьИсключение "Данный диапазон("+Формат(НачинаяС,"ЧГ=0")+"-"+Формат(НачинаяС+КоличествоНомеров-1,"ЧГ=0")+") уже использован в заказ-комплекте ("+Формат(Выборка.Код,"ЧГ=0")+": "+СокрЛП(Выборка.Наименование)+")"; КонецЕсли; Иначе НовыйЭлемент = Справочники._НомераЗаказКомплектов.СоздатьЭлемент(); НовыйЭлемент.Владелец = Номенклатура; НовыйЭлемент.Код = НачинаяС+КоличествоНомеров-1; НовыйЭлемент.КоличествоНомеров = КоличествоНомеров; НовыйЭлемент.Наименование = ?(КоличествоНомеров=1, Формат(НачинаяС,"ЧГ=0"), Формат(НачинаяС,"ЧГ=0")+"-"+Формат(НачинаяС+КоличествоНомеров-1,"ЧГ=0")); НовыйЭлемент.Записать(); НоваяХарактеристика = Объект; // Справочники.ХарактеристикиНоменклатуры.СоздатьЭлемент(); // НоваяХарактеристика.Владелец = Номенклатура; // НоваяХарактеристика.Активная = Истина; // НоваяХарактеристика.Наименование = НовыйЭлемент.Наименование; // НоваяХарактеристика.Записать(); Ответ = НоваяХарактеристика.Ссылка; //Св=ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Заказ-комплект"); Набор = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей(); Набор.Отбор.Объект.Установить(НоваяХарактеристика.Ссылка); Набор.Отбор.Свойство.Установить(Справочники._ГлобальныеЗначения.СвойствоЗаказКомплект.Значение); //Набор.Отбор.Свойство.Установить(Св); НоваяСтрокаНабора = Набор.Добавить(); НоваяСтрокаНабора.Объект = НоваяХарактеристика.Ссылка; //НоваяСтрокаНабора.Свойство = Св ; НоваяСтрокаНабора.Свойство=Справочники._ГлобальныеЗначения.СвойствоЗаказКомплект.Значение; НоваяСтрокаНабора.Значение = НовыйЭлемент.Ссылка; Сообщить(НоваяСтрокаНабора.Значение); Сообщить("Прошло"); Набор.Записать(); ОписаниеОшибки=""; КонецЕсли; Исключение ОписаниеОшибки = ОписаниеОшибки(); Сообщить("Не прошло"); Сообщить(ОписаниеОшибки); КонецПопытки; Теперь всё успешно работает, всем спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |