Точка входа при сканировании штрихкода
1С:Управление торговлей 10
Платформа 1С v8.3
Розничная и сетевая торговля (FMCG)
Windows
MS SQL
Россия
Добрый день! УТ 10.3.8.9 (сильно изменённая). Платформа 8.3.16.1063. Есть задача прикрутить сканер штрихкода к форме списка документа "Перемещение товаров", по сканированию должен находиться и проводиться документ. Однако, при попытке сканирования любого штрихкода выводится сообщение об ошибке вида: "Ошибка в значении типа 'Дата', Дата '10.11.0815' не может быть записана в базу MS SQL Server с нулевым смещением дат.
В MS SQL студии, смещение дат нулевое. База гигантская, не выгрузится в dt.
Прошу подсказать, где можно найти точку входа в процедуры при сканировании до вывода сообщения об ошибке.
Ставил точки останова в модуле формы и объекта - не останавливается. Устанавливал отметку "Останавливаться по ошибке" - не останавливается. Закомментировал в "ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма)" в процедуре ПередОткрытием в форме списка - ошибка осталась.
Пытался поймать замером производительности - не нашел там процедур перед ошибкой.
Запускал на другом компьютере (может кеш плохой) - ошибка осталась.
На тестовой базе, где смещение 2000, сканирование работает без ошибки.
При этом, сканирование в формах справочников проходит без ошибки. При сканировании в справочнике "Номенклатура" срабатывает точка останова в Модуле обычного приложения в процедуре Обработка внешнего события.
В MS SQL студии, смещение дат нулевое. База гигантская, не выгрузится в dt.
Прошу подсказать, где можно найти точку входа в процедуры при сканировании до вывода сообщения об ошибке.
Ставил точки останова в модуле формы и объекта - не останавливается. Устанавливал отметку "Останавливаться по ошибке" - не останавливается. Закомментировал в "ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма)" в процедуре ПередОткрытием в форме списка - ошибка осталась.
Пытался поймать замером производительности - не нашел там процедур перед ошибкой.
Запускал на другом компьютере (может кеш плохой) - ошибка осталась.
На тестовой базе, где смещение 2000, сканирование работает без ошибки.
При этом, сканирование в формах справочников проходит без ошибки. При сканировании в справочнике "Номенклатура" срабатывает точка останова в Модуле обычного приложения в процедуре Обработка внешнего события.
Прикрепленные файлы:
По теме из базы знаний
- Собственная реализация потокового сканирования с распознаванием для 1С (1C Документооборот + C# )
- “Заставим сканер пищать!” или Получаем обратную связь из 1С при сканировании штрихкодов
- Сканирование документов и штрихкодов через мобильное приложение в информационную базу. Заменяем сканеры на смартфон
- Находим взаимопонимание с заказчиками с применением Enterprise Architect
- Настройка сканера Datalogic QBT24xx для сканирования штрихкода SSCC (Короб)
Найденные решения
(1) Не подключалось оборудование в процедуре "Перед открытием", а с неподключенным оборудованием и не отрабатывало внешнее событие. Если в списке документов нет ни одного документа и курсор не спозиционирован на строке, тогда ошибки не было. Также, если сканировать код 4601546092069, то он складывается во вполне приличную дату и тоже ошибки не происходит.
Добился подключения ТО по строке Результат = "ПодключитьОборудование(ВидТО, Клиент);" в модуле объекта Обработки ТОСервер и стало возможно работать с кодом в модуле формы списка документа "Перемещение товаров".
Добился подключения ТО по строке Результат = "ПодключитьОборудование(ВидТО, Клиент);" в модуле объекта Обработки ТОСервер и стало возможно работать с кодом в модуле формы списка документа "Перемещение товаров".
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(10)
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
КонецПроцедуры
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Не ВводДоступен() Тогда
Возврат;
КонецЕсли;
ПолучитьСерверТО().ОбработатьВнешнееСобытие(Событие, Данные, ЭтаФорма);
КонецПроцедуры // ВнешнееСобытие()
Показать
(1) Не подключалось оборудование в процедуре "Перед открытием", а с неподключенным оборудованием и не отрабатывало внешнее событие. Если в списке документов нет ни одного документа и курсор не спозиционирован на строке, тогда ошибки не было. Также, если сканировать код 4601546092069, то он складывается во вполне приличную дату и тоже ошибки не происходит.
Добился подключения ТО по строке Результат = "ПодключитьОборудование(ВидТО, Клиент);" в модуле объекта Обработки ТОСервер и стало возможно работать с кодом в модуле формы списка документа "Перемещение товаров".
Добился подключения ТО по строке Результат = "ПодключитьОборудование(ВидТО, Клиент);" в модуле объекта Обработки ТОСервер и стало возможно работать с кодом в модуле формы списка документа "Перемещение товаров".
(16)
Закомментировал в модуле обычного приложения содержание процедуры "ОбработкаВнешнегоСобытия(Источник, Событие, Данные)"
и в модуле объекта обработки ТОСервер содержание фунции "ОбработатьВнешнееСобытие(Событие, Данные, Клиент)"
Ошибка осталась.
Уже не говорю, что точка останова там не срабатывала.
Закомментировал в модуле обычного приложения содержание процедуры "ОбработкаВнешнегоСобытия(Источник, Событие, Данные)"
и в модуле объекта обработки ТОСервер содержание фунции "ОбработатьВнешнееСобытие(Событие, Данные, Клиент)"
Ошибка осталась.
Уже не говорю, что точка останова там не срабатывала.
При сканировании в справочнике "Номенклатура" срабатывает точка останова в Модуле обычного приложения в процедуре Обработка внешнего события.
Как-то не совсем понятно, обычно при сканировании в номенклатуре событие ловится в ОбработкаВнешнегоСобытия в модуле формы, чтобы собственно искать по ШК именно номенклатуру, а как оно у вас срабатывает в модуле обычного приложения - точнее как при этом понимает что нужно номенклатуру искать?
Как вообще сканер подключен, через какой драйвер, есть закладка драйвера в сервис/параметры?
Как будто вы что-то упускаете в описанном, не должно так быть, событие где-то должно ловиться (в том числе замером производительности) - или в модуле приложения в предопределенной процедуре, или в форме (кстати, в отличие от модуля приложения, нужно не забывать что в форме процедура обработки события должна быть назначена как обработчик соответствующего события формы).
Если уж точно нигде не ловится, то может это ошибка платформы-драйвера (пишет в журнал? хотя вроде нет), можно попробовать старый атоловский драйвер сканера - посмотреть будет ли разница.
Если уж точно нигде не ловится, то может это ошибка платформы-драйвера (пишет в журнал? хотя вроде нет), можно попробовать старый атоловский драйвер сканера - посмотреть будет ли разница.
А поискать в модуле формы списка строку "ПолучитьСерверТО().ПодключитьКлиента", вы пробовали? Вдруг где то еще подключение идет.
На худой конец зайти в и поставить там точку останова, а при открытии списка посмотреть какая форма регистрируется.
На худой конец зайти в
ПолучитьСерверТО().ПодключитьКлиента()
(32) на вот, занимайся:
1. Запускаешь пофигуратор
2. Отладка - начать отладку
3. В предприятии открываешь форму списка свою, топаешь в пофигуратор
4. В пофигураторе Отладка - Остановить
5. Топаешь в Предприятие, сканируешь
6. Попадаешь в момент вызова в Пофигураторе
7. Наслаждаешься, кушаешь печеньки
1. Запускаешь пофигуратор
2. Отладка - начать отладку
3. В предприятии открываешь форму списка свою, топаешь в пофигуратор
4. В пофигураторе Отладка - Остановить
5. Топаешь в Предприятие, сканируешь
6. Попадаешь в момент вызова в Пофигураторе
7. Наслаждаешься, кушаешь печеньки
На вот, в табличке YearOffset тока выстави еще 2000 потом.
Ну и скрипт проверь на копии. Он тупо выбирает все таблички и все колонки с типом datetime и апдейтит табличку, прибавляя 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
Показать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
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот