[РЕШЕНО] Как использовать параметры виртуальной таблицы регистра Хозрасчетный Остатки и обороты?

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

  1. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    Есть такой запрос:

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

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204
    Параметр Субконто не всегда получится использовать, а вот ВЫРАЗИТЬ необходимо использовать всегда :)
  3. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    В общем в данном случае я все правильно написал, но для повышения скорости выполнения запроса неплохо было бы добавить и Субконто?
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204
    Да, при условии возможности использования этого параметра.
  5. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    А параметр субконто я правильно устанавливаю?

    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОстаткиИОбороты.Период КАК Дата,
                   |    ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Справочник.Номенклатура).Ссылка КАК Номенклатура,
                   |    ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Справочник.ХарактеристикиНоменклатуры).Ссылка КАК Характеристика,
                   |    ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт КАК КоличествоНачальныйОстатокДт,
                   |    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК КоличествоКонечныйОстатокДт,
                   |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
                   |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.БП_ЗапасыВБухУчете), &ВидыСубконто, ВЫРАЗИТЬ(Субконто1 КАК Справочник.Организации).Ссылка = &ОрганизацияБУ) КАК ХозрасчетныйОстаткиИОбороты";   
       
    ВидыСубконто = Новый Массив;
    
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.БП_ХарактеристикиНоменклатуры);
       
    Запрос.УстановитьПараметр("Субконто",      ВидыСубконто);
    Запрос.УстановитьПараметр("ОрганизацияБУ", Организация);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
    Запрос.УстановитьПараметр("КонецПериода",  КонецДня(КонецПериода));
    Выборка = Запрос.Выполнить().Выбрать();
    
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204
    Да.

    Вы там учет в разрезе характеристик номенклатуры в БУ решили запилить что ли? :)
    Bkmz нравится это.
  7. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    Спасибо.

    Это запилили еще до меня. Характеристики это номенклатура в другой базе. Запрос который выше это в Комплексной конфигурации в которую слились все бухгалтерские программы. В них по разному были названы номенклатуры. И их так подружили.
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204
  9. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    У меня в счете по которому я делаю запрос 3 субконто. Когда я указывал в &ВидыСубконото только 2 субконто вываливало ошибку "поле субконто3 не обнаружено". Порылся в интернете нашел такую инфу на форуме Чистова:

    Сделал вывод что мне надо добавить в отбор еще одно значение субконто в итоге вот такой запрос перестал вываливать ошибку.

    Код:
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ХозрасчетныйОстаткиИОбороты.Период КАК Дата,
                   |    ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Справочник.Номенклатура).Ссылка КАК Номенклатура,
                   |    ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто3 КАК Справочник.ХарактеристикиНоменклатуры).Ссылка КАК Характеристика,
                   |    ХозрасчетныйОстаткиИОбороты.КоличествоНачальныйОстатокДт КАК КоличествоНачальныйОстатокДт,
                   |    ХозрасчетныйОстаткиИОбороты.КоличествоКонечныйОстатокДт КАК КоличествоКонечныйОстатокДт,
                   |    ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт КАК СуммаНачальныйОстатокДт,
                   |    ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК СуммаКонечныйОстатокДт
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.БП_ЗапасыВБухУчете), &ВидыСубконто, ВЫРАЗИТЬ(Субконто1 КАК Справочник.Организации).Ссылка = &ОрганизацияБУ) КАК ХозрасчетныйОстаткиИОбороты"; 
     
    ВидыСубконто = Новый Массив;
    
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.БП_Организации);  // !!!! Первый раз я это упустил
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.БП_ХарактеристикиНоменклатуры);
     
    Запрос.УстановитьПараметр("Субконто",      ВидыСубконто);
    Запрос.УстановитьПараметр("ОрганизацияБУ", Организация);
    Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
    Запрос.УстановитьПараметр("КонецПериода",  КонецДня(КонецПериода));
    Выборка = Запрос.Выполнить().Выбрать();
    Я правильно все понял?
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.889
    Симпатии:
    1.029
    Баллы:
    204
    Да.

    использовать Субконто для Организации - это вообще за гранью понимания :)
  11. TopicStarter Overlay
    Bkmz
    Offline

    Bkmz Опытный в 1С

    Регистрация:
    6 июл 2013
    Сообщения:
    459
    Симпатии:
    13
    Баллы:
    29
    Организация в субконто - это те организации которые слились в кучу. Это название организаций распределенных информационных баз.