Имя: Пароль:
1C
 
Проверка товара по реквизиту
,
0 Mafiozaa
 
29.09.20
08:45
Приветствую. Нужна помощь, есть справочник номенклатура в нем есть числовой реквизит длинной 1 символ (1 - да, 0 - нет) состряпал функцию
  Функция НаличиеМаркера(Объект, Пароль)
      Рез = 0;                            
      Номен = СоздатьОбъект("Справочник.Номенклатура");
    Если Номен.НайтиПоРеквизиту("Маркер", 1, 1) = 1 Тогда
        Рез = 1;
        Объект.Password = 30;
        Объект.BarcodeType = 3;
        Объект.LineNumber = 256;
        Объект.FirstLineNumber = 1;
        Объект.BarcodeAlignment = 0;
        Объект.PrintBarcodeGraph()
    Иначе
        Рез = 0;
        Возврат Рез;
    КонецЕсли;
  КонецФункции
Но если я правильно понимаю то что сам сделал, то программа находит данный реквизит и его значение и записывает в рез = 1, но у каждой позиции в номенклатуре в значении данного реквизита будет где то 0, где то 1, как мне это сделать так,чтоб если у товара данный реквизит = 1, то делаем то то, если данный реквизит = 0, то не делаем ничего
1 Deon
 
29.09.20
08:54
Это какая версия 1Ски?
2 Василий Алибабаевич
 
29.09.20
08:55
(0) Весь код - в топку. Он вообще не делает вот это : "программа находит данный реквизит и его значение и записывает в рез = 1"
3 Василий Алибабаевич
 
29.09.20
08:55
(1) Клюшки.
4 Mafiozaa
 
29.09.20
08:56
(1) 7.7 (2) А что он делает?)
5 Василий Алибабаевич
 
29.09.20
08:56
(0) Кто такой "Объект", который передается в заголовке Функции?
6 Mafiozaa
 
29.09.20
08:57
(3) Объект это ККМ, пароль это пароль от ККМ
7 Mafiozaa
 
29.09.20
08:58
(2) Ну типо НайтиПоРеквизиту возвращает 1 если найден элемент, 0 если нет, а раз такой реквизит с таким значением есть в номенклатуре то он и ворачивает мне 1,в любом случае,даже если у конкретного товара он = 0
8 Василий Алибабаевич
 
29.09.20
09:01
(4) Ищет в справочнике "Номенклатура" первый элемент с реквизитом "Маркер" равным 1.
Если элемент с таким реквизитом есть - начинает что-то присваивать переменной Объект. (При этом не возвращает никаких значений)
Если такого элемента нет - возвращает "0". (Путем хитрых манипуляций с присвоением значений никому не нужных промежуточных переменных.)
9 Василий Алибабаевич
 
29.09.20
09:02
(7) "он и ворачивает мне 1". Покажите пальцем это код.
10 Mafiozaa
 
29.09.20
09:04
(9) Согласен, больше похоже на вот это (8) Поправьте меня как переделать?
11 Василий Алибабаевич
 
29.09.20
09:04
ТС! Твой код не выполняет никакой "Проверка товара по реквизиту". Он проверяет есть ли такой элемент в справочнике или нет. Все.
12 Василий Алибабаевич
 
29.09.20
09:04
(10) Пиши что нужно сделать.
13 Mafiozaa
 
29.09.20
09:06
(11) Мне нужно, когда я продаю товар (с чеком ККМ) проверяло товар на наличие маркировки,если маркировка есть то печатало его QR код на чеке, в противном случае QR код не печатается
14 Mafiozaa
 
29.09.20
09:10
(12) Предположим, продаю железо (если реквизит маркер у железа = 1) сообщить (то,се). Если реквизит железа 0 то продолжить далее по коду
15 tgu82
 
29.09.20
09:17
(0) Позиционируешься на Номен. И проверяешь значение реквизита Маркер.
Если Номен.Маркер=1 Тогда ..............

Если конечно я правильно Вас понял
16 Mafiozaa
 
29.09.20
09:21
(15) Сделал так как вы предложили,qr код перестал печататься даже там где он =1
17 Mafiozaa
 
29.09.20
09:24
(15) (11) А не надо ли мне, создать новый справочник привязать его к номенклатуре? и через использоватьвладельца?
18 tgu82
 
29.09.20
09:32
(17) Вы же должны еще передать и конкретный элемент номенклатуры, то есть
по идее Функция НаличиеМаркера(Объект, Пароль, номен)
А иначе непонятно для какой номенклатуры вы собираетесь проверять Маркер
19 Mafiozaa
 
29.09.20
09:34
(18) Не совсем понял,номенклатура одна = элементов много,растолкуйте))
20 MouHacTaBHuk
 
29.09.20
09:35
(17) Ты собственную задачу понимаешь? Мы пока не очень. Ты описываешь одно действие, код у тебя делает совсем другое; ты пишешь код твой, но что он делает не понимаешь.
Опиши чётко, что нужно проверить и какой должен быть результат/действия после проверки.
Какие qr коды? какой справочник? ты о чём вообще?...
21 Mafiozaa
 
29.09.20
09:40
(20) Хорошо смотри.
Что проверить - Товар который я продаю на наличие маркировки (Маркер = 1)
Если на данном товаре есть маркер то я печатаю qr code
Если его нет, то соответственно я его не печатаю
22 tgu82
 
29.09.20
10:03
(21) Ну правильно - значит ты должен на этом товаре спозиционироваться, а по твоей функции конкретного товара не видно и проверить есть маркер или нет - нельзя
23 MouHacTaBHuk
 
29.09.20
10:23
Функция НаличиеМаркера(Номен)
    Рез = 0;                            
    Если Номен.Маркер = 1 Тогда
        Рез = 1;
    КонецЕсли;
    Возврат Рез;
КонецФункции


или если у тебя это доп реквизит, тогда
24 MouHacTaBHuk
 
29.09.20
10:26
+(23) тогда надо найти значение этого реквизита. Например так:
Свойство = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоРеквизиту("Заголовок", "Маркер");
РеквизитВНомен = Номен.ДополнительныеРеквизиты.Найти(Свойство, "Свойство");
Если РеквизитВНомен.Значение = 1 Тогда
    Рез = 1;
КонецЕсли;
25 tgu82
 
29.09.20
10:32
(24) Ну там 7.7 вроде как.
Маркер - это реквизит числовой длиной 1, то есть либо 1 либо 0.
Если Номен.Маркер=1 Тогда....

Главное - спозиционироваться на конкретный элемент номенклатуры чтобы проверить есть маркер или нет.
26 MouHacTaBHuk
 
29.09.20
10:35
(25) а, пропустил информацию про 7.7. Свалю вину на ТС, так как ни в первом посте ни в пояснении не упомянул об этом
27 skafandr
 
29.09.20
11:16
(0)Это жесть
    
"Объект это ККМ". Вопрос-подсказка в ККМ ОДИН товар?
Если не один То значит должен быть перебор по строчкам ККМ,в нем проверка наличия маркера у товара в данной строчке.
Короче типа такого
  
Объект.ВыбратьСтроки();
Пока Объект.ПолучитьСтроку() = 1 Цикл
   Если Объект.Товар.Маркер=1 Тогда
     // тут делать свое "если маркировка есть то печатало его QR код на чеке"
   КонецЕсли
КонеЦикла


КонецЦикла
28 skafandr
 
29.09.20
11:17
(27) один КонецЦикла лишний - убрать