|
Учет в разных регистрах в 1 запросе | ☑ | ||
---|---|---|---|---|
0
pro3ri
25.08.15
✎
11:24
|
ДОбрый день!
Одним запросом делаю движения в управленческий учет (остатки товаров) и бухгалтерский. Запрос = Новый Запрос; + Code Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("ВидНабор", Перечисления.ВидыНоменклатуры.Набор); //Запрос.УстановитьПараметр("ВидУслуга", Перечисления.ВидыНоменклатуры.Услуга); Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(СоставНабора.Комплектующая, ПоступлениеТоваровТовары.Номенклатура) КАК Номенклатура, | СУММА(ПоступлениеТоваровТовары.Количество * ПоступлениеТоваровТовары.ЕдиницаИзмерения.Коэффициент * ЕСТЬNULL(СоставНабора.Количество, 1)) КАК Количество, | СУММА(ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Набор) | ТОГДА ПоступлениеТоваровТовары.Сумма * СоставНабора.ДоляВСтоимости | ИНАЧЕ ПоступлениеТоваровТовары.Сумма | КОНЕЦ) КАК Сумма, | ПоступлениеТоваровТовары.Качество, | ПоступлениеТоваровТовары.Ссылка.Дата КАК Период, | ЕСТЬNULL(СоставНабора.Комплектующая, ПоступлениеТоваровТовары.Номенклатура) КАК СубконтоДт1, | ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) | ТОГДА ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Услуги) | ИНАЧЕ ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары) | КОНЕЦ КАК ВидСубконтоДт1, | ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) | ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Затраты) | ИНАЧЕ ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары) | КОНЕЦ КАК СчетДт, | ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Поставщики) КАК СчетКт |ИЗ | Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставНабора КАК СоставНабора | ПО ПоступлениеТоваровТовары.Номенклатура = СоставНабора.Набор | И (ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = &ВидНабор) |ГДЕ | ПоступлениеТоваровТовары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ПоступлениеТоваровТовары.Качество, | ПоступлениеТоваровТовары.Ссылка.Дата, | ЕСТЬNULL(СоставНабора.Комплектующая, ПоступлениеТоваровТовары.Номенклатура), | ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) | ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Затраты) | ИНАЧЕ ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары) | КОНЕЦ, | ЕСТЬNULL(СоставНабора.Комплектующая, ПоступлениеТоваровТовары.Номенклатура), | ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) | ТОГДА ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Услуги) | ИНАЧЕ ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары) | КОНЕЦ"; Если ЭтоАвансовыйОтчет Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст,"ПоступлениеТоваров", "АвансовыйОтчет"); Запрос.Текст = СтрЗаменить(Запрос.Текст,"ПланСчетов.Управленческий.Поставщики", "ПланСчетов.Управленческий.Сотрудники"); КонецЕсли; Таблица = Запрос.Выполнить().Выгрузить(); Движения.ОстаткиНоменклатуры.Загрузить(Таблица); Таблица.Свернуть("Период, СубконтоДт1, ВидСубконтоДт1, СчетДт, СчетКт, Сумма"); Движения.РегистрБухгалтерии1.Загрузить(Таблица); Вопрос в том, как сделать, чтобы услуги попадали в регистр бухгалтерии а в управленческий регистр нет. |
|||
1
pro3ri
25.08.15
✎
11:25
|
попытка решить так: Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("ВидНабор", Перечисления.ВидыНоменклатуры.Набор); //Запрос.УстановитьПараметр("ВидУслуга", Перечисления.ВидыНоменклатуры.Услуга); Запрос.Текст = "ВЫБРАТЬ | ЕСТЬNULL(СоставНабора.Комплектующая, ПоступлениеТоваровТовары.Номенклатура) КАК Номенклатура, | СУММА(ПоступлениеТоваровТовары.Количество * ПоступлениеТоваровТовары.ЕдиницаИзмерения.Коэффициент * ЕСТЬNULL(СоставНабора.Количество, 1)) КАК Количество, | СУММА(ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Набор) | ТОГДА ПоступлениеТоваровТовары.Сумма * СоставНабора.ДоляВСтоимости | ИНАЧЕ ПоступлениеТоваровТовары.Сумма | КОНЕЦ) КАК Сумма, | ПоступлениеТоваровТовары.Качество, | ПоступлениеТоваровТовары.Ссылка.Дата КАК Период, | ЕСТЬNULL(СоставНабора.Комплектующая, ПоступлениеТоваровТовары.Номенклатура) КАК СубконтоДт1, | ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) | ТОГДА ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Услуги) | ИНАЧЕ ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары) | КОНЕЦ КАК ВидСубконтоДт1, | ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) | ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Затраты) | ИНАЧЕ ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары) | КОНЕЦ КАК СчетДт, | ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Поставщики) КАК СчетКт |ИЗ | Документ.ПоступлениеТоваров.Товары КАК ПоступлениеТоваровТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СоставНабора КАК СоставНабора | ПО ПоступлениеТоваровТовары.Номенклатура = СоставНабора.Набор | И (ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = &ВидНабор) |ГДЕ | ПоступлениеТоваровТовары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ПоступлениеТоваровТовары.Качество, | ПоступлениеТоваровТовары.Ссылка.Дата, | ЕСТЬNULL(СоставНабора.Комплектующая, ПоступлениеТоваровТовары.Номенклатура), | ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) | ТОГДА ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Затраты) | ИНАЧЕ ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары) | КОНЕЦ, | ВЫБОР | КОГДА ПоступлениеТоваровТовары.Номенклатура.ВидНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ВидыНоменклатуры.Услуга) | ТОГДА ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Услуги) | ИНАЧЕ ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Товары) | КОНЕЦ, | ЕСТЬNULL(СоставНабора.Комплектующая, ПоступлениеТоваровТовары.Номенклатура)"; Если ЭтоАвансовыйОтчет Тогда Запрос.Текст = СтрЗаменить(Запрос.Текст,"ПоступлениеТоваров", "АвансовыйОтчет"); Запрос.Текст = СтрЗаменить(Запрос.Текст,"ПланСчетов.Управленческий.Поставщики", "ПланСчетов.Управленческий.Сотрудники"); КонецЕсли; Таблица = Запрос.Выполнить().Выгрузить(); Массив = Новый Массив; Для каждого СтрокаТЗ Из Таблица Цикл Если СтрокаТЗ.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Набор Или СтрокаТЗ.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Товар Тогда Массив.Добавить(СтрокаТЗ); КонецЕсли; КонецЦикла; ТаблицаДляОстатков = Таблица.Скопировать(Массив); Движения.ОстаткиНоменклатуры.Загрузить(Таблица); Таблица.Свернуть("Период, СубконтоДт1, ВидСубконтоДт1, СчетДт, СчетКт, Сумма"); Движения.РегистрБухгалтерии1.Загрузить(Таблица); |
|||
2
Медведик
25.08.15
✎
11:31
|
ТС, может результат запроса поместить во временную таблицу, а из нее уже получить выборкой две таблицы - для УУ и БУ отдельно?
|
|||
3
pro3ri
25.08.15
✎
11:34
|
(2) с временными таблицами не работал, можете привести пример кода?
|
|||
4
Медведик
25.08.15
✎
11:37
|
ВЫБРАТЬ
... ПОМЕСТИТЬ МояВременнаяТаблица ИЗ .... ; ВЫБРАТЬ ... ИЗ МояВременнаяТаблица КАК Т; Ну и гугл в помощь, раз уж такие азы затруднение вызывают. |
|||
5
pro3ri
25.08.15
✎
11:52
|
(4) благодарю.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |