Имя: Пароль:
1C
1С v8
Обработка оповещения
0 digorec88
 
03.01.20
13:32
Всем привет и с Новым Годом всех. Проблема следующая.

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)

Если Источник = "ПодключаемоеОборудование" И ВводДоступен() Тогда

Если ИмяСобытия = "ScanData" Тогда
//Преобразуем предварительно к ожидаемому формату
Если Параметр[1] = Неопределено Тогда
Штрихкод = Параметр[0];
Иначе
Штрихкод = Параметр[1][1];
КонецЕсли;

//Если СтрДлина(СокрЛП(Штрихкод)) < 28 И СтрДлина(СокрЛП(Штрихкод)) <> 9 Тогда
Если СтрДлина(СокрЛП(Штрихкод)) > 28 Тогда    
//ТекстПриветствия = "Штрихкод не распознан, считайте повторно!!!";
ТекстПриветствия = "Документ получен.Считайте штрихкод с паллеты";
Если Элементы.СтраницыТСД.ТекущаяСтраница = Элементы.СтраницаРазмещение Тогда
Элементы.СтраницаРазмещение.Видимость = Ложь;
ПодключитьОбработчикОжидания("ОшибкаРазмещение",2);
ИначеЕсли Элементы.СтраницыТСД.ТекущаяСтраница = Элементы.СтриницаОтбор Тогда
Элементы.СтриницаОтбор.Видимость = Ложь;
ПодключитьОбработчикОжидания("ОшибкаОтбор",2);
ИначеЕсли Элементы.СтраницыТСД.ТекущаяСтраница = Элементы.СтраницаОтгрузка Тогда
Элементы.СтраницаОтгрузка.Видимость = Ложь;
ПодключитьОбработчикОжидания("ОшибкаОтгрузка",2);
ИначеЕсли Элементы.СтраницыТСД.ТекущаяСтраница = Элементы.СтраницаВозврат Тогда
Элементы.СтраницаВозврат.Видимость = Ложь;
ПодключитьОбработчикОжидания("ОшибкаВозврат",2);
КонецЕсли;

Элементы.СтраницаПриветствия.Видимость = Истина;
Элементы.СтраницыТСД.ТекущаяСтраница = Элементы.СтраницаПриветствия;
МассивСсылок = СсылкаНаЭлементСпискаПоШтрихкоду(Штрихкод);

Иначе
ОбработатьШтрихкоды(Штрихкод,МассивСсылок[0]);
ПодключитьОбработчикОжидания("ОбновитьФормуСписка",10);    

КонецЕсли;

КонецЕсли;

КонецЕсли;


КонецПроцедуры



Я печатаю документ задание на отбор и получаю ссылку на этот документ по штрихкоду с помощью этого
МассивСсылок = СсылкаНаЭлементСпискаПоШтрихкоду(Штрихкод);


&НаСервере
Функция СсылкаНаЭлементСпискаПоШтрихкоду(Штрихкод)

Менеджеры = Новый Массив();
Менеджеры.Добавить(ПредопределенноеЗначение("Документ.ОтборРазмещениеТоваров.ПустаяСсылка"));
Возврат ШтрихкодированиеПечатныхФорм.ПолучитьСсылкуПоШтрихкодуТабличногоДокумента(Штрихкод, Менеджеры);

КонецФункции



После этого срабатывает процедура
ОбработатьШтрихкоды(Штрихкод,МассивСсылок[0]);



Но эта процедура не отрабатывает потому что у меня в Штрихкоде до сих пор хранится штрихкод документа


В процедуре ОбработатьШтрихкоды(Штрихкод,МассивСсылок[0]); происходит следующее
Пользователь считывает с паллеты штрихкод который находится в строке табличной части. При считывании, идет обращение к этой строке и меняется статус этой строки на выполнено.



но программа не может найти эту строку по штрихкоду, потому что значение штрихкода до сих пор содержит в себе штрихкод документа. Поэтому в МассивСсылок[0] ссылку на документ я больше не вижу.


Как перед выполнением вот этой процедуры ОбработатьШтрихкоды(Штрихкод,МассивСсылок[0]); очистить штрихкод и сохранить ссылку на документ?



//Если СтрДлина(СокрЛП(Штрихкод)) < 28 И СтрДлина(СокрЛП(Штрихкод)) <> 9 Тогда
Если СтрДлина(СокрЛП(Штрихкод)) > 28 Тогда

Это я изменил для того чтобы получить ссылку на документ, потому чтодлина штрихкода документа>28.
А длина штрихкода строки табличной части =28
1 digorec88
 
03.01.20
14:04
У кого какие идеи?
2 Mort
 
03.01.20
14:04
Вангую: в форме есть реквизит "штрихкод" который конфликтует с параметром функции.
3 Mort
 
03.01.20
14:06
А выяснять чей это штрихкод по его длине это плохо.
4 digorec88
 
03.01.20
14:07
(3) А каким образом тогда мне грубо говоря очистить штрихкод документа,и после очередного считывания, обратится к строке табличной части?
5 digorec88
 
03.01.20
14:09
(3) Т.е я сначала считал штрихкод с печатной формы "Задание на отбор". Получил ссылку на этот документ.
У меня на ТСД высветилось сообщение "Ссылка на документ получена. Считайте штрихкод с паллеты."
Я считываю штрихкод,и у меня ссылка на документ пропадает.
6 digorec88
 
03.01.20
14:10
(5) Соответственно без ссылки я не могу попасть в документ. Штрихкод который на паллете равен штрихкоду в строке табличной части.
7 Бизон
 
03.01.20
14:49
Видел как в УТ ордерный склад сам ордера создает по реализациям? Так вот там все доки херачится в стек регистра сведений, и после выписки исчезают
8 digorec88
 
03.01.20
14:56
(7) Так а мне и не надо чтобы документ исчезал. Мне наоборот нужно чтобы ссылка на документ сохранилась, чтобы после второго сканирования обращаться к строкам табличной части этого документа
9 digorec88
 
03.01.20
14:58
(7) У меня поиск строки идет по штрихкоду который я отсканировал с паллеты.
СтрокаТабЧасти = ДокументОтборОбъект.ТоварыОтбор.Найти(Штрихкод, "МТ_Штрихкод");

Но почему то остается штрихкод документа, а не тот который я отсканировал с паллеты.
10 Бизон
 
03.01.20
14:59
Ну так а я тебе про что? Пикнул штрихкод дока, поместил в регистр документ, пикнул товар, забрал из регистра документ, очистил регистр.


PS или Усложнить штрих код строки, добавить номер и дату дока
11 digorec88
 
03.01.20
15:01
(10) поместил в регистр документ
Вот этот момент как можно реализовать?
12 Бизон
 
03.01.20
15:03
Если "сканируется документ" Тогда "в регистр добавляется док" ИначеЕсли "Если скоанируется Номенклатура, забираем док, чистим регистр" КонецЕсли
13 digorec88
 
03.01.20
15:04
(10) У меня ОбработкаОповещения &НаКлиенте выполняется. Получить объект из ссылки и записать его в регистр я не смогу
14 digorec88
 
03.01.20
15:05
(12) МассивСсылок = СсылкаНаЭлементСпискаПоШтрихкоду(Штрихкод);
Вот тут у меня хранится ссылка на документ
15 Бизон
 
03.01.20
15:06
Ну и почему из клиента нельзя вызвать сервер?
16 digorec88
 
06.01.20
10:11
(15) Получилось. Новозникла одна проблема.
Добавил регистр с одним измерением тип Ссылка На документ.
Запись Создается. Но как мне теперь обратится именно к этой записи регистра и вытащить оттуда нужный мне документ?
17 digorec88
 
06.01.20
10:14
(15) Написал функцию,которая возвращает ссылку на документ.
Но вот тут почему то в отладке не видет документ

Если СтрДлина(СокрЛП(Штрихкод)) > 28 Тогда
    Если Элементы.СтраницыТСД.ТекущаяСтраница = Элементы.СтриницаОтбор Тогда
     МассивСсылок  = СсылкаНаЭлементСпискаПоШтрихкоду(Штрихкод);
    ДобавитьЗаписьВРегистр(МассивСсылок[0]);
    Документ = ПолучитьНужныеДокументыОтборРазмещение(МассивСсылок[0]);
Иначе

Если СтрДлина(СокрЛП(Штрихкод)) = 28 Тогда
ОбработатьШтрихкоды(Штрихкод,Документ);
18 digorec88
 
06.01.20
10:57
Разобрался. Всем спасибо за помощь
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан