8.х Помогите с условием

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

  1. TopicStarter Overlay
    Вселенная
    Offline

    Вселенная Опытный в 1С

    Регистрация:
    4 ноя 2009
    Сообщения:
    176
    Симпатии:
    0
    Баллы:
    26
    Есть такой код:
    Код:
    ЗапросДок = Новый Запрос("ВЫБРАТЬ
    |	ВозвратТоваровПоставщику.Ссылка,
    |	ВозвратТоваровПоставщику.Дата КАК Дата
    |ИЗ
    |	Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику
    |ГДЕ
    |	ВозвратТоваровПоставщику.Дата МЕЖДУ &Дата1 И &Дата2
    |	И ВозвратТоваровПоставщику.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |	ВозвратТоваровОтПокупателя.Ссылка,
    |	ВозвратТоваровОтПокупателя.Дата
    |ИЗ
    |	Документ.ВозвратТоваровОтПокупателя КАК                  ВозвратТоваровОтПокупателя
    |ГДЕ
    |	ВозвратТоваровОтПокупателя.Дата МЕЖДУ &Дата1 И &Дата2
    |	И ВозвратТоваровОтПокупателя.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |	ПоступлениеТоваровУслуг.Ссылка,
    |	ПоступлениеТоваровУслуг.Дата
    |ИЗ
    |	Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |ГДЕ
    |	ПоступлениеТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
    |	И ПоступлениеТоваровУслуг.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |	РеализацияТоваровУслуг.Ссылка,
    |	РеализацияТоваровУслуг.Дата
    |ИЗ
    |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
    |	И РеализацияТоваровУслуг.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |	ТребованиеНакладная.Ссылка,
    |	ТребованиеНакладная.Дата
    |ИЗ
    |	Документ.ТребованиеНакладная КАК ТребованиеНакладная
    |ГДЕ
    |	ТребованиеНакладная.Дата МЕЖДУ &Дата1 И &Дата2
    |	И ТребованиеНакладная.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |	РасходныйОрдерНаТовары.Ссылка,
    |	РасходныйОрдерНаТовары.Дата
    |ИЗ
    |	Документ.РасходныйОрдерНаТовары КАК РасходныйОрдерНаТовары
    |ГДЕ
    |	РасходныйОрдерНаТовары.Дата МЕЖДУ &Дата1 И &Дата2
    |	И РасходныйОрдерНаТовары.Проведен = ИСТИНА
    |
    |ОБЪЕДИНИТЬ ВСЕ
    |
    |ВЫБРАТЬ
    |	ПриходныйОрдерНаТовары.Ссылка,
    |	ПриходныйОрдерНаТовары.Дата
    |ИЗ
    |	Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары
    |ГДЕ
    |	ПриходныйОрдерНаТовары.Дата МЕЖДУ &Дата1 И &Дата2
    |	И ПриходныйОрдерНаТовары.Проведен = ИСТИНА
    |
    |УПОРЯДОЧИТЬ ПО
    |	Дата");
    ЗапросДок.УстановитьПараметр("Дата1",НачалоДня(ДатаНач));
    ЗапросДок.УстановитьПараметр("Дата2",КонецДня(ДатаКон));
    Выборка = ЗапросДок.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
    Документ = Выборка.Ссылка.ПолучитьОбъект();
    МетаданныеДокумента = Документ.Метаданные();
    Если ОбщегоНазначения.ЕстьРеквизитДокумента("ОтражатьВБухгалтерскомУчете",МетаданныеДокумента) <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/тогда')">Тогда	</span>
    
    Если // здесь нужны документы, не входящие в ВыбНеПроверен, как это написать?		
    
    Документ.ОтражатьВБухгалтерскомУчете = Истина;
    КонецЕсли;
    
    
    Запрос.Текст="ВЫБРАТЬ
    |	КатегорииОбъектов.Категория,
    |	КатегорииОбъектов.Объект.Ссылка КАК Ссылка,
    |	КатегорииОбъектов.Объект.Дата КАК ОбъектДата
    |ИЗ
    |	РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
    |ГДЕ
    |	КатегорииОбъектов.Категория = &НеПроверен
    |	И КатегорииОбъектов.Объект ССЫЛКА Документ.РеализацияТоваровУслуг
    |	И КатегорииОбъектов.Объект.Дата МЕЖДУ &Дата1 И &Дата2
    |
    |УПОРЯДОЧИТЬ ПО
    |	ОбъектДата";
    
    НеПроверен=Справочники.КатегорииОбъектов.НайтиПоНаименованию("Не проверен");  
    Запрос.УстановитьПараметр("НеПроверен",НеПроверен);
    Запрос.УстановитьПараметр("Дата1",НачалоДня(ДатаНач));
    Запрос.УстановитьПараметр("Дата2",КонецДня(ДатаКон));
    ВыбНеПроверен=Запрос.Выполнить().Выбрать();
    
    
    В общем, мне надо, чтобы галочка ОтображатьВБухУчете ставилась только для документов из Выборка, кроме документов из ВыбНеПроверен.
  2. ASh
    Offline

    ASh Опытный в 1С

    Регистрация:
    10 сен 2008
    Сообщения:
    568
    Симпатии:
    0
    Баллы:
    26
    Код:
    ВыбНеПроверен=Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
    ...
    Если ВыбНеПроверен.Найти(Выборка.Ссылка) = Неопределено Тогда
    
    
    
    как-то так
    P.S. Документ еще и записать нужно будет после изменения.
  3. x_under
    Offline

    x_under Модераторы Команда форума Модератор

    Регистрация:
    25 апр 2007
    Сообщения:
    2.576
    Симпатии:
    13
    Баллы:
    29
    Лучше сразу одним запросом все тянуть. Ваши объединения соедините с регистром категорий и проверять будет гораздо проще + никаких запросов в цикле. Просто в выборке теперь есть твоя категория, ну или NULL
    Код:
    ЗапросДок = Новый Запрос("ВЫБРАТЬ
    |	ВложенныйЗапрос.Документ,
    |	ВложенныйЗапрос.ДатаДокумента КАК ДатаДокумента,
    |	КатегорииОбъектов.Категория
    |ИЗ
    |	(ВЫБРАТЬ
    |		ВозвратТоваровПоставщику.Ссылка КАК Документ,
    |		ВозвратТоваровПоставщику.Дата КАК ДатаДокумента
    |	ИЗ
    |		Документ.ВозвратТоваровПоставщику КАК ВозвратТоваровПоставщику
    |	ГДЕ
    |		ВозвратТоваровПоставщику.Дата МЕЖДУ &Дата1 И &Дата2
    |		И ВозвратТоваровПоставщику.Проведен = ИСТИНА
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ВозвратТоваровОтПокупателя.Ссылка,
    |		ВозвратТоваровОтПокупателя.Дата
    |	ИЗ
    |		Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя
    |	ГДЕ
    |		ВозвратТоваровОтПокупателя.Дата МЕЖДУ &Дата1 И &Дата2
    |		И ВозвратТоваровОтПокупателя.Проведен = ИСТИНА
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПоступлениеТоваровУслуг.Ссылка,
    |		ПоступлениеТоваровУслуг.Дата
    |	ИЗ
    |		Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
    |	ГДЕ
    |		ПоступлениеТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
    |		И ПоступлениеТоваровУслуг.Проведен = ИСТИНА
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		РеализацияТоваровУслуг.Ссылка,
    |		РеализацияТоваровУслуг.Дата
    |	ИЗ
    |		Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |	ГДЕ
    |		РеализацияТоваровУслуг.Дата МЕЖДУ &Дата1 И &Дата2
    |		И РеализацияТоваровУслуг.Проведен = ИСТИНА
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ТребованиеНакладная.Ссылка,
    |		ТребованиеНакладная.Дата
    |	ИЗ
    |		Документ.ТребованиеНакладная КАК ТребованиеНакладная
    |	ГДЕ
    |		ТребованиеНакладная.Дата МЕЖДУ &Дата1 И &Дата2
    |		И ТребованиеНакладная.Проведен = ИСТИНА
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		РасходныйОрдерНаТовары.Ссылка,
    |		РасходныйОрдерНаТовары.Дата
    |	ИЗ
    |		Документ.РасходныйОрдерНаТовары КАК РасходныйОрдерНаТовары
    |	ГДЕ
    |		РасходныйОрдерНаТовары.Дата МЕЖДУ &Дата1 И &Дата2
    |		И РасходныйОрдерНаТовары.Проведен = ИСТИНА
    |	
    |	ОБЪЕДИНИТЬ ВСЕ
    |	
    |	ВЫБРАТЬ
    |		ПриходныйОрдерНаТовары.Ссылка,
    |		ПриходныйОрдерНаТовары.Дата
    |	ИЗ
    |		Документ.ПриходныйОрдерНаТовары КАК ПриходныйОрдерНаТовары
    |	ГДЕ
    |		ПриходныйОрдерНаТовары.Дата МЕЖДУ &Дата1 И &Дата2
    |		И ПриходныйОрдерНаТовары.Проведен = ИСТИНА) КАК ВложенныйЗапрос
    |		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
    |		ПО ВложенныйЗапрос.Документ = КатегорииОбъектов.Объект
    |
    |УПОРЯДОЧИТЬ ПО
    |	ДатаДокумента");
    ЗапросДок.УстановитьПараметр("Дата1",'20000101');
    ЗапросДок.УстановитьПараметр("Дата2",'20100101');
    ЗапросДок.УстановитьПараметр("Категория",Справочники.КатегорииОбъектов.НайтиПоНаименованию("Не проверен"));
    Выборка = ЗапросДок.Выполнить().Выбрать();
    

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