7.7 ТиС вопрос по запросику

Тема в разделе "Отчеты и обработки для "1С:Предприятие 7.7"", создана пользователем AmoZ, 7 июн 2011.

  1. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Есть база ТиС 9.2

    В ней свой самописный отчетик:

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

    Вложения:

  2. kavak
    Offline

    kavak Опытный в 1С

    Регистрация:
    13 май 2010
    Сообщения:
    703
    Симпатии:
    0
    Баллы:
    26
    По аналогии запрос доработать и добавить в него документ возврат от поставщиков.И выводить в колонку Док
  3. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Код:
    	ТекстЗапроса = 
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаНачала по ДатаКонца;
    |Док = Документ.ПоступлениеТМЦРозница.ТекущийДокумент, Документ.ВозвратПоставщику.ТекущийДокумент;
    |НомерВхДок = Документ.ПоступлениеТМЦРозница.НомерДокВходящий;
    |Контрагент = Документ.ПоступлениеТМЦРозница.Контрагент;
    |Склад = Документ.ПоступлениеТМЦРозница.Склад;
    |Номенклатура = Документ.ПоступлениеТМЦРозница.Номенклатура;
    |Колво = Документ.ПоступлениеТМЦРозница.Количество;
    |ЗакупСумма = Документ.ПоступлениеТМЦРозница.Сумма, Документ.ВозвратПоставщику.Сумма;
    |Функция СуммаЗакуп = Сумма(ЗакупСумма);
    |Группировка Контрагент без групп;
    |Группировка Склад;		
    |Группировка Док;
    |Группировка Номенклатура;
    |Условие (Контрагент В ВыборКонтрагент);
    |"//}}ЗАПРОС 
    ;
    
    Сделал как-то так, но не вычитает из строк по контрагентам и складам.
    Как запрос не знаю правильно составить.
  4. kavak
    Offline

    kavak Опытный в 1С

    Регистрация:
    13 май 2010
    Сообщения:
    703
    Симпатии:
    0
    Баллы:
    26
    Ну правильно ведь остальные данные в запросе Вы не получаете.Вот он и не может сгруппировать.
  5. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    А кто добавит остальное
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформировать)
    |Период с ДатаНачала по ДатаКонца;
    |Док = Документ.ПоступлениеТМЦРозница.ТекущийДокумент, Документ.ВозвратПоставщику.ТекущийДокумент;
    |НомерВхДок = Документ.ПоступлениеТМЦРозница.НомерДокВходящий;
    |Контрагент = Документ.ПоступлениеТМЦРозница.Контрагент, Документ.ВозвратПоставщику.Контрагент;
    |Склад = Документ.ПоступлениеТМЦРозница.Склад, Документ.ВозвратПоставщику.Склад;
    |Номенклатура = Документ.ПоступлениеТМЦРозница.Номенклатура, Документ.ВозвратПоставщику.Номенклатура;
    |Колво = Документ.ПоступлениеТМЦРозница.Количество, Документ.ВозвратПоставщику.Количество;
    |ЗакупСумма = Документ.ПоступлениеТМЦРозница.Сумма, Документ.ВозвратПоставщику.Сумма;
    |Функция СуммаЗакуп = Сумма(ЗакупСумма);
    |Группировка Контрагент без групп;
    |Группировка Склад;
    |Группировка Док;
    |Группировка Номенклатура;
    |Условие (Контрагент В ВыборКонтрагент);
    |"//}}ЗАПРОС
    ;
  6. kavak
    Offline

    kavak Опытный в 1С

    Регистрация:
    13 май 2010
    Сообщения:
    703
    Симпатии:
    0
    Баллы:
    26
    Точно так=)
  7. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Пока я тут добавлял в запрос изменения kavak опередил меня))))
  8. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Так я запрос тоже пробовал, но если документ "возврат" сумму он выводим с плюсом, и в итоге по складам и контрагентам он тоже суммирует на ту сумму, которая идет в "возврате".
  9. kavak
    Offline

    kavak Опытный в 1С

    Регистрация:
    13 май 2010
    Сообщения:
    703
    Симпатии:
    0
    Баллы:
    26
    Вам нужна оборотка по поставщикам по периодам ?Просто как задали вопрос=)Так Вам на него и ответили=)Как можно добавить документ ...и т.д. вот мы вам и подсказали как можно=)
  10. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Дак а вам что надо? Чтобы минусовалась чтоли сумма?
  11. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Именно.
    Там где обведено красным. :angry:

    Вложения:

  12. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Не совсем понял, что за отчет получается, но если вы хотите чтобы у вас возвраты не попадали в итоги, просто их туда не выводите, а если вы хотите чтобы возвраты отнимались от суммы итогов поступления, то отнимайте тогда возвраты. Если не можете отнять сами тогда выкладывайте ту часть обработки в которой происходит заполнение, а лучше всего выложите всю обработку.
  13. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Мне нужно чтобы возвраты отнимались из итогов.
    Выложу всю обработку.

    Вложения:

  14. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Если через Итоги запросов - нужно заводить отдельную переменную для возвратов и уже арифметические действия в колонке. Иначе - писать доп функцию расчета итогов.
  15. r-d-v2008
    Offline

    r-d-v2008 Опытный в 1С

    Регистрация:
    16 сен 2010
    Сообщения:
    272
    Симпатии:
    0
    Баллы:
    26
    Ну в общем как я вас понял так и сделал

    Вложения:

  16. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Не так я думаю поняли.

    Нужно:

    А у вас они просто не учитываются

    Код:
    Если Запрос.Док.Вид() <> "ВозвратПоставщику" Тогда
    Сумма = Сумма + Запрос.ЗакупСумма;
    КонецЕсли;                    
    
    
    
    
    
    
    Думаю вот так:
    Код:
    Если Запрос.Док.Вид() <> "ВозвратПоставщику" Тогда
    Сумма = Сумма + Запрос.ЗакупСумма;
    Иначе
    Сумма = Сумма - Запрос.ЗакупСумма;
    КонецЕсли;                    
    
    
    
    
    
    

    И еще "подводный камень" который не учли: попробуйте посчитать когда приход в КОРОБКАХ, а возврат в ШТУКАХ (ну брак допустим 2-3 шт из 500). Отчет некорректен без учера коэффициента единицы измерения.

    Все нужно делать через регистры Тогда не будет головной боли вообще
  17. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Пробовал через регистры... Через них, конечно, удобнее, только не могу вытащить ссылку на документ.
  18. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Плохо пробовали... Нужно указывать конкретный вид
  19. TopicStarter Overlay
    AmoZ
    Offline

    AmoZ Опытный в 1С

    Регистрация:
    25 дек 2008
    Сообщения:
    123
    Симпатии:
    0
    Баллы:
    26
    Пробовал через регистры "Продажи".
    Там нет ссылки на документ.
    Через какие регистры вообще можно?
  20. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    просто через реквизит ТекущийДокумент()... и по видам. Так можно дотянуться. Можно и через регистры остаков при желании

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