Имя: Пароль:
1C
1С v8
Не получается в запросе установить параметр
0 НатГолубева777
 
23.03.20
10:57
Добрый день. В первом запросе проверяю на пустую ссылку в регистре сведений. И если ссылка пустая то через 2-й запрос добавляю в регистр сведений именно ту позицию, которую установила в параметре "Номенклатура". "Номенклатура"определена в начале процедуры....Но почему то он не видит этого? Помогите пожалуйста.


Процедура КнопкаВыполнитьНажатие(Элемент)
    Путь= Константы.ПутьДоФайлов.Получить()+"\";
    Док=ПолучитьCOMОбъект(Путь+"GS.xls");
    
    Номенклатура=Док.Sheets(1).Cells(2,8).Value;
    счСтроки=2;
    
    
           Пока СокрЛП(Номенклатура) <> "" Цикл
            Номенклатура=Док.Sheets(1).Cells(СчСтроки,8).Value;
                        ШК=Док.Sheets(1).Cells(СчСтроки,2).Value ;
            Сообщить(Строка(Номенклатура)+"-"+Строка(ШК));
            счСтроки=счСтроки+1;
            Прайс = РегистрыСведений.Прайс.СоздатьНаборЗаписей();
            Запрос = Новый Запрос;
                        Запрос.Текст=

                    "ВЫБРАТЬ
                    |    Прайс.Номенклатура.Ссылка КАК Ссылка2
                    |ИЗ
                    |    РегистрСведений.Прайс КАК Прайс
                    |ГДЕ
                    |    Прайс.Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка2)";
                    Запрос.УстановитьПараметр("Ссылка2", Номенклатура);
                    Результат = Запрос.Выполнить();
                    ВыборкаДетальныеЗаписи=Результат.Выбрать();
                    Если Результат.Пустой() Тогда
            Запрос = Новый Запрос;
                        Запрос.Текст=
                                     "ВЫБРАТЬ
                                      |    Номенклатура.Ссылка КАК Ссылка,
                                      |    Номенклатура.Наименование КАК Наименование
                                      |ИЗ
                                      |    Справочник.Номенклатура КАК Номенклатура";
                        Запрос.УстановитьПараметр("Ссылка", Номенклатура);
                        Результат = Запрос.Выполнить();
                        ВыборкаДетальныеЗаписи=Результат.Выбрать();
                        Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                            //Прайс.Отбор.Номенклатура.Установить(Номенклатура);
                            НоваяЗаписьПрайс = Прайс.Добавить();
                            НоваяЗаписьПрайс.Номенклатура = ВыборкаДетальныеЗаписи.Ссылка;
                        КонецЦикла;
                    КонецЕсли;
                
            Прайс.Записать()
        КонецЦикла;

    
    Док.Application.Quit();
КонецПроцедуры
1 butterbean
 
23.03.20
11:00
(0) Из Excel можно получить только примитивные типы, а в твоем запросе ожидается передача ссылки на объект справочника Номенклатура
2 Homer
 
23.03.20
11:01
А где "Где"
                                |ИЗ
                                      |    Справочник.Номенклатура КАК Номенклатура";
3 НатГолубева777
 
23.03.20
11:02
Точно
4 НатГолубева777
 
23.03.20
11:38
|ИЗ
|    Справочник.Номенклатура КАК Номенклатура
|ГДЕ
|    Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка3)";
Запрос.УстановитьПараметр("Ссылка3", Номенклатура);
    
Добавила.   Все равно не видит параметр. Что посоветуете с параметром. Как его преобразовать?
5 НатГолубева777
 
23.03.20
12:01
есть кто может подсказать?
6 Homer
 
23.03.20
12:07
СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)
НайтиПоНаименованию (FindByDescription)
Синтаксис:
НайтиПоНаименованию(<Наименование>, <ТочноеСоответствие>, <Родитель>, <Владелец>)
Параметры:
<Наименование> (обязательный)
Тип: Строка.
Строка, содержащая искомое наименование.
<ТочноеСоответствие> (необязательный)
Тип: Булево.
Определяет режим поиска по полному соответствию.
Поиск будет успешным, если строка поиска: в случае значения параметра Ложь - будет соответствовать левой части наименования; в случае значения параметра Истина - будет полностью совпадать с наименованием (за исключением "хвостовых" пробелов в наименовании).
Значение по умолчанию: Ложь.
<Родитель> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Родитель, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
<Владелец> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Владелец, в пределах которого нужно выполнять поиск. Если не указан, то поиск будет проводиться во всем справочнике.
Возвращаемое значение:
Тип: СправочникСсылка.<Имя справочника>, Неопределено.
Ссылка на найденный элемент справочника.
Если не существует ни одного элемента с требуемым наименованием, то будет возвращена пустая ссылка.
Если для справочника наименование не задано (длина = 0) и поиск выполняется по полному соответствию, то будет возвращено Неопределено.
Описание:
Осуществляет поиск элемента по его наименованию.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер).
Примечание:
Если существует несколько элементов с указанным наименованием, то будет найден только один из них.
Пример:
СтрокаНаименования = "USD";
Валюты = Справочники.Валюты;
НайденнаяСсылка = Валюты.НайтиПоНаименованию(СтрокаНаименования);
Если НайденнаяСсылка = Валюты.ПустаяСсылка() Тогда
    Сообщить("Валюты """ + СтрокаНаименования + """ еще нет");
КонецЕсли;
7 hhhh
 
23.03.20
12:08
(5)  Запрос.УстановитьПараметр("Ссылка3", Справочники.Номенклатура.НайтиПоНаименованию(Номенклатура));