Генерация структуры склада для мест хранения

Обработка обычно используется разово на проекте, поэтому не оформляю соответствующе.
Кому что надо — тот поправит.

А времени немного сэкономить поможет.

Процедура КнопкаВыполнитьНажатие(Кнопка)
// Вставить содержимое обработчика.

СпрТов=Справочники.Номенклатура;
МестаХранения=Справочники.МестаХранения;
КоличествоПомещений=7;
КоличествоСтеллажей=7;
КоличествоЛиний=7;
КоличествоМест=25;
Ячейка=0;

Для Скл=1 По 2 Цикл
Склады=Скл;
Если
Склады=1 Тогда
СпрСклад=Справочники.Склады.НайтиПоКоду(«00002»);
Иначе
СпрСклад=Справочники.Склады.НайтиПоКоду(«00001»);
КонецЕсли;

Для сч=0 По КоличествоПомещений Цикл
Помещение=сч;
//********Помещения
НовМестоП=МестаХранения.НайтиПоНаименованию(«Помещение»+Строка(Помещение),,,СпрСклад);

Если НовМестоП=МестаХранения.ПустаяСсылка() Тогда

НовМестоП=МестаХранения.СоздатьГруппу();
НовМестоП.Владелец =СпрСклад;
НовМестоП.Наименование=«Помещение»+Строка(Помещение);
НовМестоП.Записать();

КонецЕсли;
//*****************

Для Ст=1 По КоличествоСтеллажей Цикл
Стеллаж=Ст;
//********Стеллаж
НовМестоСт=МестаХранения.НайтиПоНаименованию(«Стеллаж»+Строка(Стеллаж),,НовМестоП.Ссылка,СпрСклад);

Если НовМестоСт=МестаХранения.ПустаяСсылка() Тогда

НовМестоСт=МестаХранения.СоздатьГруппу();
НовМестоСт.Владелец =СпрСклад;
НовМестоСт.Родитель =НовМестоП.Ссылка;
НовМестоСт.Наименование=«Стеллаж»+Строка(Стеллаж);
НовМестоСт.Записать();

КонецЕсли;
//*****************

Для Л=1 По КоличествоЛиний Цикл
Линия=Л;
//********Линия
НовМестоЛ=МестаХранения.НайтиПоНаименованию(«Линия»+Строка(Линия),,НовМестоСт.Ссылка,СпрСклад);

Если НовМестоЛ=МестаХранения.ПустаяСсылка() Тогда

НовМестоЛ=МестаХранения.СоздатьГруппу();
НовМестоЛ.Владелец=СпрСклад;
НовМестоЛ.Родитель =НовМестоСт.Ссылка;
НовМестоЛ.Наименование=«Линия»+Строка(Линия);
НовМестоЛ.Записать();

КонецЕсли;
//*****************

Для М=1 По КоличествоМест Цикл
Место=М;
Состояние(«Скл»+Строка(Склады)+«-«+«П»+Строка(Помещение)+«-«+«Ст»+Строка(Стеллаж)+«-«+«Л»+Строка(Линия)+«-«+«М»+Строка(Место)+«-«+«Я0»);

СтрокаХранения=«П»+Строка(Помещение)+«-Ст»+Строка(Стеллаж)+«-Л»+Строка(Линия)+«-М»+Строка(Место)+«-Я»+Строка(Ячейка) ;

//********Место
НовМестоМ=МестаХранения.НайтиПоНаименованию(«Место»+Строка(Место),,НовМестоЛ.Ссылка,СпрСклад);

Если НовМестоМ=МестаХранения.ПустаяСсылка() Тогда

НовМестоМ=МестаХранения.СоздатьГруппу();
НовМестоМ.Владелец =СпрСклад;
НовМестоМ.Родитель =НовМестоЛ.Ссылка;
НовМестоМ.Наименование=«Место»+Строка(Место);
НовМестоМ.Записать();

КонецЕсли;
//*****************
//********Ячейка
НовМестоЯ=МестаХранения.НайтиПоНаименованию(«Ячейка»+Строка(Ячейка),,НовМестоМ.Ссылка,СпрСклад);

Если НовМестоЯ=МестаХранения.ПустаяСсылка() Тогда

НовМестоЯ=МестаХранения.СоздатьГруппу();
НовМестоЯ.Владелец =СпрСклад;
НовМестоЯ.Родитель =НовМестоМ.Ссылка;
НовМестоЯ.Наименование=«Ячейка»+Строка(Ячейка);
НовМестоЯ.Записать();

КонецЕсли;
//*****************

НовМесто=МестаХранения.НайтиПоНаименованию(СтрокаХранения,,НовМестоЯ.Ссылка,СпрСклад);

Если НовМесто=МестаХранения.ПустаяСсылка() Тогда

НовМесто=МестаХранения.СоздатьЭлемент();
НовМесто.Владелец =СпрСклад;
НовМесто.Родитель=НовМестоЯ.Ссылка;
НовМесто.Наименование=СтрокаХранения;
НовМесто.Записать();

КонецЕсли;
//Вырезан нижестоящий фрагмент

КонецЦикла;

КонецЦикла;
КонецЦикла;
КонецЦикла;

КонецЦикла;

Сообщить(«Обработка закончена !»);
КонецПроцедуры


Иполнитель: 2012 г. www.rt-finance.ru

1 Comment

  1. V.Nikonov

    А более подробно описать реализуемый сценарий можно?

    Предпочтительнее в анотации описать Сценарий генерации, а примечания о черновом характере спустить в текст.

    В противном случае, пока не разберёшь код, ни фига не понятно…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *