1258 lines
79 KiB
Plaintext
1258 lines
79 KiB
Plaintext
|
||
Функция GetArrayDoc() // Получаем документы из базы и отправляем из на ТСД
|
||
СписокСборкиXDTO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Документ.СборкаМП.Список"));;
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| СборкаМП.Ссылка КАК Ссылка,
|
||
| СборкаМП.Дата КАК Дата
|
||
|ИЗ
|
||
| Документ.СборкаМП КАК СборкаМП
|
||
|ГДЕ
|
||
| СборкаМП.Дата МЕЖДУ &Дата1 И &Дата2
|
||
| И СборкаМП.Проведен = ИСТИНА
|
||
|
|
||
|ОБЪЕДИНИТЬ ВСЕ
|
||
|
|
||
|ВЫБРАТЬ
|
||
| СтикеровкаМП.Ссылка,
|
||
| СтикеровкаМП.Дата
|
||
|ИЗ
|
||
| Документ.СтикеровкаМП КАК СтикеровкаМП
|
||
|ГДЕ
|
||
| СтикеровкаМП.Дата МЕЖДУ &Дата1 И &Дата2
|
||
| И СтикеровкаМП.Проведен = ИСТИНА
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| Дата";
|
||
Запрос.УстановитьПараметр("Дата1", НачалоДня(ТекущаяДата() - 60*60*24*1));
|
||
Запрос.УстановитьПараметр("Дата2", КонецДня(ТекущаяДата()));
|
||
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
|
||
Если РезультатЗапроса.Количество() > 0 Тогда
|
||
Для Каждого строка Из РезультатЗапроса Цикл
|
||
Если строка.Ссылка.Поставки.Количество() = 0 Тогда Продолжить; КонецЕсли;
|
||
ДокСборкиXDTO=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Документ.СборкаМП"));
|
||
ДокСборкиXDTO.Ссылка = строка(строка.Ссылка.УникальныйИдентификатор());
|
||
ДокСборкиXDTO.Дата = строка.Ссылка.Дата;
|
||
ДокСборкиXDTO.Номер = строка.Ссылка.Номер;
|
||
ДокСборкиXDTO.ТипДокумента = строка(ТипЗнч(строка.ссылка));
|
||
Для Каждого строка Из строка.Ссылка.Поставки Цикл
|
||
ЗаявкаXDTO=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Документ.ПоступлениеТоваровУслуг"));
|
||
КлючевыеСвойства=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(
|
||
"http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваПоступлениеТоваровУслуг"));
|
||
КлючевыеСвойстваКонтрагент=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(
|
||
"http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваКонтрагент"));
|
||
Товары=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Документ.ПоступлениеТоваровУслуг.Товары"));
|
||
// Документ ПоставкаМП
|
||
СсылкаМП=строка.ПоставкаМП;
|
||
КлючевыеСвойства.ссылка=Строка(СсылкаМП.УникальныйИдентификатор());
|
||
КлючевыеСвойства.номер=СсылкаМП.номер;
|
||
КлючевыеСвойства.дата=СсылкаМП.дата;
|
||
КлючевыеСвойстваКонтрагент.Ссылка=строка(СсылкаМП.Интеграция.Клиент.УникальныйИдентификатор());
|
||
КлючевыеСвойстваКонтрагент.Наименование=СсылкаМП.Интеграция.Клиент.Наименование;
|
||
колстрок = 0;
|
||
Для Каждого Товар Из СсылкаМП.Заказы Цикл
|
||
Строка=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Документ.ПоступлениеТоваровУслуг.Товары.Строка"));
|
||
колстрок=колстрок + 1;
|
||
Строка.НомерСтрокиДокумента=колстрок;
|
||
// Номенклатура
|
||
ДанныеНоменклатуры=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(
|
||
"http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "ОбщиеСвойстваДанныеНоменклатуры"));
|
||
ДанныеНоменклатуры.Номенклатура=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(
|
||
"http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваНоменклатура"));
|
||
ДанныеНоменклатуры.Номенклатура.Ссылка=Строка(Товар.КарточкаМП.Номенклатура.УникальныйИдентификатор());
|
||
СтроковыйМассивШтрихкодовНом = ПолучитьШтрихНом(Товар.КарточкаМП.Номенклатура);
|
||
ДанныеНоменклатуры.Штрихкод = СтроковыйМассивШтрихкодовНом;
|
||
ДанныеНоменклатуры.Номенклатура.Наименование=Товар.КарточкаМП.Номенклатура.Наименование;
|
||
ДанныеНоменклатуры.Номенклатура.Артикул = Товар.КарточкаМП.Номенклатура.Артикул;
|
||
ДанныеНоменклатуры.Номенклатура.МаркировкаМП = Товар.КарточкаМП.Номенклатура.МаркировкаМП;
|
||
КомплектацияНоменклатуры = ПолучитьКомплектНоменклатуры(Товар.КарточкаМП.Номенклатура);
|
||
// Карточка МП
|
||
ДанныеКарточкиМП=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(
|
||
"http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "ОбщиеСвойстваДанныеНоменклатуры"));
|
||
ДанныеКарточкиМП.Номенклатура=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип(
|
||
"http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваНоменклатура"));
|
||
ДанныеКарточкиМП.Номенклатура.Ссылка=Строка(Товар.КарточкаМП.УникальныйИдентификатор());
|
||
СтроковыйМассивШтрихкодовКарточки = ПолучитьШтрихНомКарточкиМП(Товар.КарточкаМП);
|
||
ДанныеКарточкиМП.Штрихкод = СтроковыйМассивШтрихкодовКарточки;
|
||
ДанныеКарточкиМП.Номенклатура.Наименование=Товар.КарточкаМП.Наименование;
|
||
Строка.ДанныеНоменклатуры=ДанныеНоменклатуры;
|
||
Строка.Количество=Товар.Количество;
|
||
Строка.СчетУчета = Товар.КодМП;
|
||
Если значениезаполнено(Товар.ШтрихкодПоставки) Тогда
|
||
Строка.СчетУчетаНДС = Товар.ШтрихкодПоставки;
|
||
Иначе
|
||
Строка.СчетУчетаНДС = "0";
|
||
КонецЕсли;
|
||
Строка.ДанныеКарточкиМП=ДанныеКарточкиМП;
|
||
Строка.КомплектацияНоменклатуры=КомплектацияНоменклатуры;
|
||
Если ЗначениеЗаполнено(Товар.Ячейка) Тогда
|
||
Строка.Ячейка=Товар.Ячейка.Наименование;
|
||
Иначе
|
||
Строка.Ячейка="-";
|
||
КонецЕсли;
|
||
Товары.Строка.Добавить(Строка);
|
||
КонецЦикла;
|
||
ЗаявкаXDTO.КлючевыеСвойства=КлючевыеСвойства;
|
||
ЗаявкаXDTO.КонтрагентСтороннейКомпании=КлючевыеСвойстваКонтрагент;
|
||
ЗаявкаXDTO.Товары=Товары;
|
||
ДокСборкиXDTO.ДокПоставкаМП.Добавить(ЗаявкаXDTO);
|
||
КонецЦикла;
|
||
СписокСборкиXDTO.ДокСборкиМП.Добавить(ДокСборкиXDTO);
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Возврат СписокСборкиXDTO;
|
||
КонецФункции
|
||
|
||
Функция ПолучитьКомплектНоменклатуры(СсылкаНом)
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| КомплектацииНоменклатуры.Ссылка КАК Ссылка,
|
||
| КомплектацииНоменклатуры.Состав.(
|
||
| НомерСтроки КАК НомерСтроки,
|
||
| Ссылка КАК Ссылка,
|
||
| ДоляСтоимости КАК ДоляСтоимости,
|
||
| ЕдиницаИзмерения КАК ЕдиницаИзмерения,
|
||
| Количество КАК Количество,
|
||
| КоличествоПродукции КАК КоличествоПродукции,
|
||
| Номенклатура КАК Номенклатура,
|
||
| Описание КАК Описание,
|
||
| Характеристика КАК Характеристика) КАК Состав
|
||
|ИЗ
|
||
| Справочник.КомплектацииНоменклатуры КАК КомплектацииНоменклатуры
|
||
|ГДЕ
|
||
| КомплектацииНоменклатуры.Владелец = &Владелец";
|
||
|
||
Запрос.УстановитьПараметр("Владелец", СсылкаНом);
|
||
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
|
||
Если РезультатЗапроса.Количество() > 0 Тогда
|
||
КомплектXTDO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Справочник.КомплектацииНом"));
|
||
Для Каждого строка Из РезультатЗапроса Цикл
|
||
СтрокаКомплект = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Справочник.КомплектацииНом.Строка"));
|
||
СтрокаКомплект.ВладелецСсылка = Строка(СсылкаНом.УникальныйИдентификатор());
|
||
СтрокаКомплект.Ссылка = Строка(строка.ссылка.УникальныйИдентификатор());
|
||
СтрокаКомплект.НаименованиеКомплекта = строка.Ссылка.Наименование;
|
||
ТаблицаСоставаXTDO = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Справочник.КомплектацииНом.ТаблицаСостава"));
|
||
Для Каждого элемент Из строка.Состав Цикл
|
||
//@skip-check query-in-loop
|
||
ТаблицаСоставаXTDOСтрока = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19",
|
||
"Справочник.КомплектацииНом.ТаблицаСостава.Строка"));
|
||
ТаблицаСоставаXTDOСтрока.Номенклатура=ПолучитьНоменклатуруXDTO(элемент.Номенклатура);
|
||
ТаблицаСоставаXTDOСтрока.Количество=элемент.Количество;
|
||
ТаблицаСоставаXTDOСтрока.КоличествоКомплектов=элемент.КоличествоПродукции;
|
||
ТаблицаСоставаXTDO.Строка.Добавить(ТаблицаСоставаXTDOСтрока);
|
||
КонецЦикла;
|
||
СтрокаКомплект.ТаблицаСостава = ТаблицаСоставаXTDO;
|
||
КомплектXTDO.Строка.Добавить(СтрокаКомплект);
|
||
КонецЦикла;
|
||
Возврат КомплектXTDO;
|
||
Иначе
|
||
Возврат Неопределено;
|
||
КонецЕсли;
|
||
КонецФункции
|
||
|
||
Функция getDoc(barcode) // Выгружаем Док ПоставкаМП
|
||
Если СтрДлина(barcode)>2 Тогда
|
||
//Ищем по номеру
|
||
|
||
Ссылки=Новый Массив;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||
| ПоставкаМП.Ссылка КАК Ссылка
|
||
|ИЗ
|
||
| Документ.ПоставкаМП КАК ПоставкаМП
|
||
|ГДЕ
|
||
| ПоставкаМП.Номер ПОДОБНО &Номер
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| ПоставкаМП.Дата УБЫВ";
|
||
|
||
Запрос.УстановитьПараметр("Номер", "%"+barcode);
|
||
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
|
||
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
|
||
|
||
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
||
Ссылки.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
|
||
КонецЦикла;
|
||
иначе
|
||
//Ищем по шк документа
|
||
Ссылки=НайтиДокПоНомеруПоставки(barcode);
|
||
//ШтрихкодированиеПечатныхФормВызовСервера.СсылкаПоШтрихкодуТабличногоДокумента(barcode, Неопределено);
|
||
КонецЕсли;
|
||
ЗаявкаXDTO=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "Документ.ПоступлениеТоваровУслуг"));
|
||
КлючевыеСвойства=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваПоступлениеТоваровУслуг"));
|
||
КлючевыеСвойстваКонтрагент=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваКонтрагент"));
|
||
Товары=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "Документ.ПоступлениеТоваровУслуг.Товары"));
|
||
Если Ссылки.Количество()>0 Тогда
|
||
Ссылка=Ссылки[0];
|
||
КлючевыеСвойства.ссылка=Строка(ссылка.УникальныйИдентификатор());
|
||
КлючевыеСвойства.номер=Ссылка.номер;
|
||
КлючевыеСвойства.дата=Ссылка.дата;
|
||
КлючевыеСвойстваКонтрагент.Ссылка=строка(Ссылка.Интеграция.Клиент.УникальныйИдентификатор());
|
||
КлючевыеСвойстваКонтрагент.Наименование=Ссылка.Интеграция.Клиент.Наименование;
|
||
колстрок = 0;
|
||
Для каждого Товар из Ссылка.Заказы Цикл
|
||
Строка=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "Документ.ПоступлениеТоваровУслуг.Товары.Строка"));
|
||
колстрок=колстрок+1;
|
||
Строка.НомерСтрокиДокумента=колстрок;
|
||
|
||
ДанныеНоменклатуры=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "ОбщиеСвойстваДанныеНоменклатуры"));
|
||
ДанныеНоменклатуры.Номенклатура=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваНоменклатура"));
|
||
ДанныеНоменклатуры.Номенклатура.Ссылка=Строка(Товар.Номенклатура.УникальныйИдентификатор());
|
||
СтроковыйМассивШтрихкодов = ПолучитьШтрихНом(Товар.Номенклатура);
|
||
ДанныеНоменклатуры.Штрихкод = СтроковыйМассивШтрихкодов;
|
||
ДанныеНоменклатуры.Номенклатура.Наименование=Товар.Номенклатура.Наименование;
|
||
|
||
ДанныеКарточкиМП=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "ОбщиеСвойстваДанныеНоменклатуры"));
|
||
ДанныеКарточкиМП.Номенклатура=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваНоменклатура"));
|
||
ДанныеКарточкиМП.Номенклатура.Ссылка=Строка(Товар.КарточкаМП.УникальныйИдентификатор());
|
||
СтроковыйМассивШтрихкодов = ПолучитьШтрихНомКарточкиМП(Товар.КарточкаМП);
|
||
ДанныеКарточкиМП.Штрихкод = СтроковыйМассивШтрихкодов;
|
||
ДанныеКарточкиМП.Номенклатура.Наименование=Товар.КарточкаМП.Наименование;
|
||
|
||
|
||
Строка.Количество=Товар.Количество;
|
||
Строка.ДанныеНоменклатуры=ДанныеНоменклатуры;
|
||
Строка.ДанныеКарточкиМП=ДанныеКарточкиМП;
|
||
Строка.СчетУчета = Товар.КодМП;
|
||
если значениезаполнено(Товар.ШтрихкодПоставки) тогда
|
||
Строка.СчетУчетаНДС = Товар.ШтрихкодПоставки;
|
||
иначе
|
||
Строка.СчетУчетаНДС = "0";
|
||
конецесли;
|
||
Товары.Строка.Добавить(Строка);
|
||
КонецЦикла;
|
||
Иначе
|
||
КлючевыеСвойства.ссылка=Строка(Документы.ПоставкаМП.ПустаяСсылка().УникальныйИдентификатор());
|
||
КонецЕсли;
|
||
ЗаявкаXDTO.КлючевыеСвойства=КлючевыеСвойства;
|
||
ЗаявкаXDTO.КонтрагентСтороннейКомпании=КлючевыеСвойстваКонтрагент;
|
||
ЗаявкаXDTO.Товары=Товары;
|
||
Возврат ЗаявкаXDTO;
|
||
КонецФункции
|
||
|
||
|
||
&НаСервере
|
||
|
||
Функция setDoc(xmldoc) // получаем с ТСД изменный док СборкаМП и Стикеровка МП
|
||
|
||
Если xmldoc.КлючевыеСвойства.ТипДокумента = "Сборка МП" Тогда
|
||
|
||
СборкаМП=Документы.СборкаМП.ПолучитьСсылку(Новый УникальныйИдентификатор(xmldoc.КлючевыеСвойства.ссылка));
|
||
Если Не ЗначениеЗаполнено(СборкаМП) Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
СборкаМП=СборкаМП.ПолучитьОбъект();
|
||
СборкаМП.Исполнитель=Справочники.Пользователи.ПолучитьСсылку(
|
||
Новый УникальныйИдентификатор(xmldoc.Подразделение.Ссылка));
|
||
Для Каждого строка Из xmldoc.Товары.строка Цикл
|
||
ном = Справочники.Номенклатура.ПолучитьСсылку(
|
||
Новый УникальныйИдентификатор(строка.ДанныеНоменклатуры.Номенклатура.ссылка));
|
||
тов = СборкаМП.Товары.Найти(ном, "Номенклатура");
|
||
Если тов <> Неопределено Тогда
|
||
тов.Факт = строка.Количество; // Полностью перезаписываем количество
|
||
Иначе
|
||
тов=СборкаМП.Товары.Добавить();
|
||
тов.Номенклатура=ном;
|
||
тов.Факт=строка.Количество;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
СборкаМП.Записать();
|
||
Возврат Истина;
|
||
ИначеЕсли xmldoc.КлючевыеСвойства.ТипДокумента = "Стикеровка МП" Тогда
|
||
СтикеровкаМП=Документы.СтикеровкаМП.ПолучитьСсылку(
|
||
Новый УникальныйИдентификатор(xmldoc.КлючевыеСвойства.ссылка));
|
||
Если Не ЗначениеЗаполнено(СтикеровкаМП) Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
СтикеровкаМП=СтикеровкаМП.ПолучитьОбъект();
|
||
СтикеровкаМП.Исполнитель=Справочники.Пользователи.ПолучитьСсылку(
|
||
Новый УникальныйИдентификатор(xmldoc.Подразделение.Ссылка));
|
||
Для Каждого строка Из xmldoc.Товары.строка Цикл
|
||
ном = Справочники.КарточкиМП.ПолучитьСсылку(
|
||
Новый УникальныйИдентификатор(строка.ДанныеНоменклатуры.Номенклатура.ссылка));
|
||
КодМП = строка.ЕдиницаИзмерения.Ссылка;
|
||
ШтрихкодПоставки = "";
|
||
Попытка
|
||
ШтрихкодПоставки = СокрЛП(Строка(строка.ЕдиницаИзмерения.ДанныеКлассификатора.Код));
|
||
Исключение
|
||
КонецПопытки;
|
||
СтруктураПоиска = Новый Структура;
|
||
СтруктураПоиска.Вставить("КодМП", КодМП);
|
||
СтруктураПоиска.Вставить("КарточкаМП", ном);
|
||
КодМаркировки = ПолучитьКодМаркировкиИзСтрокиXDTO(строка);
|
||
Если ЗначениеЗаполнено(КодМаркировки) Тогда
|
||
ПоставкаМПСсылка = ПолучитьСсылкуПоставкиМПИзСтрокиXDTO(строка);
|
||
Если ЗначениеЗаполнено(ПоставкаМПСсылка) Тогда
|
||
ЗаполнитьКодМаркировкиВПоставкеМП(КодМП, ном, КодМаркировки, ПоставкаМПСсылка, ШтрихкодПоставки);
|
||
Иначе
|
||
Для Каждого СсыльМП из СтикеровкаМП.Поставки Цикл
|
||
Рез = ЗаполнитьКодМаркировкиВПоставкеМП(КодМП, ном, КодМаркировки, СсыльМП.ПоставкаМП, ШтрихкодПоставки);
|
||
Если Рез Тогда
|
||
Прервать;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
тов = СтикеровкаМП.Заказы.НайтиСтроки(СтруктураПоиска);
|
||
Если тов <> Неопределено И тов.Количество() > 0 Тогда
|
||
тов[0].Количество = строка.Количество; // Полностью перезаписываем количество
|
||
Иначе
|
||
тов=СтикеровкаМП.Заказы.Добавить();
|
||
тов.КарточкаМП=ном;
|
||
тов.Количество=строка.Количество;
|
||
тов.КодМП=КодМП;
|
||
тов.ШтрихкодПоставки=ШтрихкодПоставки;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
СтикеровкаМП.Записать();
|
||
Возврат Истина;
|
||
ИначеЕсли xmldoc.КлючевыеСвойства.ТипДокумента = "ПеремещениеПоЯчейкам" Тогда
|
||
ЗаписатьПеремещениеПоЯчейкамИзТСД(xmldoc);
|
||
Возврат "true";
|
||
КонецЕсли;
|
||
КонецФункции
|
||
|
||
|
||
Функция getNom()
|
||
|
||
МассивОбъектов = Новый Массив;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Номенклатура.Ссылка КАК Ссылка,
|
||
| Номенклатура.Наименование КАК Наименование
|
||
|ИЗ
|
||
| Справочник.Номенклатура КАК Номенклатура
|
||
|ГДЕ
|
||
| НЕ Номенклатура.ПометкаУдаления
|
||
| И НЕ Номенклатура.ЭтоГруппа";
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
СтрокаШК = ПолучитьШтрихНом(Выборка.Ссылка);
|
||
Если Не ЗначениеЗаполнено(СтрокаШК) Или СтрокаШК = "0" Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Элемент = НовыйЭлементОтветаТСД();
|
||
ДобавитьСвойствоОтветаТСД(Элемент, Строка(Выборка.Ссылка.УникальныйИдентификатор()));
|
||
ДобавитьСвойствоОтветаТСД(Элемент, "Номенклатура");
|
||
ДобавитьСвойствоОтветаТСД(Элемент, Выборка.Наименование);
|
||
ДобавитьСвойствоОтветаТСД(Элемент, СтрокаШК);
|
||
ДобавитьСвойствоОтветаТСД(Элемент, "");
|
||
МассивОбъектов.Добавить(Элемент);
|
||
КонецЦикла;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| КарточкиМП.Ссылка КАК Ссылка,
|
||
| КарточкиМП.Наименование КАК Наименование,
|
||
| КарточкиМП.Номенклатура КАК Номенклатура
|
||
|ИЗ
|
||
| Справочник.КарточкиМП КАК КарточкиМП
|
||
|ГДЕ
|
||
| НЕ КарточкиМП.ПометкаУдаления";
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
СтрокаШК = ПолучитьШтрихНомКарточкиМП(Выборка.Ссылка);
|
||
Если Не ЗначениеЗаполнено(СтрокаШК) Или СтрокаШК = "0" Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
Элемент = НовыйЭлементОтветаТСД();
|
||
ДобавитьСвойствоОтветаТСД(Элемент, Строка(Выборка.Ссылка.УникальныйИдентификатор()));
|
||
ДобавитьСвойствоОтветаТСД(Элемент, "КарточкиМП");
|
||
ДобавитьСвойствоОтветаТСД(Элемент, Выборка.Наименование);
|
||
ДобавитьСвойствоОтветаТСД(Элемент, СтрокаШК);
|
||
Если ЗначениеЗаполнено(Выборка.Номенклатура) Тогда
|
||
ДобавитьСвойствоОтветаТСД(Элемент, Строка(Выборка.Номенклатура.УникальныйИдентификатор()));
|
||
Иначе
|
||
ДобавитьСвойствоОтветаТСД(Элемент, "");
|
||
КонецЕсли;
|
||
МассивОбъектов.Добавить(Элемент);
|
||
КонецЦикла;
|
||
|
||
Возврат УпаковатьОтветТСДВстроку(МассивОбъектов);
|
||
КонецФункции
|
||
|
||
Функция ПолучитьНоменклатуруXDTO(СcылкаНом)
|
||
ДанныеНоменклатуры=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "ОбщиеСвойстваДанныеНоменклатуры"));
|
||
ДанныеНоменклатуры.Номенклатура=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваНоменклатура"));
|
||
ДанныеНоменклатуры.Номенклатура.Ссылка=Строка(СcылкаНом.УникальныйИдентификатор());
|
||
ДанныеНоменклатуры.Номенклатура.Наименование=СcылкаНом.Наименование;
|
||
СтроковыйМассивШтрихкодовНом = ПолучитьШтрихНом(СcылкаНом);
|
||
ДанныеНоменклатуры.Штрихкод = СтроковыйМассивШтрихкодовНом;
|
||
Если ЗначениеЗаполнено(СcылкаНом.Родитель) тогда
|
||
ДанныеНоменклатуры.Номенклатура.Группа=ПолучитьГруппаXDTO(СcылкаНом.Родитель);
|
||
КонецЕсли;
|
||
Возврат ДанныеНоменклатуры;
|
||
КонецФункции
|
||
|
||
Функция ПолучитьГруппаXDTO(СcылкаНом)
|
||
|
||
ДанныеГруппа=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваНоменклатураГруппа"));
|
||
ДанныеГруппа.КодВПрограмме=СcылкаНом.Код;
|
||
ДанныеГруппа.Наименование=СcылкаНом.Наименование;
|
||
ДанныеГруппа.Ссылка=Строка(СcылкаНом.УникальныйИдентификатор());
|
||
|
||
Если ЗначениеЗаполнено(СcылкаНом.Родитель) Тогда
|
||
ДанныеГруппа.Группа=ПолучитьГруппаXDTO(СcылкаНом.Родитель);
|
||
КонецЕсли;
|
||
|
||
Возврат ДанныеГруппа;
|
||
|
||
КонецФункции
|
||
|
||
|
||
Функция getDocInvent(barcode) // Выгружаем Док инвентаризация
|
||
Если СтрДлина(barcode)<12 Тогда
|
||
//Ищем по номеру
|
||
|
||
Ссылки=Новый Массив;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||
| ИнвентаризацияЗапасов.Ссылка КАК Ссылка
|
||
|ИЗ
|
||
| Документ.ИнвентаризацияЗапасов КАК ИнвентаризацияЗапасов
|
||
|ГДЕ
|
||
| ИнвентаризацияЗапасов.Номер ПОДОБНО &Номер
|
||
|
|
||
|УПОРЯДОЧИТЬ ПО
|
||
| ИнвентаризацияЗапасов.Дата УБЫВ";
|
||
|
||
Запрос.УстановитьПараметр("Номер", "%"+barcode);
|
||
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
|
||
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
|
||
|
||
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
||
Ссылки.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
|
||
КонецЦикла;
|
||
иначе
|
||
//Ищем по ШК
|
||
Ссылки=ШтрихкодированиеПечатныхФормВызовСервера.СсылкаПоШтрихкодуТабличногоДокумента(barcode, Неопределено);
|
||
КонецЕсли;
|
||
ЗаявкаXDTO=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "Документ.ИнвентаризацияТоваров"));
|
||
КлючевыеСвойства=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваИнвентаризацияТоваров"));
|
||
Товары=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "Документ.ИнвентаризацияТоваров.Товары"));
|
||
Если Ссылки.Количество()>0 Тогда
|
||
Ссылка=Ссылки[0];
|
||
КлючевыеСвойства.ссылка=Строка(ссылка.УникальныйИдентификатор());
|
||
КлючевыеСвойства.номер=Ссылка.номер;
|
||
КлючевыеСвойства.дата=Ссылка.дата;
|
||
|
||
Для каждого Товар из Ссылка.Запасы Цикл
|
||
Строка=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "Документ.ИнвентаризацияТоваров.Товары.Строка"));
|
||
Строка.НомерСтрокиДокумента=Товар.НомерСтроки;
|
||
ДанныеНоменклатуры=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "ОбщиеСвойстваДанныеНоменклатуры"));
|
||
ДанныеНоменклатуры.Номенклатура=ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваНоменклатура"));
|
||
ДанныеНоменклатуры.Номенклатура.Ссылка=Строка(Товар.Номенклатура.УникальныйИдентификатор());
|
||
///
|
||
ЕдИзмерНом = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "КлючевыеСвойстваЕдиницаИзмерения"));
|
||
ДанныеКлассиф = ФабрикаXDTO.Создать(ФабрикаXDTO.Тип("http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.19", "ОбщиеСвойстваДанныеКлассификатора"));
|
||
ДанныеКлассиф.Код = Товар.ЕдиницаИзмерения.Код;
|
||
ДанныеКлассиф.Наименование = Товар.ЕдиницаИзмерения.Наименование;
|
||
ЕдИзмерНом.Ссылка = Строка(Товар.Номенклатура.ЕдиницаИзмерения.УникальныйИдентификатор());
|
||
ЕдИзмерНом.ДанныеКлассификатора = ДанныеКлассиф;
|
||
///
|
||
СтроковыйМассивШтрихкодов = ПолучитьШтрихНом(Товар.Номенклатура);
|
||
ДанныеНоменклатуры.Штрихкод = СтроковыйМассивШтрихкодов;
|
||
ДанныеНоменклатуры.Номенклатура.Наименование=Товар.Номенклатура.Наименование;
|
||
ДанныеНоменклатуры.SKU = ЦенаНом(Товар.Номенклатура);
|
||
Строка.КоличествоУчет=Товар.КоличествоУчет;
|
||
Строка.ДанныеНоменклатуры=ДанныеНоменклатуры;
|
||
Строка.ЕдиницаИзмерения = ЕдИзмерНом;
|
||
Товары.Строка.Добавить(Строка);
|
||
КонецЦикла;
|
||
Иначе
|
||
КлючевыеСвойства.ссылка=Строка(Документы.ИнвентаризацияТоваров.ПустаяСсылка().УникальныйИдентификатор());
|
||
КонецЕсли;
|
||
ЗаявкаXDTO.КлючевыеСвойства=КлючевыеСвойства;
|
||
ЗаявкаXDTO.Товары=Товары;
|
||
Возврат ЗаявкаXDTO;
|
||
КонецФункции
|
||
|
||
Функция УпаковатьОтветТСДВстроку(МассивValue) Экспорт
|
||
|
||
ЗаписьXML = Новый ЗаписьXML;
|
||
ЗаписьXML.УстановитьСтроку();
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("response");
|
||
|
||
Для Каждого Элемент Из МассивValue Цикл
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("Value");
|
||
Для Каждого Свойство Из Элемент.Property Цикл
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("Property");
|
||
ЗаписьXML.ЗаписатьНачалоЭлемента("Value");
|
||
ЗаписьXML.ЗаписатьТекст(Строка(Свойство.Value));
|
||
ЗаписьXML.ЗаписатьКонецЭлемента(); // Value
|
||
ЗаписьXML.ЗаписатьКонецЭлемента(); // Property
|
||
КонецЦикла;
|
||
ЗаписьXML.ЗаписатьКонецЭлемента(); // Value
|
||
КонецЦикла;
|
||
|
||
ЗаписьXML.ЗаписатьКонецЭлемента(); // response
|
||
Возврат ЗаписьXML.Закрыть();
|
||
КонецФункции
|
||
|
||
Функция setDocInvent(xmldoc) // получаем с ТСД изменный док инвент
|
||
|
||
ИнвентДок=Документы.ИнвентаризацияЗапасов.ПолучитьСсылку(Новый УникальныйИдентификатор(xmldoc.КлючевыеСвойства.ссылка));
|
||
Если не ЗначениеЗаполнено(ИнвентДок) Тогда Возврат Ложь; КонецЕсли;
|
||
ИнвентДок=ИнвентДок.ПолучитьОбъект();
|
||
|
||
Для каждого строка из xmldoc.Товары.Строка цикл
|
||
ном = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(строка.ДанныеНоменклатуры.Номенклатура.ссылка));
|
||
тов = ИнвентДок.Запасы.Найти(ном, "Номенклатура");
|
||
Если тов <> Неопределено Тогда
|
||
тов.Количество = строка.Количество;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
ИнвентДок.Записать();
|
||
Возврат Истина;
|
||
КонецФункции
|
||
|
||
Функция ПолучитьШтрихНомКарточкиМП(ном)
|
||
МассивСтрок = "";
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ШтрихкодыМП.Штрихкод КАК Штрихкод
|
||
|ИЗ
|
||
| РегистрСведений.ШтрихкодыМП КАК ШтрихкодыМП
|
||
|ГДЕ
|
||
| ШтрихкодыМП.КарточкаМП.Ссылка = &Ссылка";
|
||
|
||
Запрос.УстановитьПараметр("Ссылка", ном);
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
|
||
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
||
МассивСтрок = МассивСтрок + ВыборкаДетальныеЗаписи.Штрихкод + ";";
|
||
КонецЦикла;
|
||
Если СтрДлина(МассивСтрок) > 3 Тогда
|
||
Возврат МассивСтрок;
|
||
Иначе
|
||
Возврат МассивСтрок="0";
|
||
КонецЕсли;
|
||
КонецФункции
|
||
|
||
Функция ПолучитьШтрихНом(ном)
|
||
МассивСтрок = "";
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод
|
||
|ИЗ
|
||
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
|
||
|ГДЕ
|
||
| ШтрихкодыНоменклатуры.Номенклатура.Ссылка = &Ссылка";
|
||
|
||
Запрос.УстановитьПараметр("Ссылка", ном);
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
|
||
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
||
МассивСтрок = МассивСтрок + ВыборкаДетальныеЗаписи.Штрихкод + ";";
|
||
КонецЦикла;
|
||
Если СтрДлина(МассивСтрок) > 3 Тогда
|
||
Возврат МассивСтрок;
|
||
Иначе
|
||
Возврат МассивСтрок="0";
|
||
КонецЕсли;
|
||
КонецФункции
|
||
|
||
Процедура ЗаписатьПеремещениеПоЯчейкамИзТСД(ДанныеДокумента) Экспорт
|
||
|
||
КС = ДанныеДокумента.КлючевыеСвойства;
|
||
ДокТСДUUID = НормUUID(КС.Ссылка);
|
||
|
||
Склад = СсылкаПоUUID(Справочники.СтруктурныеЕдиницы, ДанныеДокумента.СтруктурнаяЕдиница);
|
||
ВидОперации = ВидОперацииПеремещенияПоЯчейкамИзТСД(ДанныеДокумента.ВидОперации);
|
||
ДатаДокумента = XMLЗначение(Тип("Дата"), Строка(КС.Дата));
|
||
|
||
Организация = Неопределено;
|
||
Попытка
|
||
ОрганизацияUUID = "";
|
||
Попытка
|
||
ОрганизацияUUID = КС.Организация.Ссылка;
|
||
Исключение
|
||
ОрганизацияUUID = КС.Организация;
|
||
КонецПопытки;
|
||
Организация = СсылкаПоUUID(Справочники.Организации, ОрганизацияUUID);
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
Автор = Неопределено;
|
||
Попытка
|
||
Автор = СсылкаПоUUID(Справочники.Сотрудники, ДанныеДокумента.Автор);
|
||
Если Не ЗначениеЗаполнено(Автор) Тогда
|
||
Автор = СсылкаПоUUID(Справочники.Пользователи, ДанныеДокумента.Автор);
|
||
КонецЕсли;
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
СтрокиЗапасов = СтрокиЗапасовИзДанныхТСД(ДанныеДокумента);
|
||
Если СтрокиЗапасов.Количество() = 0 Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
|
||
ТаблицаСтрок = Новый ТаблицаЗначений;
|
||
ТаблицаСтрок.Колонки.Добавить("ЯчейкаИсточникUUID", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(36)));
|
||
ТаблицаСтрок.Колонки.Добавить("ЯчейкаНазначенияUUID", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(36)));
|
||
ТаблицаСтрок.Колонки.Добавить("НоменклатураUUID", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(36)));
|
||
ТаблицаСтрок.Колонки.Добавить("ПартияUUID", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(36)));
|
||
ТаблицаСтрок.Колонки.Добавить("ЕдиницаUUID", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(36)));
|
||
ТаблицаСтрок.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 3)));
|
||
ТаблицаСтрок.Колонки.Добавить("Штрихкод", Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(200)));
|
||
|
||
Для Каждого Стр Из СтрокиЗапасов Цикл
|
||
НовСтр = ТаблицаСтрок.Добавить();
|
||
НовСтр.ЯчейкаИсточникUUID = НормUUID(Стр.ЯчейкаИсточник);
|
||
НовСтр.ЯчейкаНазначенияUUID = НормUUID(Стр.Ячейка);
|
||
НовСтр.НоменклатураUUID = НормUUID(Стр.Номенклатура);
|
||
НовСтр.ПартияUUID = НормUUID(Стр.Партия);
|
||
НовСтр.ЕдиницаUUID = НормUUID(Стр.ЕдиницаИзмерения);
|
||
НовСтр.Количество = Число(Стр.Количество);
|
||
Попытка
|
||
НовСтр.Штрихкод = Строка(Стр.Штрихкод);
|
||
Исключение
|
||
НовСтр.Штрихкод = "";
|
||
КонецПопытки;
|
||
КонецЦикла;
|
||
|
||
ТаблицаСтрок.Сортировать("ЯчейкаИсточникUUID, НоменклатураUUID, ЯчейкаНазначенияUUID");
|
||
|
||
ТекущийИсточникUUID = Неопределено;
|
||
ДокОбъект = Неопределено;
|
||
|
||
Для Каждого СтрТЗ Из ТаблицаСтрок Цикл
|
||
|
||
Если Не ЗначениеЗаполнено(СтрТЗ.ЯчейкаИсточникUUID)
|
||
Или СтрТЗ.ЯчейкаИсточникUUID = ПустойUUID() Тогда
|
||
Продолжить;
|
||
КонецЕсли;
|
||
|
||
Если ТекущийИсточникUUID <> СтрТЗ.ЯчейкаИсточникUUID Тогда
|
||
|
||
ЗаписатьДокументПеремещенияПоЯчейкам(ДокОбъект);
|
||
|
||
ТекущийИсточникUUID = СтрТЗ.ЯчейкаИсточникUUID;
|
||
ДокОбъект = ПолучитьИлиСоздатьДокументПеремещенияПоЯчейкам(
|
||
ДокТСДUUID, ТекущийИсточникUUID);
|
||
|
||
ДокОбъект.Дата = ДатаДокумента;
|
||
ДокОбъект.СтруктурнаяЕдиница = Склад;
|
||
ДокОбъект.ВидОперации = ВидОперации;
|
||
ДокОбъект.Ячейка = СсылкаПоUUID(Справочники.Ячейки, ТекущийИсточникUUID);
|
||
|
||
Если ЗначениеЗаполнено(Организация) Тогда
|
||
Попытка
|
||
ДокОбъект.Организация = Организация;
|
||
Исключение
|
||
КонецПопытки;
|
||
КонецЕсли;
|
||
|
||
Если ЗначениеЗаполнено(Автор) Тогда
|
||
Попытка
|
||
ДокОбъект.Автор = Автор;
|
||
Исключение
|
||
КонецПопытки;
|
||
КонецЕсли;
|
||
|
||
ДокОбъект.Запасы.Очистить();
|
||
|
||
КонецЕсли;
|
||
|
||
НовСтр = ДокОбъект.Запасы.Добавить();
|
||
НовСтр.Номенклатура = СсылкаПоUUID(Справочники.Номенклатура, СтрТЗ.НоменклатураUUID);
|
||
НовСтр.Партия = СсылкаПоUUID(Справочники.ПартииНоменклатуры, СтрТЗ.ПартияUUID);
|
||
НовСтр.Количество = СтрТЗ.Количество;
|
||
НовСтр.Ячейка = СсылкаПоUUID(Справочники.Ячейки, СтрТЗ.ЯчейкаНазначенияUUID);
|
||
|
||
Попытка
|
||
НовСтр.ЕдиницаИзмерения = СсылкаПоUUID(Справочники.КлассификаторЕдиницИзмерения, СтрТЗ.ЕдиницаUUID);
|
||
Исключение
|
||
Попытка
|
||
НовСтр.ЕдиницаИзмерения = СсылкаПоUUID(Справочники.ЕдиницыИзмерения, СтрТЗ.ЕдиницаUUID);
|
||
Исключение
|
||
КонецПопытки;
|
||
КонецПопытки;
|
||
|
||
Попытка
|
||
НовСтр.Штрихкод = СтрТЗ.Штрихкод;
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
КонецЦикла;
|
||
|
||
ЗаписатьДокументПеремещенияПоЯчейкам(ДокОбъект);
|
||
КонецПроцедуры
|
||
|
||
|
||
Функция ПолучитьИлиСоздатьДокументПеремещенияПоЯчейкам(ДокТСДUUID, ЯчейкаИсточникUUID)
|
||
|
||
UID = UUIDДокументаУНФИзТСД(ДокТСДUUID, ЯчейкаИсточникUUID);
|
||
СсылкаДок = Документы.ПеремещениеПоЯчейкам.ПолучитьСсылку(Новый УникальныйИдентификатор(UID));
|
||
|
||
ДокОбъект = СсылкаДок.ПолучитьОбъект();
|
||
Если ДокОбъект = Неопределено Тогда
|
||
ДокОбъект = Документы.ПеремещениеПоЯчейкам.СоздатьДокумент();
|
||
ДокОбъект.УстановитьСсылкуНового(СсылкаДок);
|
||
ИначеЕсли ДокОбъект.Проведен Тогда
|
||
ДокОбъект.Записать(РежимЗаписиДокумента.ОтменаПроведения);
|
||
КонецЕсли;
|
||
|
||
Возврат ДокОбъект;
|
||
|
||
КонецФункции
|
||
|
||
Функция СтрокиЗапасовИзДанныхТСД(ДанныеДокумента)
|
||
|
||
Результат = Новый Массив;
|
||
|
||
СтрокиЗапасов = Неопределено;
|
||
Попытка
|
||
СтрокиЗапасов = ДанныеДокумента.Запасы.Строка;
|
||
Исключение
|
||
Возврат Результат;
|
||
КонецПопытки;
|
||
|
||
Если СтрокиЗапасов = Неопределено Тогда
|
||
Возврат Результат;
|
||
КонецЕсли;
|
||
|
||
Если ТипЗнч(СтрокиЗапасов) = Тип("СписокXDTO") Или ТипЗнч(СтрокиЗапасов) = Тип("Массив") Тогда
|
||
Для Каждого Стр Из СтрокиЗапасов Цикл
|
||
Результат.Добавить(Стр);
|
||
КонецЦикла;
|
||
Иначе
|
||
Результат.Добавить(СтрокиЗапасов);
|
||
КонецЕсли;
|
||
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Функция ДатаИзЗначенияТСД(ЗначениеДаты)
|
||
|
||
Если ТипЗнч(ЗначениеДаты) = Тип("Дата") Тогда
|
||
Возврат ЗначениеДаты;
|
||
КонецЕсли;
|
||
|
||
СтрокаДаты = СокрЛП(Строка(ЗначениеДаты));
|
||
Если Не ЗначениеЗаполнено(СтрокаДаты) Тогда
|
||
Возврат ТекущаяДатаСеанса();
|
||
КонецЕсли;
|
||
|
||
Попытка
|
||
Возврат XMLЗначение(Тип("Дата"), СтрокаДаты);
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
Попытка
|
||
Возврат Дата(СтрокаДаты);
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
Попытка
|
||
Части = СтрРазделить(СтрЗаменить(СтрокаДаты, "T", " "), " ");
|
||
Если Части.Количество() >= 1 Тогда
|
||
ДМГ = СтрРазделить(Части[0], ".");
|
||
Если ДМГ.Количество() = 3 Тогда
|
||
Год = Число(ДМГ[2]);
|
||
Месяц = Число(ДМГ[1]);
|
||
День = Число(ДМГ[0]);
|
||
Час = 0;
|
||
Мин = 0;
|
||
Сек = 0;
|
||
Если Части.Количество() >= 2 Тогда
|
||
Время = СтрРазделить(Части[1], ":");
|
||
Если Время.Количество() >= 1 Тогда
|
||
Час = Число(Время[0]);
|
||
КонецЕсли;
|
||
Если Время.Количество() >= 2 Тогда
|
||
Мин = Число(Время[1]);
|
||
КонецЕсли;
|
||
Если Время.Количество() >= 3 Тогда
|
||
Сек = Число(Время[2]);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат Дата(Год, Месяц, День, Час, Мин, Сек);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
Возврат ТекущаяДатаСеанса();
|
||
|
||
КонецФункции
|
||
|
||
Функция ВидОперацииПеремещенияПоЯчейкамИзТСД(ЗначениеИзТСД)
|
||
|
||
Текст = СокрЛП(Строка(ЗначениеИзТСД));
|
||
|
||
Если ВРег(Текст) = ВРег("ИзНесколькихВОдну")
|
||
Или СтрНайти(ВРег(Текст), "ИЗ НЕСКОЛЬКИХ") > 0 Тогда
|
||
Возврат Перечисления.ВидыОперацийПеремещениеПоЯчейкам.ИзНесколькихВОдну;
|
||
КонецЕсли;
|
||
|
||
Возврат Перечисления.ВидыОперацийПеремещениеПоЯчейкам.ИзОднойВНесколько;
|
||
|
||
КонецФункции
|
||
|
||
Функция НормUUID(ЗначениеUUID)
|
||
|
||
СтрокаUUID = ВРег(СокрЛП(Строка(ЗначениеUUID)));
|
||
Если Не ЗначениеЗаполнено(СтрокаUUID) Тогда
|
||
Возврат ПустойUUID();
|
||
КонецЕсли;
|
||
Возврат СтрокаUUID;
|
||
|
||
КонецФункции
|
||
|
||
Функция СсылкаПоUUID(Менеджер, ЗначениеUUID)
|
||
|
||
СтрокаUUID = НормUUID(ЗначениеUUID);
|
||
Если СтрокаUUID = ПустойUUID() Тогда
|
||
Возврат Менеджер.ПустаяСсылка();
|
||
КонецЕсли;
|
||
|
||
Возврат Менеджер.ПолучитьСсылку(Новый УникальныйИдентификатор(СтрокаUUID));
|
||
|
||
КонецФункции
|
||
|
||
Функция UUIDДокументаУНФИзТСД(ДокТСДUUID, ЯчейкаИсточникUUID) Экспорт
|
||
|
||
Хеш = Новый ХешированиеДанных(ХешФункция.MD5);
|
||
Хеш.Добавить(ВРег(СокрЛП(Строка(ДокТСДUUID))) + "|" + ВРег(СокрЛП(Строка(ЯчейкаИсточникUUID))));
|
||
Хекс = СтрЗаменить(ВРег(Строка(Хеш.ХешСумма)), " ", "");
|
||
|
||
Возврат Лев(Хекс, 8) + "-"
|
||
+ Сред(Хекс, 9, 4) + "-"
|
||
+ Сред(Хекс, 13, 4) + "-"
|
||
+ Сред(Хекс, 17, 4) + "-"
|
||
+ Сред(Хекс, 21, 12);
|
||
|
||
КонецФункции
|
||
|
||
Процедура ЗаписатьДокументПеремещенияПоЯчейкам(ДокОбъект)
|
||
|
||
Если ДокОбъект = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Если ДокОбъект.Запасы.Количество() = 0 Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
|
||
КонецПроцедуры
|
||
|
||
Функция ВернутьСписокНовойНом()
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| УстановкаЦенНоменклатурыЗапасы.Номенклатура.Ссылка КАК НоменклатураСсылка
|
||
|ИЗ
|
||
| Документ.УстановкаЦенНоменклатуры.Запасы КАК УстановкаЦенНоменклатурыЗапасы
|
||
|ГДЕ
|
||
| УстановкаЦенНоменклатурыЗапасы.Ссылка.Дата МЕЖДУ &Дата1 И &Дата2
|
||
| И УстановкаЦенНоменклатурыЗапасы.Ссылка.Проведен = ИСТИНА";
|
||
|
||
Запрос.УстановитьПараметр("Дата1", началодня(ТекущаяДата()));
|
||
Запрос.УстановитьПараметр("Дата2", конецдня(ТекущаяДата()));
|
||
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
|
||
возврат РезультатЗапроса;
|
||
КонецФункции
|
||
|
||
Функция ЦенаНом(ном)
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
|
||
|ИЗ
|
||
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
|
||
|ГДЕ
|
||
| ЦеныНоменклатурыСрезПоследних.Номенклатура.Ссылка = &Ссылка
|
||
| И ЦеныНоменклатурыСрезПоследних.Цена > 0
|
||
|
|
||
|СГРУППИРОВАТЬ ПО
|
||
| ЦеныНоменклатурыСрезПоследних.Цена";
|
||
|
||
Запрос.УстановитьПараметр("Ссылка", ном);
|
||
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
|
||
если РезультатЗапроса.Количество()> 0 Тогда
|
||
возврат РезультатЗапроса[0].Цена;
|
||
иначе
|
||
возврат 0;
|
||
КонецЕсли;
|
||
КонецФункции
|
||
|
||
Функция НайтиДокПоНомеруПоставки(НомерПоставки)
|
||
КонецФункции
|
||
|
||
Функция GetUsers()
|
||
МассивОбъектов=Новый Массив;
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Пользователи.Ссылка КАК Ссылка
|
||
|ИЗ
|
||
| Справочник.Пользователи КАК Пользователи
|
||
|ГДЕ
|
||
| Пользователи.ПометкаУдаления = &ПометкаУдаления";
|
||
|
||
Запрос.УстановитьПараметр("ПометкаУдаления", Ложь);
|
||
РезультатЗапроса = Запрос.Выполнить();
|
||
|
||
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
|
||
|
||
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
|
||
Если ВыборкаДетальныеЗаписи.Ссылка.Наименование = "<Не указан>" Тогда Продолжить; КОнецЕсли;
|
||
ПользXML = Новый Структура;
|
||
ПользXML.Вставить("Ссылка", строка(ВыборкаДетальныеЗаписи.Ссылка.УникальныйИдентификатор()));
|
||
ПользXML.Вставить("Наименование", ВыборкаДетальныеЗаписи.Ссылка.Наименование);
|
||
ПользXML.Вставить("Пароль", ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору
|
||
(ВыборкаДетальныеЗаписи.Ссылка.ИдентификаторПользователяИБ).СохраняемоеЗначениеПароля);
|
||
МассивОбъектов.Добавить(ПользXML);
|
||
КонецЦикла;
|
||
ОбъектXDTO = СериализаторXDTO.ЗаписатьXDTO(МассивОбъектов);
|
||
Возврат ОбъектXDTO;
|
||
КонецФункции
|
||
|
||
Функция setDocBarcode(xmldoc) // получаем с ТСД документы с штрихкодами
|
||
ВидыПродукции = Новый Массив();
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Корма для животных (влажные)"));
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Корма для животных (сухие)"));
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Консервы"));
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Спортивное питание"));
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("БАДы 2.0"));
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("БАД-ы"));
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Напитки с содержанием молока, какао, прочие"));
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Моторные масла"));
|
||
ВидыПродукции.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Молочная продукция"));
|
||
|
||
Попытка
|
||
ДокШК = Документы.ПулШтрихкодов.НайтиПоНомеру(xmldoc.Номер); // ищем по номеру, т.к. переодичности нет
|
||
Если ДокШК = Документы.ПулШтрихкодов.ПустаяСсылка() Тогда
|
||
ДокШк = Документы.ПулШтрихкодов.СоздатьДокумент();
|
||
ДокШк.Номер = xmldoc.Номер;
|
||
ДокШк.Дата = Дата(СтрЗаменить(СтрЗаменить(СтрЗаменить(xmldoc.Дата, "T", ""), "-", ""), ":", ""));
|
||
Иначе
|
||
ДокШк = ДокШк.ПолучитьОбъект();
|
||
ДокШк.Штрихкоды.Очистить();
|
||
КонецЕсли;
|
||
// Перезапишем только штрихкоды
|
||
Если ТипЗнч(xmldoc.Штрихкоды.строка) = Тип("СписокXDTO") Тогда
|
||
Для Каждого строка из xmldoc.Штрихкоды.строка Цикл
|
||
Шк = ДокШк.Штрихкоды.Добавить();
|
||
Шк.Штрихкод64 = строка.ШтрихкодКодир;
|
||
Если СтрДлина(ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(строка.ШтрихкодКодир))) > 13 Тогда
|
||
МаркаРазб = ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(строка.ШтрихкодКодир));
|
||
СтруктураРазбора = ШтрихкодированиеОбщегоНазначенияИС.НоваяСтруктураОбработкиШтрихкода(МаркаРазб,
|
||
ВидыПродукции);
|
||
Шк.Штрихкод = СтруктураРазбора.НормализованныйШтрихкод;
|
||
Иначе
|
||
Шк.Штрихкод = ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(строка.ШтрихкодКодир));
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
ИначеЕсли ТипЗнч(xmldoc.Штрихкоды.строка) = Тип("ОбъектXDTO") Тогда
|
||
Шк = ДокШк.Штрихкоды.Добавить();
|
||
Шк.Штрихкод64 = xmldoc.Штрихкоды.строка.ШтрихкодКодир;
|
||
Если СтрДлина(ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(xmldoc.Штрихкоды.строка.ШтрихкодКодир))) > 13 Тогда
|
||
МаркаРазб = ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(xmldoc.Штрихкоды.строка.ШтрихкодКодир));
|
||
СтруктураРазбора = ШтрихкодированиеОбщегоНазначенияИС.НоваяСтруктураОбработкиШтрихкода(МаркаРазб,
|
||
ВидыПродукции);
|
||
Шк.Штрихкод = СтруктураРазбора.НормализованныйШтрихкод;
|
||
Иначе
|
||
Шк.Штрихкод = ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(xmldoc.Штрихкоды.строка.ШтрихкодКодир));
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
ДокШк.Записать();
|
||
Возврат "true";
|
||
Исключение
|
||
Возврат ОписаниеОшибки();
|
||
КонецПопытки
|
||
КонецФункции
|
||
|
||
Функция ЗаполнитьКодМаркировкиВПоставкеМП(КодМП, ном, КодМаркировки, СсыльМП, ШтрихкодПоставки = "")
|
||
Если Не ЗначениеЗаполнено(СсыльМП) Тогда
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
МассивТипПродукцииМП = Новый Массив();
|
||
МассивТипПродукцииМП.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Молочная продукция"));
|
||
МассивТипПродукцииМП.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Корма для животных (влажные)"));
|
||
МассивТипПродукцииМП.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Корма для животных (сухие)"));
|
||
МассивТипПродукцииМП.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Спортивное питание"));
|
||
МассивТипПродукцииМП.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Консервы"));
|
||
МассивТипПродукцииМП.Добавить(Справочники.ВидыПродукцииИС.НайтиПоНаименованию("Напитки с содержанием молока, какао, прочие"));
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| ПоставкаМПЗаказы.Ссылка КАК Ссылка
|
||
|ИЗ
|
||
| Документ.ПоставкаМП.Заказы КАК ПоставкаМПЗаказы
|
||
|ГДЕ
|
||
| ПоставкаМПЗаказы.КарточкаМП = &КарточкаМП
|
||
| И ПоставкаМПЗаказы.Ссылка = &Ссылка
|
||
| И (ПоставкаМПЗаказы.КодМП = &КодМП
|
||
| ИЛИ &ИскатьПоШтрихкоду
|
||
| И ПоставкаМПЗаказы.ШтрихкодПоставки = &ШтрихкодПоставки)";
|
||
Запрос.УстановитьПараметр("Ссылка", СсыльМП);
|
||
Запрос.УстановитьПараметр("КарточкаМП", ном);
|
||
Запрос.УстановитьПараметр("КодМП", КодМП);
|
||
Запрос.УстановитьПараметр("ШтрихкодПоставки", ШтрихкодПоставки);
|
||
Запрос.УстановитьПараметр("ИскатьПоШтрихкоду", ЗначениеЗаполнено(ШтрихкодПоставки) И ШтрихкодПоставки <> "0");
|
||
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
|
||
Если РезультатЗапроса.Количество() > 0 Тогда
|
||
Док = СсыльМП.ПолучитьОбъект();
|
||
КодМрк = Док.КодыМаркировки.Добавить();
|
||
ДвоичныеДанные = Base64Значение(КодМаркировки);
|
||
Если Не ЗначениеЗаполнено(ДвоичныеДанные) Тогда
|
||
Марка = КодМаркировки;
|
||
КодМрк.МаркаСтрока = КодМаркировки;
|
||
Иначе
|
||
Марка = ПолучитьСтрокуИзДвоичныхДанных(ДвоичныеДанные);
|
||
СтруктураРазбора = ШтрихкодированиеОбщегоНазначенияИС.НоваяСтруктураОбработкиШтрихкода(Марка,
|
||
МассивТипПродукцииМП);
|
||
КодМрк.МаркаСтрока = СтруктураРазбора.НормализованныйШтрихкод;
|
||
КонецЕсли;
|
||
КодМрк.МаркаСтрока64 = КодМаркировки;
|
||
|
||
// Сопоставление марки с кодом МП из строки поставки
|
||
КодМПДляЗаписи = СокрЛП(Строка(КодМП));
|
||
Если Не ЗначениеЗаполнено(КодМПДляЗаписи)
|
||
Или КодМПДляЗаписи = "Не определен"
|
||
Или КодМПДляЗаписи = "00-00-00" Тогда
|
||
Если ЗначениеЗаполнено(ШтрихкодПоставки) И ШтрихкодПоставки <> "0" Тогда
|
||
СтрокиЗаказа = Док.Заказы.НайтиСтроки(Новый Структура("КарточкаМП, ШтрихкодПоставки", ном, ШтрихкодПоставки));
|
||
Иначе
|
||
СтрокиЗаказа = Неопределено;
|
||
КонецЕсли;
|
||
Если СтрокиЗаказа = Неопределено Или СтрокиЗаказа.Количество() = 0 Тогда
|
||
СтрокиЗаказа = Док.Заказы.НайтиСтроки(Новый Структура("КарточкаМП", ном));
|
||
КонецЕсли;
|
||
Если СтрокиЗаказа <> Неопределено И СтрокиЗаказа.Количество() > 0
|
||
И ЗначениеЗаполнено(СтрокиЗаказа[0].КодМП) Тогда
|
||
КодМПДляЗаписи = СтрокиЗаказа[0].КодМП;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если ЗначениеЗаполнено(КодМПДляЗаписи) Тогда
|
||
КодМрк.КодМП = КодМПДляЗаписи;
|
||
КонецЕсли;
|
||
|
||
Док.Записать();
|
||
возврат истина;
|
||
Иначе
|
||
Возврат Ложь;
|
||
КонецЕсли;
|
||
КонецФункции
|
||
|
||
Функция ПолучитьКодМаркировкиИзСтрокиXDTO(СтрокаXDTO)
|
||
|
||
Попытка
|
||
Если ТипЗнч(СтрокаXDTO.КодМаркировки) <> Тип("ОбъектXDTO")
|
||
И ЗначениеЗаполнено(СтрокаXDTO.КодМаркировки) Тогда
|
||
Возврат Строка(СтрокаXDTO.КодМаркировки);
|
||
КонецЕсли;
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
Возврат "";
|
||
|
||
КонецФункции
|
||
|
||
Функция ПолучитьСсылкуПоставкиМПИзСтрокиXDTO(СтрокаXDTO)
|
||
|
||
Попытка
|
||
Если ТипЗнч(СтрокаXDTO.ПоставкаМП) = Тип("ОбъектXDTO")
|
||
И ЗначениеЗаполнено(СтрокаXDTO.ПоставкаМП.Ссылка)
|
||
И СтрокаXDTO.ПоставкаМП.Ссылка <> ПустойUUID() Тогда
|
||
СсылкаПоставки = Документы.ПоставкаМП.ПолучитьСсылку(
|
||
Новый УникальныйИдентификатор(СтрокаXDTO.ПоставкаМП.Ссылка));
|
||
Если ЗначениеЗаполнено(СсылкаПоставки) Тогда
|
||
Возврат СсылкаПоставки;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
Возврат Документы.ПоставкаМП.ПустаяСсылка();
|
||
|
||
КонецФункции
|
||
|
||
Функция НовыйЭлементОтветаТСД()
|
||
Возврат Новый Структура("Property", Новый Массив);
|
||
КонецФункции
|
||
|
||
Процедура ДобавитьСвойствоОтветаТСД(Элемент, Значение)
|
||
Свойство = Новый Структура("Value", XMLСтрока(Значение));
|
||
Элемент.Property.Добавить(Свойство);
|
||
КонецПроцедуры
|
||
|
||
Функция ПустойUUID()
|
||
Возврат "00000000-0000-0000-0000-000000000000";
|
||
КонецФункции
|
||
|
||
Функция UUIDСсылки(Ссылка)
|
||
Если Не ЗначениеЗаполнено(Ссылка) Тогда
|
||
Возврат ПустойUUID();
|
||
КонецЕсли;
|
||
Возврат Строка(Ссылка.УникальныйИдентификатор());
|
||
КонецФункции
|
||
|
||
Функция GetStockInCells() Экспорт
|
||
|
||
МассивValue = Новый Массив;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Остатки.СтруктурнаяЕдиница КАК Склад,
|
||
| Остатки.Ячейка КАК Ячейка,
|
||
| Остатки.Номенклатура КАК Номенклатура,
|
||
| Остатки.Партия КАК Партия,
|
||
| Остатки.КоличествоОстаток КАК Количество
|
||
|ИЗ
|
||
| РегистрНакопления.ЗапасыНаСкладах.Остатки КАК Остатки
|
||
|ГДЕ
|
||
| Остатки.КоличествоОстаток > 0
|
||
| И Остатки.Ячейка <> ЗНАЧЕНИЕ(Справочник.Ячейки.ПустаяСсылка)";
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
|
||
МассивProperty = Новый Массив;
|
||
МассивProperty.Добавить(Новый Структура("Value", Строка(Выборка.Склад.УникальныйИдентификатор())));
|
||
МассивProperty.Добавить(Новый Структура("Value", Строка(Выборка.Ячейка.УникальныйИдентификатор())));
|
||
МассивProperty.Добавить(Новый Структура("Value", Строка(Выборка.Номенклатура.УникальныйИдентификатор())));
|
||
МассивProperty.Добавить(Новый Структура("Value",
|
||
?(ЗначениеЗаполнено(Выборка.Партия),
|
||
Строка(Выборка.Партия.УникальныйИдентификатор()),
|
||
"00000000-0000-0000-0000-000000000000")));
|
||
МассивProperty.Добавить(Новый Структура("Value", Формат(Выборка.Количество, "ЧРД=.; ЧГ=0")));
|
||
|
||
МассивValue.Добавить(Новый Структура("Property", МассивProperty));
|
||
КонецЦикла;
|
||
Возврат УпаковатьОтветТСДВстроку(МассивValue); // строка!
|
||
КонецФункции
|
||
|
||
Функция GetBatches() Экспорт
|
||
|
||
МассивValue = Новый Массив;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Партии.Ссылка КАК Ссылка,
|
||
| Партии.Наименование КАК Наименование,
|
||
| Партии.Владелец КАК Владелец
|
||
|ИЗ
|
||
| Справочник.ПартииНоменклатуры КАК Партии
|
||
|ГДЕ
|
||
| НЕ Партии.ПометкаУдаления";
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
|
||
МассивProperty = Новый Массив;
|
||
МассивProperty.Добавить(Новый Структура("Value", Строка(Выборка.Ссылка.УникальныйИдентификатор())));
|
||
МассивProperty.Добавить(Новый Структура("Value", Выборка.Наименование));
|
||
МассивProperty.Добавить(Новый Структура("Value",
|
||
?(ЗначениеЗаполнено(Выборка.Владелец),
|
||
Строка(Выборка.Владелец.УникальныйИдентификатор()),
|
||
"00000000-0000-0000-0000-000000000000")));
|
||
|
||
МассивValue.Добавить(Новый Структура("Property", МассивProperty));
|
||
|
||
КонецЦикла;
|
||
|
||
Возврат УпаковатьОтветТСДВстроку(МассивValue); // строка!
|
||
КонецФункции
|
||
|
||
Функция GetCells() Экспорт
|
||
|
||
МассивValue = Новый Массив;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Ячейки.Ссылка КАК Ссылка,
|
||
| Ячейки.Наименование КАК Наименование,
|
||
| Ячейки.Код КАК Код,
|
||
| Ячейки.Владелец КАК Владелец,
|
||
| Ячейки.Владелец.Наименование КАК НаименованиеСклада,
|
||
| Ячейки.Код КАК Штрихкод
|
||
|ИЗ
|
||
| Справочник.Ячейки КАК Ячейки
|
||
|ГДЕ
|
||
| НЕ Ячейки.ПометкаУдаления";
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
|
||
МассивProperty = Новый Массив;
|
||
// 0 — ссылка ячейки
|
||
МассивProperty.Добавить(Новый Структура("Value", Строка(Выборка.Ссылка.УникальныйИдентификатор())));
|
||
// 1 — наименование ячейки
|
||
МассивProperty.Добавить(Новый Структура("Value", Выборка.Наименование));
|
||
// 2 — код
|
||
МассивProperty.Добавить(Новый Структура("Value", Выборка.Код));
|
||
// 3 — склад UUID
|
||
МассивProperty.Добавить(Новый Структура("Value",
|
||
?(ЗначениеЗаполнено(Выборка.Владелец),
|
||
Строка(Выборка.Владелец.УникальныйИдентификатор()),
|
||
"00000000-0000-0000-0000-000000000000")));
|
||
// 4 — штрихкод ячейки
|
||
МассивProperty.Добавить(Новый Структура("Value", Строка(Выборка.Штрихкод)));
|
||
// 5 — наименование склада
|
||
МассивProperty.Добавить(Новый Структура("Value",
|
||
?(ЗначениеЗаполнено(Выборка.НаименованиеСклада), Выборка.НаименованиеСклада, "")));
|
||
|
||
МассивValue.Добавить(Новый Структура("Property", МассивProperty));
|
||
|
||
КонецЦикла;
|
||
|
||
Возврат УпаковатьОтветТСДВстроку(МассивValue);
|
||
КонецФункции
|
||
|
||
Функция GetOrganizations()
|
||
МассивОбъектов = Новый Массив;
|
||
|
||
Запрос = Новый Запрос;
|
||
Запрос.Текст =
|
||
"ВЫБРАТЬ
|
||
| Организации.Ссылка КАК Ссылка,
|
||
| Организации.Наименование КАК Наименование,
|
||
| Организации.Код КАК Код
|
||
|ИЗ
|
||
| Справочник.Организации КАК Организации
|
||
|ГДЕ
|
||
| НЕ Организации.ПометкаУдаления";
|
||
|
||
Выборка = Запрос.Выполнить().Выбрать();
|
||
Пока Выборка.Следующий() Цикл
|
||
Элемент = НовыйЭлементОтветаТСД();
|
||
ДобавитьСвойствоОтветаТСД(Элемент, Строка(Выборка.Ссылка.УникальныйИдентификатор()));
|
||
ДобавитьСвойствоОтветаТСД(Элемент, Выборка.Наименование);
|
||
ДобавитьСвойствоОтветаТСД(Элемент, Выборка.Код);
|
||
МассивОбъектов.Добавить(Элемент);
|
||
КонецЦикла;
|
||
|
||
Возврат УпаковатьОтветТСДВстроку(МассивОбъектов);
|
||
|
||
КонецФункции
|