Небольшая помощь с синтаксисом. Не могу выцепить конкретную группу подразделений. Предприятие 8.3
Всем доброго времени суток. Возникла проблема с синтаксисом, я не совсем понимаю, как мне выцепить не все подразделения из списка, а допустим все подразделения, которые находятся в "Котельные" (на скрине я отметил).
//Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999 ") //Газовая служба
// Тогда НовСтрока.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000035") //Котельная № 2 Новый Свет
//КонецЕсли;
Я могу написать "НайтиПоКоду", но он будет цеплять конкретное подразделение, оно и логично. Если обратить внимание на код, там есть строчка "НовСтрока.ПодразделениеДт = Множители.Подразделение;" - она цепляет все подразделения подряд, без какой либо фильтрации. А я хочу за ПодразделениемКт зацепить определенную группу подразделений в строку ПодразделениеДт. Пример: ПодразделениеКт (Газовые службы) - ПодразделениеДт (Котельные). Данные условия уже находятся внутри цикла, так что создать еще один цикл не получится, может быть запрос решит эту проблему, я не знаю. Надеюсь суть понятна, что каждый круг цикла будет брать новое подразделение из этой группы. Если какие-либо вопросы остались, задавайте, буду только рад.
//Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999 ") //Газовая служба
// Тогда НовСтрока.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000035") //Котельная № 2 Новый Свет
//КонецЕсли;
Я могу написать "НайтиПоКоду", но он будет цеплять конкретное подразделение, оно и логично. Если обратить внимание на код, там есть строчка "НовСтрока.ПодразделениеДт = Множители.Подразделение;" - она цепляет все подразделения подряд, без какой либо фильтрации. А я хочу за ПодразделениемКт зацепить определенную группу подразделений в строку ПодразделениеДт. Пример: ПодразделениеКт (Газовые службы) - ПодразделениеДт (Котельные). Данные условия уже находятся внутри цикла, так что создать еще один цикл не получится, может быть запрос решит эту проблему, я не знаю. Надеюсь суть понятна, что каждый круг цикла будет брать новое подразделение из этой группы. Если какие-либо вопросы остались, задавайте, буду только рад.
// Закрытие 25 Счета (распределяемые)
Пока ВыборкаОбороты25Распределяемые.Следующий() Цикл
//Сумма = ВыборкаОбороты25Распределяемые.Сумма;
//НачСумма = Сумма;
ВыборкаОбороты25 = ВыборкаОбороты25Распределяемые.Выбрать();
НовСтрока = Неопределено;
//_Суммы = 0;
Пока ВыборкаОбороты25.Следующий() Цикл
Сумма = ВыборкаОбороты25.Сумма;
СуммаНУ = ВыборкаОбороты25.СуммаНУ;
СуммаВыборки = ВыборкаОбороты25.Сумма;
СуммаВыборкиНУ = ВыборкаОбороты25.СуммаНУ;
Множители = ВыборкаМножители.Выбрать();
Пока Множители.Следующий() Цикл
НовСтрока = ТаблДвижений.Добавить();
НовСтрока.СчетДт = ПланыСчетов.Хозрасчетный.ОсновноеПроизводство;
НовСтрока.СчетКт = ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы;
НовСтрока.ПодразделениеДт = Множители.Подразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
НовСтрока.Субконто1Дт = Множители.НоменклатурнаяГруппа;
//Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999 ") //Газовая служба
// Тогда НовСтрока.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000035") //Котельная № 2 Новый Свет
//КонецЕсли;
//
//Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999 ") //Газовая служба
// Тогда НовСтрока.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000163") //Котельная № 6 Рождествено
//КонецЕсли;
НовСтрока.Субконто2Дт = СтатьяОбщепроизводственная;
НовСтрока.Субконто1Кт = ВыборкаОбороты25.СтатьяЗатрат;
Множитель90 = ВыборкаМножители90.Найти(Множители.НоменклатурнаяГруппа , "НоменклатурнаяГруппа");
Если Множитель90 = Неопределено Тогда
Множитель90 = 0;
Иначе
Множитель90 = Множитель90.Множитель;
КонецЕсли;
СуммаПроводки = Окр(Множители.Множитель * СуммаВыборки * Множитель90, 2);
Если СуммаВыборкиНУ = 0 Тогда
СуммаПроводкиНУ = 0;
Иначе
СуммаПроводкиНУ = Окр(Множители.Множитель * СуммаВыборкиНУ * Множитель90, 2);
КонецЕсли;
НовСтрока.СуммаПроводки = СуммаПроводки;
НовСтрока.СуммаПроводкиНУ = СуммаПроводкиНУ;
Сумма = Сумма - СуммаПроводки;
СуммаНУ = СуммаНУ - СуммаПроводкиНУ;
КонецЦикла;
НовСтрока.СуммаПроводки = НовСтрока.СуммаПроводки + Сумма;
Если НовСтрока.СуммаПроводкиНУ <> 0 Тогда
НовСтрока.СуммаПроводкиНУ = НовСтрока.СуммаПроводкиНУ + СуммаНУ;
КонецЕсли;
КонецЦикла;
КонецЦикла;
ПоказатьПрикрепленные файлы:


Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(16)
Примерно вот в таком виде, я себе это представляю
Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999 ") //Газовая служба
Тогда НовСтрока.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.ПринадлежитЭлементу(Справочники.ПодразделениеОрганизаций.НайтиПоНаименованию("Котельные"));
КонецЕсли;
Примерно вот в таком виде, я себе это представляю
НайтиПоКоду("999 ") желательно не использовать только в разовых случаях
а так запросом обратитесь к справочнику и в условии укажите в иерахии
пример
а так запросом обратитесь к справочнику и в условии укажите в иерахии
пример
ТекстЗапроса =
"ВЫБРАТЬ
| Товары.Ссылка,
| Товары.Артикул
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В ИЕРАРХИИ(&Ссылка)"
(11)Я попробовал, после формирования проводки, вижу пустые значения в ПодразделениеДт. Сейчас пробую без массива и напрямую параметру присваивать значение, только вот не знаю, что писать **** (указал ниже)
Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999 ") //Газовая служба
Тогда НовСтрока.ПодразделениеДт = "****";
КонецЕсли;
НовСтрока.ПодразделениеДт = Множители.Подразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
НовСтрока.Субконто1Дт = Множители.НоменклатурнаяГруппа;
//Подр_Котельная = Новый Массив;
//Подр_Котельная.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000024")); //Котельные
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПодразделенияОрганизаций.Ссылка
|ИЗ
| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
| ПодразделенияОрганизаций.Ссылка В ИЕРАРХИИ(&Подр_Котельная)" ;
Запрос.УстановитьПараметр("Подр_Котельная", Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000024"));
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
//Выборка=Результат.Выбрать();
//Сп_ПодразделенийКотельной = Новый СписокЗначений;
//Пока Выборка.Следующий Цикл
//Сп_ПодразделенийКотельной.Добавить(Выборка.Ссылка);
//КонецЦикла;
Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999 ") //Газовая служба
Тогда НовСтрока.ПодразделениеДт = Сп_ПодразделенийКотельной;
КонецЕсли;
Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999 ") //Газовая служба
Тогда НовСтрока.Субконто1Дт = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000131"); //Тепловая Энергия
КонецЕсли;
Показать
(10)
списком из родителя "Котельные"
Подр_Котельная = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000035") //Котельная № 2 Новый Свет
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПодразделенияОрганизаций.Ссылка,
|ИЗ
| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
| ПодразделенияОрганизаций.Ссылка В ИЕРАРХИИ(&Подр_Котельная )" ;
Запрос.УстановитьПараметры("Подр_Котельная ", Подр_Котельная );
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
Выборка=Результат.Выбрать();
Сп_ПодразделенийКотельной = Новый СписокЗначений;
Пока Выборка.Следующий Цикл
Сп_ПодразделенийКотельной.Добавить(Выборка.Ссылка);
КонецЦикла;
Показать
(14)Ругается в некоторых местах на ошибки. Основные поправил, по типу запятой в запросе перед "ИЗ" и Запрос.УстановитьПараметры, изменил на Запрос.УстановитьПараметр (убрал букву "Ы").
Выборка=Результат.Выбрать();
Сп_ПодразделенийКотельной = Новый СписокЗначений;
Пока Выборка.Следующий Цикл
Сп_ПодразделенийКотельной.Добавить(Выборка.Ссылка);
КонецЦикла;
Расскажите пожалуйста, для чего это? Запихивать значения, получаемые запросом из справочника, в список значений?
Выборка=Результат.Выбрать();
Сп_ПодразделенийКотельной = Новый СписокЗначений;
Пока Выборка.Следующий Цикл
Сп_ПодразделенийКотельной.Добавить(Выборка.Ссылка);
КонецЦикла;
Расскажите пожалуйста, для чего это? Запихивать значения, получаемые запросом из справочника, в список значений?
(9)я думал насчет этого варианта, пока еще не решился. Можно конечно сделать отдельный справочник "МножителиКотельныеОтбор" например, добавить туда эти котельные и запросом оттуда брать, но пока откладываю этот вариант, чтобы еще больше не добавлять нетиповых элементов в конфу, их и без этого предостаточно. Если не будет получатся, то этот вариант станет актуальным.
(24)Запроса не нашел по множителям, есть только это.
НоменклатурныеГруппы = Новый Структура;
НоменклатурныеГруппы.Вставить("Водоотведение", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000003"));
НоменклатурныеГруппы.Вставить("Водопотребление", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000002"));
НоменклатурныеГруппы.Вставить("ТепловаяЭнергия", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000131"));
НоменклатурныеГруппы.Вставить("ПрочиеУслуги", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000031"));
НоменклатурныеГруппы.Вставить("ПодвозВоды", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000134"));
НоменклатурныеГруппы.Вставить("СтроительныеРаботы", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000133"));
Результат = Документы.Geos_Закрытие25Счета.ЗапросОборотовНаСчетах(Ссылка);
ВыборкаОбороты25Распределяемые = Результат[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СтатьяЗатрат");
ВыборкаОбороты25НЕРаспределяемые = Результат[3].Выбрать();
ВыборкаМножители = Результат[5];
ВыборкаОбороты26Распределяемые = Результат[6].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СтатьяЗатрат");
ВыборкаМножители90 = Результат[9].Выгрузить();
ВыборкаМножители25 = Результат[11];
Показать
(24)Вообще вот.
ВЫБРАТЬ РАЗЛИЧНЫЕ
| Geos_Подразделения25Счета.Подразделение КАК Подразделение
|ПОМЕСТИТЬ Подразделения
|ИЗ
| Справочник.Geos_Подразделения25Счета КАК Geos_Подразделения25Счета
|ГДЕ
| Geos_Подразделения25Счета.ПометкаУдаления = ЛОЖЬ
|
|ИНДЕКСИРОВАТЬ ПО
| Подразделение
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПодразделенияОрганизаций.Ссылка КАК Подразделение
|ПОМЕСТИТЬ ПодразделенияОстальные
|ИЗ
| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
| НЕ ПодразделенияОрганизаций.Ссылка В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Geos_Подразделения25Счета.Подразделение
| ИЗ
| Справочник.Geos_Подразделения25Счета КАК Geos_Подразделения25Счета
| ГДЕ
| Geos_Подразделения25Счета.ПометкаУдаления = ЛОЖЬ)
| И НЕ ПодразделенияОрганизаций.Ссылка = &Лаборатория
|
|ИНДЕКСИРОВАТЬ ПО
| Подразделение
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХозрасчетныйОбороты.Подразделение КАК Подразделение,
| ХозрасчетныйОбороты.Субконто1 КАК СтатьяЗатрат,
| ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
| ХозрасчетныйОбороты.СуммаНУОборотДт КАК СуммаНУ
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Период, Счет = &Счет25, , , , ) КАК ХозрасчетныйОбороты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Подразделения КАК Подразделения
| ПО ХозрасчетныйОбороты.Подразделение = Подразделения.Подразделение
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Субконто1,
| ХозрасчетныйОбороты.Подразделение,
| ХозрасчетныйОбороты.СуммаОборотДт,
| ХозрасчетныйОбороты.СуммаНУОборотДт
|
|УПОРЯДОЧИТЬ ПО
| СтатьяЗатрат,
| Подразделение
|ИТОГИ ПО
| СтатьяЗатрат
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХозрасчетныйОбороты.Подразделение КАК Подразделение,
| ХозрасчетныйОбороты.Субконто1 КАК СтатьяЗатрат,
| ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
| ХозрасчетныйОбороты.СуммаНУОборотДт КАК СуммаНУ
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Период, Счет = &Счет25, , , , ) КАК ХозрасчетныйОбороты
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПодразделенияОстальные КАК ПодразделенияОстальные
| ПО ХозрасчетныйОбороты.Подразделение = ПодразделенияОстальные.Подразделение
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Подразделение,
| ХозрасчетныйОбороты.Субконто1,
| ХозрасчетныйОбороты.СуммаОборотДт,
| ХозрасчетныйОбороты.СуммаНУОборотДт
|
|УПОРЯДОЧИТЬ ПО
| Подразделение,
| СтатьяЗатрат
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК Сумма,
| ХозрасчетныйОбороты.Субконто1 КАК НоменклатурнаяГруппа
|ПОМЕСТИТЬ ОбщийОборот20Счета
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Период,
| Счет = &Счет20,
| ,
| НЕ Субконто1 = &ПриборыУчета
| И НЕ Подразделение = &Котельная59,
| ,
| ) КАК ХозрасчетныйОбороты
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Субконто1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХозрасчетныйОбороты.Подразделение КАК Подразделение,
| ХозрасчетныйОбороты.Субконто1 КАК НоменклатурнаяГруппа,
| СУММА(ВЫБОР
| КОГДА ОбщийОборот20Счета.Сумма <= 0
| ТОГДА 0
| ИНАЧЕ ХозрасчетныйОбороты.СуммаОборотДт / ОбщийОборот20Счета.Сумма
| КОНЕЦ) КАК Множитель
|ИЗ
| ОбщийОборот20Счета КАК ОбщийОборот20Счета
| ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Период,
| Счет = &Счет20,
| ,
| НЕ Субконто1 = &ПриборыУчета
| И НЕ Подразделение = &Котельная59,
| ,
| ) КАК ХозрасчетныйОбороты
| ПО ОбщийОборот20Счета.НоменклатурнаяГруппа = ХозрасчетныйОбороты.Субконто1
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Подразделение,
| ХозрасчетныйОбороты.Субконто1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХозрасчетныйОбороты.Подразделение КАК Подразделение,
| ХозрасчетныйОбороты.Субконто1 КАК СтатьяЗатрат,
| ХозрасчетныйОбороты.СуммаОборотДт КАК Сумма,
| ХозрасчетныйОбороты.СуммаНУОборотДт КАК СуммаНУ
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Период, Счет = &Счет26, , , , ) КАК ХозрасчетныйОбороты
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Подразделение,
| ХозрасчетныйОбороты.Субконто1,
| ХозрасчетныйОбороты.СуммаОборотДт,
| ХозрасчетныйОбороты.СуммаНУОборотДт
|
|УПОРЯДОЧИТЬ ПО
| СтатьяЗатрат,
| Подразделение
|ИТОГИ
| СУММА(Сумма)
|ПО
| СтатьяЗатрат
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ХозрасчетныйОбороты.Субконто1 КАК НоменклатурнаяГруппа
|ПОМЕСТИТЬ НоменклатурныеГруппы
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Период,
| Счет = &Счет20,
| ,
| НЕ Субконто1 = &ПриборыУчета
| И НЕ Подразделение = &Котельная59,
| ,
| ) КАК ХозрасчетныйОбороты
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Субконто1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ВЫБОР
| КОГДА ХозрасчетныйОбороты.Субконто2 = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
| ТОГДА (ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт) / 118 * 18
| КОГДА ХозрасчетныйОбороты.Субконто2 = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
| ТОГДА (ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт) / 120 * 20
| КОГДА ХозрасчетныйОбороты.Субконто2 = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
| ТОГДА (ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт) / 110 * 10
| ИНАЧЕ (ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт)
| КОНЕЦ) КАК Сумма
|ПОМЕСТИТЬ ОбщийОборот90Счета
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Период, Счет = &Счет90, , НЕ Субконто1 = &ПриборыУчета, , ) КАК ХозрасчетныйОбороты,
| НоменклатурныеГруппы КАК НоменклатурныеГруппы
|ГДЕ
| ХозрасчетныйОбороты.Субконто1 В (НоменклатурныеГруппы.НоменклатурнаяГруппа)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХозрасчетныйОбороты.Субконто1 КАК НоменклатурнаяГруппа,
| СУММА(ВЫБОР
| КОГДА ОбщийОборот90Счета.Сумма <= 0
| ТОГДА 0
| КОГДА ХозрасчетныйОбороты.Субконто2 = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18)
| ТОГДА (ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт) / 118 * 18 / ОбщийОборот90Счета.Сумма
| КОГДА ХозрасчетныйОбороты.Субконто2 = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
| ТОГДА (ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт) / 120 * 20 / ОбщийОборот90Счета.Сумма
| КОГДА ХозрасчетныйОбороты.Субконто2 = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10)
| ТОГДА (ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт) / 110 * 10 / ОбщийОборот90Счета.Сумма
| ИНАЧЕ (ХозрасчетныйОбороты.СуммаОборотКт - ХозрасчетныйОбороты.СуммаОборотДт) / ОбщийОборот90Счета.Сумма
| КОНЕЦ) КАК Множитель
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, Период, Счет = &Счет90, , НЕ Субконто1 = &ПриборыУчета, , ) КАК ХозрасчетныйОбороты,
| ОбщийОборот90Счета КАК ОбщийОборот90Счета,
| НоменклатурныеГруппы КАК НоменклатурныеГруппы
|ГДЕ
| ХозрасчетныйОбороты.Субконто1 В (НоменклатурныеГруппы.НоменклатурнаяГруппа)
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Субконто1
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК Сумма
|ПОМЕСТИТЬ ОбщийОборот20Счета25
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Период,
| Счет = &Счет20,
| ,
| НЕ Субконто1 = &ПриборыУчета
| И НЕ Подразделение = &Котельная59,
| ,
| ) КАК ХозрасчетныйОбороты
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ХозрасчетныйОбороты.Подразделение КАК Подразделение,
| ХозрасчетныйОбороты.Субконто1 КАК НоменклатурнаяГруппа,
| СУММА(ВЫБОР
| КОГДА ОбщийОборот20Счета.Сумма <= 0
| ТОГДА 0
| ИНАЧЕ ХозрасчетныйОбороты.СуммаОборотДт / ОбщийОборот20Счета.Сумма
| КОНЕЦ) КАК Множитель
|ИЗ
| ОбщийОборот20Счета25 КАК ОбщийОборот20Счета,
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Период,
| Счет = &Счет20,
| ,
| НЕ Субконто1 = &ПриборыУчета
| И НЕ Подразделение = &Котельная59,
| ,
| ) КАК ХозрасчетныйОбороты
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Подразделение,
| ХозрасчетныйОбороты.Субконто1"
Показать
Вот запрос.
Теперь объясните что вы хотите сделать в "закрытии"
данный запрос получает обороты в разрезе подразделений и номенклатурной группы
и закрывает их выборкой по оборотам 25 счета
ВЫБРАТЬ
| ХозрасчетныйОбороты.Подразделение КАК Подразделение,
| ХозрасчетныйОбороты.Субконто1 КАК НоменклатурнаяГруппа,
| СУММА(ВЫБОР
| КОГДА ОбщийОборот20Счета.Сумма <= 0
| ТОГДА 0
| ИНАЧЕ ХозрасчетныйОбороты.СуммаОборотДт / ОбщийОборот20Счета.Сумма
| КОНЕЦ) КАК Множитель
|ИЗ
| ОбщийОборот20Счета КАК ОбщийОборот20Счета
| ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Период,
| Счет = &Счет20,
| ,
| НЕ Субконто1 = &ПриборыУчета
| И НЕ Подразделение = &Котельная59,
| ,
| ) КАК ХозрасчетныйОбороты
| ПО ОбщийОборот20Счета.НоменклатурнаяГруппа = ХозрасчетныйОбороты.Субконто1
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Подразделение,
| ХозрасчетныйОбороты.Субконто1
ПоказатьТеперь объясните что вы хотите сделать в "закрытии"
данный запрос получает обороты в разрезе подразделений и номенклатурной группы
и закрывает их выборкой по оборотам 25 счета
(31)Проблема в том, что изначально у механизма не было выстроено сопоставление подразделений Дт и Кт.
Объясняю, существует определенный список подразделений (25 - на скрине есть), который размещается только на 25 счете (пример также на скрине "Электротехнический участок"), слева от него ПодразделениеДт, там уже идут все остальные подразделения, кроме того списка "25" и "26". Есть задача, чтобы с ПодразделенияКт подразделения "Газовые службы", "Лаборатория контроля за качеством питьевой и сточн" и "Мазутно-насосная станция" прыгали на "20 счет" - ПодразделениеДт и имели определенное подразделение (такая тофтология):
1. "Газовые службы" = Только котельные (Родитель "Котельные " - все что входит внутри (на скрине 1 поставил));
2. "Мазутно-насосная станция" = тоже котельные
3. "Лаборатория контроля за качеством питьевой и сточн" = ВиК "Здесь указан поселок" (Родитель "Водопровод") и Канализация.
По котельным есть вопрос, там какие-то относятся только к мазутным, а какие-то к газовым, но это никак не обозначено.
Объясняю, существует определенный список подразделений (25 - на скрине есть), который размещается только на 25 счете (пример также на скрине "Электротехнический участок"), слева от него ПодразделениеДт, там уже идут все остальные подразделения, кроме того списка "25" и "26". Есть задача, чтобы с ПодразделенияКт подразделения "Газовые службы", "Лаборатория контроля за качеством питьевой и сточн" и "Мазутно-насосная станция" прыгали на "20 счет" - ПодразделениеДт и имели определенное подразделение (такая тофтология):
1. "Газовые службы" = Только котельные (Родитель "Котельные " - все что входит внутри (на скрине 1 поставил));
2. "Мазутно-насосная станция" = тоже котельные
3. "Лаборатория контроля за качеством питьевой и сточн" = ВиК "Здесь указан поселок" (Родитель "Водопровод") и Канализация.
По котельным есть вопрос, там какие-то относятся только к мазутным, а какие-то к газовым, но это никак не обозначено.
Прикрепленные файлы:



(39)Вообще, подразделенияДт слева подставляются рандомно, без какой-либо привязки к ПодразделениКт. На скрине я показал, там в проводке строки с газовыми службами, в одном месте он запрыгнул в котельную, в другом в ОС - Канализацию. Сумму он делит пропорционально остатку, ее не стоит трогать. Нужно лишь задать условие, если в 25 счете в строке ПодразделениеКт есть "Газовые службы", то на 20 счете он будет размещен в ПодразделениеДт "Котельные..."
Прикрепленные файлы:

(40)
Соответствия где нибудь в базе заданы?
оводке строки с газовыми службами, в одном месте он запрыгнул в котельную, в другом в ОС - Канализацию. Сумму он делит пропорционально остатку, ее не стоит трогать. Нужно лишь задать условие, если в 25 счете в строке ПодразделениеКт есть "Газовые службы", то на 20 счете он будет р
Соответствия где нибудь в базе заданы?
Запросы просто жесть)
Например:
Для чего здесь "ВЫБРАТЬ РАЗЛИЧНЫЕ". Все ссылки и так будут различные.
Вложенный запрос в "ГДЕ". Уж лучше использовать соединение.
Индексация для 10-30 подразделений займет времени больше, чем их перебор.
Например:
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПодразделенияОрганизаций.Ссылка КАК Подразделение
|ПОМЕСТИТЬ ПодразделенияОстальные
|ИЗ
| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
| НЕ ПодразделенияОрганизаций.Ссылка В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Geos_Подразделения25Счета.Подразделение
| ИЗ
| Справочник.Geos_Подразделения25Счета КАК Geos_Подразделения25Счета
| ГДЕ
| Geos_Подразделения25Счета.ПометкаУдаления = ЛОЖЬ)
| И НЕ ПодразделенияОрганизаций.Ссылка = &Лаборатория
|
|ИНДЕКСИРОВАТЬ ПО
| Подразделение
ПоказатьДля чего здесь "ВЫБРАТЬ РАЗЛИЧНЫЕ". Все ссылки и так будут различные.
Вложенный запрос в "ГДЕ". Уж лучше использовать соединение.
Индексация для 10-30 подразделений займет времени больше, чем их перебор.
Добавь реквизит "СоответствующееПодразделение" в справочник "ПодразделенияОрганизаций"
Задай соответствия.
А в коде примерно так:
НовСтрока.ПодразделениеДт = ВыборкаОбороты25.Подразделение.СоответствующееПодразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
Задай соответствия.
А в коде примерно так:
НовСтрока.ПодразделениеДт = ВыборкаОбороты25.Подразделение.СоответствующееПодразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
(48) Здравствуйте , я ,конечно , не такой хороший специалист , но подобная вопрос тоже был с соответствием, я создавала новый запрос, так как, после изменения существующего возникли некоторые ошибки , на новый запрос он не ругался и работал хорошо. Насчте реквизита, слететь не должен,если правильно его создать
(57)
1. В справочнике "ПодразделенияОрганизаций", в конфигураторе, создайте новый реквизит "СоответствующееПодразделение" с типом "СправочникСсылка.ПодразделенияОрганизаций"
2. В форме элемента данного справочника добавьте данный реквизит на форму.
3. В режиме "Предприятие", в справочнике "ПодразделенияОрганизаций" заполните реквизит "СоответствующееПодразделение".
4. В куске кода, который вы приводили в первом сообщении, замените:
на
ать соответствие нужно запр
1. В справочнике "ПодразделенияОрганизаций", в конфигураторе, создайте новый реквизит "СоответствующееПодразделение" с типом "СправочникСсылка.ПодразделенияОрганизаций"
2. В форме элемента данного справочника добавьте данный реквизит на форму.
3. В режиме "Предприятие", в справочнике "ПодразделенияОрганизаций" заполните реквизит "СоответствующееПодразделение".
4. В куске кода, который вы приводили в первом сообщении, замените:
НовСтрока.ПодразделениеДт = Множители.Подразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
на
НовСтрока.ПодразделениеДт = ВыборкаОбороты25.Подразделение.СоответствующееПодразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
(58) Нехорошее решение. Маппинги лучше рисовать в отдельных регистрах сведений, и всю программную логику рисовать в модуле менеджера этого регистра. И типовые объекты не ломаются для обновления, и решение прозрачной.
Кстати, поможет и для (59) при правильном подходе.
Кстати, поможет и для (59) при правильном подходе.
(60)
Какую логику вы собрались "рисовать" в модуле менеджера регистра сведений?
Так же, для четкого указания пары значений нет никакой необходимости в дополнительной таблицы базы данных.
Много таких, на создают миллион регистров, с неверной структурой и назначением, а ты с ними потом разбирайся.
1. Весь код уже является не типовым.
2. Дополнительный реквизит не доставит проблем при обновлении.
3. Задача изначально построена на корявых запросах с кучей всяких косяков и "детских болезней"
Данная задача может быть решена только после грамотной постановки. Сейчас же (59) задача не ясна, как и ее цель.
. Маппинги лучше рисовать в отдельных регистрах сведений, и всю
Какую логику вы собрались "рисовать" в модуле менеджера регистра сведений?
Так же, для четкого указания пары значений нет никакой необходимости в дополнительной таблицы базы данных.
Много таких, на создают миллион регистров, с неверной структурой и назначением, а ты с ними потом разбирайся.
1. Весь код уже является не типовым.
2. Дополнительный реквизит не доставит проблем при обновлении.
3. Задача изначально построена на корявых запросах с кучей всяких косяков и "детских болезней"
Данная задача может быть решена только после грамотной постановки. Сейчас же (59) задача не ясна, как и ее цель.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот