Небольшая помощь с синтаксисом. Не могу выцепить конкретную группу подразделений. Предприятие 8.3

1. mvl_dimir 11.03.21 08:17 Сейчас в теме
Всем доброго времени суток. Возникла проблема с синтаксисом, я не совсем понимаю, как мне выцепить не все подразделения из списка, а допустим все подразделения, которые находятся в "Котельные" (на скрине я отметил).

//Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("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 Тогда
				НовСтрока.СуммаПроводкиНУ = НовСтрока.СуммаПроводкиНУ + СуммаНУ;
			КонецЕсли;
			
		КонецЦикла;
		
		
		
	КонецЦикла;
Показать
Прикрепленные файлы:
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. ab_initio 95 11.03.21 08:24 Сейчас в теме
Есть метод ПринадлежитЭлементу(<Элемент>). Он определяет принадлежность с учетом всех уровней иерархии.
mvl_dimir; +1 Ответить
3. mvl_dimir 11.03.21 08:30 Сейчас в теме
(2)А элемент в данном случае это наименование или код?
5. ab_initio 95 11.03.21 08:31 Сейчас в теме
(3) Это не то и не другое, это ссылка на элемент. Сам, собсно, элемент. Это та же самая сущность, которую дает метод НайтиПоКоду(...).
8. mvl_dimir 11.03.21 08:35 Сейчас в теме
(5)и как в моем случае будет выглядеть эта ссылка? ПринадлежитЭлементу(Справочники.ПодразделениеОрганизаций.НайтиПоНаименованию("Котельные"));
16. ab_initio 95 11.03.21 08:54 Сейчас в теме
(8) Да, вполне так сработает.
20. mvl_dimir 11.03.21 09:04 Сейчас в теме
(16)
Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999      ") //Газовая служба
					Тогда  НовСтрока.ПодразделениеДт = Справочники.ПодразделенияОрганизаций.ПринадлежитЭлементу(Справочники.ПодразделениеОрганизаций.НайтиПоНаименованию("Котельные"));				
				КонецЕсли;

Примерно вот в таком виде, я себе это представляю
21. mvl_dimir 11.03.21 09:07 Сейчас в теме
(16)к сожалению, ругается "Поле объекта не обнаружено (ПодразделениеОрганизаций)"
22. 17808849 61 11.03.21 09:10 Сейчас в теме
(21)
ению, ругается "Поле объекта не обна

Вы булево хотите записать в подразделения?
4. artemua 135 11.03.21 08:30 Сейчас в теме
Можете загнать с начало в массив ваши Подразделения по которым нужно отобрать и при выборке делать проверку (поиск в массиве)
6. Aitbay 11.03.21 08:32 Сейчас в теме
НайтиПоКоду("999 ") желательно не использовать только в разовых случаях
а так запросом обратитесь к справочнику и в условии укажите в иерахии
пример
ТекстЗапроса = 
"ВЫБРАТЬ
| Товары.Ссылка,
| Товары.Артикул
|ИЗ
| Справочник.Товары КАК Товары
|ГДЕ
| Товары.Ссылка В ИЕРАРХИИ(&Ссылка)"
DWZ2; mvl_dimir; +2 Ответить
7. artemua 135 11.03.21 08:33 Сейчас в теме
В запрос также можете сделать, перед запросом сформировать массив отбираемых подразделений и в запросе указать условия отбора по данному массиву
10. mvl_dimir 11.03.21 08:41 Сейчас в теме
(4)
(7)в массив можно загнать эти подразделения, только я не знаю как выбрать нужные, не указывая каждое подразделение отдельно, а списком из родителя "Котельные".
11. artemua 135 11.03.21 08:42 Сейчас в теме
(10) если в запросе укажите
например,

МассивПодразделений = Новый Массив;



|ГДЕ
| Товары.Ссылка В ИЕРАРХИИ(&МассивПодразделений )


или

|ГДЕ
| Товары.Ссылка В (&МассивПодразделений )
mvl_dimir; +1 Ответить
27. mvl_dimir 11.03.21 10:39 Сейчас в теме
(11)Я попробовал, после формирования проводки, вижу пустые значения в ПодразделениеДт. Сейчас пробую без массива и напрямую параметру присваивать значение, только вот не знаю, что писать **** (указал ниже)

Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999      ") //Газовая служба
					Тогда  НовСтрока.ПодразделениеДт = "****";
				КонецЕсли;





				НовСтрока.ПодразделениеДт = Множители.Подразделение;
			    НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
				НовСтрока.Субконто1Дт = Множители.НоменклатурнаяГруппа;
				
				//Подр_Котельная = Новый Массив;
				//Подр_Котельная.Добавить(Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000024")); //Котельные				
				Запрос = Новый Запрос; 
				Запрос.Текст =
				"ВЫБРАТЬ
				| ПодразделенияОрганизаций.Ссылка
				|ИЗ
				| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
				|ГДЕ
				| ПодразделенияОрганизаций.Ссылка В ИЕРАРХИИ(&Подр_Котельная)" ;
				Запрос.УстановитьПараметр("Подр_Котельная", Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000024"));
				Результат = Запрос.Выполнить();
				
				Если Результат.Пустой() Тогда
				Возврат;
				КонецЕсли;
				//Выборка=Результат.Выбрать();
				//Сп_ПодразделенийКотельной = Новый СписокЗначений;
				//Пока Выборка.Следующий Цикл
				//Сп_ПодразделенийКотельной.Добавить(Выборка.Ссылка);
				//КонецЦикла;
				
				Если НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999      ") //Газовая служба
					Тогда  НовСтрока.ПодразделениеДт = Сп_ПодразделенийКотельной;
				КонецЕсли;
				
				Если  НовСтрока.ПодразделениеКт = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("999      ") //Газовая служба
					Тогда  НовСтрока.Субконто1Дт = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000131"); //Тепловая Энергия
				КонецЕсли;
Показать
14. succub1_5 93 11.03.21 08:48 Сейчас в теме
(10)
списком из родителя "Котельные"

Подр_Котельная = Справочники.ПодразделенияОрганизаций.НайтиПоКоду("000000035") //Котельная № 2 Новый Свет
Запрос = Новый Запрос; 
Запрос.Текст =
"ВЫБРАТЬ
| ПодразделенияОрганизаций.Ссылка,
|ИЗ
| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
| ПодразделенияОрганизаций.Ссылка В ИЕРАРХИИ(&Подр_Котельная )" ;
Запрос.УстановитьПараметры("Подр_Котельная ", Подр_Котельная );
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат;
КонецЕсли;
Выборка=Результат.Выбрать();
Сп_ПодразделенийКотельной = Новый СписокЗначений;
Пока Выборка.Следующий Цикл
Сп_ПодразделенийКотельной.Добавить(Выборка.Ссылка);
КонецЦикла;
Показать
mvl_dimir; +1 Ответить
15. 17808849 61 11.03.21 08:49 Сейчас в теме
(14)
ленияОрганизаций.НайтиПоКо

А не проще тогда использовать
Справочники.ПодразделенияОрганизаций .ВыбратьИерархически(
18. mvl_dimir 11.03.21 09:00 Сейчас в теме
(15)А в скобках тогда что будет? Ссылка на объект?
17. mvl_dimir 11.03.21 08:58 Сейчас в теме
(14)А потом написать НовСтрока.ПодразделениеДт = Сп_ПодразделенийКотельной ?
19. 17808849 61 11.03.21 09:00 Сейчас в теме
(17)
ПодразделениеДт

Подразделения уже есть в выборке. Отбор/распределения/вычисления по ним надо делать в запросе по множителям

Ни каких дополнительных "ВыбратьИерархически" и запросов не надо!
28. mvl_dimir 11.03.21 10:53 Сейчас в теме
(14)Ругается в некоторых местах на ошибки. Основные поправил, по типу запятой в запросе перед "ИЗ" и Запрос.УстановитьПараметры, изменил на Запрос.УстановитьПараметр (убрал букву "Ы").

Выборка=Результат.Выбрать();
Сп_ПодразделенийКотельной = Новый СписокЗначений;
Пока Выборка.Следующий Цикл
Сп_ПодразделенийКотельной.Добавить(Выборка.Ссылка);
КонецЦикла;

Расскажите пожалуйста, для чего это? Запихивать значения, получаемые запросом из справочника, в список значений?
9. 17808849 61 11.03.21 08:39 Сейчас в теме
Нужен запрос "ВыборкаМножители"
12. mvl_dimir 11.03.21 08:45 Сейчас в теме
(9)я думал насчет этого варианта, пока еще не решился. Можно конечно сделать отдельный справочник "МножителиКотельныеОтбор" например, добавить туда эти котельные и запросом оттуда брать, но пока откладываю этот вариант, чтобы еще больше не добавлять нетиповых элементов в конфу, их и без этого предостаточно. Если не будет получатся, то этот вариант станет актуальным.
13. 17808849 61 11.03.21 08:46 Сейчас в теме
(12)
онечно сделать отдельный справочник "МножителиКотельныеОтбор" например, добавить т

Отправьте запрос по множителям
23. 17808849 61 11.03.21 09:11 Сейчас в теме
ПринадлежитЭлементу() возвращает тип Булево.
24. 17808849 61 11.03.21 09:11 Сейчас в теме
И походу принципиально не хотите скидывать сверх секретный запрос по множителям
25. mvl_dimir 11.03.21 09:15 Сейчас в теме
(24)да нет, я просто не обратил внимание на это, извините. Сейчас я его найду и скину
26. mvl_dimir 11.03.21 09:25 Сейчас в теме
(24)Запроса не нашел по множителям, есть только это.
	НоменклатурныеГруппы = Новый Структура;
	
	НоменклатурныеГруппы.Вставить("Водоотведение", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000003"));
	НоменклатурныеГруппы.Вставить("Водопотребление", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000002"));
	НоменклатурныеГруппы.Вставить("ТепловаяЭнергия", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000131"));
	НоменклатурныеГруппы.Вставить("ПрочиеУслуги", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000031"));
	НоменклатурныеГруппы.Вставить("ПодвозВоды", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000134"));
	НоменклатурныеГруппы.Вставить("СтроительныеРаботы", Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000133"));
	
	Результат = Документы.Geos_Закрытие25Счета.ЗапросОборотовНаСчетах(Ссылка);
	ВыборкаОбороты25Распределяемые = Результат[2].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СтатьяЗатрат");
	ВыборкаОбороты25НЕРаспределяемые = Результат[3].Выбрать();
	ВыборкаМножители = Результат[5];
	ВыборкаОбороты26Распределяемые = Результат[6].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "СтатьяЗатрат");
	ВыборкаМножители90 = Результат[9].Выгрузить();
	ВыборкаМножители25 = Результат[11];
Показать
29. mvl_dimir 11.03.21 10:56 Сейчас в теме
(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"
Показать
30. 17808849 61 11.03.21 11:01 Сейчас в теме
Документы.Geos_Закрытие25Счета.ЗапросОборотовНаСчетах(Ссылка);
31. 17808849 61 11.03.21 11:07 Сейчас в теме
Вот запрос.

ВЫБРАТЬ
| ХозрасчетныйОбороты.Подразделение КАК Подразделение,
| ХозрасчетныйОбороты.Субконто1 КАК НоменклатурнаяГруппа,
| СУММА(ВЫБОР
| КОГДА ОбщийОборот20Счета.Сумма <= 0
| ТОГДА 0
| ИНАЧЕ ХозрасчетныйОбороты.СуммаОборотДт / ОбщийОборот20Счета.Сумма
| КОНЕЦ) КАК Множитель
|ИЗ
| ОбщийОборот20Счета КАК ОбщийОборот20Счета
| ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(
| &НачалоПериода,
| &КонецПериода,
| Период,
| Счет = &Счет20,
| ,
| НЕ Субконто1 = &ПриборыУчета
| И НЕ Подразделение = &Котельная59,
| ,
| ) КАК ХозрасчетныйОбороты
| ПО ОбщийОборот20Счета.НоменклатурнаяГруппа = ХозрасчетныйОбороты.Субконто1
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Подразделение,
| ХозрасчетныйОбороты.Субконто1
Показать



Теперь объясните что вы хотите сделать в "закрытии"

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

и закрывает их выборкой по оборотам 25 счета
32. mvl_dimir 11.03.21 11:23 Сейчас в теме
(31)Проблема в том, что изначально у механизма не было выстроено сопоставление подразделений Дт и Кт.

Объясняю, существует определенный список подразделений (25 - на скрине есть), который размещается только на 25 счете (пример также на скрине "Электротехнический участок"), слева от него ПодразделениеДт, там уже идут все остальные подразделения, кроме того списка "25" и "26". Есть задача, чтобы с ПодразделенияКт подразделения "Газовые службы", "Лаборатория контроля за качеством питьевой и сточн" и "Мазутно-насосная станция" прыгали на "20 счет" - ПодразделениеДт и имели определенное подразделение (такая тофтология):

1. "Газовые службы" = Только котельные (Родитель "Котельные " - все что входит внутри (на скрине 1 поставил));

2. "Мазутно-насосная станция" = тоже котельные

3. "Лаборатория контроля за качеством питьевой и сточн" = ВиК "Здесь указан поселок" (Родитель "Водопровод") и Канализация.

По котельным есть вопрос, там какие-то относятся только к мазутным, а какие-то к газовым, но это никак не обозначено.
Прикрепленные файлы:
33. 17808849 61 11.03.21 11:34 Сейчас в теме
Что у вас в справочнике "Geos_Подразделения25Счета"?
34. mvl_dimir 11.03.21 11:35 Сейчас в теме
(33)
Прикрепленные файлы:
35. 17808849 61 11.03.21 11:36 Сейчас в теме
(34) нет. Что в нем содержится (информация)
37. mvl_dimir 11.03.21 11:37 Сейчас в теме
38. mvl_dimir 11.03.21 11:39 Сейчас в теме
(35)Там находится список подразделений, который попадает только на 25 счет.
Прикрепленные файлы:
36. mvl_dimir 11.03.21 11:36 Сейчас в теме
(34)Это я из конструктора посмотрел, картина из дерева немножко другая.
Прикрепленные файлы:
39. 17808849 61 11.03.21 11:46 Сейчас в теме
Подразделения должны подставляться случайно? или делить сумму пропорционально?
40. mvl_dimir 11.03.21 11:58 Сейчас в теме
(39)Вообще, подразделенияДт слева подставляются рандомно, без какой-либо привязки к ПодразделениКт. На скрине я показал, там в проводке строки с газовыми службами, в одном месте он запрыгнул в котельную, в другом в ОС - Канализацию. Сумму он делит пропорционально остатку, ее не стоит трогать. Нужно лишь задать условие, если в 25 счете в строке ПодразделениеКт есть "Газовые службы", то на 20 счете он будет размещен в ПодразделениеДт "Котельные..."
Прикрепленные файлы:
43. 17808849 61 11.03.21 12:02 Сейчас в теме
(40)
оводке строки с газовыми службами, в одном месте он запрыгнул в котельную, в другом в ОС - Канализацию. Сумму он делит пропорционально остатку, ее не стоит трогать. Нужно лишь задать условие, если в 25 счете в строке ПодразделениеКт есть "Газовые службы", то на 20 счете он будет р


Соответствия где нибудь в базе заданы?
44. mvl_dimir 11.03.21 12:03 Сейчас в теме
(43)Соответствия подразделений?
45. 17808849 61 11.03.21 12:05 Сейчас в теме
(44)
тствия

Да. Какие подразделения каким соответствуют
46. mvl_dimir 11.03.21 12:06 Сейчас в теме
(45)нет, сопоставления не заданы. Все подразделения на 20 счете подставляются рандомной, нет привязки к Подразделениям распределяемым на 25 счете.
41. 17808849 61 11.03.21 11:58 Сейчас в теме
Запросы просто жесть)

Например:

|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ПодразделенияОрганизаций.Ссылка КАК Подразделение
|ПОМЕСТИТЬ ПодразделенияОстальные
|ИЗ
| Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
|ГДЕ
| НЕ ПодразделенияОрганизаций.Ссылка В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| Geos_Подразделения25Счета.Подразделение
| ИЗ
| Справочник.Geos_Подразделения25Счета КАК Geos_Подразделения25Счета
| ГДЕ
| Geos_Подразделения25Счета.ПометкаУдаления = ЛОЖЬ)
| И НЕ ПодразделенияОрганизаций.Ссылка = &Лаборатория
|
|ИНДЕКСИРОВАТЬ ПО
| Подразделение
Показать


Для чего здесь "ВЫБРАТЬ РАЗЛИЧНЫЕ". Все ссылки и так будут различные.
Вложенный запрос в "ГДЕ". Уж лучше использовать соединение.
Индексация для 10-30 подразделений займет времени больше, чем их перебор.
42. mvl_dimir 11.03.21 12:00 Сейчас в теме
(41)К сожалению писал эти документы не я, я лишь разбираюсь сейчас с этим, прошлого программиста уже нет. Нужно быстро решить задачу с размещением подразделений (костылями), а потом уже по человечески доработать.
47. 17808849 61 11.03.21 12:11 Сейчас в теме
Добавь реквизит "СоответствующееПодразделение" в справочник "ПодразделенияОрганизаций"
Задай соответствия.
А в коде примерно так:
НовСтрока.ПодразделениеДт = ВыборкаОбороты25.Подразделение.СоответствующееПодразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
mvl_dimir; +1 Ответить
48. mvl_dimir 11.03.21 12:15 Сейчас в теме
(47)соответствия задавать в новом запросе или уже существующем? А при обновлении не слетит потом этот реквизит в типовом справочнике?
50. RinaKate97 4 11.03.21 13:55 Сейчас в теме
(48) Здравствуйте , я ,конечно , не такой хороший специалист , но подобная вопрос тоже был с соответствием, я создавала новый запрос, так как, после изменения существующего возникли некоторые ошибки , на новый запрос он не ругался и работал хорошо. Насчте реквизита, слететь не должен,если правильно его создать
51. mvl_dimir 11.03.21 14:01 Сейчас в теме
(50)Добрый день, какие вы соответствия производили, остались где-то упоминания? Хотелось бы посмотреть. Не хочется что-то использовать типовой функционал.
52. RinaKate97 4 11.03.21 14:13 Сейчас в теме
(51) Я уже не помню, что конкретно писала, относительно давно было, но я поищу, должно было где то остаться, если найду, то я вам здесь отвечу
53. mvl_dimir 11.03.21 14:21 Сейчас в теме
(52)Хорошо, был бы признателен, спасибо
54. 17808849 61 11.03.21 15:00 Сейчас в теме
(53) Мой вариант не устроил?
55. mvl_dimir 11.03.21 15:15 Сейчас в теме
(54)Я просто не хочу вносить изменения в типовые документы, мне потом это при обновлении обернется. Я создал справочник, в который занесу Котельные, а после уже через запрос их вытащу. Также сделаю и по другим справочники. коряво, но попробую на копии.
56. mvl_dimir 11.03.21 15:16 Сейчас в теме
(54)
Прикрепленные файлы:
57. mvl_dimir 11.03.21 20:44 Сейчас в теме
(47)
Задай соответствия.


Решил попробовать по вашему способу и возникло пару вопросов.

1.Задавать соответствие нужно запросом?
2. В модуле объекта или менеджера?
3. Отдельной процедурой или функцией?
58. 17808849 61 12.03.21 07:08 Сейчас в теме
(57)
ать соответствие нужно запр

1. В справочнике "ПодразделенияОрганизаций", в конфигураторе, создайте новый реквизит "СоответствующееПодразделение" с типом "СправочникСсылка.ПодразделенияОрганизаций"
2. В форме элемента данного справочника добавьте данный реквизит на форму.
3. В режиме "Предприятие", в справочнике "ПодразделенияОрганизаций" заполните реквизит "СоответствующееПодразделение".
4. В куске кода, который вы приводили в первом сообщении, замените:

НовСтрока.ПодразделениеДт = Множители.Подразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;


на
НовСтрока.ПодразделениеДт = ВыборкаОбороты25.Подразделение.СоответствующееПодразделение;
НовСтрока.ПодразделениеКт = ВыборкаОбороты25.Подразделение;
mvl_dimir; +1 Ответить
59. mvl_dimir 15.03.21 09:23 Сейчас в теме
(58)А если мне нужна целая группа котельных, входящих в Родитель "Котельные "?
60. FatPanzer 15.03.21 09:40 Сейчас в теме
(58) Нехорошее решение. Маппинги лучше рисовать в отдельных регистрах сведений, и всю программную логику рисовать в модуле менеджера этого регистра. И типовые объекты не ломаются для обновления, и решение прозрачной.
Кстати, поможет и для (59) при правильном подходе.
61. 17808849 61 15.03.21 11:22 Сейчас в теме
(60)
. Маппинги лучше рисовать в отдельных регистрах сведений, и всю


Какую логику вы собрались "рисовать" в модуле менеджера регистра сведений?
Так же, для четкого указания пары значений нет никакой необходимости в дополнительной таблицы базы данных.

Много таких, на создают миллион регистров, с неверной структурой и назначением, а ты с ними потом разбирайся.

1. Весь код уже является не типовым.
2. Дополнительный реквизит не доставит проблем при обновлении.
3. Задача изначально построена на корявых запросах с кучей всяких косяков и "детских болезней"

Данная задача может быть решена только после грамотной постановки. Сейчас же (59) задача не ясна, как и ее цель.
49. 17808849 61 11.03.21 12:15 Сейчас в теме
в справочнике "ПодразделенияОрганизаций"
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот