#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция ПолучитьБлокируемыеРеквизитыОбъекта() Экспорт
Результат = Новый Массив;
Результат.Добавить("ТипЗатрат");
Результат.Добавить("ИдентификаторДляФормул");
Возврат Результат;
КонецФункции
Процедура ПриНастройкеНачальногоЗаполненияЭлементов(Настройки) Экспорт
Настройки.ПриНачальномЗаполненииЭлемента = Истина;
КонецПроцедуры
Процедура ПриНачальномЗаполненииЭлементов(КодыЯзыков, Элементы, ТабличныеЧасти) Экспорт
#Область ПолуфабрикатыПроизводимыеВПроцессе
Элемент = Элементы.Добавить();
Элемент.ИмяПредопределенныхДанных = "ПолуфабрикатыПроизводимыеВПроцессе";
МультиязычностьСервер.ЗаполнитьМультиязычныйРеквизит(Элемент, "Наименование", "ru = 'Полуфабрикаты производимые в процессе'", КодыЯзыков);
Элемент.ТипЗатрат = Перечисления.ТипыЗатрат.Материальные;
Элемент.РеквизитДопУпорядочивания = 0;
Элемент.ИдентификаторДляФормул = "ПолуфабрикатыПроизводимыеВПроцессе";
#КонецОбласти
КонецПроцедуры
Процедура ПриНачальномЗаполненииЭлемента(Объект, Данные, ДополнительныеПараметры) Экспорт
КонецПроцедуры
#КонецОбласти
#КонецЕсли
#Область ОбработчикиСобытий
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
МультиязычностьСервер.ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка, Метаданные.Справочники.СтатьиКалькуляции);
КонецПроцедуры
#КонецЕсли
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
МультиязычностьКлиентСервер.ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка);
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
МультиязычностьКлиентСервер.ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка);
КонецПроцедуры
#КонецОбласти
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область СлужебныеПроцедурыИФункции
Процедура УстановитьРеквизитДопУпорядочиванияГруппСтатейДоходов() Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| СтатьиКалькуляции.Ссылка КАК Ссылка
|ИЗ
| Справочник.СтатьиКалькуляции КАК СтатьиКалькуляции
|ГДЕ
| СтатьиКалькуляции.ЭтоГруппа
|
|УПОРЯДОЧИТЬ ПО
| СтатьиКалькуляции.Наименование";
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
ЗаблокироватьДанныеДляРедактирования(Объект.Ссылка);
НастройкаПорядкаЭлементов.ЗаполнитьЗначениеРеквизитаУпорядочивания(Объект, Ложь);
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
КонецЦикла;
КонецПроцедуры
#Область ОбновлениеИнформационнойБазы
Функция НастроитьСтатьюКалькуляцииПредопределенныхЭлементов() Экспорт
МетаданныеОбъекта = Метаданные.Справочники.СтатьиКалькуляции;
ПолноеИмяОбъекта = МетаданныеОбъекта.ПолноеИмя();
СписокСтатей = Новый Массив;
СписокСтатей.Добавить("ПолуфабрикатыПроизводимыеВПроцессе");
Запрос = Новый Запрос(
"ВЫБРАТЬ
| СтатьиКалькуляции.Ссылка КАК Ссылка,
| СтатьиКалькуляции.ВерсияДанных КАК ВерсияДанных
|ИЗ
| Справочник.СтатьиКалькуляции КАК СтатьиКалькуляции
|ГДЕ
| СтатьиКалькуляции.ИдентификаторДляФормул = """"
| И СтатьиКалькуляции.ТипЗатрат = ЗНАЧЕНИЕ(Перечисление.ТипыЗатрат.ПустаяСсылка)
| И СтатьиКалькуляции.ИмяПредопределенныхДанных В (&СписокСтатей)
|");
Запрос.УстановитьПараметр("СписокСтатей", СписокСтатей);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НачатьТранзакцию();
Попытка
Блокировка = Новый БлокировкаДанных;
Блокировка.Добавить(ПолноеИмяОбъекта).УстановитьЗначение("Ссылка", Выборка.Ссылка);
Блокировка.Заблокировать();
Объект = Выборка.Ссылка.ПолучитьОбъект();
Если Объект <> Неопределено И Объект.ВерсияДанных = Выборка.ВерсияДанных Тогда
Если Не ЗначениеЗаполнено(Объект.ИдентификаторДляФормул) Тогда
Объект.ИдентификаторДляФормул = Объект.ИмяПредопределенныхДанных;
КонецЕсли;
Если Не ЗначениеЗаполнено(Объект.ТипЗатрат) Тогда
Объект.ТипЗатрат = Перечисления.ТипыЗатрат.Материальные;
КонецЕсли;
ОбновлениеИнформационнойБазы.ЗаписатьДанные(Объект);
КонецЕсли;
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ТекстСообщения = НСтр("ru = 'Не удалось обработать элемент: %Ссылка% по причине: %Причина%'");
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Ссылка%", Выборка.Ссылка);
ТекстСообщения = СтрЗаменить(ТекстСообщения, "%Причина%", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
ЗаписьЖурналаРегистрации(ОбновлениеИнформационнойБазы.СобытиеЖурналаРегистрации(),
УровеньЖурналаРегистрации.Предупреждение,
МетаданныеОбъекта,
Выборка.Ссылка,
ТекстСообщения);
Продолжить;
КонецПопытки;
КонецЦикла;
Возврат Истина;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли