Имя: Пароль:
1C
1С v8
Как отключить форму выбора ?
0 Rumpil
 
21.04.12
11:30
В табличной части документа есть колонка Номенклатура, нужно чтобы при одном виде операции открывалась моя собственная форма выбора товаров, при другом виде операции стандартная. Все сделал, но возникла проблема, при открытии моей собственной формы выбора - она открывается и все нормально, но параллельно с ней открывается еще и стандартная форма выбора - как можно отключить открытие этой стандартной формы выбора при определенном виде операции документа ?
1 le_
 
21.04.12
11:34
СтандартнаяОбработка = Ложь;
2 Рэйв
 
21.04.12
11:35
СтандартнаяОбработка=Ложь:
3 Рэйв
 
21.04.12
11:35
не успел блин:)
4 Rumpil
 
21.04.12
11:49
Мерси, господа )) еще один маленький вопросик - стандартную он больше не открывает, но по результатам выбора из моей формы выбора добавляется две строки - одна строка с результатом моего выбора, а вторая строк - пустая, я так понимаю пустая строка это опять же какой то хвост от стандартной формы выбора, да ?
5 le_
 
21.04.12
11:56
(4) Скорее всего что-то неправильно сделал.
Покажи код.
6 Rumpil
 
21.04.12
12:04
Если ВидОперации = Перечисления.ВидыОперацийРезервированиеТоваров.ИзЗаказа Тогда
       
Форма = Справочники.Номенклатура.ПолучитьФормуВыбора("ФормаВыбораСвоя1");        
     
   СписокТов = Новый СписокЗначений;
   
   Для Каждого ТекСтрокаТовары Из ЗаказПоставщику.Товары Цикл
   
   ЗапросДок = Новый Запрос;    
   ЗапросДок.Текст="ВЫБРАТЬ
                   |    ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику,
                   |    ЗаказыПоставщикамОстаткиИОбороты.Номенклатура,
                   |    ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток
                   |ИЗ
                   |    РегистрНакопления.ЗаказыПоставщикам.ОстаткиИОбороты КАК ЗаказыПоставщикамОстаткиИОбороты
                   |ГДЕ
                   |    ЗаказыПоставщикамОстаткиИОбороты.Номенклатура = &ТекНом
                   |    И ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику = &ТекЗаказ";    
   ЗапросДок.УстановитьПараметр("ТекНом",ТекСтрокаТовары.Номенклатура);
   ЗапросДок.УстановитьПараметр("ТекЗаказ",ЗаказПоставщику);

   ВыборкаЗапросДок = ЗапросДок.Выполнить().Выбрать();    
   
   Пока ВыборкаЗапросДок.Следующий() Цикл

       
       СписокТов.Добавить(ВыборкаЗапросДок.Номенклатура.Код);
       

   КонецЦикла;
   
   

Форма.Отбор.Код.Использование=Истина;
       Форма.Отбор.Код.ВидСравнения=ВидСравнения.ВСписке;
       Форма.Отбор.Код.Значение=СписокТов;
       
       ВыбТовар  = Форма.ОткрытьМодально();


Новая = Товары.Добавить();
Новая.Номенклатура = ВыбТовар;
Новая.Артикул = ВыбТовар.Артикул;
Новая.ЕдиницаИзмерения = ВыбТовар.БазоваяЕдиницаИзмерения;
Новая.Количество = 1;
СтандартнаяОбработка = Ложь;
   
   
   
КонецЦикла;    

КонецЕсли;
7 Rumpil
 
21.04.12
12:06
то есть вот так


Если ВидОперации = Перечисления.ВидыОперацийРезервированиеТоваров.ИзЗаказа Тогда
+ Code

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

   ВыборкаЗапросДок = ЗапросДок.Выполнить().Выбрать();    
   
   Пока ВыборкаЗапросДок.Следующий() Цикл

       
       СписокТов.Добавить(ВыборкаЗапросДок.Номенклатура.Код);
       

   КонецЦикла;
   
  КонецЦикла;  

Форма.Отбор.Код.Использование=Истина;
       Форма.Отбор.Код.ВидСравнения=ВидСравнения.ВСписке;
       Форма.Отбор.Код.Значение=СписокТов;
       
       ВыбТовар  = Форма.ОткрытьМодально();


Новая = Товары.Добавить();
Новая.Номенклатура = ВыбТовар;
Новая.Артикул = ВыбТовар.Артикул;
Новая.ЕдиницаИзмерения = ВыбТовар.БазоваяЕдиницаИзмерения;
Новая.Количество = 1;
СтандартнаяОбработка = Ложь;
   
   
   
 

КонецЕсли;
8 le_
 
21.04.12
12:12
(7) А зачем строка-то добавляется? Новая = Товары.Добавить(); ?
Просто устанавливай значения в ту строку, в которой выбираешь.
9 Rumpil
 
21.04.12
12:13
(8) не понял, это как ?
10 le_
 
21.04.12
12:17
Процедура ТоварыНоменклатураНачалоВыбора(Элемент, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
   Форма = Справочники.Номенклатура.ПолучитьФормуВыбора("ФормаВыбораСвоя1");
   Форма.Отбор.Код.Использование=Истина;
   Форма.Отбор.Код.ВидСравнения=ВидСравнения.ВСписке;
   Форма.Отбор.Код.Значение = СписокТов;
   
   ВыбТовар  = Форма.ОткрытьМодально();
   СтрокаТабличнойЧасти.Номенклатура = ВыбТовар;
   
КонецПроцедуры
11 Rumpil
 
21.04.12
12:40
(10) спасибо, все получилось
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.