Обмен — дозаполнение ВидЦены в строках ТЧ при получении (1.3.0.44, Д1.3).
ED 1.8 не передаёт ВидЦены/ВидЦеныПоставщика в XDTO; после отложенной обработки дозаполняем вид цены из соглашения без пересчёта цены и суммы. Refs: crm3-migration/-#8 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,6 +4,21 @@
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.44 (2026-07-21)
|
||||
|
||||
### Обмен — дозаполнение ВидЦены в строках ТЧ (Д1.3, вариант B)
|
||||
|
||||
Модуль: `МенеджерОбменаЧерезУниверсальныйФормат`.
|
||||
|
||||
ED 1.8 не передаёт `ВидЦены` / `ВидЦеныПоставщика` в строках табличных частей (XDTO-схема не меняется).
|
||||
|
||||
- `&После("ВыполнитьПроцедуруМодуляМенеджера")` — `РК_ВыполнитьПроцедуруМодуляМенеджера_ДозаполнитьВидЦены` для всех процедур `ОтложеннаяОбработка_*`.
|
||||
- Универсально обходит все ТЧ документа; для пустых `ВидЦены` — `ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(ПоляЗаполнения = "ВидЦены")`; для `ВидЦеныПоставщика` — `ЦеныПартнеровЗаполнениеСервер` с тем же ограничением полей.
|
||||
- Цена и сумма строк **не пересчитываются** (в отличие от `ЗаполнитьУсловияПродажПоСоглашению(Истина)`).
|
||||
- Только для узла **«Рабочая CRM3»** (`РК_ЭтоОбменС_Crm3Dev`).
|
||||
|
||||
---
|
||||
|
||||
## 1.3.0.43 (2026-07-21)
|
||||
|
||||
### Серии номенклатуры — подбор по владельцу вида и сроку
|
||||
|
||||
@@ -811,4 +811,164 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Д1.3: ED 1.8 не передаёт ВидЦены / ВидЦеныПоставщика в строках ТЧ (XDTO не меняем).
|
||||
// После типовой отложенной обработки дозаполняем вид цены из соглашения
|
||||
// без пересчёта Цена/Сумма (ПоляЗаполнения только вид цены).
|
||||
//
|
||||
&После("ВыполнитьПроцедуруМодуляМенеджера")
|
||||
Процедура РК_ВыполнитьПроцедуруМодуляМенеджера_ДозаполнитьВидЦены(ИмяПроцедуры, Параметры)
|
||||
|
||||
Если Не СтрНачинаетсяС(ИмяПроцедуры, "ОтложеннаяОбработка_") Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если Параметры = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Объект = Неопределено;
|
||||
Если Не Параметры.Свойство("Объект", Объект) Или Объект = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
КомпонентыОбмена = Неопределено;
|
||||
Параметры.Свойство("КомпонентыОбмена", КомпонентыОбмена);
|
||||
|
||||
Если Не РК_ЭтоОбменС_Crm3Dev(КомпонентыОбмена) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
РК_ДозаполнитьВидЦеныВДокументе(Объект);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Обходит все ТЧ документа; для реквизитов ВидЦены и ВидЦеныПоставщика вызывает дозаполнение.
|
||||
//
|
||||
// Параметры:
|
||||
// Объект - ДокументОбъект - загружаемый документ после отложенной обработки обмена.
|
||||
//
|
||||
Процедура РК_ДозаполнитьВидЦеныВДокументе(Объект) Экспорт
|
||||
|
||||
Если Объект = Неопределено Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
МетаОбъекта = Объект.Метаданные();
|
||||
|
||||
Для Каждого МетаТЧ Из МетаОбъекта.ТабличныеЧасти Цикл
|
||||
|
||||
Если МетаТЧ.Реквизиты.Найти("ВидЦены") <> Неопределено Тогда
|
||||
РК_ДозаполнитьВидЦеныВТабличнойЧасти(Объект, МетаТЧ.Имя, "ВидЦены");
|
||||
КонецЕсли;
|
||||
|
||||
Если МетаТЧ.Реквизиты.Найти("ВидЦеныПоставщика") <> Неопределено Тогда
|
||||
РК_ДозаполнитьВидЦеныВТабличнойЧасти(Объект, МетаТЧ.Имя, "ВидЦеныПоставщика");
|
||||
КонецЕсли;
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Дозаполняет пустой вид цены в одной табличной части, если есть строки без значения.
|
||||
//
|
||||
Процедура РК_ДозаполнитьВидЦеныВТабличнойЧасти(Объект, ИмяТЧ, ИмяПоляВидЦены)
|
||||
|
||||
ТабличнаяЧасть = Объект[ИмяТЧ];
|
||||
Если ТабличнаяЧасть.Количество() = 0 Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НужноЗаполнить = Ложь;
|
||||
Для Каждого СтрокаТЧ Из ТабличнаяЧасть Цикл
|
||||
Если Не ЗначениеЗаполнено(СтрокаТЧ[ИмяПоляВидЦены]) Тогда
|
||||
НужноЗаполнить = Истина;
|
||||
Прервать;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
Если Не НужноЗаполнить Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ИмяПоляВидЦены = "ВидЦены" Тогда
|
||||
РК_ЗаполнитьВидЦеныПродажиВТЧ(Объект, ТабличнаяЧасть);
|
||||
ИначеЕсли ИмяПоляВидЦены = "ВидЦеныПоставщика" Тогда
|
||||
РК_ЗаполнитьВидЦеныПоставщикаВТЧ(Объект, ТабличнаяЧасть);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура РК_ЗаполнитьВидЦеныПродажиВТЧ(Объект, ТабличнаяЧасть)
|
||||
|
||||
МетаОбъекта = Объект.Метаданные();
|
||||
Если МетаОбъекта.Реквизиты.Найти("Соглашение") = Неопределено
|
||||
Или Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыЗаполнения = Новый Структура;
|
||||
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "ВидЦены");
|
||||
РК_ДополнитьБазовыеПараметрыЗаполненияЦен(Объект, ПараметрыЗаполнения, Истина);
|
||||
|
||||
Попытка
|
||||
ЦеныПредприятияЗаполнениеСервер.ЗаполнитьЦены(
|
||||
ТабличнаяЧасть,, ПараметрыЗаполнения, Новый Структура);
|
||||
Исключение
|
||||
// Не блокируем загрузку пакета из-за вида цены.
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура РК_ЗаполнитьВидЦеныПоставщикаВТЧ(Объект, ТабличнаяЧасть)
|
||||
|
||||
МетаОбъекта = Объект.Метаданные();
|
||||
Если МетаОбъекта.Реквизиты.Найти("Соглашение") = Неопределено
|
||||
Или Не ЗначениеЗаполнено(Объект.Соглашение) Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыЗаполнения = ЦеныПартнеровЗаполнениеСервер.НовыйПараметрыЗаполненияЗаполнитьЦены();
|
||||
ПараметрыЗаполнения.Вставить("ПоляЗаполнения", "ВидЦеныПоставщика");
|
||||
РК_ДополнитьБазовыеПараметрыЗаполненияЦен(Объект, ПараметрыЗаполнения, Ложь);
|
||||
|
||||
Попытка
|
||||
ЦеныПартнеровЗаполнениеСервер.ЗаполнитьЦены(
|
||||
ТабличнаяЧасть, Неопределено, ПараметрыЗаполнения, Новый Структура);
|
||||
Исключение
|
||||
// Не блокируем загрузку пакета из-за вида цены.
|
||||
КонецПопытки;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Общие параметры для ЦеныПредприятияЗаполнениеСервер / ЦеныПартнеровЗаполнениеСервер.
|
||||
//
|
||||
Процедура РК_ДополнитьБазовыеПараметрыЗаполненияЦен(Объект, ПараметрыЗаполнения, ЭтоПродажа)
|
||||
|
||||
МетаОбъекта = Объект.Метаданные();
|
||||
|
||||
Если МетаОбъекта.Реквизиты.Найти("Дата") <> Неопределено Тогда
|
||||
ПараметрыЗаполнения.Вставить("Дата", Объект.Дата);
|
||||
КонецЕсли;
|
||||
Если МетаОбъекта.Реквизиты.Найти("Организация") <> Неопределено Тогда
|
||||
ПараметрыЗаполнения.Вставить("Организация", Объект.Организация);
|
||||
КонецЕсли;
|
||||
Если МетаОбъекта.Реквизиты.Найти("Валюта") <> Неопределено Тогда
|
||||
ПараметрыЗаполнения.Вставить("Валюта", Объект.Валюта);
|
||||
КонецЕсли;
|
||||
Если МетаОбъекта.Реквизиты.Найти("Соглашение") <> Неопределено Тогда
|
||||
ПараметрыЗаполнения.Вставить("Соглашение", Объект.Соглашение);
|
||||
КонецЕсли;
|
||||
Если МетаОбъекта.Реквизиты.Найти("НалогообложениеНДС") <> Неопределено Тогда
|
||||
ПараметрыЗаполнения.Вставить("НалогообложениеНДС", Объект.НалогообложениеНДС);
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоПродажа Тогда
|
||||
Если МетаОбъекта.Реквизиты.Найти("ВернутьМногооборотнуюТару") <> Неопределено Тогда
|
||||
ПараметрыЗаполнения.Вставить("ВозвращатьМногооборотнуюТару", Объект.ВернутьМногооборотнуюТару);
|
||||
КонецЕсли;
|
||||
ПараметрыЗаполнения.Вставить("РассчитыватьНаборы", Истина);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<xr:Item xsi:type="xr:MDObjectRef">Role.РК_ОсновнаяРоль</xr:Item>
|
||||
</DefaultRoles>
|
||||
<Vendor/>
|
||||
<Version>1.3.0.43</Version>
|
||||
<Version>1.3.0.44</Version>
|
||||
<DefaultStyle/>
|
||||
<DefaultLanguage>Language.Русский</DefaultLanguage>
|
||||
<BriefInformation/>
|
||||
|
||||
Reference in New Issue
Block a user