|
Как получть штрих код для товара? | ☑ | ||
|---|---|---|---|---|
|
0
krava_vlad
19.07.07
✎
18:12
|
Делаю так, но выдает ошибку на ШтрихКода.ШтрихКод; Значение не является значением объектного типа (ШтрихКод)
СтруктураШтрихКода = Новый Структура(); СтруктураШтрихКода.Вставить("Владелец", ДанныеСтроки.Ссылка); СтруктураШтрихКода.Вставить("ТипШтрихкода", ДанныеСтроки.Ссылка.УдалитьТипШтрихкода); ШтрихКода = РегистрыСведений.ШтрихКоды.ПолучитьПоследнее(ДатаОстатков, СтруктураШтрихКода); ОформлениеСтроки.Ячейки.ШтрихКод.Текст = ШтрихКода.ШтрихКод; ОформлениеСтроки.Ячейки.ШтрихКод.ОтображатьТекст = Истина; |
|||
|
1
Злобный Фей
19.07.07
✎
18:16
|
(0) Отладчик для кого придумали?
|
|||
|
2
krava_vlad
19.07.07
✎
18:19
|
И при чем здесь отладчик?
Он не выполняет запрос болеее всего к регистру сведений... |
|||
|
3
krava_vlad
19.07.07
✎
18:24
|
ШтрихКода пишет в конфигураторе неопределено почему
|
|||
|
4
krava_vlad
19.07.07
✎
19:03
|
Разве никто не пользовался штрих кодами?
|
|||
|
5
Андрюха
19.07.07
✎
19:06
|
(2) Фей дело говорит. В отладчике можешь поэкспериментировать с вызовом РегистрыСведений.ШтрихКоды.ПолучитьПоследнее
|
|||
|
6
SADA
19.07.07
✎
19:07
|
переменной "ШтрихКода" ничего не присваевается.
|
|||
|
7
SADA
19.07.07
✎
19:11
|
Погоди 5 мин я тебе напишу как получить !
|
|||
|
8
krava_vlad
19.07.07
✎
19:12
|
нашел функцию для получения штрих кода но и она возвращает выборку = 0. Передавл владельца, владельца и еденицу измерения все равно ноль на масу
// Функция возвращает штрих-код для требуемой номенклатуры, // на заданную дату, за заданную единицу измерения, пересчитанную в требуемую валюту по заданному курсу. // // Параметры: // ТипШтрихкода - ссылка на элемент плана видов характеристик "ТипыШтрихкодов", // Владелец - ссылка на элемент справочника "Номенклатура", // ЕдиницаИзмерения - ссылка на элемент справочника "Единицы измерения", определяет // для какой единицы надо получить штрихкод, // ХарактеристикаНоменклатуры - ссылка на элемент справочника "Характеристики номенклатуры", определяет // для какой характеристики надо получить штрихкод, // СерияНоменклатуры - ссылка на элемент справочника "Характеристики номенклатуры", определяет // для какой характеристики надо получить штрихкод, // КачествоНоменклатуры - ссылка на элемент справочника "Характеристики номенклатуры", определяет // для какой характеристики надо получить штрихкод. // // Возвращаемое значение: // Строка таблицы значений - результата запроса. // Функция ПолучитьШтрихКод(Владелец, ЕдиницаИзмерения = Неопределено, ХарактеристикаНоменклатуры = Неопределено, СерияНоменклатуры = Неопределено, Качество = Неопределено) Экспорт ПолученныйШтрихкод = Неопределено; Запрос = Новый Запрос; Если ТипЗнч(ЕдиницаИзмерения) = Тип ("Неопределено") Тогда ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.ПустаяСсылка(); КонецЕсли; Если ТипЗнч(ХарактеристикаНоменклатуры) = Тип ("Неопределено") Тогда ХарактеристикаНоменклатуры = Справочники.ХарактеристикиНоменклатуры.ПустаяСсылка(); КонецЕсли; Если ТипЗнч(СерияНоменклатуры) = Тип ("Неопределено") Тогда СерияНоменклатуры = Справочники.СерииНоменклатуры.ПустаяСсылка(); КонецЕсли; Если ТипЗнч(Качество) = Тип ("Неопределено") Тогда Качество = Справочники.Качество.ПустаяСсылка(); КонецЕсли; Запрос.УстановитьПараметр("Владелец", Владелец); Запрос.УстановитьПараметр("ЕдиницаИзмерения", ЕдиницаИзмерения); Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", ХарактеристикаНоменклатуры); Запрос.УстановитьПараметр("СерияНоменклатуры", СерияНоменклатуры); Запрос.УстановитьПараметр("Качество", Качество); Запрос.Текст = " |ВЫБРАТЬ //ПЕРВЫЕ 1 | РегШтрихкоды.ТипШтрихкода, | РегШтрихкоды.Штрихкод, | РегШтрихкоды.Код | ИЗ РегистрСведений.Штрихкоды КАК РегШтрихкоды | |ГДЕ | НЕ РегШтрихкоды.Штрихкод Есть NULL И | РегШтрихкоды.Владелец = &Владелец И | РегШтрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения И | РегШтрихкоды.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры И | РегШтрихкоды.СерияНоменклатуры = &СерияНоменклатуры И | РегШтрихкоды.Качество = &Качество |"; Выборка = Запрос.Выполнить().Выгрузить(); Если Выборка.Количество() > 0 Тогда ПолученныйШтрихкод = Выборка[0]; КонецЕсли; Возврат ПолученныйШтрихкод; КонецФункции // ПолучитьШтрихКод() |
|||
|
9
SADA
19.07.07
✎
19:13
|
//-----------------------------------------------
Функция ПолучитьШтрихкоды(Штрихкод = "", Все = Ложь, Владелец, ЕдиницаИзмерения = Неопределено, ХарактеристикаНоменклатуры = Неопределено, СерияНоменклатуры = Неопределено, Качество = Неопределено) // Получает штрихкоды номенклатурной позиции // // Создадим запрос по регистру сведений Запрос = Новый Запрос; Запрос.УстановитьПараметр("Владелец", Владелец); Запрос.УстановитьПараметр("ЕдиницаИзмерения", ЕдиницаИзмерения); Запрос.УстановитьПараметр("ХарактеристикаНоменклатуры", ХарактеристикаНоменклатуры); Запрос.УстановитьПараметр("СерияНоменклатуры", СерияНоменклатуры); Запрос.УстановитьПараметр("Качество", Качество); Запрос.УстановитьПараметр("ШК", Штрихкод); ТекстЗапроса = " |ВЫБРАТЬ РАЗЛИЧНЫЕ"+?(Все, "", " ПЕРВЫЕ 1")+" | Штрихкоды.Штрихкод |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды | |ГДЕ | Штрихкоды.Владелец = &Владелец |"+?(НЕ ЗначениеНеЗаполнено(ЕдиницаИзмерения), " И Штрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения","")+" |"+?(НЕ ХарактеристикаНоменклатуры=Неопределено," И Штрихкоды.ХарактеристикаНоменклатуры = &ХарактеристикаНоменклатуры","")+" |"+?(НЕ ЗначениеНеЗаполнено(СерияНоменклатуры), " И Штрихкоды.СерияНоменклатуры = &СерияНоменклатуры","")+" |"+?(НЕ ЗначениеНеЗаполнено(Качество), " И Штрихкоды.Качество = &Качество","")+" | |УПОРЯДОЧИТЬ ПО | Штрихкод"; Запрос.Текст= ТекстЗапроса; Рез = Запрос.Выполнить(); Выборка = Рез.Выбрать(ОбходРезультатаЗапроса.Прямой); ШК = ""; Массив = Новый Массив(); Пока Выборка.Следующий() Цикл ШК = Выборка.Штрихкод; Если НЕ Все Тогда Прервать; КонецЕсли; Массив.Добавить(ШК); КонецЦикла; // Вернем штрих-код или массив найденных ШК Если НЕ Все Тогда Возврат ШК; Иначе Возврат Массив; КонецЕсли; КонецФункции // ПолучитьШтрихкоды |
|||
|
10
SADA
19.07.07
✎
19:20
|
В качестве отботра ты передаешь структуру которая содержит ресурсы регистра
а надо передавать ИЗМЕРЕНИЯ "Структура, содержащая отбор по измерениям регистра. Имя ключа структуры должно совпадать с именем измерения регистра, заданного в конфигураторе, а значение элемента структуры - задает отбираемое по данному измерению значение." Но в данном случае измерение у регистра ШК только одно ото "Код" но ты его незнаешь, по этому приходится получать значение запросом ! |
|||
|
11
krava_vlad
19.07.07
✎
19:21
|
(5) ррр = РегистрыСведений.ШтрихКоды.ПолучитьПоследнее();
в отладчике ррр = неопределено; (7) Ок. Очень буду благодарен, а то уже никак не могу догнать (или еще опыта маловато) + жара невозможно сидеть, а менеджера хотят сразу видеть шитрих кода в справочнике |
|||
|
12
krava_vlad
19.07.07
✎
19:24
|
(9) Спаисбо, щас попробую.
А можно еще попросить сразу: Как по штрих коду найти товар? |
|||
|
13
SADA
19.07.07
✎
19:25
|
проблема в том что у одной номенклатуры может быть несколько ШК, они могут назначатся как на сам товат
так и на его характеристики и серии , единици измерения, качество по этому тебе надо определится какой ШК ты будешь брать но в принципе моя процедурка подойдет ! |
|||
|
14
SADA
19.07.07
✎
19:26
|
Функция ШтрихкодыНоменклатуры(Штрихкод)
// Получает информацию по заданному штрихкоду // // Создадим запрос по регистру сведений Запрос = Новый Запрос; Запрос.УстановитьПараметр("ШК",Штрихкод); ТекстЗапроса = " |ВЫБРАТЬ РАЗЛИЧНЫЕ | Штрихкоды.Владелец КАК Номенклатура, | Штрихкоды.Владелец.Наименование КАК Наименование, | Штрихкоды.ЕдиницаИзмерения КАК ЕдиницаИзмерения |ИЗ | РегистрСведений.Штрихкоды КАК Штрихкоды | |ГДЕ | Штрихкоды.Штрихкод = &ШК | |УПОРЯДОЧИТЬ ПО | Номенклатура, | ЕдиницаИзмерения"; Запрос.Текст= ТекстЗапроса; Возврат Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.Прямой); КонецФункции // ШтрихкодыНоменклатуры() |
|||
|
15
SADA
19.07.07
✎
19:29
|
еще скорее всего это реально затормозит отображение номенклатуры
потому как ты по каждому елементу запрос выполняешь в цикле в идеале тебе нужно сразу одним запросом получить все ШК н аотоброшаемый товар!! но это уже сложнее :))) |
|||
|
16
krava_vlad
19.07.07
✎
19:32
|
(15) Потом все равно его надо перебирать в циклке для того чтобы присвоить нужному артикулу. Я вывожу в форме списка и это процедура срабатывает для строк которые новые отображаются, тоесть за один раз отображается гдето до 20 артикулов.
|
|||
|
17
krava_vlad
19.07.07
✎
19:34
|
(13) У меня в базе стоит контроль на штрих коды. И я так понимаю штрих код у пары обуви и у ящика всегда разный? Поэтому 1 штрих код = одному товару с определеными характеристиками
|
|||
|
18
SADA
19.07.07
✎
19:36
|
(17) да но никто не мешает пользователям завести второй ШК но эту же характеристику :)) !!!!
|
|||
|
19
SADA
19.07.07
✎
19:38
|
База разрешает заведение у одной номенклатуры сколько угодно ШК на одну и туже характеристику !
|
|||
|
20
krava_vlad
19.07.07
✎
19:47
|
(19) Да точно. Тогда с товара выходить на штрих код не всегда правьно.
А вот с штрих на товар это нормально. Ну а в базе повторений штрих кодов не должно быть? |
|||
|
21
krava_vlad
19.07.07
✎
19:49
|
(9) Функция не обрабатывает еденицу измерения. как именно для конкретной еденицы товара?
|
|||
|
22
SADA
19.07.07
✎
19:52
|
Повторения ШК теоретически возможны
потому как сам ШК в регистре сидит не в измерении а в ресурсе. если ты хочешь использовать данную возможность то тебе надо в настройках параметров включить флажек "Разрешить назначение не уникальных ШК" по умлчаению эта возможность отключена ! |
|||
|
23
krava_vlad
19.07.07
✎
19:54
|
(21) Нет сори все работает. Выбирает в зависимости от еденицы.
|
|||
|
24
SADA
19.07.07
✎
19:55
|
В чем проблема с единицей измерения ?
если ты передаешь единицу измерения в функцию то она ищет ШК назначеный на эту единицу, если нет, то ее не учитывает! |
|||
|
25
krava_vlad
19.07.07
✎
19:57
|
(22) Нет мне надо чтобы ШК были уникальны. И надо запретить пользователям на один товар (еденицу измерения) вбивать разные ШК -- как это можно сделать?
|
|||
|
26
SADA
19.07.07
✎
20:00
|
ШК назначаются только в справочнике номенклатуры, там и проверяй при записи строки есть ли с на эти параметры назанченый ШК или нет
если есть, громко ругайся . |
|||
|
27
krava_vlad
19.07.07
✎
20:10
|
(24) проблема действительно есть. Если у товара нету такой единица на которою я делаю проверку, оно возвращает мне ШК на базовцю единицу товара. В чем ошибка?
|
|||
|
28
SADA
19.07.07
✎
20:17
|
У тебя случаено в локальном (глобальном) контексте нет переменой ЕдиницаИзмерения со значением базовой единици) посмотри в отладчике
что в параметр запроса передается |
|||
|
29
SADA
19.07.07
✎
20:19
|
ладно я домой, напиши в почту если что...
|
|||
|
30
krava_vlad
19.07.07
✎
20:29
|
В функцию передат значение неопределено, и в ней через отладчик также видно неопределено. Ок. Спасибо за помощь
|
|||
|
31
krava_vlad
19.07.07
✎
21:22
|
+ (30) Исправил код в запросе, написал
?(НЕ ЕдиницаИзмерения=Неопределено, " И Штрихкоды.ЕдиницаИзмерения = &ЕдиницаИзмерения","") И в запрос передаю ТекЕдиница = Справочники.ЕдиницыИзмерения.ПустаяСсылка(); Если у меня на товар нету определеной едеиницы измерения, если есть передаю его еденицу измерения |
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |