ДобавитьИзДокумент столкнулся с багом, как лечить немогу понять

Новая тема
Т+С 9,2 (7,70,960)
при добавление данных из ранее созданных документов все работает нормально
когда пытаюсь добавить из документа который был создан процедурой ЗагрузкаДокументовИзXML  то мне выдает

> В подборе выбрана единица другого элемента справочника Номенклатура.
> Проверьте правильность указания базовой и основной единицы для элемента
> "ХХХХХХ", а также правильность указания единиц измерения
>  в справочниках единиц и цен для данной позиции номенклатуры.

и все позиции при проверке на совпадение(присутствие этих позиций ране) объединяет все по совпадение единиц измерения
к примеру 20 строк товара по 1шт, дают 1 строчку 20шт

если все эти позиции забить вручную в другую накладную(2),  то Добавить Из документа (2) работает нормально

просматривал в отладчике, проблемный вариант все кроме первой позиции признаются повтором первой позиции

причем в Т+С 9,2 (7,70,939) данной проблемы не возникает
"Процедура ОбработкаПодбора(ВыбЗнач)

ВремВидТМЦ = ВосстановитьЗначение("ВидТМЦПоУмолчанию");
Если ПустоеЗначение(ВремВидТМЦ)=1 Тогда
ВремВидТМЦ = Перечисление.ВидыТМЦ.Товар;
КонецЕсли;      

ЕстьВидТМЦВыбЗнач = глЕстьРеквизитМнЧ("ВидТМЦ", ВыбЗнач.Вид());

// Собственно обработка подбора
ВыбЗнач.ВыбратьСтроки();
Пока ВыбЗнач.ПолучитьСтроку() = 1 Цикл
   
// Поищем, м.б. уже есть такая позиция Номенклатуры
Поз = 0;
Если ТаблицаНоменклатуры.НайтиЗначение(ВыбЗнач.Единица, Поз, "Единица") = 1 Тогда

// нашли, увеличиваем количество
ТаблицаНоменклатуры.ПолучитьСтрокуПоНомеру(Поз);
ТаблицаНоменклатуры.Количество = ТаблицаНоменклатуры.Количество + ВыбЗнач.Количество;

Иначе // добавляем новую строку

Если НеПодбиратьУслугиИРаботы = 1 Тогда
Если (ВыбЗнач.Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Услуга)
или (ВыбЗнач.Номенклатура.ВидНоменклатуры = Перечисление.ВидыНоменклатуры.Работа) Тогда

Продолжить;

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

ТаблицаНоменклатуры.НоваяСтрока();
    ТаблицаНоменклатуры.Пометка       = МеткаЕсть;
    ТаблицаНоменклатуры.Номенклатура  = ВыбЗнач.Номенклатура;
    ТаблицаНоменклатуры.Количество    = ВыбЗнач.Количество;
    ТаблицаНоменклатуры.Единица       = ВыбЗнач.Единица;
    ТаблицаНоменклатуры.Коэффициент   = ВыбЗнач.Коэффициент;

Если ЕстьВидТМЦ = 1 Тогда
Если ПустоеЗначение(ФиксВидТМЦ) = 0 Тогда
// если вид фиксированный, то прописываем его
ТаблицаНоменклатуры.ВидТМЦ = ФиксВидТМЦ;
Иначе
Если ЕстьВидТМЦВыбЗнач = 1 Тогда
ТаблицаНоменклатуры.ВидТМЦ    = ВыбЗнач.ВидТМЦ;
Иначе    
ТаблицаНоменклатуры.ВидТМЦ    = ВремВидТМЦ;
КонецЕсли;
КонецЕсли;
КонецЕсли;

Если ЕстьЦена = 1 Тогда // Заполним колонку цен
Если ЦенаНеРозничная = 1 Тогда
   
ТаблицаНоменклатуры.Цена = глПолучитьЦену(ТаблицаНоменклатуры.Номенклатура,
                                         КонтТипЦен, КонтДатаДок,
             ТаблицаНоменклатуры.Единица,
 КонтВалюта, КонтКурс, КонтКратность);
Иначе // Розничные цены
СтрокаВозврЦена = """";
глПолучитьРозничныйОстатокЦену(ТаблицаНоменклатуры.Номенклатура, ТаблицаНоменклатуры.Единица, ТовОстатки, , СтрокаВозврЦена);

СписВозврЦен = ЗначениеИзстроки(СтрокаВозврЦена);
Если СписВозврЦен.РазмерСписка() > 0 Тогда
ТаблицаНоменклатуры.Цена  = СписВозврЦен.ПолучитьЗначение(1);
Иначе
ТаблицаНоменклатуры.Цена  = 0;
КонецЕсли;

КонецЕсли; // Если ЦенаНеРозничная = 1
КонецЕсли;  // Если ЕстьЦена = 1

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

КонецПроцедуры // ОбработкаПодбора()"
Принципе я нашел механизм как получить нужный мне результат, но хочется понять причину бага и как его устранить
так где баг ?
в кодах ошибки не нашел, что именно вызывает хз, но ситуацию в которой возникает описал выше, быть может надо искать в модуле, ЗагрузкаДокументаИзXML
> в кодах ошибки не нашел, что именно вызывает хз, но ситуацию в которой возникает описал выше, быть может надо искать в модуле, ЗагрузкаДокументаИзXML

Скорее всего проблема именно в загрузке.

Если вспомнить конструкцию ТИС, то там насколько мне помнится существует два справочника единиц измерения.
Первый определяет существующую в целом по базе классификацию единиц измерения. Второй, условно назовём его "единицы измерения номенклатуры" является подчинённым родителю "номенклатура". и он связан по реквизиту единиц с первым справочником.

Вообще интересно как это происходит, но судя по сообщению выдаваемому системой происходит что то типа следующего.
При записи позиции номенклатуры создаётся ситуация когда позиция номенклатуры связывается со справочником "единицы измерения номенклатуры" не по родителю, а просто происходит присвоение значения единицы найденной первой в подчинённом справочнике.
То есть номенклатура 1 - подчинённый справочник единицы измерения (для родителя "номенклатура 1") = шт.
номенклатура 2 - опять подчинённый справочник единицы измерения (для родителя "номенклатура 1") = шт.

Вообще подобная ситуация при записи элемента справочника "Номенклатура" должна вызвать ошибку. Хотя если убиты процедуры проверки при записи...

Аналогично, если происходит просто загрузка в документ, по реквизитам табличной части, то вполне возможна такая ситуация когда для номенклатуры в строке сопоставляется единица измерения не по подчинению а по первой найденной позиции в подчинённом справочнике.
Получаем ту же ситуацию. Номенклатура = "Номенклатура 2" а единица подчинённая родителю "Номенклатура 1".

При интерактивном выборе такой ситуации добиться просто невозможно, а вот при программном назначении я думаю можно.

Так что ищи проблемы в загрузке.
загрузка осуществляется по штрих коду, штрих код приписан к карточке к ед измерения (то есть на разные единицы измерения одного и того же товара разные штрих кода)
захожу в накладную источник, щелкую по единице измерения(выбор ед измерения)  выбираю туже единицу измерения какая и была(другой там нет)
сохраняю, и уже данная позиция перебрасываться нормально, остальные по прежнему родитель отбора ед измерения
Читают тему
(гостей: 1)

Быстрый переход