|
Программно записать реквизиты в справочник из обрабогтки | ☑ | ||
---|---|---|---|---|
0
modoll
13.06.16
✎
13:38
|
Здравствуйте, помогите решить вот такую проблему: в справочнике "Номенклатура" необходимо заполнить реквизит Бренд (он уже создан) из обработки. Данные в обработку добавляются из Excel.
Заранее спасибо! Процедура ЗагрузитьБрэнд() Для Каждого Элемент Из Товары Цикл СпрНом = Справочники.Номенклатура; Условие = НоменклатураПоКоду(СокрЛП(Элемент.Штрихкод)); Если(Условие = Неопределено) Тогда Сообщить("Не найдена номенклатура с кодом: " + Элемент.Штрихкод,СтатусСообщения.ОченьВажное); Иначе НоменкОбъект = Условие.ПолучитьОбъект(); НоменкОбъект.Брэнд = Товары.Брэнд; Попытка НоменкОбъект.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецЦикла; Попытка Обработка = Обработки.РегламентныеЗагрузкаНоменклатуры.Создать(); Обработка.ОчиститьУзлыНоменклатуры(); Исключение КонецПопытки; Предупреждение("Загружено"); Конецпроцедуры Функция НоменклатураПоКоду(Код) Попытка Номенклатура = НайтиНоменклатуруПоPLU(Число(Код)); Исключение КонецПопытки; Если Номенклатура = Неопределено Тогда Номенклатура = НайтиНоменклатуруПоШК(СтрЗаменить(Код," ","")); КонецЕсли; Возврат Номенклатура; КонецФункции Функция НайтиНоменклатуруПоPLU(КодPLU) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | КодыТоваровPLU.Номенклатура |ИЗ | РегистрСведений.КодыТоваровPLU КАК КодыТоваровPLU |ГДЕ | КодыТоваровPLU.Код = &Код"; Запрос.УстановитьПараметр("Код",КодPLU); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Номенклатура.Ссылка; КонецЕсли; Возврат Неопределено; КонецФункции Функция НайтиНоменклатуруПоШК(Код) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Штрихкоды.Владелец КАК Номенклатура |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды |ГДЕ | Штрихкоды.Штрихкод = &Код"; Запрос.УстановитьПараметр("Код",Код); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Номенклатура.Ссылка; КонецЕсли; Возврат Неопределено; КонецФункции |
|||
1
Лефмихалыч
13.06.16
✎
13:46
|
запросы в цикле - это хуже некуда. Одним запросом получай все, что надо обрабатывать.
А записать - проще некуда: НоменклатураОбъект = Выборка.СсылкаНаНоменклатуру.ПолучитьОбъект(); НоменклатураОбъект.Реквизит = Значение; НоменклатураОбхект.Записать(); |
|||
2
modoll
13.06.16
✎
13:52
|
Лефмихалыч, извините, я только учусь!!!
|
|||
3
Лефмихалыч
13.06.16
✎
13:59
|
(2) да мне-то что? Это ж у тебя оно будет тормозить и глючить, а не у меня
|
|||
4
modoll
13.06.16
✎
14:29
|
а вот как-то так..... тоже не в правильном направлении иду???
Процедура ЗагрузитьБрэнд() Запрос = Новый Запрос; Запрос.УстановитьПараметр("Брэнд",Товары.Брэнд.Выгрузить()); Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Брэнд = &Брэнд"; Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Сообщить("Не найдена номенклатура с кодом: " + + ОписаниеОшибки()); Иначе Выборка = Результат.Выбрать(); НомОбъект = Выборка.Ссылка.ПолучитьОбъект(); НомОбъект.Брэнд = "Новое наименование"; Попытка НомОбъект.Записать(); Исключение Сообщить("Не записывается, ругается на: " + ОписаниеОшибки()); КонецПопытки; КонецЕсли; Конецпроцедуры |
|||
5
hhhh
13.06.16
✎
16:16
|
(4) Товары.Брэнд.Выгрузить() это у тебя таблица.
Номенклатура.Брэнд - это просто поле. Думаешь в нашей вселенной когда нибудь будет Номенклатура.Брэнд = &Брэнд ??? Таблица равна полю? |
|||
6
modoll
13.06.16
✎
16:28
|
Вот я ......., буду исправлять, hhhhh
|
|||
7
modoll
14.06.16
✎
08:51
|
Товары.Брэнд.Выгрузить() - это
Товары - это ТЧ Брэнд - это поле в ТЧ Товары Номенклатура.Брэнд - это Поле Брэнд в справочнике Номенклатура |
|||
8
modoll
14.06.16
✎
12:45
|
Я уже и так пробую:
Процедура ЗагрузитьБрэнд() Для Каждого Элемент Из Товары Цикл НоменлСсылка = НоменклатураПоКоду(СокрЛП(Элемент.Штрихкод)); Если(НоменлСсылка = Неопределено) Тогда Сообщить("Не найдена номенклатура с кодом: " + Элемент.Штрихкод,СтатусСообщения.ОченьВажное); Иначе НоменлОбъект = НоменлСсылка.ПолучитьОбъект(); Если ЗначениеЗаполнено(Элемент.Брэнд) Тогда НоменлОбъект = Элемент.Брэнд; Иначе НоменлОбъект = "пусто"; КонецЕсли; Попытка НоменлОбъект.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; КонецЕсли; КонецЦикла; Попытка Обработка = Обработки.РегламентныеЗагрузкаНоменклатуры.Создать(); Обработка.ОчиститьУзлыНоменклатуры(); Исключение КонецПопытки; Предупреждение("Загружено"); Конецпроцедуры |
|||
9
hhhh
14.06.16
✎
12:52
|
(8) смотри (1)
|
|||
10
Мимохожий Однако
14.06.16
✎
12:54
|
Отладчиком пройдись
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |