Имя: Пароль:
1C
 
Формирование субконто не в той последовательности
0 NIGHTHUNTER
 
10.02.22
07:44
В запросе, массивами &ВидыСубконтоНоменклатураСклад, &ВидыСубконтоНоменклатураПроект, задается последовательность следования субконто.
Для того, как я понимал, что бы в режиме предприятия она не было сбита пользователем. если он ее там изменит.
Я задал, что в обоих массивах сначала идет номенклатура, потом склад и проект. Но в предприятии это изменено. например сначала проект. И вся очередность сбилась.
Какой смысл в этих массивах, если они не устанавлявают очередность? Или я не то понимаю все вообще? Как тут нужно? Зачем эти массивы? Ведь для того что бы задавать последовательность следования субконто?


    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
        |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
        |    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма
        |ПОМЕСТИТЬ ВТ_ТчТовары
        |ИЗ
        |    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
        |ГДЕ
        |    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка
        |
        |СГРУППИРОВАТЬ ПО
        |    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура
        |
        |ИНДЕКСИРОВАТЬ ПО
        |    Номенклатура
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ВТ_ТчТовары.Номенклатура КАК Номенклатура,
        |    ВТ_ТчТовары.Номенклатура.Представление КАК НоменклатураПредставление,
        |    ВТ_ТчТовары.Количество КАК Количество,
        |    ВТ_ТчТовары.Сумма КАК Сумма,
        |    ЕСТЬNULL(УправленческийОстаткиПоСкладу.КоличествоОстаток, 0) КАК КоличествоОстатокНаСкладе,
        |    ЕСТЬNULL(УправленческийОстаткиПоКомпании.КоличествоОстаток, 0) КАК КоличествоОстатокВКомпании,
        |    ЕСТЬNULL(УправленческийОстаткиПоКомпании.СуммаОстаток, 0) КАК СуммаОстатокВКомпании
        |ИЗ
        |    ВТ_ТчТовары КАК ВТ_ТчТовары
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
        |                &МоментВремени,
        |                Счет = &СчетТовары,
        |                &ВидыСубконтоНоменклатураСклад,
        |                Субконто1 В
        |                        (ВЫБРАТЬ
        |                            ВТ_ТчТовары.Номенклатура КАК Номенклатура
        |                        ИЗ
        |                            ВТ_ТчТовары КАК ВТ_ТчТовары)
        |                    И Субконто2 = &Склад) КАК УправленческийОстаткиПоСкладу
        |        ПО ВТ_ТчТовары.Номенклатура = УправленческийОстаткиПоСкладу.Субконто1
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
        |                &МоментВремени,
        |                Счет = &СчетТовары,
        |                &ВидыСубконтоНоменклатураПроект,
        |                Субконто1 В
        |                    (ВЫБРАТЬ
        |                        ВТ_ТчТовары.Номенклатура КАК Номенклатура
        |                    ИЗ
        |                        ВТ_ТчТовары КАК ВТ_ТчТовары)) КАК УправленческийОстаткиПоКомпании
        |        ПО ВТ_ТчТовары.Номенклатура = УправленческийОстаткиПоКомпании.Субконто1";
    
    ВидыСубконтоНоменклатураСклад = Новый Массив;
    ВидыСубконтоНоменклатураСклад.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
    ВидыСубконтоНоменклатураСклад.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Склады);
    Запрос.УстановитьПараметр("ВидыСубконтоНоменклатураСклад", ВидыСубконтоНоменклатураСклад);
    
    ВидыСубконтоНоменклатураПроект = Новый Массив;
    ВидыСубконтоНоменклатураПроект.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
    ВидыСубконтоНоменклатураПроект.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Проекты);
    
    Запрос.УстановитьПараметр("ВидыСубконтоНоменклатураПроект", ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
    
    Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
    Запрос.УстановитьПараметр("Склад", Склад);
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.УстановитьПараметр("СчетТовары", ПланыСчетов.Управленческий.Товары);
    
    РезультатЗапроса = Запрос.Выполнить();
1 Admin_Net_1C
 
10.02.22
07:56
(0) т.е. у тебя в значение Субконто1 (на уровне параметров виртуальной таблицы РегистрБухгалтерии.Управленческий.Остатки) прилетает другое значение (не справочник Номенклатура)?
2 NIGHTHUNTER
 
10.02.22
08:03
(1) было, что в предприятии у счета стоял вначале проект, потом номенклатура. У счета прибыли и убытки.

Но в запросе я же задаю, -

ВидыСубконтоНоменклатураПроект = Новый Массив;
    ВидыСубконтоНоменклатураПроект.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Номенклатура);
    ВидыСубконтоНоменклатураПроект.Добавить(ПланыВидовХарактеристик.ВидыСубконто.Проекты);

И получается, что от этого никакого толка. Как поменяли в предприятии если так и стало. Или я что то не понимаю.
3 Admin_Net_1C
 
10.02.22
08:14
(2) на уровне параметров виртуальной таблицы ты задаешь порядок выборки субконто, т.е. например в предприятии у тебя порядок 1)Проекты 2)Номенклатура, то с помощью твоего примера ты этот порядок меняешь, чтобы в запросе точно знать, что Субконто1 будет содержать Номенклатура, а не Проекты
4 NIGHTHUNTER
 
10.02.22
08:40
(3) В проводках, все равно в начале проект был
5 vicof
 
10.02.22
09:12
(4) Запросы - они для выборки данных. Проводки - они для хранения данных.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.