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