- Помогите решить задачку!!!
Создайте документ Закрытие 26го счета.
- Документ должен закрывать помесячно (Обороты за месяц по 26 му) на 20.01 (Дт 20.01 Кт 26)
- Подразделения и статьи затрат остаются такими же как и на счете 26
- Номенклатурные группы берутся с 20.01 счета и происходит распределение согласно суммам на 20.01 по номенклатурным группам
* Документ при проведении должен делать расчеты, поэтому больше никаких реквизитов и табличных частей не нужно. все расчеты можно сделать в модуле объекта в процедуре ОбработкаПроведения.
* Для правильных расчетов нам нужно сделать два запроса. Один запрос должен выбирать данные по счету 26 (по организации за месяц) в разрезе подразделения и статьи затрат. Вторым запросом вам нужно выбрать обороты по счету 20.01, причем в разрезе номенклатурных групп. Подразделения и статьи затрат нам тут не важны. Выбранные данные будут базой распределения. Выбрав эти данные нужно сумму каждой строки первой выборки распределить пропорционально суммам второй выборки, для чего предварительно получаем общую сумму базы распределения.
В модуле объекта пока сделал так, да может и не правильно, что скорее всего
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ХозрасчетныйОбороты.Организация КАК Организация,
| ХозрасчетныйОбороты.Счет КАК Счет,
| ХозрасчетныйОбороты.Подразделение КАК Подразделение,
| ХозрасчетныйОбороты.Субконто1 КАК Субконто1,
| СУММА(ХозрасчетныйОбороты.СуммаОборот) КАК СуммаОборот
|ИЗ
| РегистрБухгалтерии.Хозрасчетный.Обороты(
| &ДатаНачала,
| &ДатаОкончания,
| Период,
| Счет = &Счет,
| ,
| Организация = &Организация
| И Субконто1 = &Субконто1,
| ,
| ) КАК ХозрасчетныйОбороты
|
|СГРУППИРОВАТЬ ПО
| ХозрасчетныйОбороты.Организация,
| ХозрасчетныйОбороты.Счет,
| ХозрасчетныйОбороты.Подразделение,
| ХозрасчетныйОбороты.Субконто1
|
|УПОРЯДОЧИТЬ ПО
| Организация,
| Счет,
| Подразделение,
| Субконто1
|АВТОУПОРЯДОЧИВАНИЕ";
Запрос.УстановитьПараметр("ДатаНачала", Дата);
Запрос.УстановитьПараметр("ДатаОкончания", Дата);
Запрос.УстановитьПараметр("Счет", ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы);
Запрос.УстановитьПараметр("Субконто1", Справочники.СтатьиЗатрат);
Запрос.УстановитьПараметр("Организация", Справочники.Организации);
Запрос.УстановитьПараметр("Подразделение", Справочники.ПодразделенияОрганизаций);
КонецПроцедуры
Дальше не знаю что и писать, еще и второй запрос делать. Засада у меня в этими видео курсами дистанционно. Не поговорить, не посоветоваться...
guru
вт, 09/02/2021 - 10:29
С параметрами в запросе намудрили:
1. ДатаНачала = ДатаОкончания? По идее ДатаНачала = начало месяца, ДатаОкончания = конец месяца.
2. Субконто1, Организация, Подразделение - эти параметры вообще не нужны. Вам же надо по всему счёту выборку сделать.
Группировка в запросе тоже не нужна. Всё и так будет сгруппировано.
overload
вт, 09/02/2021 - 13:08
guru
вт, 09/02/2021 - 16:21
В выбранных полях это надо оставить, а из параметров убрать.
overload
вт, 09/02/2021 - 16:57
guru
вт, 09/02/2021 - 18:40
Запрос примерно такой:
Второй запрос практически идентичен:
Дальше можно выбрать данные с ОбходРезультатаЗапроса.ПоГруппировкам либо выгрузить в дерево/таблицу значений. Потом обходите первую выборку по верхнему уровню (по Организации), находите эту же организацию во второй выборке, вычисляете коэффициент пересчёта по итоговым суммам и заполняете набор записей.
В общих чертах как-то так.
overload
ср, 10/02/2021 - 07:13
Спасибо огромное!!! Только вопрос, обязательно ли прописывать
Субконто = Новый Массив;
Субконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.НоменклатурныеГруппы);
А если просто установкой параметра?
guru
ср, 10/02/2021 - 10:18
Обязательно. Так задаётся последовательность субконто для счёта. Субконто1 - это первый элемент массива, Субконто2 - второй элемент и т.д. Иначе может путаница при выполнении запроса.
overload
чт, 11/02/2021 - 14:10
Отправил на проверку, пришел ответ
Отбор по субконто не нужен - убирайте из обоих запросов.
Выборку делать в разные переменные, т.к две выборки вам нужны одновременно
Допустим первая
Выборка = Запрос.Выполнить().Выбрать();
вторая тогда
Выборка1 = Запрос1.Выполнить().Выбрать();
И циклы будут не отдельно , один внутри другого
внутри второго цикла - начинайте делать движения
Я уже вообще запутался. Субконто с запросов я убрал, в параметрах оставил.
Движения как делать?
guru
чт, 11/02/2021 - 14:22
Создаёте набор записей регистра бухгалтерии Хозрасчетный, устанавливаете отбор по документу закрытия счета и в цикле добавляете записи в набор (разумеется с заполнением). По окончании цикла набор записей записываете.
ПС. Про Субконто я не понял, что они имеют ввиду. В задаче же чётко сказано, что надо делать разбивку по статьям затрат и номенклатурным группам.
overload
пт, 05/03/2021 - 13:00
Движения.Хозрасчетный.Записывать = Истина;
Перед циклами посчитайте базу распределения (сумму общую по второму запросу) и в цикле распределяйте пропорционально.
guru
пн, 15/02/2021 - 11:39
Куда-то не туда пошли...
overload
ср, 17/02/2021 - 19:01
Последний пост свой исправил. Да, не туда погнал. На этом остановился. дальше начинаю писать, ну чувствую, что опять не туда лезу. Пока не очень понятно
olga10121982
ср, 24/02/2021 - 19:25
Добрый вечер! Решили задачку? Аналогичная проблема.... задача та же... посоветоваться не с кем(((
overload
чт, 25/02/2021 - 07:17
Да, добил ее...
olga10121982
чт, 04/03/2021 - 20:58
А можете помочь с решением? вообще запуталась
overload
пт, 05/03/2021 - 13:02
Смотрите, я изменил процедуру, которая чуть выше, 2-й запрос такой же как и первый, только Счет в параметрах будет Основное производство. Ну а так вроде у меня прокатило
sergey_reb
сб, 20/03/2021 - 23:46
Здравствуйте!
Поясните, пожалуйста, что означает у Вас переменная ТЗ в коде:
ТЗ - это что у Вас и для чего нужна именно выгрузка?
Спасибо!
guru
вс, 21/03/2021 - 22:23
Это таблица значений, полученная в результате выгрузки из результата запроса. Судя по всему, она используется только для получения общей суммы. Хотя эту сумму вполне можно и в выборке получить, если запрос немного изменить.
sergey_reb
пн, 22/03/2021 - 09:49
Спасибо! Каким образом можно получить её в выборке? Что нужно изменить в запросе?
guru
пн, 22/03/2021 - 14:44
Добавить итоги по ОБЩИЕ.
sergey_reb
пн, 22/03/2021 - 14:52
То есть, к этому запросу:
и можно обойтись без этих строк
guru
пн, 22/03/2021 - 15:16
В данном случае нужно добавить строки:
И выборку делать с обходом по группировкам.