Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 июн 2025, 06:33

гуид товара

Автор sali, Вчера в 12:54

0 Пользователей и 1 гость просматривают эту тему.

sali

обработка не находит по гуиду, данные получает , но не находит
функция для возврата найденного гуида из регистра (получаем с эдо сообщение, там гуид товара/услуги ,находим запись с такой номенклатурой и возвращаем -если есть конечно)
&НаСервере
Функция ПолучитьНоменклатуруИзРегистраСопоставления(АйдиТовара)     

мНаборЗаписей = РегистрыСведений.СопоставлениеНоменклатуры.СоздатьНаборЗаписей();
мНаборЗаписей.Прочитать();

Для каждого Запись Из мНаборЗаписей Цикл 
Если Запись.ГУИДИсточник = АйдиТовара Тогда
Возврат Запись.ГУИДИсточник;
КонецЕсли;
КонецЦикла;

КонецФункции

здесь записываем найденную или не записываем и отображается битая ссылка

АйдиТовара = ПараметрыСтрокиТовары.ID;
Если СопоставлятьНоменклатуру Тогда
НайденаяНоменклатура = ПолучитьНоменклатуруИзРегистраСопоставления(АйдиТовара);     
Если ТипЗнч(НайденаяНоменклатура) = Тип("Строка") Тогда
Номенклатура = Справочники["Номенклатура"].ПолучитьСсылку(Новый УникальныйИдентификатор(НайденаяНоменклатура));
КонецЕсли;
Иначе
Номенклатура = Справочники["Номенклатура"].ПолучитьСсылку(Новый УникальныйИдентификатор(ПараметрыСтрокиТовары.ID));
КонецЕсли;

ПараметрыОтбора = Новый Структура;
//Номенклатура = Справочники["Номенклатура"].ПолучитьСсылку(Новый УникальныйИдентификатор(ПараметрыСтрокиТовары.ID));
ПараметрыОтбора.Вставить("Номенклатура", Номенклатура);
НайденныеСтроки = ДокументОбъект.Товары.НайтиСтроки(ПараметрыОтбора);

что не так ?

antoneus

Что делает этот код?

Если Запись.ГУИДИсточник = АйдиТовара Тогда
    Возврат Запись.ГУИДИсточник;
КонецЕсли;

sali

antoneus, должен проверять гуид который пришел в сообщении с гуидом в РС, если совпали значит надо вернуть совпавшую номенклатуру
где дальше, через .ПолучитьСсылку(новый уникальныйидентификатор(найденнаяноменклатура) он найдет ее в справочнике и подставит в документ

antoneus

А зачем оно возвращает этот же гуид? В регистре ссылки нет?

Ну или так:

НайденаяНоменклатура = Справочники.Номенклатура.ПолучитьСсылку(Новый УникальныйИдентификатор(АйдиТовара));
Если НайденнаяНоменклатура.ПолучитьОбъект() = Неопределено Тогда//нет такой номенклатуры

А в коде, кстати - нашли номенклатуру, не нашли - пофиг, едем дальше.

АйдиТовара = ПараметрыСтрокиТовары.ID;
Если СопоставлятьНоменклатуру Тогда
   НайденаяНоменклатура = ПолучитьНоменклатуруИзРегистраСопоставления(АйдиТовара);//возвращается этот же айди, если запись в регистре есть
   Если ТипЗнч(НайденаяНоменклатура) = Тип("Строка") Тогда
       Номенклатура = Справочники["Номенклатура"].ПолучитьСсылку(Новый УникальныйИдентификатор(НайденаяНоменклатура));
   КонецЕсли;//если не строка - номенклатура = Неопределено, да?
Иначе
    Номенклатура = Справочники["Номенклатура"].ПолучитьСсылку(Новый УникальныйИдентификатор(ПараметрыСтрокиТовары.ID));//если элемента нет - битая ссылка
КонецЕсли;

//едем дальше

sali

Цитата: antoneus от Вчера в 13:13А зачем оно возвращает этот же гуид?
вот то же только посмотрел на свой код и задумался. а в регистре все тип данных строка. так как это для унф и бп сделано и объекты конфигурации же различаются

sali

antoneus, находить то должен в справочнике по сопоставленному гуиду, верно?

antoneus

И если не находит?

А ГУИДИсточник - это измерение?

sali

antoneus, да , измерение.
Цитата: antoneus от Вчера в 13:36И если не находит?
тогда возврат неопределено

antoneus

И как это неопределено дальше обрабатывается?

А если измерение - почему отбор не установить в наборе, а каждый раз все перебирать? А если там миллион записей?

И вообще, название функции должно отражать то, что она делает. Функция ПолучитьНоменклатуруИзРегистраСопоставления должна получать номенклатуру. Ну, это так, к слову. Структура у регистра какая?

sali

Цитата: antoneus от Вчера в 13:55А если измерение - почему отбор не установить в наборе, а каждый раз все перебирать?
вы про это мНаборЗаписей.Отбор.ГУИДИсточник.Установить(АйдиТовара);
Цитата: antoneus от Вчера в 13:55Структура у регистра какая?
измерение - гуидисточник , гуидприемник
реквизиты - планобмена, номенклатура, наименование

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск