Имя: Пароль:
1C
1С v8
Дописать условие
,
0 Евгений90
 
29.10.12
13:32
Внешняя обработка записывает значение в свойство номенклатуры. Нужно дописать условие, чтобы запись происходила только туда, где не установлено значение

Процедура ЗаписатьЗначениеНажатие(Элемент)
   Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|    СправочникНоменклатура.Ссылка КАК Номенклатура
|ИЗ
|    Справочник.Номенклатура КАК СправочникНоменклатура
|ГДЕ
|    СправочникНоменклатура.Ссылка В Иерархии(&ТоварыМФГ) И НЕ СправочникНоменклатура.ЭтоГруппа";
Запрос.УстановитьПараметр("ТоварыМФГ", ТоварыМФГ);

Выборка = Запрос.Выполнить().Выбрать();
   
СпрЗначСвОб  = Справочники.ЗначенияСвойствОбъектов;    
свИмпортер = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Импортер");
СпрЗначСвОб = Справочники.ЗначенияСвойствОбъектов;
сСпрЗначСвОб = СпрЗначСвОб.НайтиПоНаименованию(ЭтаФорма.ЗначениеНоменклатуры);
     
Если ЭтаФорма.ЗначениеНоменклатуры.Пустая() Тогда
   Сообщить("Не заполнено значение номенклатуры");
   Возврат;
КонецЕсли;
 
Пока Выборка.Следующий() Цикл
НовЗапись = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьМенеджерЗаписи();
НовЗапись.Объект   = Выборка.Номенклатура;
НовЗапись.Свойство = свИмпортер.Ссылка;
НовЗапись.Значение = сСпрЗначСвОб;


НовЗапись.Записать();  
   
   

КонецЦикла;

Сообщить ("Значение свойства   записано");
КонецПроцедуры
1 Cube
 
29.10.12
13:34
2 Privalov
 
29.10.12
13:37
(0) Где код украл?
3 Privalov
 
29.10.12
13:38
+(2) Ты хоть читал что в нем написано?
4 cw014
 
29.10.12
13:38
(0) Где то я эти СпрЗначСвОб и сСпрЗначСвОб сегодня уже видел
5 Privalov
 
29.10.12
13:40
6 Privalov
 
29.10.12
13:41
7 Евгений90
 
29.10.12
13:42
Началось.... просто скажите что куда дописать, пожалуйста
8 cw014
 
29.10.12
13:44
(7) А если включить моск, СП и подумать?
9 Евгений90
 
29.10.12
13:45
(8) А если просто подсказать?
10 Privalov
 
29.10.12
13:45
(7)Дописать (или переписать) нужно "Что - " код "Куда - "в твоей обработке.
Я ответил на твой вопрос?
11 Privalov
 
29.10.12
13:46
(9)Ты не в школе на уроке.
12 cw014
 
29.10.12
13:48
(9) А давай мы за тебя будем программировать, ну и соответственно ЗП тоже получать
13 PCcomCat
 
29.10.12
13:48
Как-то так:            

Запрос = Новый Запрос;
           Запрос.Текст =
           "ВЫБРАТЬ
           |    ЗначенияСвойствОбъектов.Свойство.Наименование,
           |    ЗначенияСвойствОбъектов.Свойство,
           |    ЗначенияСвойствОбъектов.Объект,
           |    ЗначенияСвойствОбъектов.Значение
           |ИЗ
           |    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
           |ГДЕ
           |    ЗначенияСвойствОбъектов.Свойство.Наименование = &ДопРеквизит
           |    И ЗначенияСвойствОбъектов.Объект = &ДокОбъект";
           
           Запрос.УстановитьПараметр("ДопРеквизит","Документ узла");
           Запрос.УстановитьПараметр("ДокОбъект",Объект.Ссылка);
           
           ТаблицаРезультат = Запрос.Выполнить().Выгрузить();
           //ТаблицаРезультат.ВыбратьСтроку("" + Объект);
           
           Если  ТаблицаРезультат.Количество()<=0 тогда
               ЗаписатьУзел = Истина;
           КонецЕсли;
       КонецЕсли;
       
       //Сообщить(ЗаписатьУзел);
       
       Если ЗаписатьУзел тогда
           НаборЗаписейЗначенияСвойств = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
           
           Запись = НаборЗаписейЗначенияСвойств.Добавить();
           
           Запись.Объект   = Объект.Ссылка;
           Запись.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Документ узла");
           Запись.Значение = Параметры.ДокументУзла;
           
           НаборЗаписейЗначенияСвойств.Отбор.Объект.Установить(Объект.Ссылка);
           
           НаборЗаписейЗначенияСвойств.Записать();

КонецЕсли;
14 Евгений90
 
29.10.12
13:49
Что за люди... вместо того чтобы издеваться, помогли бы. Я не думаю что дописать 2-3 строчки кода для опытных программистов проблема
15 Privalov
 
29.10.12
13:50
(14)А, зачем?
16 Фокусник
 
29.10.12
13:53
(0) >Нужно дописать условие, чтобы запись происходила только туда, где не установлено значение

Например, так:

Делай запрос к справочнику Номенклатура в левом соединении с РС ЗначенияСвойствОбъектов. В обходе результата запроса, по той номенклатуре, где в РС есть null (т.е. "где не установлено значение") ставь своё значение.
17 Cunni
 
29.10.12
13:54
(14) вопрос "как проверить значение реквизита на пустое значение?" был бы воспринят более адекватно.
18 Евгений90
 
29.10.12
13:55
(16)Что такое РС
19 Фокусник
 
29.10.12
13:59
(18) Регистр сведений
20 Евгений90
 
29.10.12
14:01
(16) Спасибо, дальше разберусь
21 zbv
 
29.10.12
14:01
+ (16) лучше наверное будет сразу в запросе отборать по null.
22 Buster007
 
29.10.12
14:01
(0) следует взять книжки и почитать.
23 Фокусник
 
29.10.12
14:05
(21) Верно, так лучше
(20) В запросе проверка
"НЕ Значение есть NULL"
24 zbv
 
29.10.12
14:08
(23) без "НЕ" :)
25 Фокусник
 
29.10.12
14:24
(24) Ну да, он же пустые ищет (задумался о своём) :)
2 + 2 = 3.9999999999999999999999999999999...