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

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) Ну да, отладить. Еще можно посмотреть содержимое результирующего документа чем-то кроме его формы.
Оставьте свое сообщение
Вакансии
Программист 1С
Казань
зарплата от 150 000 руб.
Полный день

Разработчик 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С (удаленно)
Самара
зарплата от 230 000 руб. до 230 000 руб.
Полный день

Руководитель группы разработки 1С
Москва
зарплата от 250 000 руб. до 250 000 руб.
Полный день

Специалист техподдержки
Санкт-Петербург
зарплата от 100 руб. до 150 руб.
Полный день