Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0
Всем доброго времени!
Есть такая задача: Документ "Заказ покупателя", в нем номенклатура, характеристика, единица измерения. Поле штрихкода. Штрихкод подвязан к характеристике и единице змерения. Выбор номенклатуры, характеристики, единицы - срабатывает собитые, которое вытягивает штрихкод в его клетку.
Проблема... Ничего не вытягивается из регистра. Знаний в 1С программировании минимум, так что сделано было вот так:
В общем модуле -
Функция ПолучитьШтрихКод(АктуальнаяДата, мВладелец, мЕдиницаИзмерения, мХарактеристикаНоменклатуры) Экспорт Отбор = Новый Структура; Отбор.Вставить("Владелец", мВладелец); ЗначенияРесурсов = РегистрыСведений.Штрихкоды.ПолучитьПоследнее(АктуальнаяДата, Отбор); Возврат ЗначенияРесурсов.Штрихкод; КонецФункции
В документе -
ШтрихКод = РаботаСДокументами.ПолучитьШтрихКод();
Что то не так, потому как и "много фактических параметров" и разная фигня происходит в виде "метод объекта не найден". Из других регистров таким образом данные вытянуть получается, вот с ШК ничего не выходит!
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0
sava1 @ Сегодня, 15:48
,
Просто для того, чтоб вручную не переносить штрихкод в документ. А, так в УПП с ШК всё нормально и костылей не требует!
Vofka @ Сегодня, 16:15
,
Передал параметры.
Вот полный текст функции:
Процедура ПолучитьКодыБухтКнопка(Элемент) Стр12 = ЭлементыФормы.Товары.ТекущиеДанные; Для каждого Стр12 Из Товары Цикл АктуальнаяДата = Дата; КодН = РаботаСДокументами.ПолучитьШтрихКод(АктуальнаяДата, Стр12.Номенклатура, Стр12.ЕдиницаИзмерения, Стр12.ХарактеристикаНоменклатуры); КонецЦикла; КонецПроцедуры
А, вот что получил в итоге в выводе: {ОбщийМодуль.РаботаСДокументами.Модуль(220)}: Значение не является значением объектного типа (Штрихкод) Возврат ЗначенияРесурсов.Штрихкод;
Из любых других регистров нормально тянутся данные, а вот с штрихкодами как то провис...
1.Штрихкоды - непериодический регистр 2. Попробуйте запросом - ибо отбор надо брать и по характеристике и Единице измерения 3. Надо проверять полученное значение - может такого ШК нет?
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0
sava1 @ Сегодня, 17:49
, Проверять наличие ШК нет надобности. Он там однозначно есть. Отбор да... И по характеристике и по единице измерения. Может подскажете как сформировать запрос?
В общем модуле наворотил что то вот такое:
ШК=""; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 |Штрихкоды.Штрихкод КАК Штрихкод |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды |ГДЕ | Штрихкоды.Владелец = &Владелец | |СГРУППИРОВАТЬ ПО | Штрихкоды.Штрихкод | |УПОРЯДОЧИТЬ ПО | Штрихкод УБЫВ"; Запрос.УстановитьПараметр("Владелец",Номенклатура); Выб = Запрос.Выполнить().Выбрать(); Если Выб.Следующий() Тогда ШК=Выб.Штрихкод; КонецЕсли; Возврат(ШК); КонецФункции
Группа: Пользователи
Сообщений: 63
Спасибо сказали: 2 раз
Рейтинг: 0
sava1 @ Вчера, 21:41
, Премного благодарствую!
Понял целую гору своих ошибок!
Через какое то время неведомого колдовства родилась вот такая процедура, которая из штрихкода тянет коды мерной и немерной бухты. У нас код товара - последние 6 цифр штрихкода... Вручную обработать огромный заказ, просто ад.
Процедура ПолучитьКодыБухтКнопка(Элемент) Стр12 = ЭлементыФормы.Товары.ТекущиеДанные; Для каждого Стр12 Из Товары Цикл ЗапросКодН = Новый Запрос; ЗапросКодН.Текст =(" | ВЫБРАТЬ | Штрихкоды.Штрихкод |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды |ГДЕ | Штрихкоды.Владелец = &Владелец | И Штрихкоды.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры | И Штрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения |"); ЗапросКодН.УстановитьПараметр("Владелец", Стр12.Номенклатура); ЗапросКодН.УстановитьПараметр("ХарактеристикаНоменклатуры", Стр12.ХарактеристикаНоменклатуры); ЗапросКодН.УстановитьПараметр("ЕдиницаИзмерения", Стр12.ЕдиницаИзмерения); РезультатКодН = ЗапросКодН.Выполнить().Выбрать(); Пока РезультатКодН.Следующий() Цикл НШК = РезультатКодН.Штрихкод; Стр12.КодН = НШК - 2000000000000; КонецЦикла; ЗапросКодМ = Новый Запрос; ЗапросКодМ.Текст =(" | ВЫБРАТЬ | Штрихкоды.Штрихкод |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды |ГДЕ | Штрихкоды.Владелец = &Владелец | И Штрихкоды.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры | И Штрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения |"); ЗапросКодМ.УстановитьПараметр("Владелец", Стр12.Номенклатура); ЗапросКодМ.УстановитьПараметр("ХарактеристикаНоменклатуры", Стр12.ХарактеристикаНоменклатуры); ЗапросКодМ.УстановитьПараметр("ЕдиницаИзмерения", Стр12.Разбухтовка); РезультатКодМ = ЗапросКодМ.Выполнить().Выбрать(); Пока РезультатКодМ.Следующий() Цикл МШК = РезультатКодМ.Штрихкод; Стр12.КодМ = МШК - 2000000000000; КонецЦикла;
Никому такое не прогодится : 1. Запрос в цикле - вооще-то можно, если очень хочется. 2. Текста запроса достаточно одного и объявить вне цикла 3. зачем нужны текущиеДанные, если Вы их не используете ?
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!