7.7 Группа или Элемент

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем kible, 28 май 2010.

  1. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Добрый день!
    Как проверить. Выбрали ли группу справочника или элемент?
  2. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Код:
    ВыбранныйЭлемент.ЭтоГруппа() = 1 // группа
    ВыбранныйЭлемент.ЭтоГруппа() = 0 // элемент
    
  3. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    А как вообще запретить выбор элемента?
  4. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Т.е. хотите чтобы пользователи могли выбирать только группу?
    Где выбирается? Подробнее распишите задачу.
  5. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    В ТЧ документа должна выбираться только группа справочника.
  6. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Один из вариантов:
    Код:
    Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
    Если ИдентЭлемДиалога = "РеквизитТЧ" Тогда
    ФлагСтандОбр = 0;
    Спр = СоздатьОбъект("Справочник.ГруппыИЭлементы");
    Если Спр.Выбрать("Выберите группу", "") = 1 Тогда
    ТекЭлемент = Спр.ТекущийЭлемент();
    Если ТекЭлемент.ЭтоГруппа() = 1 Тогда
    РеквизитТЧ = ТекЭлемент;
    Иначе
    Сообщить("Выберите группу", "!");
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
  7. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
    Если ИдентЭлемДиалога = "СпецификацияИзделия" Тогда
    ФлагСтандОбр = 0;
    Спр = СоздатьОбъект("Справочник.СпецификацияНоменклатуры");
    Если Спр.Выбрать("Выберите группу", "") = 1 Тогда
    ТекЭлемент = Спр.ТекущийЭлемент();
    Если ТекЭлемент.ЭтоГруппа() = 1 Тогда
    СпецификацияИзделия = ТекЭлемент;
    Иначе
    Сообщить("Выберите группу", "!");
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
    
    Почему группу нельзя выбрать?
  8. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    В модуле или в процедуре "ПриОткрытии" строчка нужна:
    Код:
    Форма.СпецификацияИзделия.ВыборГруппы(1);
    
  9. TopicStarter Overlay
    kible
    Offline

    kible Опытный в 1С

    Регистрация:
    14 апр 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Есть такая строчка.
    Код:
    Перем ОбщКолВо,ИдентЭлемДиалога,ФлагСтандОбр;
    Процедура ПриОткрытии()
    ПриЗаписиПерепроводить(1);
    Форма.СпецификацияИзделия.ВыборГруппы(1); 
    
    СписокСчетов.ДобавитьЗначение("","<...>");
    СписокСчетов.ДобавитьЗначение(СчетПоКоду("131"), "(1310) Сырье и материалы");
    СписокСчетов.ДобавитьЗначение(СчетПоКоду("132"), "(1320) Готовая продукция");
    СписокСчетов.ТекущаяСтрока(СписокСчетов.НайтиЗначение(Счет));
    КонецПроцедуры
    
    Процедура ПриВыбореСчета()
    Счет = СписокСчетов.ПолучитьЗначение(СписокСчетов.ТекущаяСтрока()); 
    КонецПроцедуры
    
    Процедура ПриНачалеВыбораЗначения(ИдентЭлемДиалога, ФлагСтандОбр)
    Если ИдентЭлемДиалога = "СпецификацияИзделия" Тогда
    ФлагСтандОбр = 0;
    Спр = СоздатьОбъект("Справочник.СпецификацияНоменклатуры");
    Если Спр.Выбрать("СпецификацияИзделия", "") = 1 Тогда
    ТекЭлемент = Спр.ТекущийЭлемент();
    Если ТекЭлемент.ЭтоГруппа() = 1 Тогда
    СпецификацияИзделия = ТекЭлемент;
    Иначе
    Сообщить("Выберите группу", "!");
    КонецЕсли;
    КонецЕсли;
    КонецЕсли;
    КонецПроцедуры
    
    Процедура ВыборкаНоменклатуры()
    ОбщКоличество=0;
    Спр = СоздатьОбъект("Справочник.СпецификацияНоменклатуры");
    ВыбратьСтроки();
    Пока ПолучитьСтроку()=1 Цикл
    Спр.ИспользоватьРодителя(СпецификацияИзделия);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент()=1 Цикл
    ОбщКолВо=ОбщКолВо+Спр.Количество*Количество;
    Сообщить(""+Спр.Материал+"Кол-Во"+Спр.Количество*Количество);
    КонецЦикла;
    КонецЦикла;  
    КонецПроцедуры
    
    
  10. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Забыл, что
    Код:
    ФлагСтандОбр = 0;
    
    Надо так в "ПриНачалеВыбораЗначения":
    Код:
    Спр = СоздатьОбъект("Справочник.СпецификацияНоменклатуры");
    Спр.ВыборГруппы(1);
    
  11. dianofob
    Offline

    dianofob (-_-)y-.o0O

    Регистрация:
    3 июл 2009
    Сообщения:
    711
    Симпатии:
    0
    Баллы:
    26
    имхо
    Код:
                Если ТекЭлемент.ЭтоГруппа() = 1 Тогда
    СпецификацияИзделия = ТекЭлемент;
    Иначе
    СпецификацияИзделия = ТекЭлемент.Родитель;
    КонецЕсли;
    
  12. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Проверку на отсутствие родителя только делать надо. Кто-нибудь умудрится "засунуть" элемент в "корень" справочника.

Поделиться этой страницей