Распределение расходов на партии производства

1. Max23 27.04.21 18:15 Сейчас в теме
Добрый день. Создали внешнюю обработку, которая ко кнопке создает типовой документ Распределение расходов на партии производства с определенным образом заполненной табличной частью. Суть этого документа распределить вручную статью расхода, которая ранее вводится документом Поступление услуг и проч активов. Проблема в том, что такое Распределение не распределяется, а висит в статусе Готов к распределению, даже если добавить его в задание к расчету себестоимости вручную.
Если же Распределение создается типовым методом ( в процессе закрытия месяца), то такое распределение имеет статус распределено и верно включается в себестоимость.
Проверял через консоль документ созданный нашей обработкой и документ созданный типовой обработкой, реквизиты одинаковые.
Подскажите кто знает как заставить "Распределение" распределятся?
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. ab_initio 95 27.04.21 18:35 Сейчас в теме
Обычно это работает без каких-либо проблем.
Возможно, партии не те? Доки выпуска не те?
Попробуйте средствами интерфейса заполнить такой документ, будет ли ТЧ отличаться от заполненной обработкой?
3. Max23 27.04.21 18:43 Сейчас в теме
(2) Партии те, партии заполняются тоже автоматически. Пробовал заполнять эти партии посредством типового добавления через "Добавить". Все равно такое Распределение не распределяется.

>>Обычно это работает без каких-либо проблем.

В том то и дело, типовое Распределение без проблем, а мы создаем по кнопке типовой документ
5. ab_initio 95 27.04.21 18:57 Сейчас в теме
(3) у вас после расчета себестоимости остаётся статус Готово к распределению? Или до?
8. Max23 27.04.21 19:04 Сейчас в теме
(5) Остается статус "Готово к распределению". До никакого статуса нет.
9. ab_initio 95 27.04.21 19:38 Сейчас в теме
(8)
До никакого статуса нет.
.
Что-то тут не то.
Статус всегда есть.
Если документ распределения не создан, то статус "Требуется", если создан и проведён, но расчёт себестоимости не выполнен, то статус "Готов к распределению". Если расчёт себестоимости выполнен, то статус будет или "Распределено" или "Ошибка распределения".
10. Max23 27.04.21 19:43 Сейчас в теме
(9) Ну да, все верно вы говорите. Я не правильно понял
11. ab_initio 95 27.04.21 19:48 Сейчас в теме
А сам расход по распределяемой статье в закрываемой периоде отражен? Нет ли на этот расход дубля документа распределения с другим правилом?
13. Max23 27.04.21 19:55 Сейчас в теме
(11) Отражен. Дубля нет
Прикрепленные файлы:
14. ab_initio 95 27.04.21 20:18 Сейчас в теме
(13) направления деятельности с какой целью включены? (хотя, вряд ли в них дело...)
4. Max23 27.04.21 18:57 Сейчас в теме
Т.е.
Документ № 1 создается типовым механизмом ЕРП, нормально потом распределяется
Документ № 2 создается нашей обработкой, имеет такой же состав реквизитов, но не распределяется.
Возможно ли, что проблема в обработке? Типа, надо не просто создать документ Распределение как объект метаданных, а еще с какими-то еще параметрами?
Может быть кто подскажет в каком модуле можно посмотреть принцип создания Распределения и принцип перевода его в статус Распределено?
6. ab_initio 95 27.04.21 18:59 Сейчас в теме
(4) в каждом документе в этой программе много сусликов, которых на форме не видно, но они есть.
Скорее всего дело в обработке. Что-то она упускает.
7. ab_initio 95 27.04.21 19:00 Сейчас в теме
Документ в статус Распределено переходит расчетом себестоимости.
12. Max23 27.04.21 19:51 Сейчас в теме
(7) Себестоимость по моей продукции рассчитывается, но нужная постатейная затрата из Распределения не включается.
Прикрепленные файлы:
15. ab_initio 95 27.04.21 20:20 Сейчас в теме
(13) отчёт "Расходы организаций" по этой статье за апрель покажите? Только все колонки, без обрезков.
16. Max23 27.04.21 20:37 Сейчас в теме
(15) Почему-то за апрель отчет пустой, хотя никаких отборов кроме Организации и периода не стоит
17. ab_initio 95 28.04.21 03:28 Сейчас в теме
(16) что-то тут не так. Если этот отчёт пустой, то и распределять нечего.. надо с этим поразбираться.
Отчёт "Расходы предприятия" тоже пустой за апрель?

И ещё такой вопрос: опция "управленческая организация" включена? Сам расход не на ней, случайно, отражен?
18. Max23 28.04.21 08:10 Сейчас в теме
(17) Я вас обманул, прошу прощения. Отчет Расходы организаций показывает затрату
Управленческая организация включена, но нашего расхода не ней нет
Прикрепленные файлы:
19. ab_initio 95 28.04.21 09:16 Сейчас в теме
(18) Попробуйте сделать распределение расхода по этой статье без вашей обработки вручную на какую-нибудь одну единственную партию производства. М.б., получится хоть что-то понять.
20. Max23 28.04.21 09:30 Сейчас в теме
(19) Как я уже писал выше, если нашу статью распределять типовым способом, с ручным подбором партий в Распределение, то все хорошо работает, затрата включается в себестоиомсть.
21. ab_initio 95 28.04.21 09:48 Сейчас в теме
(20) Значит, как я уже писал, дело в "сусликах" и в вашей обработке.. Обработка создает документ, заполняет его как-то, но видимо, не все поля в шапке и таб. частях заполнены как надо. А на форме документа этого, может быть и не видно.
Автор обработки досягаем?
22. Max23 28.04.21 09:56 Сейчас в теме
(21) >>Автор обработки досягаем?

Сложно однозначно ответить на этот вопрос)
23. ab_initio 95 28.04.21 10:06 Сейчас в теме
24. Max23 28.04.21 10:10 Сейчас в теме
25. ab_initio 95 28.04.21 10:15 Сейчас в теме
(24) А сама обработка как реализована? Внешняя обработка? Расширение? Или код внутри вскрытой конфы?
Давайте её препарировать?
26. Max23 28.04.21 14:54 Сейчас в теме
(25)Внешняя обработка. Можно вам в личку отправить или сюда выложить?
27. ab_initio 95 28.04.21 15:06 Сейчас в теме
(26) Сюда уж лучше будет. Может быть еще кто-то, кто в теме, в нее заглянет.
28. ab_initio 95 28.04.21 15:08 Сейчас в теме
(26) В личку можете написать сколько денег автору за нее заплачено :)))
29. Max23 28.04.21 15:11 Сейчас в теме
Суть обработки:
Из документа Поступление услуги прочих активов по кнопке на панели команд запускается эта обработка, которая считает количество продукции как нам нужно (это все верно она делает) а потом создает документ Распределение.


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("ПриобретениеУслугПрочихАктивов") Тогда
		ПУиПА = Параметры.ПриобретениеУслугПрочихАктивов;
		Элементы.ПУиПА.ТолькоПросмотр = Истина;
		//Элементы.ПУиПА.Видимость = Ложь;	
	КонецЕсли; 
	
КонецПроцедуры

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

	КонецЕсли;
	
	Если НЕ ЗначениеЗаполнено(ДатаОкончания) Тогда
		
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = "Не указано Дата окончания!";
		Сообщение.Сообщить();                      		
		Возврат;

	КонецЕсли;
	
	РасчитатьНаСервере();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПеренестиВПУиПА(Команда)
	
	Если НЕ ЗначениеЗаполнено(ПУиПА) Тогда
		Закрыть();
	КонецЕсли; 
	
	Если Элементы.ПУиПА.ТолькоПросмотр Тогда
		Закрыть(ПоместитьРезультатВоВременноеХранилище());
	Иначе
		ПеренестиВПУиПАНаСервере();
	КонецЕсли; 
	
КонецПроцедуры

&НаСервере
Процедура ПеренестиВПУиПАНаСервере()
	
	СтатьяМотивация = ПланыВидовХарактеристик.СтатьиРасходов.НайтиПоНаименованию("Мотивация");
	СуммаРасходов = ТЗ_Расчета.Итог("Сумма");
	
	ОбъектДокумент = ПУиПА.ПолучитьОбъект();
	
	НоваяСтрока 				= ОбъектДокумент.Расходы.Добавить();     	
	НоваяСтрока.Содержание 		= СтатьяМотивация; 
	НоваяСтрока.Количество 		= 1; 
	НоваяСтрока.Цена 			= СуммаРасходов; 
	НоваяСтрока.Сумма 			= СуммаРасходов; 
	НоваяСтрока.СтавкаНДС 		= Перечисления.СтавкиНДС.БезНДС;
	НоваяСтрока.СуммаНДС  		= 0;
	НоваяСтрока.СуммаСНДС  		= СуммаРасходов;
	НоваяСтрока.СуммаСНДС  		= СуммаРасходов;
	НоваяСтрока.Подразделение  	= Подразделение;
	НоваяСтрока.СтатьяРасходов	= СтатьяМотивация; 
	
	Попытка
	
		ОбъектДокумент.Записать(РежимЗаписиДокумента.Проведение);
	
	Исключение
		
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
		Сообщение.Сообщить(); 
	
	КонецПопытки;    
	
КонецПроцедуры

&НаСервере
Функция ПоместитьРезультатВоВременноеХранилище()
	
	ТЗ_ТМП = ТЗ_Расчета.Выгрузить();
	ТЗ_ТМП.Свернуть("Подразделение", "Сумма");
	
	ПараметрыЗакрытия = Новый Структура("АдресВоВременномХранилище", ПоместитьВоВременноеХранилище(ТЗ_ТМП));

	Возврат ПараметрыЗакрытия; 

КонецФункции

&НаКлиенте
Процедура СоздатьРаспределение(Команда)
	
	Если НЕ ЗначениеЗаполнено(ПУиПА) Тогда
		Возврат;
	КонецЕсли; 
	
	СоздатьРаспределениеНаСервере();
	
КонецПроцедуры

&НаСервере
Процедура СоздатьРаспределениеНаСервере()
	
	Значения_ПУиПА 	= ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ПУиПА, "Организация, Подразделение");
	СтатьяМотивация = ПланыВидовХарактеристик.СтатьиРасходов.НайтиПоНаименованию("Мотивация");
	СтатьяМатериал 	= Справочники.СтатьиКалькуляции.НайтиПоНаименованию("Материал для производства");
	
	НовыйДокумент 									= Документы.РаспределениеПрочихЗатрат.СоздатьДокумент();
	НовыйДокумент.Дата								= ТекущаяДата();	
	НовыйДокумент.Организация 						= Значения_ПУиПА.Организация;	
	НовыйДокумент.Подразделение						= Подразделение;
	НовыйДокумент.СтатьяРасходов 					= СтатьяМотивация;
	НовыйДокумент.Ответственный						= Пользователи.ТекущийПользователь();
	НовыйДокумент.РаспределятьПоПартиям 			= Истина;	
	НовыйДокумент.РаспределятьПоПодразделениям		= Ложь;
	НовыйДокумент.РаспределятьНаСтатьи				= Ложь;
	НовыйДокумент.ОставитьВНЗП						= Ложь;
	НовыйДокумент.ПартииУказаныВручную				= Истина;
	НовыйДокумент.ПодразделенияУказаныВручную		= Ложь;
	НовыйДокумент.НаВыпускТекущегоМесяца			= Ложь;
	НовыйДокумент.РегламентированныйУчет			= Ложь;
	НовыйДокумент.УправленческийУчет				= Истина;
	НовыйДокумент.НазначениеНастройкиРаспределения	= Перечисления.НазначениеПравилРаспределенияРасходов.РаспределениеСтатейРасходовПоЭтапамПроизводства;
	
	СуммаДолей = 0;
	
	ПоляПартии = Новый Структура("Документ, Организация, Номенклатура, ГруппировкаЗатрат, ГруппаЗатрат, ВидДеятельностиНДС, ОсновноеИзделиеНоменклатура");
	ПоляПартии.Организация = Значения_ПУиПА.Организация;
	ПоляПартии.ГруппировкаЗатрат = Перечисления.ГруппировкиЗатратВЗаказеПереработчику.ПоПродукции;
	ПоляПартии.ВидДеятельностиНДС	= Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
	
	Для каждого Строка Из ТЗ_Расчета Цикл
		
		НоваяСтрока = НовыйДокумент.ПартииПроизводства.Добавить();
		
		ПоляПартии.Документ 			= Строка.Этап;
		ПоляПартии.Номенклатура 		= Строка.Номенклатура; 	
		ПоляПартии.ГруппаЗатрат 		= Строка.Номенклатура; 
		ПоляПартии.ОсновноеИзделиеНоменклатура = Строка.Номенклатура; 
		
		НоваяСтрока.ПартияПроизводства  = Справочники.ПартииПроизводства.ПолучитьПартиюПроизводства(ПоляПартии, Истина, Истина);
		НоваяСтрока.Подразделение		= Строка.Подразделение;	
		НоваяСтрока.Этап				= Строка.Этап;	
		НоваяСтрока.СтатьяКалькуляции	= СтатьяМатериал;
		НоваяСтрока.ДоляСтоимости		= Строка.Сумма; 	
		
		СуммаДолей = СуммаДолей + Строка.Сумма;
		
	КонецЦикла; 
	
	НовыйДокумент.ДоляСтоимостиНаПроизводство 	= СуммаДолей;
	НовыйДокумент.ВсегоДолейСтоимости 			= СуммаДолей;
	
	Попытка 
		НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = НовыйДокумент;
		Сообщение.Сообщить();
	Исключение
		
		Сообщение = Новый СообщениеПользователю;
		Сообщение.Текст = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
		Сообщение.Сообщить(); 
	
	КонецПопытки;    
	
КонецПроцедуры

Показать
30. Max23 28.04.21 15:23 Сейчас в теме
&НаСервере
Процедура СоздатьРаспределениеНаСервере()

Думаю, эта процедура и создает документ
31. ab_initio 95 28.04.21 16:09 Сейчас в теме
Собственно, партию на форме не видно.
Если вот это
НоваяСтрока.ПартияПроизводства  = Справочники.ПартииПроизводства.ПолучитьПартиюПроизводства(ПоляПартии, Истина, Истина);

не сработало, то и распределения не будет.
32. Max23 28.04.21 17:05 Сейчас в теме
(31)Не понял. Что нужно проверить/отладить?
33. ab_initio 95 28.04.21 19:18 Сейчас в теме
(32) Ну да, отладить. Еще можно посмотреть содержимое результирующего документа чем-то кроме его формы.
Оставьте свое сообщение

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