![]() |
|
v7: Функция в условии | ☑ | ||
---|---|---|---|---|
0
Mafiozaa
06.10.20
✎
09:36
|
Приветствую есть функция
Функция глПолучитьТоварПоШтрихкоду(пШтрихкод, пТовар, пЕдиница, пКоличество) Экспорт Перем ТоварНайден; Штрихкод = СокрЛП(пШтрихкод); // Определение типа штрих-кода ПрефиксШтрихкода = глПрефиксШтрихкода(); Если ПустоеЗначение(ПрефиксШтрихкода) = 0 Тогда Если Найти(ПрефиксШтрихкода, Лев(Штрихкод, 1)) <> 0 Тогда // Удаляем спец. символ из штрих-кода Штрихкод = Сред(Штрихкод, 2); Иначе Сообщить("Формат считанного штрих-кода не предназначен для товаров"); Возврат 0; КонецЕсли; КонецЕсли; // идентификация полученного штрихкода Если Лев(Штрихкод, 2) = глПрефиксВесовогоШтрихкода Тогда // Используется свой внутренний штрих-код товара // Штрих-код построен по коду товара и весу ОбЕдиница = СоздатьОбъект("Справочник.Единицы"); ВремШтрихкод = глСформироватьШтрихкод(глПрефиксВесовогоШтрихкода, Сред(Штрихкод, 3, 5) + "00000"); Рез = ОбЕдиница.НайтиПоРеквизиту("ШтрихКод", ВремШтрихкод, 1); Если Рез = 1 Тогда пТовар = ОбЕдиница.Владелец; пЕдиница = ОбЕдиница.ТекущийЭлемент(); пКоличество = Число(Сред(Штрихкод, 8, 5)) / 1000; КонецЕсли; Иначе // Используется основной штрих-код товара // или свой внутренний штрих-код товара с префиксом "20" ОбЕдиница = СоздатьОбъект("Справочник.Единицы"); Рез = ОбЕдиница.НайтиПоРеквизиту("ШтрихКод", Штрихкод, 1); ИспользоватьЮнискан = глЗначениеПоУмолчанию("СпособыИспользованияСинхронизацииПоШтрихкодам"); Если Рез = 1 Тогда пТовар = ОбЕдиница.Владелец; пЕдиница = ОбЕдиница.ТекущийЭлемент(); пКоличество = 1; ИначеЕсли (ИспользоватьЮнискан = Перечисление.СпособыИспользованияСинхронизацииПоШтрихкодам.ЗапрашиватьОтсутствующие) или (ИспользоватьЮнискан = Перечисление.СпособыИспользованияСинхронизацииПоШтрихкодам.ЗапрашиватьИСинхронизировать) Тогда // В соответсвии с настройками пользователя выполняем запрос в ЮНИСКАН Парам = СоздатьОбъект("СписокЗначений"); Парам.Установить("ПоказыватьДиалог", 0); Парам.Установить("Штрихкод", Штрихкод); ОткрытьФормуМодально("Обработка.ЗапросПоШтрихкодамЮнискан", Парам); пТовар = Парам.Получить("пТовар"); пЕдиница = Парам.Получить("пЕдиница"); пКоличество = 1; Если ПустоеЗначение(пТовар) = 0 Тогда Если пТовар.Выбран() = 1 Тогда Рез = 1; КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; Если Рез = 0 Тогда Сообщить (Данный шк не найден) //// Меняю на Возврат 0; КонецЕсли; Возврат Рез; КонецФункции // глПолучитьТоварПоШтрихкоду() Возвращает 1 если товар есть, если нет выводит что штрихкод не найден, но да ладно изменяю функцию вместо сообщить, возврат 0, Из документа создаю условие Если глПолучитьТоварПоШтрихкоду(Данные, ВремТовар, ВремЕдиница, ВремКоличество) = 0 Тогда Сообщить("sdgsdgsdg"); Вопрос в том, что он не сообщает, хотя условие выполняет |
|||
1
Ёпрст
гуру
06.10.20
✎
09:47
|
Потому, что есть возврат из функции раньше, чем твоё сообщить в коде
|
|||
2
Ёпрст
гуру
06.10.20
✎
09:48
|
Открой жуколов и побегай по F8..увидишь куда заходит и что выполняется, раз так не видишь
|
|||
3
Mafiozaa
06.10.20
✎
09:49
|
(2) Привет брат,хорошо далеко не убегай,щас гляну
|
|||
4
Mafiozaa
06.10.20
✎
09:59
|
(2) Ну по логике правильно отрабатывает, еденицу ловит одно делаем и делает если ловит 1, но если 0, то ничего не делает
|
|||
5
Mafiozaa
06.10.20
✎
10:01
|
(1) Действительно есть возврат из функции раньше, но с условием <> 0
|
|||
6
Ёпрст
гуру
06.10.20
✎
10:09
|
(4) если не хочешь открывать жуколов, то втыкай сообщить во все места, егде есть возврат из функции..типа
Сообщить("были тут"); ..Сообщить("еще сюда заходили");.. инайдешь куда заходит и почему. Хотя, жуколовом быстрее, а в таком простом коде и так видно..без всего |
|||
7
Mafiozaa
06.10.20
✎
10:11
|
(6) Щас пробую через иначе, пока получается
|
|||
8
Mafiozaa
06.10.20
✎
10:12
|
(6) Брат спасибо за отклик, успешно ^_^
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |