Добрый день. Помогите пожалуйста новичку разобраться с проблемой.
Загружаю в базу файл Excel. Из файла берутся только столбцы артикул, производитель, описание и ссылка на картинку.
Дальше создала кнопку, при нажатии на которую, по идее, артикул и производитель должен сравниваться со значениями в Справочнике Номенклатура, а при совпадении этих значений в Номенклатуру должны записываться данные из строки описание и ссылка на картинку.
Пишу вот так(вообще не уверена что мысль правильная):
Когда в базе нажимаю кнопку, чтобы прошла операция выходит вот такая ошибка:
{Обработка.КартинкиИОписанияИзПрайса.Форма.Форма1.Форма(80)}: Поле объекта не обнаружено (Артикул)
Сравнение = Сравнение.Сравнить(Объект.Артикул, Объект.ДанныеПоискаИзExcel.Артикул);
Я понимаю, что вероятнее всего нужно на Сервере вызвать справочник..
Подскажите, пожалуйста, как это можно сделать?
Загружаю в базу файл Excel. Из файла берутся только столбцы артикул, производитель, описание и ссылка на картинку.
Дальше создала кнопку, при нажатии на которую, по идее, артикул и производитель должен сравниваться со значениями в Справочнике Номенклатура, а при совпадении этих значений в Номенклатуру должны записываться данные из строки описание и ссылка на картинку.
Пишу вот так(вообще не уверена что мысль правильная):
&НаКлиенте
Процедура Объединить(Команда)
Для Каждого Стр Из Объект.ДанныеПоискаИзExcel Цикл
Сравнение = Сравнение.Сравнить(Объект.Артикул, Объект.ДанныеПоискаИзExcel.Артикул);
Сравнение2 = Сравнение.Сравнить(Объект.Объект.Производитель, Объект.ДанныеПоискаИзExcel.Производитель);
Если Объект.Артикул <> Объект.ДанныеПоискаИзExcel.Артикул или
Объект.Производитель <> Объект.ДанныеПоискаИзExcel.Производитель Тогда
Прервать
КонецЕсли
КонецЦикла;
Для Каждого Стр Из Объект.ДанныеПоискаИзExcel Цикл
Если Объект.Артикул = Объект.ДанныеПоискаИзExcel.Артикул и
Объект.Производитель = Объект.ДанныеПоискаИзExcel.Производитель Тогда
Объект.Описание = Объект.ДанныеПоискаИзExcel.ОписаниеТовара;
Объект._ПутьКартинкамНаСайте = Объект.ДанныеПоискаИзExcel.СсылкаНаКартинку;
Прервать
КонецЕсли
КонецЦикла;
КонецПроцедуры
ПоказатьКогда в базе нажимаю кнопку, чтобы прошла операция выходит вот такая ошибка:
{Обработка.КартинкиИОписанияИзПрайса.Форма.Форма1.Форма(80)}: Поле объекта не обнаружено (Артикул)
Сравнение = Сравнение.Сравнить(Объект.Артикул, Объект.ДанныеПоискаИзExcel.Артикул);
Я понимаю, что вероятнее всего нужно на Сервере вызвать справочник..
Подскажите, пожалуйста, как это можно сделать?
По теме из базы знаний
- Сравнение значений типа Хранилище
- Быстрый поиск дублей с четким/нечетким поиском по любому сочетанию реквизитов/реквизитов таб. частей с отбором и быстрой заменой значений в ЛЮБЫХ базах 8.1-8.3 (УТ 10.3, БП 2, ЗУП 2.5, КА 1.1, УТ 11, БП 3, УНФ 1.6/3.0, КА 2, ЗУП 3 и т.д.)
- Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2
- Сравнение ЛЮБЫХ данных ЛЮБЫХ баз (и РИБ, по правилам конвертаций) по контрольным суммам выбранных реквизитов, работающих на платформе 8.3
- Сравнение значений констант - поиск расхождений в настройках двух баз. Розница, УТ, КА, ЕРП, ЗУП и другие конфигурации
Найденные решения
(7)
Могу только посоветовать читать книги по 1С. Для написания запросов в 1с механизм Конструктор запросов с ним легко можно написать нужный запрос.
1)
раз у тебя данные уже в объекте хранятся, то можно не помещать во временную таблицу,
2) зачем справочник номенклатура во вложенном запросе?
3)
Неправильно
4)
куда устанавливается параметр? имя параметра не должно содержать точку.
Дальше через цикл выборки обходишь результат запроса и для каждой номенклатуры получаешь объект (Выборка.Ссылка.ПолучитьОбъект()),и уже в объект вставляешь СсылкаНаКартинку и ОписаниеТовара и только потом записываешь объект
Могу только посоветовать читать книги по 1С. Для написания запросов в 1с механизм Конструктор запросов с ним легко можно написать нужный запрос.
1)
| ПОМЕСТИТЬ ВыбНоваяСтрока
раз у тебя данные уже в объекте хранятся, то можно не помещать во временную таблицу,
2) зачем справочник номенклатура во вложенном запросе?
3)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочники.Номенклатура.Объект.Описание КАК НоваяСтрока.ОписаниеТовара И Справочники.Номенклатура.Объект._ПутьКартинкамНаСайте КАК НоваяСтрока.СсылкаНаКартинку";
Неправильно
4)
Запрос.УстановитьПараметр("Справочники.Номенклатура", ВыгружатьХарактеристики)
куда устанавливается параметр? имя параметра не должно содержать точку.
Запрос.Текст = "
| ВЫБРАТЬ
| Номенклатура.Ссылка,
| ДанныеПоискаИзExcel .Артикул,
| ДанныеПоискаИзExcel .Производитель,
| ДанныеПоискаИзExcel .СсылкаНаКартинку,
| ДанныеПоискаИзExcel .ОписаниеТовара,
|
|ИЗ
| Объект.ДанныеПоискаИзExcel КАК ДанныеПоискаИзExcel
| ЛЕВОЕ СОЕДИНЕНИЕ Справочники.Номенклатура.Объект.Описание КАК Номенклатура
|ПО Номенклатура.Артикул = ДанныеПоискаИзExcel .Артикул
|И Номенклатура.Производитель.Наименование= ДанныеПоискаИзExcel .Производитель";
;
ПоказатьДальше через цикл выборки обходишь результат запроса и для каждой номенклатуры получаешь объект (Выборка.Ссылка.ПолучитьОбъект()),и уже в объект вставляешь СсылкаНаКартинку и ОписаниеТовара и только потом записываешь объект
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
т.е. я правильно понимаю, тебе нужно дозаполнить справочник номенклатура данными?
Тогда делай так, или обработка, или кнопка на форме списка. сначала выгружаешь ексель в таблицу значений, потом эту таблицу значений в запрос через временную таблицу.
И потом в запросе, полученную временную таблицу соединяй со справочником номенклатура, по двум полям "Артикул" и "производитель" левым соединением.
поля выбора у тебя будет Ссылка из справочника и 2 поля из временной таблицы "описание" и "ссылка на картинку". В выборке получаешь объект справочника, записываешь в него недостающие реквизиты и записываешь сам объект.
Тогда делай так, или обработка, или кнопка на форме списка. сначала выгружаешь ексель в таблицу значений, потом эту таблицу значений в запрос через временную таблицу.
И потом в запросе, полученную временную таблицу соединяй со справочником номенклатура, по двум полям "Артикул" и "производитель" левым соединением.
поля выбора у тебя будет Ссылка из справочника и 2 поля из временной таблицы "описание" и "ссылка на картинку". В выборке получаешь объект справочника, записываешь в него недостающие реквизиты и записываешь сам объект.
(5)
Получилось вот так:
Вот только не знаю как с кнопкой это связать...Чтобы из таблицы записались данные в номенклатуру
Получилось вот так:
&НаСервере
Процедура ЗаполнитьХарактеристикиНаСервере(ВыгружатьХарактеристики)
Запрос = Новый Запрос;
Запрос.Текст = "
| ВЫБРАТЬ
| НоваяСтрока.Артикул,
| НоваяСтрока.Производитель,
| НоваяСтрока.СсылкаНаКартинку,
| НоваяСтрока.ОписаниеТовара,
| ПОМЕСТИТЬ ВыбНоваяСтрока
|
|ИЗ
| Объект.ДанныеПоискаИзExcel КАК ВременнаяТаблица;
| (ВЫБРАТЬ
| Справочники.Номенклатура КАК ДанныеПоискаИзExcel,
| Справочники.Номенклатура.Объект.Артикул КАК НоваяСтрока.Артикул,
| Справочники.Номенклатура.Объект.Производитель КАК НоваяСтрока.Производитель,
|ИЗ
| Справочники.Номенклатура) КАК ДанныеПоискаИзExcel;
| ЛЕВОЕ СОЕДИНЕНИЕ Справочники.Номенклатура.Объект.Описание КАК НоваяСтрока.ОписаниеТовара И Справочники.Номенклатура.Объект._ПутьКартинкамНаСайте КАК НоваяСтрока.СсылкаНаКартинку";
Запрос.УстановитьПараметр("Справочники.Номенклатура", ВыгружатьХарактеристики);
КонецПроцедуры
ПоказатьВот только не знаю как с кнопкой это связать...Чтобы из таблицы записались данные в номенклатуру
(7)
Могу только посоветовать читать книги по 1С. Для написания запросов в 1с механизм Конструктор запросов с ним легко можно написать нужный запрос.
1)
раз у тебя данные уже в объекте хранятся, то можно не помещать во временную таблицу,
2) зачем справочник номенклатура во вложенном запросе?
3)
Неправильно
4)
куда устанавливается параметр? имя параметра не должно содержать точку.
Дальше через цикл выборки обходишь результат запроса и для каждой номенклатуры получаешь объект (Выборка.Ссылка.ПолучитьОбъект()),и уже в объект вставляешь СсылкаНаКартинку и ОписаниеТовара и только потом записываешь объект
Могу только посоветовать читать книги по 1С. Для написания запросов в 1с механизм Конструктор запросов с ним легко можно написать нужный запрос.
1)
| ПОМЕСТИТЬ ВыбНоваяСтрока
раз у тебя данные уже в объекте хранятся, то можно не помещать во временную таблицу,
2) зачем справочник номенклатура во вложенном запросе?
3)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочники.Номенклатура.Объект.Описание КАК НоваяСтрока.ОписаниеТовара И Справочники.Номенклатура.Объект._ПутьКартинкамНаСайте КАК НоваяСтрока.СсылкаНаКартинку";
Неправильно
4)
Запрос.УстановитьПараметр("Справочники.Номенклатура", ВыгружатьХарактеристики)
куда устанавливается параметр? имя параметра не должно содержать точку.
Запрос.Текст = "
| ВЫБРАТЬ
| Номенклатура.Ссылка,
| ДанныеПоискаИзExcel .Артикул,
| ДанныеПоискаИзExcel .Производитель,
| ДанныеПоискаИзExcel .СсылкаНаКартинку,
| ДанныеПоискаИзExcel .ОписаниеТовара,
|
|ИЗ
| Объект.ДанныеПоискаИзExcel КАК ДанныеПоискаИзExcel
| ЛЕВОЕ СОЕДИНЕНИЕ Справочники.Номенклатура.Объект.Описание КАК Номенклатура
|ПО Номенклатура.Артикул = ДанныеПоискаИзExcel .Артикул
|И Номенклатура.Производитель.Наименование= ДанныеПоискаИзExcel .Производитель";
;
ПоказатьДальше через цикл выборки обходишь результат запроса и для каждой номенклатуры получаешь объект (Выборка.Ссылка.ПолучитьОбъект()),и уже в объект вставляешь СсылкаНаКартинку и ОписаниеТовара и только потом записываешь объект
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот