Проверьте модуль!!! Где ошибка? Глючит после Если Контрагент.Выбран () = 1 Тогда

Новая тема
"Процедура ОбработкаПодбора(ВыбрНоменклатура)

Если ВыбрНоменклатура.ТипНоменклатуры <> Перечисление.ТипыНоменклатуры.Услуга Тогда

Предупреждение ("Нельзя оформить данным видом документов!", 5);

Возврат;

КонецЕсли;  

ВыбратьСтроки();

Пока ПолучитьСтроку() = 1 Цикл

   Если Услуга = ВыбрНоменклатура Тогда

       Предупреждение("Значение уже выбрано", 10);

Возврат;

КонецЕсли;



КонецЦикла;

Если Контрагент.Выбран () = 1 Тогда

Система = СоздатьОбъект("СписокЗначений");

   ВыбрСистем = СоздатьОбъект("Справочник.Системы");

ВыбрСистем.ИспользоватьВладельца(Контрагент);

ВыбрСистем.ВыбратьЭлементы();

Пока ВыбрСистем.ПолучитьЭлемент() = 1 Цикл

Система = ВыбрСистем;

Если Система <> ВыбрНоменклатура Тогда      //Система

   Предупреждение("Данной системы нет у клиента");  

Возврат;

КонецЕсли;

КонецЦикла;

КонецЕсли;

Кол = 1;

Если ВвестиЧисло(Кол, "Введите количество", 14, 3) = 0 Тогда

  Возврат;

ИначеЕсли Кол = 0 Тогда

Возврат;

КонецЕсли;



НоваяСтрока();

Услуга = ВыбрНоменклатура;

Количество = Кол;

АктивизироватьСтроку();

Пересчет("Услуга");



КонецПроцедуры // ОбработкаПодбора()"
а что это за?...

перед перебором справочника системы создаем список значений, и в ту же переменную вешаем _выборку__справочник__, которую в дальнейшем сравниваем с _элементом__справочника_(!!)

в общем разберись что к чему и расскажи как должно было бы быть :-)
"Скорее всего там надоть что-о в таком роде:



ВыбрСистем = СоздатьОбъект("Справочник.Системы");

ВыбрСистем.ИспользоватьВладельца(Контрагент);

Если ВыбрСистем.НайтиПоРеквизиту("Номенклатура", ВыбрНоменклатура, 0) = 0 Тогда

Предупреждение("Данной системы нет у клиента");

Возврат;

КонецЕсли;"
В общем, в акте оказанных услуг мы указываем номенклатуру услуг. Для контроля был создан подчиненный справочник у контрагента с названием "Сиситемы" куда записываются данные из номенклатуры по услугам. При заполнении акта нужно что бы он проверял если данная система у клиента, если данной системы нет, то он должен об этом сообщить (что бы лишние услуги не впарили клиенту!!!). По переменной Система я уже тоже понял, но он и с ней и без нее все равно пишет что данной системы у клиента нет, а она у него есть! Короче после обеда попробую проверить твой "кусок". Может еще что посоветуешь???

Благодарен за ответ!!! :)
в твоем коде, даже если ты приведешь в порядок переменные, все равно работать не будет, т.к. проверяется первый элемент только...

Т.ч. если делать перебором, то надо вводить еще одну переменную флаг...
Вопрос: "Как ее ввести и где?"
"    Если Контрагент.Выбран () = 1 Тогда

       есть_система = 0;

       ВыбрСистем = СоздатьОбъект("Справочник.Системы");

       ВыбрСистем.ИспользоватьВладельца(Контрагент);

       ВыбрСистем.ВыбратьЭлементы();

       Пока ВыбрСистем.ПолучитьЭлемент() = 1 Цикл

           Если ВыбрСистем.ТекущийЭлемент() = ВыбрНоменклатура Тогда

               есть_система = 1;

               Прервать;;

           КонецЕсли;

       КонецЦикла;

       Если есть_система = 0 Тогда

           Предупреждение("Данной системы нет у клиента");

           Возврат;

       КонецЕсли;

   КонецЕсли;

"
Не работает, пишет то же самое :(
Сори, тормознул :-)



Если ВыбрСистем.Номенклатура = ВыбрНоменклатура Тогда



Ну или как там называется реквизит в котором номенклатура лежит...

конкретно с контрагентом поможет:

если пустоеЗначение( Контрагент)=0 тогда ...



видимо контрагент иногда имеет не агрегатный тип, вот и глючит.
Читают тему
(гостей: 1)

Быстрый переход