Загрузка данных
&НаКлиенте
Процедура ЗагрузитьПартииWMS(Команда)
ПараметрыДиалога = Новый ПараметрыДиалогаПомещенияФайлов;
ПараметрыДиалога.Заголовок = "Выберите файл для загрузки партий WMS";
ПараметрыДиалога.МножественныйВыбор = Ложь;
ПараметрыДиалога.Фильтр = "*.mxl";
ДополнительныеПараметры = Новый Структура;
ОписаниеОпопвещенияЗавершенияЗагрузки = Новый ОписаниеОповещения("ОбработкаЗагрузкиФайла", ЭтотОбъект, ДополнительныеПараметры);
НачатьПомещениеФайлаНаСервер(ОписаниеОпопвещенияЗавершенияЗагрузки,,,,ПараметрыДиалога,);
КонецПроцедуры
#Область ЗагрузкаДанных
&НаКлиенте
Процедура ОбработкаЗагрузкиФайла(ОписаниеПомещенногоФайла, ДополнительныеПараметры) Экспорт
Если НЕ ОписаниеПомещенногоФайла = Неопределено И
НЕ ОписаниеПомещенногоФайла.ПомещениеФайлаОтменено Тогда
ЧтениеФайла(ОписаниеПомещенногоФайла.Адрес);
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Загрузка завершена");
КонецПроцедуры
&НаСервереБезКонтекста
Процедура ЧтениеФайла(Адрес)
ИмяФайла = ПолучитьИмяВременногоФайла("mxl");
ДвоичныеДанные = ПолучитьИзВременногоХранилища(Адрес);
ДвоичныеДанные.Записать(ИмяФайла);
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать(ИмяФайла);
КоличествоСтрок = ТабДок.ВысотаТаблицы;
Для стр = 2 По КоличествоСтрок Цикл
ПартияУИДСтрока = СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "1"));
ПартияУИД = Новый УникальныйИдентификатор(ПартияУИДСтрока);
Наименование = СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "2"));
ПройденВходнойКонтроль = ?(СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "3")) = "Да", Истина, Ложь);
ЭтоКатушка = ?(СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "4")) = "Да", Истина, Ложь);
НомерПартии = СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "5"));
ДатаПартии = СтроковыеФункцииКлиентСервер.СтрокаВДату(СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "6")));
ДатаСрокаГодностиПартии = СтроковыеФункцииКлиентСервер.СтрокаВДату(СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "7")));
ДокументПоступленияУИДСтрока = СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "8"));
ДокументПоступленияУИД = Новый УникальныйИдентификатор(ДокументПоступленияУИДСтрока);
ТипПоступления = СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "11"));
Если ЗначениеЗаполнено(ДокументПоступленияУИД) Тогда
ДокументПоступления = ПолучитьДокументПоступления(ДокументПоступленияУИД, ТипПоступления);
Иначе
ДокументПоступления = Неопределено;
КонецЕсли;
Штрихкод = СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "9"));
НоменклатураУИДСтрока = СокрЛП(ЗначениеОбластиТаблицы(ТабДок, стр, "10"));
НоменклатураУИД = Новый УникальныйИдентификатор(НоменклатураУИДСтрока);
Если ЗначениеЗаполнено(НоменклатураУИД) Тогда
Номенклатура = Справочники.Номенклатура.ПолучитьСсылку(НоменклатураУИД);
Иначе
Номенклатура = Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;
СпрПартия = Справочники.ак_ПартииWMS.ПолучитьСсылку(ПартияУИД);
Если ОбщегоНазначения.СсылкаСуществует(СпрПартия) Тогда
СпрОбъект = СпрПартия.ПолучитьОбъект();
Иначе
СпрОбъект = Справочники.ак_ПартииWMS.СоздатьЭлемент();
СпрОбъект.УстановитьСсылкуНового(СпрПартия);
КонецЕсли;
СпрОбъект.Наименование = Наименование;
СпрОбъект.ПройденВходнойКонтроль = ПройденВходнойКонтроль;
СпрОбъект.ЭтоКатушка = ЭтоКатушка;
СпрОбъект.НомерПартии = НомерПартии;
СпрОбъект.ДатаПартии = ДатаПартии;
СпрОбъект.ДатаСрокаГодностиПартии = ДатаСрокаГодностиПартии;
СпрОбъект.Штрихкод = Штрихкод;
СпрОбъект.Номенклатура = Номенклатура;
Если Не ЗначениеЗаполнено(СпрОбъект.ДокументПоступления)
Или (ТипЗнч(СпрОбъект.ДокументПоступления) <> Тип("ДокументСсылка.РасходныйОрдерНаТовары")) Тогда
СпрОбъект.ДокументПоступления = ДокументПоступления;
КонецЕсли;
Попытка
СпрПартия.Записать();
Исключение
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ОбработкаОшибок.КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
КонецПопытки;
КонецЦикла;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьДокументПоступления(ГУИД, ТипПоступления)
Если ТипПоступления = "Возврат сырья от переработчика" Тогда
ДокументПоступления = Документы.ВозвратСырьяОтПереработчика.ПолучитьСсылку(ГУИД);
ИначеЕсли ТипПоступления = "Возврат товаров от клиента" Тогда
ДокументПоступления = Документы.ВозвратТоваровОтКлиента.ПолучитьСсылку(ГУИД);
ИначеЕсли ТипПоступления = "Перемещение с других складов" Тогда
ДокументПоступления = Документы.ПеремещениеТоваров.ПолучитьСсылку(ГУИД);
ИначеЕсли ТипПоступления = "Поступление от внешнего поставщика" Тогда
ДокументПоступления = Документы.ПриобретениеТоваровУслуг.ПолучитьСсылку(ГУИД);
ИначеЕсли ТипПоступления = "Поступление от переработчика" Тогда
ДокументПоступления = Документы.ПоступлениеОтПереработчика.ПолучитьСсылку(ГУИД);
ИначеЕсли ТипПоступления = "Поступление с производства" Тогда
ДокументПоступления = Документы.РасходныйОрдерНаТовары.ПолучитьСсылку(ГУИД);
ИначеЕсли ТипПоступления = "Поступление сырья от давальца" Тогда
ДокументПоступления = Документы.ПоступлениеСырьяОтДавальца.ПолучитьСсылку(ГУИД);
ИначеЕсли ТипПоступления = "Приемка товаров на хранение" Тогда
ДокументПоступления = Документы.ПриемкаТоваровНаХранение.ПолучитьСсылку(ГУИД);
Иначе
ДокументПоступления = Неопределено;
КонецЕсли;
Возврат ДокументПоступления;
КонецФункции
&НаСервереБезКонтекста
Функция ЗначениеОбластиТаблицы(Таб, Строка, Колонка)
РезультатТекст = Таб.Область(Строка, Колонка, Строка, Колонка).Текст;
Возврат РезультатТекст;
КонецФункции
#КонецОбласти