Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Выборка группы контрагенов в документ
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 7.7
inna.innainna84
Помогите исправить ошибки
1.ОткрытьПодбор("Справочник.Контрагенты",,Конт); Нужно выбирать группу клиентов

Процедура ИзменениеСпРДМ1(зн) 
    Если зн=1 тогда  
        Конт = "";
        ОткрытьПодбор("Справочник.Контрагенты",,Конт);    
        
    ИначеЕсли зн=2 тогда
            Стр = ВыбРДМ1.ТекущаяСтрока();
            Если стр>0 тогда  
                ВыбРДМ1.УдалитьЗначение(Стр);
            КонецЕсли;    
    ИначеЕсли зн=3 тогда
            ВыбРДМ1.УдалитьВсе();  
    КонецЕсли;
КонецПроцедуры


2.ВыбРДМ1.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование); название этой группы клиентов

Процедура ОбработкаПодбора1(Эл,Кон)         
    Если Эл.Вид()="Контрагенты" Тогда
        Если ВыбРДМ1.Принадлежит(Эл.ТекущийЭлемент()) = 1 Тогда
            Сообщить("уже присутствует в списке");      
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
        ВыбРДМ1.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование);       
//        СписокКлиент.Установить(""+Эл,Эл.ТекущийЭлемент());
    КонецЕсли;
КонецПроцедуры

//*******************************************
Процедура ИзменениеСпРДМ1(зн)
    Если зн=1 тогда  
        Конт = "";
        ОткрытьПодбор("Справочник.Контрагенты",,Конт);    
        
    ИначеЕсли зн=2 тогда
            Стр = ВыбРДМ1.ТекущаяСтрока();
            Если стр>0 тогда  
                ВыбРДМ1.УдалитьЗначение(Стр);
            КонецЕсли;    
    ИначеЕсли зн=3 тогда
            ВыбРДМ1.УдалитьВсе();  
    КонецЕсли;
КонецПроцедуры
//*******************************************
Процедура ОбработкаПодбора1(Эл,Кон)        
    Если Эл.Вид()="Контрагенты" Тогда
        Если ВыбРДМ1.Принадлежит(Эл.ТекущийЭлемент()) = 1 Тогда
            Сообщить("уже присутствует в списке");      
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
        ВыбРДМ1.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование);       
//        СписокКлиент.Установить(""+Эл,Эл.ТекущийЭлемент());
    КонецЕсли;
КонецПроцедуры

   Процедура ВыбратьКонтрагентов()
       
    Если КоличествоСтрок()<>0 Тогда
        Если Вопрос("Табличная часть документа не пустая, вы уверены в перезаполнении?",1)= 2 Тогда
            Возврат;
        КонецЕсли;
    КонецЕсли;
                
       УдалитьСтроки();        
       Запрос=СоздатьОбъект("Запрос");       
       ТекстЗапроса="
  
       |Контрагент = Справочник.Контрагенты.ТекущийЭлемент;
       |Группировка Контрагент без групп упорядочить по Контрагент.Наименование;
        |Условие(Контрагент в ВыбРДМ1);
       |";  
       
       СписокКонтрагентов = СоздатьОбъект("СписокЗначений");       
        
       Если глФильтрПоСправочнику("Контрагенты",0,0,ВыбКатегорияКонтрагентов,0,0,СписокКонтрагентов,ТекстЗапроса,0,0,"Контрагент,,,СписокКонтрагентов,,,,,")=0 Тогда
           Возврат;
       КонецЕсли;
       
         Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;        
    
    
    Пока Запрос.Группировка("Контрагент")=1 Цикл  
        НоваяСтрока();
        Клиент =Запрос.Контрагент;                     
        Деньги = 0;
        Тонаж=0;
        СуммаРД=0;           
        Доход  = 0;           
        ВидПосещения=Перечисление.ВидКонтактовСКлиентами.ПоГрафику;           
        НомерЗаявкиТА="НЕТ"+"-"+(Запрос.Контрагент.КодСоответствия+ДатаДок);
        ОрганизационоеВремя=Константа.ВремяНаЗаявку;           
        
        Если ПустоеЗначение(Клиент.ДатаЗакр)=0 Тогда  
            Если ДатаДок>=Клиент.ДатаЗакр Тогда                    
                УдалитьСтроку();
            КонецЕсли;    
        КонецЕсли;             
    КонецЦикла;    
    РасчитатьКолвоКлиентов();
КонецПроцедуры    // ВыбратьЗаявки



 ! 

Когда вы уже научитесь по людски код выделять?
 
nysysimara
Цитата(inna.innainna84 @ 01.06.16, 11:09) необходимо зарегистрироваться для просмотра ссылки
ВыбРДМ1.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование);

плюс перед "Группа" лишний
inna.innainna84
nysysimara @ Сегодня, 13:45 необходимо зарегистрироваться для просмотра ссылки,
хорошо это я убрала изменений нет не добавляет в список
inna.innainna84
Или же как вариант оставить только процедуру ВыбратьКонтрагентов()
и указать что ВыбРДМ1 это выбор справочника контрагенты с возможностью выбирать группу или одного клиента. Сейчас выбирает только одного контрагента
Karabasoff
inna.innainna84 @ Сегодня, 12:09 необходимо зарегистрироваться для просмотра ссылки,

Процедура ИзменениеСпРДМ1(зн)
Если зн=1 тогда
Конт = "";
ОткрытьПодбор("Справочник.Контрагенты",,Конт);
// добавьте строку
Конт.ВыборГруппы(1);
inna.innainna84
Karabasoff @ Сегодня, 0:01 необходимо зарегистрироваться для просмотра ссылки,

Спасибо. А не подскажите, что сделать с Процедура ОбработкаПодбора1(Эл,Кон) чтобы эту выбранную группу клиентов вытягивало в список "ВыбРДМ1"
nysysimara
а почему ваша процедура называется ОткрытьПодбора1?
Цитата
Процедура ОбработкаПодбора(<?>,)
КонецПроцедуры
Синтаксис:
ОбработкаПодбора(<Элемент>,<КонтФормы>)
Назначение:
Предопределенная процедура обработки подбора значения при нажатия кнопки Выбрать в Форме Подбора значения.
inna.innainna84
nysysimara @ Сегодня, 14:46 необходимо зарегистрироваться для просмотра ссылки,
"ОткрытьПодбора1" в этом документе хранится две обработки подбора поэтому я поставила 1. Это не верно?
Sharzem
inna.innainna84 @ Сегодня, 9:13 необходимо зарегистрироваться для просмотра ссылки,
Процедура ОбработкаПодбора(Эл,Кон)         
    Если Эл.Вид()="Контрагенты" Тогда
        Если Эл.ЭтоГруппа() = 1 Тогда
               лпКонтрагенты = СоздатьОбъект("Справочник.Контрагенты");
               лпКонтрагенты.ИспользоватьРодителя(Эл);
               лпКонтрагенты.ВыбратьЭлементы();
               Пока лпКонтрагенты.ПолучитьЭлемент() = 1 Цикл
                     Если ВыбРДМ1.Принадлежит(Эл.ТекущийЭлемент()) = 0 Тогда
                           ВыбРДМ1.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование);
                      КонецЕсли;
               КонецЦикла;
         ИначеЕсли ВыбРДМ1.Принадлежит(Эл.ТекущийЭлемент()) = 1 Тогда
            Сообщить("уже присутствует в списке");
            ВыбРДМ1.ДобавитьЗначение(Эл.ТекущийЭлемент(), +"Группа "+Эл.ТекущийЭлемент().Наименование);
            Возврат;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры


Бред, бред, бред !

Выборка группы контрагентов в документ ? Че за новости такие ...?

Нет, не туда.
Опять те же грабли ! diablo.gif
Зачем список значений в документе ?!
Вам нужна отдельная Форма Обработки для подбора всей Вашей инфы в табличную часть документа.
Вы че творите ? faceoff.gif
inna.innainna84
Sharzem @ Сегодня, 15:41 необходимо зарегистрироваться для просмотра ссылки,
у меня есть клиенты у них по дням недели закреплены категории "пн.,вт,среда,чет,пт" и тд. Нужно их отфильтровать и загрузить в этот документ в табличную часть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.