8.х Запрос к хозрасчетному регистру

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

  1. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Здравствуйте, уважаемые форумчане.

    // Бухгалтерия предприятия, редакция 2.0 (2.0.25.5)

    Необходимо получить поступление номенклатуры за определенный период с количеством и ценами. Можно написать запрос с документам поступление товаров и услуг, но вероятно будет оптимально сделать запрос к регистру. Только начинаю осваивать 8-ку. Помогите с запросом, пожалуйста.
  2. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Делай к документам.. примерно так

    Код:
    
    ВЫБРАТЬ
    ПоступлениеТоваровУслуг.Ссылка,
    ПоступлениеТоваровУслуг.Номенклатура,
    ПоступлениеТоваровУслуг.ЕдиницаИзмерения,
    ПоступлениеТоваровУслуг.Количество,
    ПоступлениеТоваровУслуг.Цена,
    ПоступлениеТоваровУслуг.Сумма,
    ПоступлениеТоваровУслуг.СтавкаНДС,
    ПоступлениеТоваровУслуг.СуммаНДС
    ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
    ГДЕ
    ПоступлениеТоваровУслуг.Ссылка.Дата МЕЖДУ &Дат1 И &Дат2
    И ПоступлениеТоваровУслуг.Ссылка.Проведен = ИСТИНА
    
    
    

    а к регистру как-то так примерно


    Код:
    
    ВЫБРАТЬ
    ХозрасчетныйДвиженияССубконто.Период,
    ХозрасчетныйДвиженияССубконто.Регистратор,
    ХозрасчетныйДвиженияССубконто.Организация,
    ХозрасчетныйДвиженияССубконто.ПодразделениеДт,
    ХозрасчетныйДвиженияССубконто.ПодразделениеКт,
    ХозрасчетныйДвиженияССубконто.Сумма,
    ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаДт,
    ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаКт,
    ХозрасчетныйДвиженияССубконто.КоличествоДт,
    ХозрасчетныйДвиженияССубконто.КоличествоКт,
    ХозрасчетныйДвиженияССубконто.Содержание,
    ХозрасчетныйДвиженияССубконто.НеКорректироватьСтоимостьАвтоматически
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, &Дат2, , , ) КАК ХозрасчетныйДвиженияССубконто
    ГДЕ
    ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &Дат1 И &Дат2
    И ХозрасчетныйДвиженияССубконто.СчетДт = &ДТ
    И ХозрасчетныйДвиженияССубконто.СчетКт = &КТ
    
    
    
  3. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    С документами я разобрался более-менее, а за запрос к регистру спасибо огромное.
    Только там лишнего много? Или специфика какая??

    Пошел пробовать.
  4. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Оставляй то,что нужно и все
  5. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Если брать данные из регистра, надо будет подумать, как быть с входящим НДС...(как его получить в связке с номенклатурой)...
  6. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Пока НДС не интересует. Только номенклатура, вх. цена и количество
  7. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Ну уж совсем дурной вопрос.
    А как такой параметр установить???
    Т.е. переменную какого типа создавать? Что ей присваивать?? Меня интересует сч 41.01
  8. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Перед строкой
    Код:
    Запрос.Выполнить()
    
    
    надо написать
    Код:
    Запрос.УстановитьПараметр("ДТ", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
    
    
  9. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Код:
    Запрос = Новый Запрос;
    
    ДТ = ПланыСчетов.Хозрасчетный.41.01 //хз как он там называется
    КТ = ПланыСчетов.Хозрасчетный.61.01 //хз как он там называется
    //Дату выводи на форму
    
    Запрос.Текст = "
    |ВЫБРАТЬ
    |    ХозрасчетныйДвиженияССубконто.Период,
    |    ХозрасчетныйДвиженияССубконто.Регистратор,
    |    ХозрасчетныйДвиженияССубконто.Организация,
    |    ХозрасчетныйДвиженияССубконто.ПодразделениеДт,
    |    ХозрасчетныйДвиженияССубконто.ПодразделениеКт,
    |    ХозрасчетныйДвиженияССубконто.Сумма,
    |    ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаДт,
    |    ХозрасчетныйДвиженияССубконто.ВалютнаяСуммаКт,
    |    ХозрасчетныйДвиженияССубконто.КоличествоДт,
    |    ХозрасчетныйДвиженияССубконто.КоличествоКт,
    |    ХозрасчетныйДвиженияССубконто.Содержание,
    |    ХозрасчетныйДвиженияССубконто.НеКорректироватьСтоимостьАвтоматически
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(, &;Дат2, , , ) КАК |  ХозрасчетныйДвиженияССубконто
    |ГДЕ
    |    ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &;Дат1 И &;Дат2
    |    И ХозрасчетныйДвиженияССубконто.СчетДт = &;ДТ
    |    И ХозрасчетныйДвиженияССубконто.СчетКт = &;КТ
    ";
    Запрос.УстановитьПараметр("Дат1" ,Дата1);
    Запрос.УстановитьПараметр("Дат2" ,Дата2);
    Запрос.УстановитьПараметр("ДТ",ДТ);
    Запрос.УстановитьПараметр("КТ",КТ);
    Результат = Запрос.Выполнить.Выбрать();
    
    Пока Результат.Следующий Цикл
    
    //тут делай с данными что хочешь  
    
    КонецЦикла;
    
    
    
  10. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Так а мне нужна выборка по 41.01??
  11. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Лучше задавай оба счета и дебет и кредит
  12. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Запрос работает. Но я в нем не вижу номенклатуры?? Откуда ее вытянуть?
  13. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Тяни лучше из документа.. так проще будет, там напрямую к табличной части обращаешься и все
  14. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    4.948
    Симпатии:
    149
    Баллы:
    104
    Номенклатура - это Субконто1
  15. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Эм. Кто так работает с регистрами?

    Тогда уж как-то так:
    Код:
    "ВЫБРАТЬ
    ХозрасчетныйДвиженияССубконто.Период,
    ХозрасчетныйДвиженияССубконто.Регистратор,
    ХозрасчетныйДвиженияССубконто.Организация,
    ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК Справочник.Номенклатура) КАК Номенклатура,
    ХозрасчетныйДвиженияССубконто.КоличествоКт КАК Количество,
    ХозрасчетныйДвиженияССубконто.Сумма,
    ХозрасчетныйДвиженияССубконто.Содержание
    ИЗ
    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
    &НачалоПериода,
    &КонецПериода,
    Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ТоварыНаСкладах)
    И КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СебестоимостьПродажНеОблагаемаяЕНВД),
    ,
    ) КАК ХозрасчетныйДвиженияССубконто"
    
  16. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Тогда и запрос весь по документам надо делать. Но так не эффективно? Обращение к регистру быстрее чем к документам. Это надо выбрать запросом документы за период, потом выбирать по каждому документу табличную часть. Или я не прав?
  17. n.s.gnedash
    Offline

    n.s.gnedash Опытный в 1С Команда форума

    Регистрация:
    15 авг 2010
    Сообщения:
    1.358
    Симпатии:
    5
    Баллы:
    29
    Который я прислал по документам он сразу из табличной части выдает
  18. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    А от чего это Субконто1 в этом запросе???
    ПодразделениеДт пустое
  19. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    n.s.gnedash, получать данные из документов методологически не правильно. Достоверными данными следует считать только данные, полученные из регистров.

    План счетов БУ откройте, посмотрите данный конкретный счет.
  20. TopicStarter Overlay
    Yury
    Offline

    Yury Опытный в 1С

    Регистрация:
    22 дек 2011
    Сообщения:
    355
    Симпатии:
    4
    Баллы:
    29
    Вот такой код получился:
    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "
    |ВЫБРАТЬ
    |	ХозрасчетныйДвиженияССубконто.Период,
    |	ХозрасчетныйДвиженияССубконто.Регистратор,
    |	ХозрасчетныйДвиженияССубконто.Организация,
    |	ВЫРАЗИТЬ(ХозрасчетныйДвиженияССубконто.СубконтоКт1 КАК Справочник.Номенклатура) КАК Номенклатура,
    |	ХозрасчетныйДвиженияССубконто.КоличествоКт КАК Количество,
    |	ХозрасчетныйДвиженияССубконто.Сумма,
    |	ХозрасчетныйДвиженияССубконто.Содержание
    |ИЗ
    |	РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(&НачПериода, &КонПериода, , , ) КАК ХозрасчетныйДвиженияССубконто
    |ГДЕ
    |	ХозрасчетныйДвиженияССубконто.Период МЕЖДУ &НачПериода И &КонПериода
    |	И ХозрасчетныйДвиженияССубконто.СчетДт = &СчДт
    |";
    
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    Запрос.УстановитьПараметр("КонПериода", КонПериода);
    //
    Запрос.УстановитьПараметр("СчДт", ПланыСчетов.Хозрасчетный.ТоварыНаСкладах);
    //
    Результат = Запрос.Выполнить();
    Если НЕ Результат.Пустой() Тогда
    Выборка = Результат.Выбрать();
    Пока Выборка.Следующий() Цикл
    Сообщить (Выборка.Номенклатура);
    КонецЦикла;	
    КонецЕсли;
    
    
    Но он не выбирает номенклатуру. Она Null, впрочем как и Количество и Сумма

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