Точка входа при сканировании штрихкода

1. TokarevV 30 20.09.22 13:13 Сейчас в теме
Добрый день! УТ 10.3.8.9 (сильно изменённая). Платформа 8.3.16.1063. Есть задача прикрутить сканер штрихкода к форме списка документа "Перемещение товаров", по сканированию должен находиться и проводиться документ. Однако, при попытке сканирования любого штрихкода выводится сообщение об ошибке вида: "Ошибка в значении типа 'Дата', Дата '10.11.0815' не может быть записана в базу MS SQL Server с нулевым смещением дат.
В MS SQL студии, смещение дат нулевое. База гигантская, не выгрузится в dt.
Прошу подсказать, где можно найти точку входа в процедуры при сканировании до вывода сообщения об ошибке.
Ставил точки останова в модуле формы и объекта - не останавливается. Устанавливал отметку "Останавливаться по ошибке" - не останавливается. Закомментировал в "ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма)" в процедуре ПередОткрытием в форме списка - ошибка осталась.
Пытался поймать замером производительности - не нашел там процедур перед ошибкой.
Запускал на другом компьютере (может кеш плохой) - ошибка осталась.
На тестовой базе, где смещение 2000, сканирование работает без ошибки.
При этом, сканирование в формах справочников проходит без ошибки. При сканировании в справочнике "Номенклатура" срабатывает точка останова в Модуле обычного приложения в процедуре Обработка внешнего события.
Прикрепленные файлы:
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
39. TokarevV 30 21.09.22 12:03 Сейчас в теме
(1) Не подключалось оборудование в процедуре "Перед открытием", а с неподключенным оборудованием и не отрабатывало внешнее событие. Если в списке документов нет ни одного документа и курсор не спозиционирован на строке, тогда ошибки не было. Также, если сканировать код 4601546092069, то он складывается во вполне приличную дату и тоже ошибки не происходит.
Добился подключения ТО по строке Результат = "ПодключитьОборудование(ВидТО, Клиент);" в модуле объекта Обработки ТОСервер и стало возможно работать с кодом в модуле формы списка документа "Перемещение товаров".
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. user930087 20.09.22 13:32 Сейчас в теме +0.1 $m
(1) скорее всего сканирует в поле дата, поэтому оно оказывается пустым и документ не записывается
4. TokarevV 30 20.09.22 13:37 Сейчас в теме
(3) Там еще до записи не доходит. Сканирую, при открытой форме списка любого документа и выводится сообщение об ошибке.
6. user930087 20.09.22 13:42 Сейчас в теме
(4) как не доходит, если написано, что дата не может быть записана в базу? записывается в каком тогда случае?)
7. TokarevV 30 20.09.22 13:47 Сейчас в теме
(6) В этом и вопрос, как поймать этот момент.
8. user930087 20.09.22 13:55 Сейчас в теме
(7) так обработкавнешнегособытия есть вообще?
9. TokarevV 30 20.09.22 14:25 Сейчас в теме
(8) Есть, но вы в каком модуле спрашиваете?
В модуле обычного приложения.
В форме документа, ошибки нет, а вот в форме списка ошибка.
В форме списка документа нет этой процедуры.
10. user930087 20.09.22 14:31 Сейчас в теме
(9) если ее нет, то как вы хотите заставить отработать сканер и найти документ
11. TokarevV 30 20.09.22 14:37 Сейчас в теме
(10)
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
КонецПроцедуры


Процедура ВнешнееСобытие(Источник, Событие, Данные)

	Если Не ВводДоступен() Тогда
		Возврат;
	КонецЕсли;

	ПолучитьСерверТО().ОбработатьВнешнееСобытие(Событие, Данные, ЭтаФорма);

КонецПроцедуры // ВнешнееСобытие()
Показать
12. TokarevV 30 20.09.22 14:39 Сейчас в теме
(10) На тестовой базе нормально работает, находит, проводит.
13. user930087 20.09.22 14:40 Сейчас в теме
14. TokarevV 30 20.09.22 14:42 Сейчас в теме
(13) Тестова - узел РИБ, конфигурации одинаковые, боевая - главный узел РИБ, объём ~200 Гб
15. TokarevV 30 20.09.22 14:43 Сейчас в теме
(14) В боевой смещение дат - 0, в тестовой - 2000
39. TokarevV 30 21.09.22 12:03 Сейчас в теме
(1) Не подключалось оборудование в процедуре "Перед открытием", а с неподключенным оборудованием и не отрабатывало внешнее событие. Если в списке документов нет ни одного документа и курсор не спозиционирован на строке, тогда ошибки не было. Также, если сканировать код 4601546092069, то он складывается во вполне приличную дату и тоже ошибки не происходит.
Добился подключения ТО по строке Результат = "ПодключитьОборудование(ВидТО, Клиент);" в модуле объекта Обработки ТОСервер и стало возможно работать с кодом в модуле формы списка документа "Перемещение товаров".
2. N0t_F0und 10 20.09.22 13:26 Сейчас в теме +0.1 $m
Где-нибудь тут:
Прикрепленные файлы:
5. TokarevV 30 20.09.22 13:40 Сейчас в теме
(2) Точно такого модуля нет в моей конфе, но поискал по "обработатьсобытие" созвучные процедуры есть в "Обработка.ТОСервер.Модуль объекта", но ни в одной из них до ошибки не останавливается.
16. mixa4 20.09.22 14:46 Сейчас в теме +0.1 $m
посмотрите в модуле приложения (правой на корне конфигурации) процедуру ОбработкаВнешнегоСобытия - по-моему туда падает событие от сканера если такой же обработки нет в форме
17. TokarevV 30 20.09.22 15:00 Сейчас в теме
(16)
Закомментировал в модуле обычного приложения содержание процедуры "ОбработкаВнешнегоСобытия(Источник, Событие, Данные)"
и в модуле объекта обработки ТОСервер содержание фунции "ОбработатьВнешнееСобытие(Событие, Данные, Клиент)"
Ошибка осталась.
Уже не говорю, что точка останова там не срабатывала.
18. mixa4 20.09.22 15:17 Сейчас в теме
При сканировании в справочнике "Номенклатура" срабатывает точка останова в Модуле обычного приложения в процедуре Обработка внешнего события.

Как-то не совсем понятно, обычно при сканировании в номенклатуре событие ловится в ОбработкаВнешнегоСобытия в модуле формы, чтобы собственно искать по ШК именно номенклатуру, а как оно у вас срабатывает в модуле обычного приложения - точнее как при этом понимает что нужно номенклатуру искать?
Как вообще сканер подключен, через какой драйвер, есть закладка драйвера в сервис/параметры?
20. TokarevV 30 20.09.22 15:25 Сейчас в теме
(18) Отрабатывает процедура ВнешнееСобытие. Её содержание выше. Картинка с подробностями драйвера ниже.
Прикрепленные файлы:
25. mixa4 20.09.22 16:23 Сейчас в теме
Как будто вы что-то упускаете в описанном, не должно так быть, событие где-то должно ловиться (в том числе замером производительности) - или в модуле приложения в предопределенной процедуре, или в форме (кстати, в отличие от модуля приложения, нужно не забывать что в форме процедура обработки события должна быть назначена как обработчик соответствующего события формы).
Если уж точно нигде не ловится, то может это ошибка платформы-драйвера (пишет в журнал? хотя вроде нет), можно попробовать старый атоловский драйвер сканера - посмотреть будет ли разница.
19. user930087 20.09.22 15:19 Сейчас в теме +0.1 $m
(17) сканер не клавиатурный случаем?
обработка события подключена на форме?
21. TokarevV 30 20.09.22 15:27 Сейчас в теме
(19) Не доходит до обработки события.
Да подключен как клавиатура.
22. user930087 20.09.22 15:28 Сейчас в теме
(21) а в тесте через драйвер он нормально считывает?
23. TokarevV 30 20.09.22 15:32 Сейчас в теме
(22) Да, считывает нормально. Только в формах списка документов такая ошибка.
24. volex 20.09.22 16:12 Сейчас в теме +0.1 $m
А поискать в модуле формы списка строку "ПолучитьСерверТО().ПодключитьКлиента", вы пробовали? Вдруг где то еще подключение идет.
На худой конец зайти в
ПолучитьСерверТО().ПодключитьКлиента()
и поставить там точку останова, а при открытии списка посмотреть какая форма регистрируется.
26. TokarevV 30 20.09.22 16:58 Сейчас в теме
(24) ставил точки - не срабатывает, закомментировывал и в модуле обработки и эту строку - таже ошибка дат SQL
27. user1203706 13 20.09.22 19:56 Сейчас в теме
(1) включить замер производительности и посмотреть стэк вызовов
29. TokarevV 30 21.09.22 08:42 Сейчас в теме
28. user1203706 13 20.09.22 19:58 Сейчас в теме
И... есть уверенность, что в отладчике смотрите именно нужную форму списка ?
31. TokarevV 30 21.09.22 08:43 Сейчас в теме
(28) Да нужная форма списка, она специально подписана. В любой форме списка документа эта ошибка. Создал новый документ, вот в его пустой форме такая ошибка не возникает.
30. user1203706 13 21.09.22 08:43 Сейчас в теме
(29)
Чудес не бывает. Отладка на сервере включена хоть ?
32. TokarevV 30 21.09.22 08:44 Сейчас в теме
33. user1203706 13 21.09.22 08:45 Сейчас в теме
(32) И ? в замере производительности, поиском не находится ошибка эта ?
35. TokarevV 30 21.09.22 08:57 Сейчас в теме
(33) Закомментировал уже все процедуры/функции, которые попались в замер производительности. Всё равно ошибка.
34. user1203706 13 21.09.22 08:50 Сейчас в теме
(32) на вот, занимайся:

1. Запускаешь пофигуратор
2. Отладка - начать отладку
3. В предприятии открываешь форму списка свою, топаешь в пофигуратор
4. В пофигураторе Отладка - Остановить
5. Топаешь в Предприятие, сканируешь
6. Попадаешь в момент вызова в Пофигураторе
7. Наслаждаешься, кушаешь печеньки
36. TokarevV 30 21.09.22 08:58 Сейчас в теме
(34) Сначала ошибка, потом, если нажать ОК, отрабатывают другие процедуры.
37. user1203706 13 21.09.22 09:10 Сейчас в теме
(36)
Тогда надо лечить пациента, а не оживлять труп.
В консоле кластера серверов укажите смещение дат 2000 в свойствах базы, в скуле выполните скрипт, который проапдейтит все даты во всех таблицах.
38. user1203706 13 21.09.22 09:58 Сейчас в теме
На вот, в табличке YearOffset тока выстави еще 2000 потом.
Ну и скрипт проверь на копии. Он тупо выбирает все таблички и все колонки с типом datetime и апдейтит табличку, прибавляя 2000 лет.

Declare TablesAndFields cursor for

SEL ECT objects.name as Tablename, columns.name as columnname
FR OM
dbo.sysobjects as objects
left join dbo.syscolumns as columns
on objects.id = columns.id
wh ere objects.xtype = 'U'
and columns.xtype = 61

open TablesAndFields

Declare @TableName as varchar(100)
Declare @ColumnName as varchar(100)

FETCH NEXT FROM TablesAndFields
into @TableName, @ColumnName

WHILE @@FETCH_STATUS = 0
BEGIN
Exec ('upd ate ' + @TableName + '
se t ' + @ColumnName + ' = DATEADD(year,2000,'+@ColumnName +')'

)

FETCH NEXT FR OM TablesAndFields
into @TableName, @ColumnName
END

close TablesAndFields
deallocate TablesAndFields
go
Показать


блин, как обычно, движок форума ломает текст запроса, прикрепил тебе в файле
Прикрепленные файлы:
СмещениеДат2000.txt
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот