8.х Проставление Основного!

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

  1. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    Делаю выборку контрагентов у которых..один факт адрес и он не проставлен как основной.
    и пытаюсь проставить...но выдаёт ошибку.подскажите каким методом можно ещё установить основным.

    Код:
    	Запрос = НОВый Запрос;	
    Запрос.Текст = "ВЫБРАТЬ
    |	КонтактнаяИнформация.Объект КАК Объект,
    |	КонтактнаяИнформация.Вид КАК Вид,
    |	КонтактнаяИнформация.Тип,
    |	КонтактнаяИнформация.ЗначениеПоУмолчанию КАК ЗначениеПоУмолчанию,
    |	КонтактнаяИнформация.Представление,
    |	КонтактнаяИнформация.Поле1,
    |	КонтактнаяИнформация.Поле2,
    |	КонтактнаяИнформация.Поле3,
    |	КонтактнаяИнформация.Поле4,
    |	КонтактнаяИнформация.Поле5,
    |	КонтактнаяИнформация.Поле6,
    |	КонтактнаяИнформация.Поле7,
    |	КонтактнаяИнформация.Поле8,
    |	КонтактнаяИнформация.Поле9,
    |	КонтактнаяИнформация.Поле10,
    |	КонтактнаяИнформация.Маршрут,
    |	1 КАК КоличествоАдресов,
    |	ВЫБОР
    |		КОГДА КонтактнаяИнформация.ЗначениеПоУмолчанию
    |			ТОГДА 1
    |		ИНАЧЕ 0
    |	КОНЕЦ КАК Поле11
    |ИЗ
    |	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |ГДЕ
    |	КонтактнаяИнформация.Объект = (ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.Контрагенты))
    |	И КонтактнаяИнформация.Вид.Наименование ПОДОБНО ""%Фактический адрес контрагента%""
    |
    |УПОРЯДОЧИТЬ ПО
    |	Объект
    |ИТОГИ
    |	СУММА(КоличествоАдресов),
    |	СУММА(Поле11)
    |ПО
    |	Объект";
    Результат = Запрос.Выполнить();
    
    Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Объект");
    Пока Выборка.Следующий() Цикл
    Если Выборка.КоличествоАдресов = 1 
    И Выборка.Поле11 = 0 Тогда 
    
    НайтиЗапись(Выборка);  
    
    КонецЕсли; 		
    КонецЦикла
    
    Код:
    Процедура НайтиЗапись(Выборка)
    
    
    Контрагент = Выборка.Объект.Ссылка;
    
    Рег = РегистрыСведений.КонтактнаяИнформация.СоздатьМенеджерЗаписи();	
    Рег.Объект   = Выборка.Объект;
    Рег.Тип      = Выборка.Тип;
    Рег.Вид      = Выборка.Вид;
    Рег.Представление       = Выборка.Представление;
    Рег.ЗначениеПоУмолчанию = Истина;
    Рег.Поле1   = Выборка.Поле1;
    Рег.Поле2   = Выборка.Поле2;
    Рег.Поле3   = Выборка.Поле3;
    Рег.Поле4   = Выборка.Поле4;
    Рег.Поле5   = Выборка.Поле5;
    Рег.Поле6   = Выборка.Поле6;
    Рег.Поле7   = Выборка.Поле7;
    Рег.Поле8   = Выборка.Поле8;
    Рег.Поле9   = Выборка.Поле9;
    Рег.Поле10  = Выборка.Поле10;
    Рег.Маршрут = Выборка.Маршрут;
    Рег.Записать(Истина);
    
    ОбработкаПрерыванияПользователя();		
    Сообщить(Контрагент);
    
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/конецпроцедуры')">КонецПроцедуры	</span>
    
  2. tunec
    Offline

    tunec Опытный в 1С

    Регистрация:
    2 июн 2008
    Сообщения:
    469
    Симпатии:
    0
    Баллы:
    26
    процедура из типовой по нажатию кнопки делает договор основным:
    Код:
    Процедура КоманднаяПанельДоговорыСделатьОсновным(Кнопка)
    
    Если ЭлементыФормы.Договоры.ТекущиеДанные = Неопределено Тогда
    Возврат;
    КонецЕсли; 
    
    Если ЗначениеНеЗаполнено(ЭлементыФормы.Договоры.ТекущиеДанные.Ссылка) Тогда
    Возврат;
    КонецЕсли;
    
    Если ЭлементыФормы.Договоры.ТекущиеДанные.ЭтоГруппа Тогда
    Предупреждение("Нельзя назначать основным договором - группу!");
    Возврат;
    КонецЕсли;
    
    ОсновнойДоговорКонтрагента = ЭлементыФормы.Договоры.ТекущиеДанные.Ссылка;
    ПроверитьДоступностьКнопкиУстановкиОсновногоДоговора();
    
    КонецПроцедуры
    
    
    
    
    
    в данном случае интерес представляет только строка:
    ОсновнойДоговорКонтрагента = ЭлементыФормы.Договоры.ТекущиеДанные.Ссылка;
  3. LxS
    Offline

    LxS Разработчик

    Регистрация:
    5 апр 2007
    Сообщения:
    680
    Симпатии:
    0
    Баллы:
    26
    посмотри, что ты получаешь.

    и в процедуру передаешь..

    Обходишь так:
    Код:
        Пока Выборка.Следующий() Цикл
    Если Выборка.КоличествоАдресов = 1 
    И Выборка.Поле11 = 0 Тогда 
    
    НайтиЗапись(Выборка.Выбрать());  
    
    КонецЕсли;         
    КонецЦикла
    
    
    
    И так:
    Код:
    Процедура НайтиЗапись(Выборка)
    Выборка.Следующий();
    
    Контрагент = Выборка.Объект.Ссылка;
    
    
    

    Вложения:

    • shoot.GIF
      shoot.GIF
      Размер файла:
      20,8 КБ
      Просмотров:
      24
  4. TopicStarter Overlay
    Romik
    Offline

    Romik Опытный в 1С

    Регистрация:
    27 июн 2008
    Сообщения:
    238
    Симпатии:
    0
    Баллы:
    26
    LxS как всегда молодец:) Спасибо! :unsure:

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