РК_ЗагрузкаОстатков 1.3.1.60: комиссия 2.5 и вкладка документов ввода.
Собственные и комиссионные ТЧ, серии только при отсутствии (заглушки по флагу); созданные ВводОстатковТоваров выводятся на отдельную страницу для контроля. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -3,12 +3,12 @@
|
||||
|
||||
#Область ПрограммныйИнтерфейс
|
||||
|
||||
// Заполняет ТЧ ВходящиеДанные строками остатков Transfer API (mode=combined по умолчанию).
|
||||
// Заполняет ТЧ ВходящиеСобственныеТовары строками остатков Transfer API (mode=combined по умолчанию).
|
||||
//
|
||||
Процедура ЗаполнитьВходящиеДанныеИзОтветаОстатков(ОтветAPI, ОчищатьПередЗаполнением = Истина) Экспорт
|
||||
Процедура ЗаполнитьВходящиеСобственныеТоварыИзОтветаОстатков(ОтветAPI, ОчищатьПередЗаполнением = Истина) Экспорт
|
||||
|
||||
Если ОчищатьПередЗаполнением Тогда
|
||||
ВходящиеДанные.Очистить();
|
||||
ВходящиеСобственныеТовары.Очистить();
|
||||
КонецЕсли;
|
||||
|
||||
СтрокиОтвета = Неопределено;
|
||||
@@ -20,14 +20,46 @@
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого СтрокаAPI Из СтрокиОтвета Цикл
|
||||
НовСтр = ВходящиеДанные.Добавить();
|
||||
НовСтр = ВходящиеСобственныеТовары.Добавить();
|
||||
ЗаполнитьСтрокуВходящихДанныхИзAPI(НовСтр, СтрокаAPI);
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Сопоставление строк ТЧ с НСИ целевой ИБ + создание серий-заглушек при необходимости.
|
||||
// Алгоритм — по логике scripts/generate_balances_apply_bsl.py (артикул/GUID/код/имя; серии Перенос_*).
|
||||
// Заполняет ТЧ ВходящиеКомиссионныеТовары остатками mode=commission (переданные 2.5).
|
||||
//
|
||||
Процедура ЗаполнитьВходящиеКомиссионныеТоварыИзОтветаОстатков(ОтветAPI, ОчищатьПередЗаполнением = Истина) Экспорт
|
||||
|
||||
Если ОчищатьПередЗаполнением Тогда
|
||||
ВходящиеКомиссионныеТовары.Очистить();
|
||||
КонецЕсли;
|
||||
|
||||
СтрокиОтвета = Неопределено;
|
||||
Если ТипЗнч(ОтветAPI) = Тип("Структура") Или ТипЗнч(ОтветAPI) = Тип("Соответствие") Тогда
|
||||
СтрокиОтвета = ЗначениеСвойства(ОтветAPI, "rows", Неопределено);
|
||||
КонецЕсли;
|
||||
Если ТипЗнч(СтрокиОтвета) <> Тип("Массив") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Для Каждого СтрокаAPI Из СтрокиОтвета Цикл
|
||||
НовСтр = ВходящиеКомиссионныеТовары.Добавить();
|
||||
ЗаполнитьСтрокуВходящихДанныхИзAPI(НовСтр, СтрокаAPI);
|
||||
НовСтр.Количество = ЧислоИзЗначения(ЗначениеСвойства(СтрокаAPI, "qty_commission",
|
||||
ЗначениеСвойства(СтрокаAPI, "qty_org", НовСтр.Количество)), 0);
|
||||
НовСтр.КоличествоОрганизации = НовСтр.Количество;
|
||||
НовСтр.СоглашениеИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "agreement_guid", ""));
|
||||
НовСтр.СоглашениеНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "agreement_name", "")));
|
||||
НовСтр.ПартнерИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "partner_guid", ""));
|
||||
НовСтр.ПартнерНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "partner_name", "")));
|
||||
НовСтр.КонтрагентИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "contractor_guid", ""));
|
||||
НовСтр.КонтрагентНаименование = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "contractor_name", "")));
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Сопоставление строк ТЧ с НСИ целевой ИБ.
|
||||
// Серии создаются только если не найдены; заглушки Перенос_* — только при СоздаватьЗаглушкиСерий.
|
||||
//
|
||||
// Параметры:
|
||||
// РежимТест - Булево - Истина: только поиск, без создания серий/характеристик
|
||||
@@ -35,7 +67,7 @@
|
||||
// Возвращаемое значение:
|
||||
// Структура - Сопоставлено, НеСопоставлено, СозданоСерий, СозданоХарактеристик
|
||||
//
|
||||
Функция СопоставитьВходящиеДанные(РежимТест = Истина) Экспорт
|
||||
Функция СопоставитьВходящиеСобственныеТовары(РежимТест = Истина) Экспорт
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("Сопоставлено", 0);
|
||||
@@ -51,7 +83,7 @@
|
||||
КэшТребуетсяСерия = Новый Соответствие;
|
||||
КэшСерий = Новый Соответствие;
|
||||
|
||||
Для Каждого СтрТ Из ВходящиеДанные Цикл
|
||||
Для Каждого СтрТ Из ВходящиеСобственныеТовары Цикл
|
||||
|
||||
СтрТ.Сопоставлено = Ложь;
|
||||
СтрТ.КомментарийСопоставления = "";
|
||||
@@ -83,24 +115,18 @@
|
||||
Сер = НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
|
||||
КэшТребуетсяСерия, КэшСерий, Результат);
|
||||
СтрТ.СерияСсылка = Сер;
|
||||
|
||||
Если ЗначениеЗаполнено(СтрТ.ГТД) Тогда
|
||||
КодГТД = СокрЛП(СтрТ.ГТД);
|
||||
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоКоду(КодГТД);
|
||||
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоРеквизиту("РегистрационныйНомер", КодГТД);
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоНаименованию(КодГТД, Истина);
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||
СсылкаГТД = СсылкаПоUUID(Справочники.НомераГТД, СтрТ.ГТДИдентификатор);
|
||||
Если ЗначениеЗаполнено(СсылкаГТД) И ОбщегоНазначения.СсылкаСуществует(СсылкаГТД) Тогда
|
||||
СтрТ.НомерГТДСсылка = СсылкаГТД;
|
||||
КонецЕсли;
|
||||
Если НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия) И Не ЗначениеЗаполнено(Сер) Тогда
|
||||
Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Или СтрТ.КомментарийСопоставления = "OK" Тогда
|
||||
СтрТ.КомментарийСопоставления = "Серия не найдена"
|
||||
+ ?(РежимТест, " (тест)", "")
|
||||
+ ?(СоздаватьЗаглушкиСерий, "", "; заглушки выключены");
|
||||
КонецЕсли;
|
||||
Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ЗаполнитьНомерГТДСтроки(СтрТ);
|
||||
|
||||
СтрТ.Сопоставлено = Истина;
|
||||
Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Тогда
|
||||
СтрТ.КомментарийСопоставления = "OK";
|
||||
@@ -113,21 +139,116 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создание документов ВводОстатковТоваров по сопоставленным строкам (1 документ на склад).
|
||||
// Сопоставление комиссионных строк (переданные 2.5): соглашение, партнёр, контрагент, договор.
|
||||
// Склад не обязателен. Серии — только существующие или созданные из исходных данных.
|
||||
//
|
||||
Функция СопоставитьВходящиеКомиссионныеТовары(РежимТест = Истина) Экспорт
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("Сопоставлено", 0);
|
||||
Результат.Вставить("НеСопоставлено", 0);
|
||||
Результат.Вставить("СозданоСерий", 0);
|
||||
Результат.Вставить("СозданоХарактеристик", 0);
|
||||
|
||||
СуффиксДатыСер = Формат(?(ЗначениеЗаполнено(ДатаДокументовВвода), ДатаДокументовВвода, ДатаОстатков), "ДФ=yyyyMMdd");
|
||||
Если ПустаяСтрока(СуффиксДатыСер) Тогда
|
||||
СуффиксДатыСер = Формат(ТекущаяДатаСеанса(), "ДФ=yyyyMMdd");
|
||||
КонецЕсли;
|
||||
|
||||
КэшТребуетсяСерия = Новый Соответствие;
|
||||
КэшСерий = Новый Соответствие;
|
||||
|
||||
Для Каждого СтрТ Из ВходящиеКомиссионныеТовары Цикл
|
||||
|
||||
СтрТ.Сопоставлено = Ложь;
|
||||
СтрТ.КомментарийСопоставления = "";
|
||||
СтрТ.Номенклатура = Справочники.Номенклатура.ПустаяСсылка();
|
||||
СтрТ.Склад = Справочники.Склады.ПустаяСсылка();
|
||||
СтрТ.Характеристика = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка();
|
||||
СтрТ.СерияСсылка = Справочники.СерииНоменклатуры.ПустаяСсылка();
|
||||
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.ПустаяСсылка();
|
||||
СтрТ.Соглашение = Справочники.СоглашенияСКлиентами.ПустаяСсылка();
|
||||
СтрТ.Партнер = Справочники.Партнеры.ПустаяСсылка();
|
||||
СтрТ.Контрагент = Справочники.Контрагенты.ПустаяСсылка();
|
||||
СтрТ.Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
|
||||
|
||||
Ном = НайтиНоменклатуруСтроки(СтрТ);
|
||||
Если Не ЗначениеЗаполнено(Ном) Тогда
|
||||
СтрТ.КомментарийСопоставления = "Номенклатура не найдена";
|
||||
Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
СтрТ.Номенклатура = Ном;
|
||||
|
||||
СкладЦель = НайтиСкладСтроки(СтрТ);
|
||||
Если ЗначениеЗаполнено(СкладЦель) Тогда
|
||||
СтрТ.Склад = СкладЦель;
|
||||
КонецЕсли;
|
||||
|
||||
Согл = НайтиСоглашениеСтроки(СтрТ);
|
||||
Если Не ЗначениеЗаполнено(Согл) Тогда
|
||||
СтрТ.КомментарийСопоставления = "Соглашение не найдено";
|
||||
Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
СтрТ.Соглашение = Согл;
|
||||
|
||||
ЗаполнитьПартнераКонтрагентаДоговорСтроки(СтрТ, Согл);
|
||||
Если Не ЗначениеЗаполнено(СтрТ.Партнер) Тогда
|
||||
СтрТ.КомментарийСопоставления = "Партнер / комиссионер не найден";
|
||||
Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Хар = НайтиИлиСоздатьХарактеристику(СтрТ, Ном, РежимТест, Результат);
|
||||
СтрТ.Характеристика = Хар;
|
||||
|
||||
Сер = НайтиИлиСоздатьСерию(СтрТ, Ном, СтрТ.Склад, СуффиксДатыСер, РежимТест,
|
||||
КэшТребуетсяСерия, КэшСерий, Результат);
|
||||
СтрТ.СерияСсылка = Сер;
|
||||
Если НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия) И Не ЗначениеЗаполнено(Сер) Тогда
|
||||
Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Или СтрТ.КомментарийСопоставления = "OK" Тогда
|
||||
СтрТ.КомментарийСопоставления = "Серия не найдена"
|
||||
+ ?(РежимТест, " (тест)", "")
|
||||
+ ?(СоздаватьЗаглушкиСерий, "", "; заглушки выключены");
|
||||
КонецЕсли;
|
||||
Результат.НеСопоставлено = Результат.НеСопоставлено + 1;
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
ЗаполнитьНомерГТДСтроки(СтрТ);
|
||||
|
||||
СтрТ.Сопоставлено = Истина;
|
||||
Если ПустаяСтрока(СтрТ.КомментарийСопоставления) Тогда
|
||||
СтрТ.КомментарийСопоставления = "OK";
|
||||
КонецЕсли;
|
||||
Результат.Сопоставлено = Результат.Сопоставлено + 1;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создание документов ВводОстатковТоваров по сопоставленным строкам.
|
||||
// Собственные — 1 документ на склад; комиссия 2.5 — 1 документ на соглашение+партнёра (без склада).
|
||||
// Себестоимость не заполняется (нет данных в API) — только оперативный учёт количества.
|
||||
//
|
||||
// Параметры:
|
||||
// РежимТест - Булево - только подсчёт без записи
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - СозданоДокументов, УдаленоДокументов, СтрокВДокументах, Пропущено, Ошибок, ТекстТега
|
||||
// Структура - СозданоДокументов, СозданоДокументовКомиссии, УдаленоДокументов,
|
||||
// СтрокВДокументах, СтрокКомиссии, Пропущено, Ошибок, ТекстТега
|
||||
//
|
||||
Функция СоздатьДокументыВводаОстатков(РежимТест = Истина) Экспорт
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("СозданоДокументов", 0);
|
||||
Результат.Вставить("СозданоДокументовКомиссии", 0);
|
||||
Результат.Вставить("УдаленоДокументов", 0);
|
||||
Результат.Вставить("СтрокВДокументах", 0);
|
||||
Результат.Вставить("СтрокКомиссии", 0);
|
||||
Результат.Вставить("Пропущено", 0);
|
||||
Результат.Вставить("Ошибок", 0);
|
||||
Результат.Вставить("ТекстТега", "");
|
||||
@@ -142,12 +263,13 @@
|
||||
ТекстТега = ТегКомментарияДокументов();
|
||||
Результат.ТекстТега = ТекстТега;
|
||||
|
||||
СтрокиПоСкладу = СгруппироватьСопоставленныеСтрокиПоСкладу();
|
||||
Если СтрокиПоСкладу.Количество() = 0 Тогда
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
СозданныеДокументы.Очистить();
|
||||
|
||||
Если ПерезаписатьДокументы И Не РежимТест Тогда
|
||||
СтрокиПоСкладу = СгруппироватьСопоставленныеСтрокиПоСкладу();
|
||||
СтрокиКомиссии = СгруппироватьСопоставленныеСтрокиКомиссии();
|
||||
|
||||
Если ПерезаписатьДокументы И Не РежимТест
|
||||
И (СтрокиПоСкладу.Количество() > 0 Или СтрокиКомиссии.Количество() > 0) Тогда
|
||||
Результат.УдаленоДокументов = УдалитьПрежниеДокументыВолны(ТекстТега);
|
||||
КонецЕсли;
|
||||
|
||||
@@ -163,6 +285,8 @@
|
||||
Если РежимТест Тогда
|
||||
Результат.СозданоДокументов = Результат.СозданоДокументов + 1;
|
||||
Результат.СтрокВДокументах = Результат.СтрокВДокументах + СтрокиСклада.Количество();
|
||||
ДобавитьВСозданныеДокументы(Неопределено, "Собственные", СкладДок,
|
||||
Неопределено, Неопределено, СтрокиСклада, ТекстТега + ", склад " + СокрЛП(Строка(СкладДок)), Истина);
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -174,6 +298,43 @@
|
||||
СтрТ.ДокументВвода = Док.Ссылка;
|
||||
СтрТ.ЗагруженоВДокумент = Истина;
|
||||
КонецЦикла;
|
||||
ДобавитьВСозданныеДокументы(Док.Ссылка, "Собственные", СкладДок,
|
||||
Неопределено, Неопределено, СтрокиСклада, Док.Комментарий, Ложь);
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
Результат.Ошибок = Результат.Ошибок + 1;
|
||||
КонецПопытки;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Для Каждого ЭлементГруппы Из СтрокиКомиссии Цикл
|
||||
|
||||
СтрокиГруппы = ЭлементГруппы.Значение;
|
||||
Если СтрокиГруппы.Количество() = 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Попытка
|
||||
Если РежимТест Тогда
|
||||
Результат.СозданоДокументовКомиссии = Результат.СозданоДокументовКомиссии + 1;
|
||||
Результат.СтрокКомиссии = Результат.СтрокКомиссии + СтрокиГруппы.Количество();
|
||||
Первая = СтрокиГруппы[0];
|
||||
ДобавитьВСозданныеДокументы(Неопределено, "Комиссия 2.5", Неопределено,
|
||||
Первая.Соглашение, Первая.Партнер, СтрокиГруппы,
|
||||
ТекстТега + ", комиссия 2.5, " + СокрЛП(Строка(Первая.Партнер)), Истина);
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
|
||||
Док = СоздатьДокументКомиссии(СтрокиГруппы, ТекстТега);
|
||||
Если ЗначениеЗаполнено(Док) Тогда
|
||||
Результат.СозданоДокументовКомиссии = Результат.СозданоДокументовКомиссии + 1;
|
||||
Результат.СтрокКомиссии = Результат.СтрокКомиссии + Док.Товары.Количество();
|
||||
Для Каждого СтрТ Из СтрокиГруппы Цикл
|
||||
СтрТ.ДокументВвода = Док.Ссылка;
|
||||
СтрТ.ЗагруженоВДокумент = Истина;
|
||||
КонецЦикла;
|
||||
ДобавитьВСозданныеДокументы(Док.Ссылка, "Комиссия 2.5", Неопределено,
|
||||
Док.СоглашениеСКомиссионером, Док.Партнер, СтрокиГруппы, Док.Комментарий, Ложь);
|
||||
КонецЕсли;
|
||||
Исключение
|
||||
Результат.Ошибок = Результат.Ошибок + 1;
|
||||
@@ -189,6 +350,33 @@
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
|
||||
Процедура ДобавитьВСозданныеДокументы(ДокументСсылка, ВидОстатков, Склад, Соглашение, Партнер, СтрокиТоваров, Комментарий, ЭтоТест)
|
||||
|
||||
НовСтр = СозданныеДокументы.Добавить();
|
||||
Если ЗначениеЗаполнено(ДокументСсылка) Тогда
|
||||
НовСтр.Документ = ДокументСсылка;
|
||||
КонецЕсли;
|
||||
НовСтр.ВидОстатков = ВидОстатков;
|
||||
Если ЗначениеЗаполнено(Склад) Тогда
|
||||
НовСтр.Склад = Склад;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(Соглашение) Тогда
|
||||
НовСтр.Соглашение = Соглашение;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(Партнер) Тогда
|
||||
НовСтр.Партнер = Партнер;
|
||||
КонецЕсли;
|
||||
НовСтр.КоличествоСтрок = СтрокиТоваров.Количество();
|
||||
Колво = 0;
|
||||
Для Каждого СтрТ Из СтрокиТоваров Цикл
|
||||
Колво = Колво + СтрТ.Количество;
|
||||
КонецЦикла;
|
||||
НовСтр.КоличествоТоваров = Колво;
|
||||
НовСтр.Комментарий = Комментарий;
|
||||
НовСтр.ЭтоТест = ЭтоТест;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция ТегКомментарияДокументов()
|
||||
|
||||
Суффикс = Формат(ДатаДокументовВвода, "ДФ=yyyyMMdd");
|
||||
@@ -202,7 +390,7 @@
|
||||
Функция СгруппироватьСопоставленныеСтрокиПоСкладу()
|
||||
|
||||
Группы = Новый Соответствие;
|
||||
Для Каждого СтрТ Из ВходящиеДанные Цикл
|
||||
Для Каждого СтрТ Из ВходящиеСобственныеТовары Цикл
|
||||
Если Не СтрТ.Сопоставлено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
@@ -223,7 +411,7 @@
|
||||
|
||||
// Переключить ключи на ссылки складов для удобства обхода.
|
||||
Результат = Новый Соответствие;
|
||||
Для Каждого СтрТ Из ВходящиеДанные Цикл
|
||||
Для Каждого СтрТ Из ВходящиеСобственныеТовары Цикл
|
||||
Если Не СтрТ.Сопоставлено Или Не ЗначениеЗаполнено(СтрТ.Склад) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
@@ -237,6 +425,33 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СгруппироватьСопоставленныеСтрокиКомиссии()
|
||||
|
||||
Группы = Новый Соответствие;
|
||||
Для Каждого СтрТ Из ВходящиеКомиссионныеТовары Цикл
|
||||
Если Не СтрТ.Сопоставлено Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(СтрТ.Соглашение) Или Не ЗначениеЗаполнено(СтрТ.Номенклатура) Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
Если СтрТ.Количество <= 0 Тогда
|
||||
Продолжить;
|
||||
КонецЕсли;
|
||||
КлючГруппы = Строка(СтрТ.Соглашение.УникальныйИдентификатор())
|
||||
+ "|" + Строка(СтрТ.Партнер.УникальныйИдентификатор())
|
||||
+ "|" + Строка(СтрТ.Договор.УникальныйИдентификатор());
|
||||
СтрокиГруппы = Группы.Получить(КлючГруппы);
|
||||
Если СтрокиГруппы = Неопределено Тогда
|
||||
СтрокиГруппы = Новый Массив;
|
||||
Группы.Вставить(КлючГруппы, СтрокиГруппы);
|
||||
КонецЕсли;
|
||||
СтрокиГруппы.Добавить(СтрТ);
|
||||
КонецЦикла;
|
||||
Возврат Группы;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УдалитьПрежниеДокументыВолны(ТекстТега)
|
||||
|
||||
Удалено = 0;
|
||||
@@ -251,7 +466,9 @@
|
||||
| И НЕ Ввод.Проведен
|
||||
| И Ввод.Организация = &Организация
|
||||
| И Ввод.Комментарий ПОДОБНО &Тег
|
||||
| И Ввод.ХозяйственнаяОперация = ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВводОстатковСобственныхТоваров)";
|
||||
| И Ввод.ХозяйственнаяОперация В (
|
||||
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВводОстатковСобственныхТоваров),
|
||||
| ЗНАЧЕНИЕ(Перечисление.ХозяйственныеОперации.ВводОстатковТоваровПереданныхНаКомиссию2_5))";
|
||||
Запрос.УстановитьПараметр("Организация", Организация);
|
||||
Запрос.УстановитьПараметр("Тег", "%" + ТекстТега + "%");
|
||||
|
||||
@@ -301,29 +518,7 @@
|
||||
КонецПопытки;
|
||||
|
||||
Для Каждого СтрТ Из СтрокиСклада Цикл
|
||||
НовСтр = Док.Товары.Добавить();
|
||||
НовСтр.Номенклатура = СтрТ.Номенклатура;
|
||||
НовСтр.Характеристика = СтрТ.Характеристика;
|
||||
НовСтр.Серия = СтрТ.СерияСсылка;
|
||||
НовСтр.Количество = СтрТ.Количество;
|
||||
НовСтр.КоличествоУпаковок = СтрТ.Количество;
|
||||
НовСтр.Цена = 0;
|
||||
НовСтр.Сумма = 0;
|
||||
Попытка
|
||||
НовСтр.СтавкаНДС = СтрТ.Номенклатура.СтавкаНДС;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
Если ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||
НовСтр.НомерГТД = СтрТ.НомерГТДСсылка;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(СтрТ.СерияСсылка) Тогда
|
||||
СтрСер = Док.Серии.Добавить();
|
||||
СтрСер.Номенклатура = НовСтр.Номенклатура;
|
||||
СтрСер.Характеристика = НовСтр.Характеристика;
|
||||
СтрСер.Серия = СтрТ.СерияСсылка;
|
||||
СтрСер.Количество = НовСтр.Количество;
|
||||
СтрСер.КоличествоУпаковок = НовСтр.Количество;
|
||||
КонецЕсли;
|
||||
ДобавитьСтрокуТоваровДокументаВвода(Док, СтрТ);
|
||||
КонецЦикла;
|
||||
|
||||
Если Док.Товары.Количество() = 0 Тогда
|
||||
@@ -343,6 +538,86 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьДокументКомиссии(СтрокиГруппы, ТекстТега)
|
||||
|
||||
Первая = СтрокиГруппы[0];
|
||||
Док = Документы.ВводОстатковТоваров.СоздатьДокумент();
|
||||
Док.Дата = ДатаДокументовВвода;
|
||||
Док.Организация = Организация;
|
||||
Док.ХозяйственнаяОперация = Перечисления.ХозяйственныеОперации.ВводОстатковТоваровПереданныхНаКомиссию2_5;
|
||||
Док.СоглашениеСКомиссионером = Первая.Соглашение;
|
||||
Док.Партнер = Первая.Партнер;
|
||||
Док.Контрагент = Первая.Контрагент;
|
||||
Док.Договор = Первая.Договор;
|
||||
Док.Комментарий = ТекстТега + ", комиссия 2.5, " + СокрЛП(Строка(Первая.Партнер));
|
||||
Док.ОтражатьВОперативномУчете = Истина;
|
||||
Док.ОтражатьСебестоимость = Ложь;
|
||||
Док.ЦенаВключаетНДС = Ложь;
|
||||
|
||||
Попытка
|
||||
Док.Валюта = ЗначениеНастроекПовтИсп.ВалютаРегламентированногоУчетаОрганизации(Организация);
|
||||
Исключение
|
||||
Док.Валюта = Константы.ВалютаРегламентированногоУчета.Получить();
|
||||
КонецПопытки;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Док.НалогообложениеНДС) Тогда
|
||||
Док.НалогообложениеНДС = Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяНДС;
|
||||
КонецЕсли;
|
||||
Попытка
|
||||
ПараметрыНДС = Документы.ВводОстатковТоваров.ИнициализироватьПараметрыВидовДеятельностиНДС(Док);
|
||||
УчетНДСУП.ЗаполнитьВидДеятельностиНДС(Док.ВидДеятельностиНДС, ПараметрыНДС);
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
|
||||
Для Каждого СтрТ Из СтрокиГруппы Цикл
|
||||
ДобавитьСтрокуТоваровДокументаВвода(Док, СтрТ);
|
||||
КонецЦикла;
|
||||
|
||||
Если Док.Товары.Количество() = 0 Тогда
|
||||
Возврат Документы.ВводОстатковТоваров.ПустаяСсылка();
|
||||
КонецЕсли;
|
||||
|
||||
ОбщегоНазначенияУТ.ЗаполнитьИдентификаторыДокумента(Док, "Товары");
|
||||
Попытка
|
||||
ПараметрыУказанияСерий = НоменклатураСервер.ПараметрыУказанияСерий(Док, Документы.ВводОстатковТоваров);
|
||||
НоменклатураСервер.ЗаполнитьСтатусыУказанияСерий(Док, ПараметрыУказанияСерий);
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
|
||||
Док.ОбменДанными.Загрузка = Ложь;
|
||||
Док.Записать(РежимЗаписиДокумента.Запись);
|
||||
Возврат Док;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ДобавитьСтрокуТоваровДокументаВвода(Док, СтрТ)
|
||||
|
||||
НовСтр = Док.Товары.Добавить();
|
||||
НовСтр.Номенклатура = СтрТ.Номенклатура;
|
||||
НовСтр.Характеристика = СтрТ.Характеристика;
|
||||
НовСтр.Серия = СтрТ.СерияСсылка;
|
||||
НовСтр.Количество = СтрТ.Количество;
|
||||
НовСтр.КоличествоУпаковок = СтрТ.Количество;
|
||||
НовСтр.Цена = 0;
|
||||
НовСтр.Сумма = 0;
|
||||
Попытка
|
||||
НовСтр.СтавкаНДС = СтрТ.Номенклатура.СтавкаНДС;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
Если ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||
НовСтр.НомерГТД = СтрТ.НомерГТДСсылка;
|
||||
КонецЕсли;
|
||||
Если ЗначениеЗаполнено(СтрТ.СерияСсылка) Тогда
|
||||
СтрСер = Док.Серии.Добавить();
|
||||
СтрСер.Номенклатура = НовСтр.Номенклатура;
|
||||
СтрСер.Характеристика = НовСтр.Характеристика;
|
||||
СтрСер.Серия = СтрТ.СерияСсылка;
|
||||
СтрСер.Количество = НовСтр.Количество;
|
||||
СтрСер.КоличествоУпаковок = НовСтр.Количество;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура ЗаполнитьСтрокуВходящихДанныхИзAPI(НовСтр, СтрокаAPI)
|
||||
|
||||
НовСтр.НоменклатураИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "nomenclature_guid", ""));
|
||||
@@ -364,6 +639,10 @@
|
||||
|
||||
НовСтр.СерияИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "series_guid", ""));
|
||||
НовСтр.Серия = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_name", "")));
|
||||
НовСтр.СерияНомер = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "series_number", "")));
|
||||
Если ПустаяСтрока(НовСтр.Серия) И Не ПустаяСтрока(НовСтр.СерияНомер) Тогда
|
||||
НовСтр.Серия = НовСтр.СерияНомер;
|
||||
КонецЕсли;
|
||||
|
||||
НовСтр.ГТДИдентификатор = UUIDИзСтроки(ЗначениеСвойства(СтрокаAPI, "gtd_guid", ""));
|
||||
НовСтр.ГТД = СокрЛП(Строка(ЗначениеСвойства(СтрокаAPI, "gtd_name", "")));
|
||||
@@ -492,44 +771,169 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия)
|
||||
|
||||
КлючТребСер = Строка(Ном.УникальныйИдентификатор());
|
||||
ТребуетсяСерия = КэшТребуетсяСерия.Получить(КлючТребСер);
|
||||
Если ТребуетсяСерия <> Неопределено Тогда
|
||||
Возврат ТребуетсяСерия;
|
||||
КонецЕсли;
|
||||
ТребуетсяСерия = Ложь;
|
||||
Попытка
|
||||
ТребуетсяСерия = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры.ИспользоватьСерии") = Истина;
|
||||
Исключение
|
||||
Попытка
|
||||
ТребуетсяСерия = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры").ИспользоватьСерии;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
КэшТребуетсяСерия.Вставить(КлючТребСер, ТребуетсяСерия);
|
||||
Возврат ТребуетсяСерия;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьНомерГТДСтроки(СтрТ)
|
||||
|
||||
Если Не ЗначениеЗаполнено(СтрТ.ГТД) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
КодГТД = СокрЛП(СтрТ.ГТД);
|
||||
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоКоду(КодГТД);
|
||||
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоРеквизиту("РегистрационныйНомер", КодГТД);
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||
СтрТ.НомерГТДСсылка = Справочники.НомераГТД.НайтиПоНаименованию(КодГТД, Истина);
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(СтрТ.НомерГТДСсылка) Тогда
|
||||
СсылкаГТД = СсылкаПоUUID(Справочники.НомераГТД, СтрТ.ГТДИдентификатор);
|
||||
Если ЗначениеЗаполнено(СсылкаГТД) И ОбщегоНазначения.СсылкаСуществует(СсылкаГТД) Тогда
|
||||
СтрТ.НомерГТДСсылка = СсылкаГТД;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НайтиСоглашениеСтроки(СтрТ)
|
||||
|
||||
Согл = СсылкаПоUUID(Справочники.СоглашенияСКлиентами, СтрТ.СоглашениеИдентификатор);
|
||||
Если ЗначениеЗаполнено(Согл) И ОбщегоНазначения.СсылкаСуществует(Согл) Тогда
|
||||
Возврат Согл;
|
||||
КонецЕсли;
|
||||
ИмяСогл = СокрЛП(СтрТ.СоглашениеНаименование);
|
||||
Если ЗначениеЗаполнено(ИмяСогл) Тогда
|
||||
Возврат Справочники.СоглашенияСКлиентами.НайтиПоНаименованию(ИмяСогл, Истина);
|
||||
КонецЕсли;
|
||||
Возврат Справочники.СоглашенияСКлиентами.ПустаяСсылка();
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура ЗаполнитьПартнераКонтрагентаДоговорСтроки(СтрТ, Соглашение)
|
||||
|
||||
Партнер = СсылкаПоUUID(Справочники.Партнеры, СтрТ.ПартнерИдентификатор);
|
||||
Если Не (ЗначениеЗаполнено(Партнер) И ОбщегоНазначения.СсылкаСуществует(Партнер)) Тогда
|
||||
Партнер = Справочники.Партнеры.ПустаяСсылка();
|
||||
ИмяПарт = СокрЛП(СтрТ.ПартнерНаименование);
|
||||
Если ЗначениеЗаполнено(ИмяПарт) Тогда
|
||||
Партнер = Справочники.Партнеры.НайтиПоНаименованию(ИмяПарт, Истина);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Партнер) И ЗначениеЗаполнено(Соглашение) Тогда
|
||||
Попытка
|
||||
Партнер = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "Партнер");
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
СтрТ.Партнер = Партнер;
|
||||
|
||||
Контр = СсылкаПоUUID(Справочники.Контрагенты, СтрТ.КонтрагентИдентификатор);
|
||||
Если Не (ЗначениеЗаполнено(Контр) И ОбщегоНазначения.СсылкаСуществует(Контр)) Тогда
|
||||
Контр = Справочники.Контрагенты.ПустаяСсылка();
|
||||
ИмяКонтр = СокрЛП(СтрТ.КонтрагентНаименование);
|
||||
Если ЗначениеЗаполнено(ИмяКонтр) Тогда
|
||||
Контр = Справочники.Контрагенты.НайтиПоНаименованию(ИмяКонтр, Истина);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Контр) И ЗначениеЗаполнено(Соглашение) Тогда
|
||||
Попытка
|
||||
Контр = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "Контрагент");
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Контр) И ЗначениеЗаполнено(Партнер) Тогда
|
||||
Попытка
|
||||
Контр = ПартнерыИКонтрагенты.ПолучитьКонтрагентаПартнераПоУмолчанию(Партнер);
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Контр) И ЗначениеЗаполнено(Партнер) Тогда
|
||||
ЗапросК = Новый Запрос(
|
||||
"ВЫБРАТЬ ПЕРВЫЕ 1
|
||||
| К.Ссылка КАК Ссылка
|
||||
|ИЗ
|
||||
| Справочник.Контрагенты КАК К
|
||||
|ГДЕ
|
||||
| К.Партнер = &Партнер
|
||||
| И НЕ К.ПометкаУдаления");
|
||||
ЗапросК.УстановитьПараметр("Партнер", Партнер);
|
||||
ВыбК = ЗапросК.Выполнить().Выбрать();
|
||||
Если ВыбК.Следующий() Тогда
|
||||
Контр = ВыбК.Ссылка;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
СтрТ.Контрагент = Контр;
|
||||
|
||||
Договор = СсылкаПоUUID(Справочники.ДоговорыКонтрагентов, СтрТ.ДоговорИдентификатор);
|
||||
Если Не (ЗначениеЗаполнено(Договор) И ОбщегоНазначения.СсылкаСуществует(Договор)) Тогда
|
||||
Договор = Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
|
||||
ИмяДог = СокрЛП(СтрТ.ДоговорНаименование);
|
||||
Если ЗначениеЗаполнено(ИмяДог) Тогда
|
||||
Договор = Справочники.ДоговорыКонтрагентов.НайтиПоНаименованию(ИмяДог, Истина);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Договор) И ЗначениеЗаполнено(Соглашение) Тогда
|
||||
Попытка
|
||||
Договор = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Соглашение, "Договор");
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецЕсли;
|
||||
СтрТ.Договор = Договор;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Функция НайтиИлиСоздатьСерию(СтрТ, Ном, СкладЦель, СуффиксДатыСер, РежимТест,
|
||||
КэшТребуетсяСерия, КэшСерий, Результат)
|
||||
|
||||
Сер = Справочники.СерииНоменклатуры.ПустаяСсылка();
|
||||
ВидНом = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры");
|
||||
|
||||
КлючТребСер = Строка(Ном.УникальныйИдентификатор());
|
||||
ТребуетсяСерия = КэшТребуетсяСерия.Получить(КлючТребСер);
|
||||
Если ТребуетсяСерия = Неопределено Тогда
|
||||
ТребуетсяСерия = Ложь;
|
||||
Попытка
|
||||
ТребуетсяСерия = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ном, "ВидНоменклатуры.ИспользоватьСерии") = Истина;
|
||||
Исключение
|
||||
Попытка
|
||||
ТребуетсяСерия = ВидНом.ИспользоватьСерии;
|
||||
Исключение
|
||||
КонецПопытки;
|
||||
КонецПопытки;
|
||||
КэшТребуетсяСерия.Вставить(КлючТребСер, ТребуетсяСерия);
|
||||
КонецЕсли;
|
||||
ТребуетсяСерия = НоменклатураИспользуетСерии(Ном, КэшТребуетсяСерия);
|
||||
|
||||
ИмяСерии = СокрЛП(СтрТ.Серия);
|
||||
Если Не ЗначениеЗаполнено(ИмяСерии) И ТребуетсяСерия Тогда
|
||||
КодСклЗагл = "";
|
||||
Попытка
|
||||
КодСклЗагл = СокрЛП(Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СкладЦель, "Код")));
|
||||
Исключение
|
||||
КодСклЗагл = "";
|
||||
КонецПопытки;
|
||||
Если ПустаяСтрока(КодСклЗагл) Тогда
|
||||
КодСклЗагл = Лев(СтрЗаменить(Строка(СкладЦель.УникальныйИдентификатор()), "-", ""), 8);
|
||||
НомерСерии = СокрЛП(СтрТ.СерияНомер);
|
||||
ЭтоЗаглушка = Ложь;
|
||||
|
||||
Если Не ЗначениеЗаполнено(ИмяСерии) И Не ЗначениеЗаполнено(НомерСерии) Тогда
|
||||
Если Не ТребуетсяСерия Тогда
|
||||
Возврат Сер;
|
||||
КонецЕсли;
|
||||
Если Не СоздаватьЗаглушкиСерий Тогда
|
||||
СтрТ.КомментарийСопоставления = "Серия обязательна, в источнике пустая (заглушки выключены)";
|
||||
Возврат Сер;
|
||||
КонецЕсли;
|
||||
КодСклЗагл = "КОМ";
|
||||
Если ЗначениеЗаполнено(СкладЦель) Тогда
|
||||
Попытка
|
||||
КодСклЗагл = СокрЛП(Строка(ОбщегоНазначения.ЗначениеРеквизитаОбъекта(СкладЦель, "Код")));
|
||||
Исключение
|
||||
КодСклЗагл = "";
|
||||
КонецПопытки;
|
||||
Если ПустаяСтрока(КодСклЗагл) Тогда
|
||||
КодСклЗагл = Лев(СтрЗаменить(Строка(СкладЦель.УникальныйИдентификатор()), "-", ""), 8);
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
ИмяСерии = "Перенос_" + КодСклЗагл + "_" + СуффиксДатыСер;
|
||||
СтрТ.Серия = ИмяСерии;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ТребуетсяСерия И Не ЗначениеЗаполнено(ИмяСерии) Тогда
|
||||
Возврат Сер;
|
||||
ЭтоЗаглушка = Истина;
|
||||
КонецЕсли;
|
||||
|
||||
СсылкаПоГуид = СсылкаПоUUID(Справочники.СерииНоменклатуры, СтрТ.СерияИдентификатор);
|
||||
@@ -550,25 +954,34 @@
|
||||
ВидСер = ВидНом;
|
||||
КонецЕсли;
|
||||
|
||||
КлючКэшСер = Строка(ВидСер.УникальныйИдентификатор()) + "|" + ИмяСерии;
|
||||
КлючПоискаНомера = ?(ЗначениеЗаполнено(НомерСерии), НомерСерии, ИмяСерии);
|
||||
КлючКэшСер = Строка(ВидСер.УникальныйИдентификатор()) + "|" + ИмяСерии + "|" + КлючПоискаНомера;
|
||||
СерИзКэш = КэшСерий.Получить(КлючКэшСер);
|
||||
Если СерИзКэш <> Неопределено Тогда
|
||||
Возврат СерИзКэш;
|
||||
КонецЕсли;
|
||||
|
||||
Если ИспНомерСерии Тогда
|
||||
Сер = Справочники.СерииНоменклатуры.НайтиПоРеквизиту("Номер", ИмяСерии, , ВидСер);
|
||||
Если ИспНомерСерии И ЗначениеЗаполнено(КлючПоискаНомера) Тогда
|
||||
Сер = Справочники.СерииНоменклатуры.НайтиПоРеквизиту("Номер", КлючПоискаНомера, , ВидСер);
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Сер) Тогда
|
||||
Если Не ЗначениеЗаполнено(Сер) И ЗначениеЗаполнено(ИмяСерии) Тогда
|
||||
Сер = Справочники.СерииНоменклатуры.НайтиПоНаименованию(ИмяСерии, Истина, , ВидСер);
|
||||
КонецЕсли;
|
||||
Если Не ЗначениеЗаполнено(Сер) И ЗначениеЗаполнено(НомерСерии) И НомерСерии <> ИмяСерии Тогда
|
||||
Сер = Справочники.СерииНоменклатуры.НайтиПоНаименованию(НомерСерии, Истина, , ВидСер);
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Сер) И Не РежимТест И (ТребуетсяСерия Или ЗначениеЗаполнено(ИмяСерии)) Тогда
|
||||
МожноСоздать = Не РежимТест И ЗначениеЗаполнено(ИмяСерии);
|
||||
Если ЭтоЗаглушка Тогда
|
||||
МожноСоздать = МожноСоздать И СоздаватьЗаглушкиСерий;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ЗначениеЗаполнено(Сер) И МожноСоздать Тогда
|
||||
Попытка
|
||||
ОбСер = Справочники.СерииНоменклатуры.ПустойОбъект(ВидСер);
|
||||
Если ИспНомерСерии Тогда
|
||||
НомерСер = ИмяСерии;
|
||||
Если СтрНачинаетсяС(ИмяСерии, "Перенос_") Тогда
|
||||
НомерСер = КлючПоискаНомера;
|
||||
Если ЭтоЗаглушка И СтрНачинаетсяС(ИмяСерии, "Перенос_") Тогда
|
||||
НомерСер = Сред(ИмяСерии, СтрДлина("Перенос_") + 1);
|
||||
КонецЕсли;
|
||||
ОбСер.Номер = НомерСер;
|
||||
|
||||
Reference in New Issue
Block a user