Как найти номенклатуру по артикулам из файла Excel и подставить эти номенклатуры в колонку "номенклатура"?

1. user1202776 29.11.19 12:29 Сейчас в теме
Таблицу значений формы заполняю данными из файла Excel.И эта таблица заполняется артикулами. Как в базе найти по этим артикулам номенклатуры и подставить в колонку номенклатура?
Сделал запрос по поиску номенклатуры по артикулу,но не понимаю,как в качестве параметра к этому параметру подставить артикулы из файла Excel.
Запрос=Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ
              |	ДанныеИзФайла.НомерСтроки,
              |	ДанныеИзФайла.Артикул
              |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
              |ИЗ
              |	&ДанныеИзФайла КАК ДанныеИзФайла
              |ГДЕ
              |	ДанныеИзФайла.Артикул <> """"
              |;
              |
              |////////////////////////////////////////////////////////////­////////////////////
              |ВЫБРАТЬ
              |	ВТ_ДанныеИзФайла.НомерСтроки,
              |	ТаблицаДляПоиска.Ссылка КАК Номенклатура
              |ИЗ
              |	ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
              |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ТаблицаДляПоиска
              |		ПО ВТ_ДанныеИзФайла.Артикул = ТаблицаДляПоиска.Артикул");
Показать


   ПЗ = Новый ПостроительЗапроса;

   ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());

   ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

   ПЗ.ЗаполнитьНастройки();

   ПЗ.Выполнить();

   
   тз_= ПЗ.Результат.Выгрузить();
Для каждого СтрокаТЗ Из тз_ Цикл
СтрокаТЗ_БазовыеЦены = БазовыеЦены .Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
СтрокаТЗ_БазовыеЦены.Цена=СтрокаТЗ.БазоваяЦена;

КонецЦикла
Запрос=Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ
              |	ДанныеИзФайла.НомерСтроки,
              |	ДанныеИзФайла.Артикул
              |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
              |ИЗ
              |	&ДанныеИзФайла КАК ДанныеИзФайла
              |ГДЕ
              |	ДанныеИзФайла.Артикул <> """"
              |;
              |
              |////////////////////////////////////////////////////////////­////////////////////
              |ВЫБРАТЬ
              |	ВТ_ДанныеИзФайла.НомерСтроки,
              |	ТаблицаДляПоиска.Ссылка КАК Номенклатура
              |ИЗ
              |	ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
              |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ТаблицаДляПоиска
              |		ПО ВТ_ДанныеИзФайла.Артикул = ТаблицаДляПоиска.Артикул");
Запрос.УстановитьПараметр("ДанныеИзФайла",);
Показать
Прикрепленные файлы:
По теме из базы знаний
Найденные решения
98. YannikAlx 43 02.12.19 16:52 Сейчас в теме
стандартная схема
&НаКлиенте
Процедура Заполнить(Команда)
 ЗаполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере()
// И тут-то и происходят все твои действия по заполнению и тп и тд.....
//Типа 
ЭтаФорма.БазовыеЦены.Очистить();  // ну очищать конечно не надо , это я пошутил.....
КонецПроцедуры
Показать



Ты заполняешь свою таблицу значений на клиенте, а потом делаешь с ней что угодно &НаСервере...
ЭтаФорма.БазовыеЦены
109. user1202776 04.12.19 16:36 Сейчас в теме
Спасибо YannikAlx!
В итоге получилось вот так:
&НаСервере
Процедура РаспознаваниеНоменклатуры()
	
	 ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    
    ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
    ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xls; *.xlsx)|*.xls; *.xlsx|";
    
    Если ДиалогВыбораФайла.Выбрать() Тогда
        
        Если ФайлДляЗагрузки <> ДиалогВыбораФайла.ПолноеИмяФайла Тогда
        
            мНомерЕдиницыИзмерения = 0;        
        КонецЕсли;
        
        ФайлДляЗагрузки = ДиалогВыбораФайла.ПолноеИмяФайла;
        
        Если ЗначениеЗаполнено(ФайлДляЗагрузки) Тогда
    
        ФайлНаДиске = Новый Файл(ФайлДляЗагрузки);
  
    
    КонецЕсли;

        
    КонецЕсли;

	
ТабличныйДокумент = Новый ТабличныйДокумент;

   ТабличныйДокумент.Прочитать(ФайлДляЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Значение);


   ПЗ = Новый ПостроительЗапроса;

   ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());

   ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

   ПЗ.ЗаполнитьНастройки();

   ПЗ.Выполнить();

   
 ТЗ1= ПЗ.Результат.Выгрузить();
 тз_=Новый ТаблицаЗначений;
 тз_.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(80)));
  тз_.Колонки.Добавить("БазоваяЦена", Новый ОписаниеТипов("Число"));
   тз_.Колонки.Добавить("АктуальнаяЦена", Новый ОписаниеТипов("Число"));
		
Для Каждого Стр Из ТЗ1 Цикл
ЗаполнитьЗначенияСвойств(тз_.Добавить(), Стр);

КонецЦикла;

ДанныеИзФ=ЭтаФорма.БазовыеЦены.Выгрузить();
Для Каждого Строка Из тз_ Цикл
Нов=СтрЗаменить(СтрЗаменить(СокрЛП(Строка(Строка.Артикул)), Символ(160), ""), Символ(32),"");
Строка.Артикул=Нов;	
КонецЦикла;
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |	ТЗ.Артикул,
             |	ТЗ.БазоваяЦена
             |ПОМЕСТИТЬ ТЗ
             |ИЗ
             |	&ТЗ КАК ТЗ
             |;
             |
             |////////////////////////////////////////////////////////////­////////////////////
             |ВЫБРАТЬ
             |	ТЗ.Артикул,
             |	Номенклатура.Наименование,
             |	Номенклатура.Ссылка,
             |	ТЗ.БазоваяЦена
             |ИЗ
             |	ТЗ КАК ТЗ
             |		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
             |		ПО ТЗ.Артикул = Номенклатура.Артикул";
Запрос.УстановитьПараметр("ТЗ",тз_);
РезультатЗапроса=Запрос.Выполнить().Выгрузить();	
 
Для каждого СтрокаТЗ Из РезультатЗапроса Цикл
СтрокаТЗ_БазовыеЦены = БазовыеЦены .Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
СтрокаТЗ_БазовыеЦены.Цена=СтрокаТЗ.БазоваяЦена;
СтрокаТЗ_БазовыеЦены.Номенклатура=СтрокаТЗ.Ссылка;
КонецЦикла;
Показать

Может потом кому-то пригодится
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. YannikAlx 43 29.11.19 12:41 Сейчас в теме
(12)
Вы по-прежнему используете 2 таблицы ? Одну Объект.ТаблицаЦен и вторая как реквизит формы?
6. user1202776 29.11.19 13:34 Сейчас в теме
(2)где две таблицы? сможете показать в коде таблицы, про которых вы говорите?
8. YannikAlx 43 29.11.19 13:40 Сейчас в теме
(6) Вы должны использовать таблицу Объект.ТаблицаЦен, вытащив ее на форму и именно ее заполнять изначально.
Вы же как я понял создали какой-то реквизит Формы, заполняете его из Экселя ... Нет ?
10. user1202776 29.11.19 13:44 Сейчас в теме
(8)я заполняю таблицу БазовыеЦены, которая находится на форме документа
11. YannikAlx 43 29.11.19 13:46 Сейчас в теме
(10) Вы на форму вытащили НЕ ТУ таблицу!


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

Вытащите Объект.ТаблицаЦен чистым перетаскиванием...
12. user1202776 29.11.19 13:48 Сейчас в теме
(11)это я уже не смогу по-хорошему изменить, потому что этот документ не я создавал
14. YannikAlx 43 29.11.19 13:49 Сейчас в теме
(12) Не надо документ изменять.
Надо форму изменять , которую вы редактируете!
16. YannikAlx 43 29.11.19 13:51 Сейчас в теме
(12) У вас есть документ, который вам нужно заполнить, ну так его и надо заполнять!
Зачем вы заполняете какую-то левую таблицу?
17. user1202776 29.11.19 13:54 Сейчас в теме
(16)у меня нет реквизита "ТаблицаЦен". Я заполняю таблицу,которая находится на форме. У самого документа нет таблиц(скрин 2).
При создании документа, заполняется эта таблица.
Прикрепленные файлы:
19. YannikAlx 43 29.11.19 13:56 Сейчас в теме
(17) Изначально на форму вытаскивать нужно те табличные части Объекта, с которыми вы хотите работать, а не создавать вручную реквизиты...
20. YannikAlx 43 29.11.19 13:58 Сейчас в теме
(17) Я делаю вывод по вашим же картинкам...
Не могу видеть у вас абсолютно все...
Те ошибки , которые увидел - озвучил и привел в картинках также
15. user1202776 29.11.19 13:50 Сейчас в теме
(11)к тому же у меня нет реквизита "ТаблицаЦен")
18. YannikAlx 43 29.11.19 13:55 Сейчас в теме
(15) Ну с названием я ошибся , вы же создаете кучу новых тем про одну и туже задачу ...
См вашу картинку...
Таблицы называются БазовыеЦены,
удалите реквизит формы - он совершенно не нужен
Прикрепленные файлы:
21. user1202776 29.11.19 14:01 Сейчас в теме
(18)зачем мне заполнять не таблицу,если мне нужно заполнить таблицу? Объект.БазовыеЦены - это реквизит с типом ДокументСсылка.УстановкаЦенНоменклатуры
Прикрепленные файлы:
23. YannikAlx 43 29.11.19 14:03 Сейчас в теме
(21) а какова ваша конечная задача этой обработки?
Вы же не раскрыли... ;-)

Или это вообще не обработка...
короче мало данных
24. user1202776 29.11.19 14:12 Сейчас в теме
(23)есть файл excel . В котором две колонки: Артикул и Цена. В чем задача?:Нужно артикулы выгрузить в колонку "Артикул" и по этим артикулам искать номенклатуры в базе и эти номенклатуры загрузить в в колонку "номенклатура" . Колонка "Цена" в табице "Базовые цены" должна заполняться колонкой из файла Excel "Цены". Надеюсь теперь понятно)
На данном этапе, по артикулам из файла Excel, нужно найти номенклатуры в базе и заполнить этими найденными номенклатурами колонку "Номенклатура" ,таблицы "БазовыеЦены"
Прикрепленные файлы:
65. igor-pn 72 30.11.19 01:12 Сейчас в теме
(24) Возможно Вам помогут сервисы, которые я использовал для решения подобных задач. Первое, обратите внимание на обработку "Обработка Загрузка данных из табличного документа 1С 8.3 (управляемые формы)", примеры использования легко найти в интернете. Вы копируете из Excel данные в табличный документ, а затем используете алгоритмы обработки для загрузки данных в базу. Если же у Вас конфигурация на базе УТ, обратите внимание на обработку конфигурации "Загрузка цен поставщиков". Возможно, это Вам поможет, в плане готовых уже решений.
3. singlych 29.11.19 13:00 Сейчас в теме
в ДанныеФайла артикул типа число, а в спр номенклатуры - строка, даю зуб
4. DmitriyTih 29.11.19 13:16 Сейчас в теме
(3)Я тоже делаю ставку на это!) На скриншоте видно, у артикула по умолчанию разделитель групп есть, значит скорее всего это число. А в номенклатуре я еще не встречал, чтобы артикул был НЕ строковым. Сделайте тип значения Артикула в таблице значений таким же как и у реквизита "Артикул" в справочнике Номенклатура.
Да, и при загрузке данных из Excel сделайте для артикула СокрЛП(), а то может не соединить с номенклатурой.
5. user1202776 29.11.19 13:29 Сейчас в теме
(4)все-таки не понял, как найти номенклатуры по артикулам и файла excel и заполнить колонку номенклатура
25. DmitriyTih 29.11.19 14:14 Сейчас в теме
(5) В запросе вы пытаетесь делать объединение двух таблиц по полю "артикул". Но это поле, возможно, имеет разный тип данных в этих таблицах, например "строка" и "число". Никогда строка "123" не будет равнятся числу 123. Необходимо сравнивать значения с одинаковыми типами. Посмотрите, может быть проблема в этом.
26. user1202776 29.11.19 14:19 Сейчас в теме
(25)у таблицы "БазовыеЦены" артикул имеет тип строка и реквизит справочника номенклатура тоже имеет тип строка. Проблема в том,что не знаю, что и как подставить в параметр запроса
27. user1202776 29.11.19 14:24 Сейчас в теме
(25)
Запрос=Новый Запрос;
Запрос.Текст= "ВЫБРАТЬ
              |	ДанныеИзФайла.НомерСтроки,
              |	ДанныеИзФайла.Артикул
              |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
              |ИЗ
              |	&ДанныеИзФайла КАК ДанныеИзФайла
              |ГДЕ
              |	ДанныеИзФайла.Артикул <> """"
              |;
              |
              |////////////////////////////////////////////////////////////­////////////////////
              |ВЫБРАТЬ
              |	ВТ_ДанныеИзФайла.НомерСтроки,
              |	ТаблицаДляПоиска.Ссылка КАК Номенклатура
              |ИЗ
              |	ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
              |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ТаблицаДляПоиска
              |		ПО ВТ_ДанныеИзФайла.Артикул = ТаблицаДляПоиска.Артикул");
Запрос.УстановитьПараметр("ДанныеИзФайла", // вот сюда, как подставить арктикулы из файла Excel?);
Показать
29. DmitriyTih 29.11.19 15:00 Сейчас в теме
(27)А, сорян, не понял сразу. Ну видимо так:
Запрос.УстановитьПараметр("ДанныеИзФайла", БазовыеЦены.Выгрузить())
31. DmitriyTih 29.11.19 15:01 Сейчас в теме
(27) т.е. параметру запроса "ДанныеИзФайла" надо присвоить значение с типом "ТаблицаЗначений"
34. YannikAlx 43 29.11.19 15:11 Сейчас в теме
(31) Вот мы и пришли к обсуждению "Зачем &НаСервере" ;-)
Потому что запросы к базе данных возможно выполнить только на сервере...
37. DmitriyTih 29.11.19 15:19 Сейчас в теме
(34) правильно разбивать процедуры загрузки данных из файла и обработки данных на разные процедуры которые будут выполняться в необходимом контексте. И вы сами себе противоречите: как вы откроете файл на сервере для считывания, если он лежит на клиенте?
Во многих ваших ответах вы занимаетесь переворачиванием информации и отвечаете не по сути вопроса.
40. YannikAlx 43 29.11.19 15:23 Сейчас в теме
(37) Я не противоречу себе уж точно!
Вы путаете понятия &НаСервере &НаКлиенте с реальными клиентами и серверами!

Файл лежит на клиенте , форма открывается на клиенте, НО в модуле формы существуют процедуры &НаСервере, которые будут выполняться на стороне 1С сервера.
Рекомендую все же подтянуть образование в части 1С программирования 8.3
53. DmitriyTih 29.11.19 15:41 Сейчас в теме
(40) Вы очень глубоко заблуждаетесь и вводите в заблуждение других
Вы путаете понятия &НаСервере &НаКлиенте с реальными клиентами и серверами!

Это одно и тоже. В этом и суть!

Файл лежит на клиенте , форма открывается на клиенте, НО в модуле формы существуют процедуры &НаСервере, которые будут выполняться на стороне 1С сервера.

Положите файл на свой клиентский комп, напишите обработку считывания файла (типа D:\МойФайл) в процедуре &НаСервере. И ОПА!, а его там нет, какое разочарование.

При указании директивы &НаСервере выполнение кода будет происходить на сервере.
59. YannikAlx 43 29.11.19 15:53 Сейчас в теме
(53)
Это одно и тоже. В этом и суть!

Однако все запущено!

Где Открывается форма документа?
Надеюсь у вас не хватит смелости сказать На сервере!
Правильно - на клиенте...

И как выполнить в модуле этой формы код с запросом к базе данных?
вы можете без &НаСервере - значит вы чудесник!

Положите файл на свой клиентский комп, напишите обработку считывания файла (типа D:\МойФайл) в процедуре &НаСервере. И ОПА!, а его там нет, какое разочарование.

Покажите мне дурака, кто будет делать такое?
Во первых процедура с диалогом открытия файла выпоняется ТОЛКО &НаКлиенте, ибо нужна реакция живого пользователя.

А вот если у вас прописан в коде конкретный полный путь к файлу на сервере , то можно открыть и в процедуре &НаСервере


Либо вы действительно слишком долго программировали обычные формы и толстый клиент, либо мы просто предвзято относимся сейчас друг к другу...

Давайте все же будем миролюбивы и постараемся разобраться в смысловых разногласиях.
(я все же надеюсь мы правильно понимаем суть , но неверно трактуем слова друг друга)
58. DmitriyTih 29.11.19 15:51 Сейчас в теме
(40) Специально для Вас, ибо вы видимо вообще заблудились, основа основ - клиент-серверный вариант работы 1с:
https://v8.1c.ru/overview/Term_000000033.htm
Ну и пару статеек от инфостарта:
https://infostart.ru/public/891857/
https://infostart.ru/public/682305/
user1202776; +1 Ответить
32. YannikAlx 43 29.11.19 15:05 Сейчас в теме
(27) Вышепредложенный способ - прост и нагляден.
Второй способ несколько перекликается с вашими наработками.
Но тоже требует Табличных частей в Объекте....
Вы заполняете эту же ТЧ из екселя, но без поиска номенклатуры в базе сразу.
Потом выгружаете в таблицу значений
ДанныеИзФайла = Объект.БазовыеЦены.Выгрузить(,);
И уже дальше так как вы делаете в (27)

Запрос.УстановитьПараметр("ДанныеИзФайла",ДанныеИзФайла );
28. YannikAlx 43 29.11.19 14:57 Сейчас в теме
(25) вот вы и уперлись в то о чем я говорил...
Ваша задача по человечески решается немного по другому...
В обработке Объект не должен быть документом а должен быть Обработкой и в Объект делаете Табличную часть БазовыеЦены.



Потом табличную часть БазовыеЦены вытаскиваете на форму и начинаете заполнять из файла.
И на каждом шаге добавления строки - ищете в базе номеклатуру и цену по артикулу и присваиваете нужным колонкам,
Все эти действия выполняются &НаСервере.
Это просто...
То что вы сделали и пытаетесь домучить - не очень оптимально...
30. user1202776 29.11.19 15:01 Сейчас в теме
(28)я не обработку делаю, а в форму документа добавляю
33. YannikAlx 43 29.11.19 15:10 Сейчас в теме
(30) А может проще все же сделать обюработку и подключив ее добавить выполнение в виде кнопки ?
Если у вас типовая конфа, то менять формы - вообще почти криминал...
А внешняя обработка ничего не изменит в конфе...

Если же изменение самого документа ваш Окончательный выбор не смотря ни на что, тогда используйте выгрузку вашей табличной части с формы в таблицу значений и передачу передачу ее через хранилище на сервер , а там уже выполняйте ваш запрос с параметром
35. user1202776 29.11.19 15:14 Сейчас в теме
(33)база уже далеко не типовая....Можно и вызвать обработку, но пока что в голову не приходит, как найти номенклатуры по артикулам и заполнить эту колонку
36. YannikAlx 43 29.11.19 15:17 Сейчас в теме
(35) я тебе привел уже 2 способа.
В чем проблема то?
39. user1202776 29.11.19 15:23 Сейчас в теме
(36)в реализации.
Во-вторых, но ваш способ требует Табличных частей в Объекте. Если я создам табличную часть в объекте, я не знаю в каким последствиям может это привести
41. YannikAlx 43 29.11.19 15:25 Сейчас в теме
(39) ну хорошо 1 вариант касался чисто обработки , без обработки его не реализуешь
Но вот второй с выгрузкой ТЧ в ТЗ и передачей на сервер в чем проблема?
43. user1202776 29.11.19 15:29 Сейчас в теме
(41)второй способ это (32) ?
38. YannikAlx 43 29.11.19 15:20 Сейчас в теме
(35) Если вы ее совсем не обновляете , то безусловно можно кромсать в свое удовольствие.
А вот если все же обновления нужны - то любые изменения конфы порой совсем не нужные - явная глупость, и нужна именно обработка.
Которых кстати по загрузке цен из Экселя в документ Установка цен номенклатуры на просторе инета - как грязи...
42. user1202776 29.11.19 15:25 Сейчас в теме
(38)база не обновляется. Может плохо искал, но нормальную обработку по загрузке в документ Установка цен номенклатуры не нашел
44. YannikAlx 43 29.11.19 15:31 Сейчас в теме
(42) база то какая, до сих пор так и не озвучил?
Может мы тут вообще зря изгалялись....
45. user1202776 29.11.19 15:31 Сейчас в теме
48. YannikAlx 43 29.11.19 15:33 Сейчас в теме
(45) а мы тут про сервера ведем базар.... )))))))))))))))))))))))
а сразу слабо было написать? ;-)
49. user1202776 29.11.19 15:36 Сейчас в теме
(48)дальше прочитай)). Этот документ создан на управляемой форме.
52. YannikAlx 43 29.11.19 15:40 Сейчас в теме
(49) любопытно зачем так было изгаляться? ))))))))))
54. user1202776 29.11.19 15:41 Сейчас в теме
(52)у меня такой же вопрос, только в более грубой форме))
47. user1202776 29.11.19 15:33 Сейчас в теме
(44)в основном все сделано на обычной форме, но некоторые документы, включая Установку цен номенклатуры сделана на управляемой форме
50. YannikAlx 43 29.11.19 15:37 Сейчас в теме
(47) Вот это меня и смутило! Вроде ж управляемая форма на картинке.
При запуске в режиме тонкого клиента именно нужно передавать ТЗ на сервер .
Если работает из толстого , то нет разделений где чего выпонять и передавать не надо
Нужно просто

ДанныеИзФайла = БазовыеЦены.Выгрузить(,);


Запрос.УстановитьПараметр("ДанныеИзФайла",ДанныеИзФайла );
51. user1202776 29.11.19 15:40 Сейчас в теме
(50)у сервере у меня почему-то недоступно.Доступно НаСервереБезКонтексте и выдает ошибку:
{Документ.УстановкаБазовыхЦен.Форма.ФормаДокумента.Форма(119,43)}: Переменная не определена (БазовыеЦены)
Запрос.УстановитьПараметр("ДанныеИзФайла",<<?>>БазовыеЦены.Выгрузить());
55. YannikAlx 43 29.11.19 15:42 Сейчас в теме
(51) я тебе разве так написал, как ты пытаешься ?
Где
ДанныеИзФайла = БазовыеЦены.Выгрузить(,);
56. user1202776 29.11.19 15:45 Сейчас в теме
(55)я сейчас уже запутался.сможешь на примере показать , как нужно сделать?)
57. user1202776 29.11.19 15:47 Сейчас в теме
(55) у меня не толстый клиент
60. YannikAlx 43 29.11.19 16:04 Сейчас в теме
(57) Покажи целиком твою процедуру с запросом , в который нужно установить параметр
61. user1202776 29.11.19 16:06 Сейчас в теме
(60)полный код:
&НаКлиенте
Процедура ФайлДляЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	
	ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
	ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xls; *.xlsx)|*.xls; *.xlsx|";
	
	Если ДиалогВыбораФайла.Выбрать() Тогда
		
		Если ФайлДляЗагрузки <> ДиалогВыбораФайла.ПолноеИмяФайла Тогда
		
			мНомерЕдиницыИзмерения = 0;		
		КонецЕсли;
		
		ФайлДляЗагрузки = ДиалогВыбораФайла.ПолноеИмяФайла;
		
		
		//ЗагрузитьСодержимоеExcel();
		Если ЗначениеЗаполнено(ФайлДляЗагрузки) Тогда
	
		ФайлНаДиске = Новый Файл(ФайлДляЗагрузки);
		
		Если ФайлНаДиске.Существует() Тогда
		
			Попытка
								
					ТабличныйДокумент = Новый ТабличныйДокумент;

   ТабличныйДокумент.Прочитать(ФайлДляЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Значение);

//вывод в таблицу значений

   ПЗ = Новый ПостроительЗапроса;

   ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());

   ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

   ПЗ.ЗаполнитьНастройки();

   ПЗ.Выполнить();

   //БазовыеЦены = ПЗ.Результат.Выгрузить();
   
   тз_= ПЗ.Результат.Выгрузить();
Для каждого СтрокаТЗ Из тз_ Цикл
СтрокаТЗ_БазовыеЦены = БазовыеЦены .Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
СтрокаТЗ_БазовыеЦены.Цена=СтрокаТЗ.БазоваяЦена;

КонецЦикла;
Исключение
				Сообщить(ОписаниеОшибки());
			КонецПопытки;
		
		Иначе
		    Сообщить("Файл """ + ФайлДляЗагрузки + """ не существует!");
		КонецЕсли;	
	
	КонецЕсли;

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

КонецПроцедуры
Показать
62. YannikAlx 43 29.11.19 16:38 Сейчас в теме
(61) Ты должен разделить свои события на 2 части
Загрузка данных из файла выпонять &НаКлиенте , чтобы пользователь открывал свои файлы.
А вот дальнейшую работу с запросом к Справочнику невозможно выполнить &НаКлиенте, и потому вторую половину процедуры (где запрос) нужно отрезать и перенести в отдельную процедуру и выпонять ее &НаСервере
63. user1202776 29.11.19 16:40 Сейчас в теме
(62)сможешь на примере показать как это сделать?
7. YannikAlx 43 29.11.19 13:38 Сейчас в теме
У вас в прошлой теме - одна таблица в Объекте , и вторая на форме... То есть как Реквизит формы
Вы Это изменили ?
9. user1202776 29.11.19 13:43 Сейчас в теме
(7)вот полный код:
&НаКлиенте
Процедура ФайлДляЗагрузкиНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
	ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
	
	ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
	ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xls; *.xlsx)|*.xls; *.xlsx|";
	
	Если ДиалогВыбораФайла.Выбрать() Тогда
		
		Если ФайлДляЗагрузки <> ДиалогВыбораФайла.ПолноеИмяФайла Тогда
		
			мНомерЕдиницыИзмерения = 0;		
		КонецЕсли;
		
		ФайлДляЗагрузки = ДиалогВыбораФайла.ПолноеИмяФайла;
		
		
		//ЗагрузитьСодержимоеExcel();
		Если ЗначениеЗаполнено(ФайлДляЗагрузки) Тогда
	
		ФайлНаДиске = Новый Файл(ФайлДляЗагрузки);
		
		Если ФайлНаДиске.Существует() Тогда
		
			Попытка
								
					ТабличныйДокумент = Новый ТабличныйДокумент;

   ТабличныйДокумент.Прочитать(ФайлДляЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Значение);

//вывод в таблицу значений

   ПЗ = Новый ПостроительЗапроса;

   ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());

   ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

   ПЗ.ЗаполнитьНастройки();

   ПЗ.Выполнить();

   
   тз_= ПЗ.Результат.Выгрузить();
Для каждого СтрокаТЗ Из тз_ Цикл
СтрокаТЗ_БазовыеЦены = БазовыеЦены .Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
СтрокаТЗ_БазовыеЦены.Цена=СтрокаТЗ.БазоваяЦена;

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

		
	КонецЕсли;

КонецПроцедуры
Показать
13. YannikAlx 43 29.11.19 13:49 Сейчас в теме
(9) Мне код ваш совершенно ни к чему....
У вашего Объекта есть ТаблицаЦен ? Вы явно его хотите заполнить в итоге...
Так вот и возникает вопрос - зачем вам тот реквизит формы ТаблицаЦен , который не является конечной целью?
Вы заполняете зачем-то дубль...
22. YannikAlx 43 29.11.19 14:02 Сейчас в теме
Вы же не пишете какой объект разрабатываете.
Даете какой-то огрызок информации, и по этой информации вам дают рекомендации...
Они порой могут быть совершенно бестолковыми... И все у вас начинает работать тоже бестолково...

Вы бы изначальную задачу описывали, поясняли как вы ее решаете и что не получается...
Вам бы давали советы и по глобальной методике и по путям ее исправления
46. YannikAlx 43 29.11.19 15:32 Сейчас в теме
да, с одним дополнением , выгруженную ТЗ нужно будет передать на сервер через хранилище
64. YannikAlx 43 29.11.19 16:47 Сейчас в теме
отрежь запрос и засунь его в отдельную процедуру и все...
а в конце


ДанныеИзФ=ЭтаФорма.БазовыеЦены.Выгрузить()
Запрос.УстановитьПараметр("ДанныеИзФайла",ДанныеИзФ);
Запрос.Выполнить();
///  ну и все что ты там хочешь дальше....

КонецПроцедуры
66. user1202776 02.12.19 11:05 Сейчас в теме
(64) сделал так, как вы сказали. Как должна работать таблица значений в качестве параметра?
Запрос с таким параметром пустой
Прикрепленные файлы:
67. YannikAlx 43 02.12.19 11:18 Сейчас в теме
ТЗ работает как и любой параметр.
Если в ней нету ничего перед запросом, то и запрос ясно будет пустой.

"Чтобы что-то ненужное продать , нужно сначала что-то ненужное купить..." (кот Матроскин)

Если же на картинке именно ваша ТЗ, то запрос видимо так составили , что он возвращает Пустоту.
Ну смотрите сами чудес же не бывает!
Сначала в отладке Уберите все ГДЕ из запроса и посмотрите , что вернет

И Учитесь пользоваться отладкой - без нее вы никогда не станете никаким программистом.
В отладке всегда видно что, где и как.... Остается только немного подумать и станет ясно - Почему...
68. user1202776 02.12.19 11:26 Сейчас в теме
(67)отладчиком конечно посмотрел. ТЗ заполнен
70. YannikAlx 43 02.12.19 11:32 Сейчас в теме
71. user1202776 02.12.19 11:33 Сейчас в теме
(67)без условий тоже возвращает пустоту. видимо запрос нужно по нормальному переписать
69. YannikAlx 43 02.12.19 11:31 Сейчас в теме
Ну а дальше?
Вы что не можете выполнить запрос и проверить?

ВЫБРАТЬ
ДанныеИзФайла.*
Поместить ВТ_ТЗ
ИЗ
&ДанныеИзФайла КАК ДанныеИзФайла
72. YannikAlx 43 02.12.19 11:35 Сейчас в теме
73. YannikAlx 43 02.12.19 11:35 Сейчас в теме
который без параметров , но пустой
74. user1202776 02.12.19 11:40 Сейчас в теме
(73)
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |	ДанныеИзФайла.Артикул
             |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
             |ИЗ
             |	&ДанныеИзФайла КАК ДанныеИзФайла
             |;
             |
             |////////////////////////////////////////////////////////////­////////////////////
             |ВЫБРАТЬ
             |	ТаблицаДляПоиска.Ссылка КАК Номенклатура
             |ИЗ
             |	ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
             |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ТаблицаДляПоиска
             |		ПО ВТ_ДанныеИзФайла.Артикул = ТаблицаДляПоиска.Артикул";

Запрос.УстановитьПараметр("ДанныеИзФайла",ДанныеИзФ);
Показать
75. YannikAlx 43 02.12.19 11:54 Сейчас в теме
(74) Вот запрос БЕЗ параметров, а то что вы пытаетесь запросить - ясно может давать пустоту...

ВЫБРАТЬ
             |    ДанныеИзФайла.Артикул
             |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
             |ИЗ
             |    &ДанныеИзФайла КАК ДанныеИзФайла
             |;
             |
             |////////////////////////////////////////////////////////////­­////////////////////
             |ВЫБРАТЬ
             |    ТаблицаДляПоиска.Ссылка КАК Номенклатура
             |ИЗ
             |    ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
             |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ТаблицаДляПоиска
             |        ПО ВТ_ДанныеИзФайла.Артикул = ТаблицаДляПоиска.Артикул
Показать
77. user1202776 02.12.19 11:58 Сейчас в теме
(75)
ВЫБРАТЬ
| ДанныеИзФайла.Артикул
|ПОМЕСТИТЬ ВТ_ДанныеИзФайла
|ИЗ
| &ДанныеИзФайла КАК ДанныеИзФайла
|;
|
|////////////////////////////////////////////////////////////­­­////////////////////
|ВЫБРАТЬ
| ТаблицаДляПоиска.Ссылка КАК Номенклатура
|ИЗ
| ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ТаблицаДляПоиска
| ПО ВТ_ДанныеИзФайла.Артикул = ТаблицаДляПоиска.Артикул
Показать


тоже возвращает пустое значение
78. user1202776 02.12.19 12:11 Сейчас в теме
(75)Запрос изначально был таким
ПолеНеограниченнойДлины = ПолеПоискаВТаблице = "НаименованиеНоменклатурыКонтрагента";
	
	Возврат "ВЫБРАТЬ
		|	ДанныеИзФайла.НомерСтроки,
		|	ДанныеИзФайла." + ПолеПоиска
		+ ?(ПолеСвязиПоВладельцу <> "", ", ДанныеИзФайла." + ПолеСвязиПоВладельцу, "") + "
		|ПОМЕСТИТЬ ВТ_ДанныеИзФайла                                                                         
		|ИЗ
		|	&ДанныеИзФайла КАК ДанныеИзФайла
		|ГДЕ
		|	ДанныеИзФайла." + ПолеПоиска + " <> """"
		|;
		|
		|////////////////////////////////////////////////////////////­////////////////////
		|ВЫБРАТЬ
		|	ВТ_ДанныеИзФайла.НомерСтроки,
		|	ТаблицаДляПоиска." + ПолеНоменклатуры + " КАК Номенклатура"
		+ ?(ПолеХарактеристики <> "", ", ТаблицаДляПоиска." + ПолеХарактеристики + " КАК Характеристика", "")
		+ ?(ПолеЕдиницыИзмерения <> "", ", ТаблицаДляПоиска." + ПолеЕдиницыИзмерения + " КАК Единица", "")
		+ "
		|ИЗ
		|	ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ " + ТаблицаДляПоиска + " КАК ТаблицаДляПоиска
		|		ПО ВТ_ДанныеИзФайла." + ПолеПоиска + " = " + ?(ПолеНеограниченнойДлины, "ПОДСТРОКА(", "") + "ТаблицаДляПоиска." + ПолеПоискаВТаблице + ?(ПолеНеограниченнойДлины,", 0, 1000)", "")
		+ ?(ПолеСвязиПоВладельцу <> "", " И ВТ_ДанныеИзФайла." + ПолеСвязиПоВладельцу + " = ТаблицаДляПоиска.Владелец", "");


Запрос.УстановитьПараметр("ДанныеИзФайла", ДанныеДляЗагрузки.Выгрузить( , "НомерСтроки, " + ПолеПоиска + ?(ПолеСвязиПоВладельцу <> "", ", " + ПолеСвязиПоВладельцу,"")));
		
		Выборка = Запрос.Выполнить().Выбрать();
		
		Пока Выборка.Следующий() Цикл
Показать
76. user1202776 02.12.19 11:54 Сейчас в теме
(73)
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |	ДанныеИзФайла.Артикул
             |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
             |ИЗ
             |	&ДанныеИзФайла КАК ДанныеИзФайла";


Запрос.УстановитьПараметр("ДанныеИзФайла",ДанныеИзФ);
Показать

этот запрос тоже возвращает пустое значение
79. YannikAlx 43 02.12.19 12:20 Сейчас в теме
Совершенно не важно каким он был изначально!
Вы должны сначала выстроить работающий минимум, который будет работать хоть как-то , и только потом вносить постепенно изменения для развития всей функциональности. При этом очень легко отслеживать на какой стадии перестало работать - значит эти улучшения и неверны.

А когда вы изначально наваяли скажем 3 км текста и потом пытаетесь понять почему оно не работает, то это непрофессионально!
80. user1202776 02.12.19 13:26 Сейчас в теме
(79)почему этот запрос возвращает пустое значение?
ДанныеИзФ=ЭтаФорма.БазовыеЦены.Выгрузить();
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |	ДанныеИзФайла.Артикул
             |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
             |ИЗ
             |	&ДанныеИзФайла КАК ДанныеИзФайла
             |;
             |
             |////////////////////////////////////////////////////////////­////////////////////
             |ВЫБРАТЬ
             |	ТаблицаДляПоиска.Ссылка КАК Номенклатура
             |ИЗ
             |	ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
             |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК ТаблицаДляПоиска
             |		ПО ВТ_ДанныеИзФайла.Артикул = ТаблицаДляПоиска.Артикул";


Запрос.УстановитьПараметр("ДанныеИзФайла",ДанныеИзФ);
РезультатЗапроса=Запрос.Выполнить().Выгрузить();
Показать
81. YannikAlx 43 02.12.19 13:35 Сейчас в теме
(80)
ВЫБРАТЬ
             |    ДанныеИзФайла.Артикул
             |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
             |ИЗ
             |    &ДанныеИзФайла КАК ДанныеИзФайла
             |;
             |
             |////////////////////////////////////////////////////////////­­­////////////////////
             |ВЫБРАТЬ
             |    ТаблицаДляПоиска.Ссылка КАК Номенклатура
             |ИЗ
             |    ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
             |  
Показать


А такой запрос тоже возвращает пустой результат ?
82. user1202776 02.12.19 13:46 Сейчас в теме
(81) выдает ошибку таблица не найдена ТаблицаДляПоиска.Ссылка
83. YannikAlx 43 02.12.19 13:49 Сейчас в теме
(82) я ошибся ... но ты смысл моего вопроса не понял?
Выбери хоть чтоо нибудь из своей ДанныеИзФайла....

ВЫБРАТЬ
             |    ДанныеИзФайла.Артикул
             |ПОМЕСТИТЬ ВТ_ДанныеИзФайла
             |ИЗ
             |    &ДанныеИзФайла КАК ДанныеИзФайла
             |;
             |
             |////////////////////////////////////////////////////////////­­­­////////////////////
             |ВЫБРАТЬ
             |    ДанныеИзФайла.Артикул КАК АртикулНоменклатуры
             |ИЗ
             |    ВТ_ДанныеИзФайла КАК ВТ_ДанныеИзФайла
             |  
Показать
84. user1202776 02.12.19 13:55 Сейчас в теме
(83) смысл понял, но выдает ошибки. Даже этот запрос выдает ошибку
85. user1202776 02.12.19 14:08 Сейчас в теме
(83)сделал так.Запрос возвращает только артикул из таблицы ТЗ
Запрос.Текст="ВЫБРАТЬ
             |	ТЗ.Артикул
             |ПОМЕСТИТЬ ТЗ
             |ИЗ
             |	&ТЗ КАК ТЗ
             |;
             |
             |////////////////////////////////////////////////////////////­////////////////////
             |ВЫБРАТЬ
             |	ТЗ.Артикул,
             |	Номенклатура.Наименование
             |ИЗ
             |	ТЗ КАК ТЗ
             |		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
             |		ПО ТЗ.Артикул = Номенклатура.Артикул";
Показать
87. user1202776 02.12.19 14:23 Сейчас в теме
(83)понял почему возвращает пустое значение в (85) )) В таблице значений ДанныеИзФ В Артикуле имеются пробелы. чтобы убрать пробелы,нужно выгрузить эту колонку и убрать пробелы?
109. user1202776 04.12.19 16:36 Сейчас в теме
Спасибо YannikAlx!
В итоге получилось вот так:
&НаСервере
Процедура РаспознаваниеНоменклатуры()
	
	 ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
    
    ДиалогВыбораФайла.Заголовок = "Прочитать табличный документ из файла";
    ДиалогВыбораФайла.Фильтр    = "Лист Excel (*.xls; *.xlsx)|*.xls; *.xlsx|";
    
    Если ДиалогВыбораФайла.Выбрать() Тогда
        
        Если ФайлДляЗагрузки <> ДиалогВыбораФайла.ПолноеИмяФайла Тогда
        
            мНомерЕдиницыИзмерения = 0;        
        КонецЕсли;
        
        ФайлДляЗагрузки = ДиалогВыбораФайла.ПолноеИмяФайла;
        
        Если ЗначениеЗаполнено(ФайлДляЗагрузки) Тогда
    
        ФайлНаДиске = Новый Файл(ФайлДляЗагрузки);
  
    
    КонецЕсли;

        
    КонецЕсли;

	
ТабличныйДокумент = Новый ТабличныйДокумент;

   ТабличныйДокумент.Прочитать(ФайлДляЗагрузки, СпособЧтенияЗначенийТабличногоДокумента.Значение);


   ПЗ = Новый ПостроительЗапроса;

   ПЗ.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТабличныйДокумент.Область());

   ПЗ.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;

   ПЗ.ЗаполнитьНастройки();

   ПЗ.Выполнить();

   
 ТЗ1= ПЗ.Результат.Выгрузить();
 тз_=Новый ТаблицаЗначений;
 тз_.Колонки.Добавить("Артикул", Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(80)));
  тз_.Колонки.Добавить("БазоваяЦена", Новый ОписаниеТипов("Число"));
   тз_.Колонки.Добавить("АктуальнаяЦена", Новый ОписаниеТипов("Число"));
		
Для Каждого Стр Из ТЗ1 Цикл
ЗаполнитьЗначенияСвойств(тз_.Добавить(), Стр);

КонецЦикла;

ДанныеИзФ=ЭтаФорма.БазовыеЦены.Выгрузить();
Для Каждого Строка Из тз_ Цикл
Нов=СтрЗаменить(СтрЗаменить(СокрЛП(Строка(Строка.Артикул)), Символ(160), ""), Символ(32),"");
Строка.Артикул=Нов;	
КонецЦикла;
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             |	ТЗ.Артикул,
             |	ТЗ.БазоваяЦена
             |ПОМЕСТИТЬ ТЗ
             |ИЗ
             |	&ТЗ КАК ТЗ
             |;
             |
             |////////////////////////////////////////////////////////////­////////////////////
             |ВЫБРАТЬ
             |	ТЗ.Артикул,
             |	Номенклатура.Наименование,
             |	Номенклатура.Ссылка,
             |	ТЗ.БазоваяЦена
             |ИЗ
             |	ТЗ КАК ТЗ
             |		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
             |		ПО ТЗ.Артикул = Номенклатура.Артикул";
Запрос.УстановитьПараметр("ТЗ",тз_);
РезультатЗапроса=Запрос.Выполнить().Выгрузить();	
 
Для каждого СтрокаТЗ Из РезультатЗапроса Цикл
СтрокаТЗ_БазовыеЦены = БазовыеЦены .Добавить();
ЗаполнитьЗначенияСвойств(СтрокаТЗ_БазовыеЦены , СтрокаТЗ );
СтрокаТЗ_БазовыеЦены.Цена=СтрокаТЗ.БазоваяЦена;
СтрокаТЗ_БазовыеЦены.Номенклатура=СтрокаТЗ.Ссылка;
КонецЦикла;
Показать

Может потом кому-то пригодится
86. YannikAlx 43 02.12.19 14:21 Сейчас в теме
Ну вот , а ты говоришь , что запрос пустой... )))))))))))))
А вот дальше Анализируй, что ты хочешь сделать и как ты это реализовать пытаешься....
Ты делаешь Внутреннее соединение с таблицей Номенклатуры по полю Артикул.
А ты уверен, что сам артикул не содержит лишних пробелов скажем или еще чего?
Смысл в том что по твоему поиску - запрос не ищет в Справочнике Номенклатуры ничего , потому и пустой...

Помнишь я тебе предлагал сделать не по "продвинутому" а по простому - при каждом добавлении строки в таблицу значений на форме искать в Номенклатуре по артикулу?
Попробуй так, может у тебя лучше так получится...
88. user1202776 02.12.19 14:26 Сейчас в теме
(86)да, имеются пробелы). Как лучше убрать эти пробелы?)
Сможете показать на примере, как сделать по простому?)
89. YannikAlx 43 02.12.19 14:29 Сейчас в теме
Пытайся как угодно - это элементарная задача....
Способов несколько...
Ну ведь ты же должен хоть что-то элементарное сам делать?
Или полностью надеешься только на сайт? ;-)
90. user1202776 02.12.19 14:38 Сейчас в теме
(89)сам то сделаю. но хочу узнать как лучше сделать
91. YannikAlx 43 02.12.19 14:49 Сейчас в теме
как сам сделаешь - так и лучше!
главное чтоб работало...
92. user1202776 02.12.19 16:09 Сейчас в теме
(91)выгрузил результат запроса в таблицу значений. Как передать результат запроса на клиент?
95. YannikAlx 43 02.12.19 16:22 Сейчас в теме
(92) На клиенте нужны только ожидалки реакций пользователя... Ибо форма перед ним.
А все действия проще делать на сервере...
97. user1202776 02.12.19 16:48 Сейчас в теме
(93)поисковиком да, но там через дополнительные функции делают
99. YannikAlx 43 02.12.19 16:59 Сейчас в теме
(97) вы сначала должны четко представлять - а вам оно вообще надо тащить на клиент что-то?
94. YannikAlx 43 02.12.19 16:21 Сейчас в теме
Вот только зачем на клиент передавать его?
Не проще все делать на сервере?
Ну в смысле те , которые связаны с информацией из базы данных...
96. user1202776 02.12.19 16:37 Сейчас в теме
(94)я делаю в процедуре выбора файла Excel, а там доступны только НаКлиенте и НаСервереБезКонтекста. Для этого не создавать же кнопку,при нажатии на которой будет заполняться таблица?
98. YannikAlx 43 02.12.19 16:52 Сейчас в теме
стандартная схема
&НаКлиенте
Процедура Заполнить(Команда)
 ЗаполнитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьНаСервере()
// И тут-то и происходят все твои действия по заполнению и тп и тд.....
//Типа 
ЭтаФорма.БазовыеЦены.Очистить();  // ну очищать конечно не надо , это я пошутил.....
КонецПроцедуры
Показать



Ты заполняешь свою таблицу значений на клиенте, а потом делаешь с ней что угодно &НаСервере...
ЭтаФорма.БазовыеЦены
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот