Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 23:08

Изменение Регистра Накопления в обработке

Автор Дмитрий1992, 23 мая 2018, 15:57

0 Пользователей и 1 гость просматривают эту тему.

Дмитрий1992

Здравствуйте прошу помощи в изучении не покорного 1с.

Есть Регистр накопления "Себестоимость" в него падают расходы по двум статьям: 1-"Прочие расходы", 2-"СебестоимостьЗаявки". Прочие расходы двигаются из документа "ПрочиеЗатраты", а СебестоимостьЗаявки из документа "ОтчетВодителя"

Задача такова - Создать обработку и по нажатию кнопки делать следующее:
1. Из Регистра Накопления "Себестоимость" взять все движения за выбранный Месяц по прочим затратам
2. Распределяем полученную сумму пропорционально суммам по СебестоимостьЗаявки за тот же месяц из Регистра Накопления "Себестоимость".
3. Убирать из Регистра Накопления "Себестоимость" движения с Прочие расходы и записываем распределенные движения по исходным документам-регистраторам.

Что сделал: вытащил сумму "прочих затрат" за месяц, вытащил сумму "СебестоимостьЗаявки" за месяц, вычислил коэффициент на который нужно умножить каждое значение "СебестоимостьЗаявки" но как теперь изменить Регистр накопления не знаю думал сделать переменную коэффициента Экспорт и воспользоваться ей в модуле документа где делаю движения но не выходит.

//Модуль формы обработки.
Перем мКоэффициент Экспорт;

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
Сообщить (" С " + Месяц.Дата );
Сообщить (" По " + КонецМесяца(Месяц.Дата));
   
   //Выбор суммы по прочим затратам
ЗапросСуммы = Новый Запрос ("ВЫБРАТЬ
                            |   СебестоимостьОбороты.СуммаОборот КАК СуммаОборот
                            |ИЗ
                            |   РегистрНакопления.Себестоимость.Обороты(&Период, , Месяц, ) КАК СебестоимостьОбороты
                            |ГДЕ
                            |   СебестоимостьОбороты.ТерминалОтправления.Ссылка ЕСТЬ NULL
                            |   И СебестоимостьОбороты.Период = &Период");

ЗапросСуммы.УстановитьПараметр("Период",Месяц.Дата);
ВыборкаСуммы = ЗапросСуммы.Выполнить().Выбрать();

Пока ВыборкаСуммы.Следующий() Цикл
   СуммаПрочихЗатратЗаМесяц = ВыборкаСуммы.СуммаОборот;
   Сообщить (" Сумма прочих затрат - " + СуммаПрочихЗатратЗаМесяц + " руб ");
КонецЦикла;

   //Выбор сумм где заполнен терминал
ЗапросСуммыЗат = Новый Запрос ("ВЫБРАТЬ
                             |   СебестоимостьОбороты.СуммаОборот КАК СуммаОборот
                             |ИЗ
                             |   РегистрНакопления.Себестоимость.Обороты(&Период, , Месяц, ) КАК СебестоимостьОбороты
                             |ГДЕ
                             |   СебестоимостьОбороты.Период = &Период
                             |   И СебестоимостьОбороты.ТерминалОтправления.Наименование ПОДОБНО ""%""");

ЗапросСуммыЗат.УстановитьПараметр("Период",Месяц.Дата);
ВыборкаСуммыЗат = ЗапросСуммыЗат.Выполнить().Выбрать();

Пока ВыборкаСуммыЗат.Следующий() Цикл
   СуммаЗатратЗаМесяц = ВыборкаСуммыЗат.СуммаОборот;
   Сообщить (" Сумма затрат на перевозку - " + СуммаЗатратЗаМесяц + " руб ");
КонецЦикла;

мКоэффициент = СуммаПрочихЗатратЗаМесяц / (СуммаЗатратЗаМесяц);
Сообщить (" Коэффициент распределения = " + мКоэффициент);
   
   
КонецПроцедуры

Делал еще так: тут уже получил значения которые нужно приплюсовать но тоже не знаю как делать дальше.
Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   //Выбор суммы по прочим затратам
ЗапросСуммы = Новый Запрос ("ВЫБРАТЬ
                            |   СебестоимостьОбороты.СуммаОборот КАК СуммаОборот
                            |ИЗ
                            |   РегистрНакопления.Себестоимость.Обороты(&Период, , Месяц, ) КАК СебестоимостьОбороты
                            |ГДЕ
                            |   СебестоимостьОбороты.ТерминалОтправления.Ссылка ЕСТЬ NULL
                            |   И СебестоимостьОбороты.Период = &Период");

ЗапросСуммы.УстановитьПараметр("Период",Месяц.Дата);
ВыборкаСуммы = ЗапросСуммы.Выполнить().Выбрать();

Пока ВыборкаСуммы.Следующий() Цикл
   СуммаПрочихЗатратЗаМесяц = ВыборкаСуммы.СуммаОборот;
   Сообщить (" Сумма прочих затрат " + СуммаПрочихЗатратЗаМесяц);
КонецЦикла;

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

ЗапросСуммыОб.УстановитьПараметр("ПериодН",Месяц.Дата);
Дата = Месяц.Дата;
ЗапросСуммыОб.УстановитьПараметр("ПериодК",КонецМесяца(Дата));

ВыборкаСуммыОб = ЗапросСуммыОб.Выполнить().Выгрузить();

МассивСумм = Новый массив;



Для каждого строка из ВыборкаСуммыОб Цикл
//Себестоимость = ВыборкаСуммыОб.Сумма;
////Сообщить (строка.сумма);
//ВыборкаСуммыОб.Добавить(строка.сумма);
МассивСумм.Добавить(строка.сумма);
КонецЦикла;

СуммаМассивСумм = 0;

Для каждого ЭлМасс из МассивСумм Цикл   
Сообщить (" Элемент " + ЭлМасс);
СуммаМассивСумм = СуммаМассивСумм + ЭлМасс;
КонецЦикла;
Сообщить (" Сумма элементов " + СуммаМассивСумм);

Коэффициент = СуммаПрочихЗатратЗаМесяц / (СуммаМассивСумм);
Сообщить (" Коэффициент " + Коэффициент);

Для каждого ЭлМасс из МассивСумм Цикл   
Распределение = ЭлМасс*Коэффициент ;
Сообщить (" Распределение " + Распределение);
КонецЦикла;

КонецПроцедуры   


alexandr_ll

Как найти и изменить программно записи в регистр накопления
/// документа (регистратора) в 1с 8.3, 8.2
http://helpme1c.ru/registry-nakopleniya-v-yazyke-1s-8-v-primerax

Дмитрий1992

Цитата: alexandr_ll от 23 мая 2018, 17:14
Как найти и изменить программно записи в регистр накопления
/// документа (регистратора) в 1с 8.3, 8.2
http://helpme1c.ru/registry-nakopleniya-v-yazyke-1s-8-v-primerax


Спасибо буду исследовать.
Добавлено: 24 мая 2018, 12:22


Цитата: Дмитрий1992 от 23 мая 2018, 17:22
Цитата: alexandr_ll от 23 мая 2018, 17:14
Как найти и изменить программно записи в регистр накопления
/// документа (регистратора) в 1с 8.3, 8.2
http://helpme1c.ru/registry-nakopleniya-v-yazyke-1s-8-v-primerax


Спасибо буду исследовать.

Очень помогло проблема решена.

Похожие темы (5)

Рейтинг@Mail.ru

Поиск