Тормоза при сканировании в рабочем месте кассира
База данных - HighLoad оптимизация
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Столкнулся с проблемой, на низкоскоростных каналах связи в УТ 11 в РМК подтормаживает поиск по штрихкоду.
Обнаружил серверный вызов, который и вызывает торможение.
Речь идет о процедуре ИнформацияОбОплатеЛокализация в форме ФормаДокументаРМК документа Чек ККМ.
Сама процедура может вызываться с клиента, но имеет 3 серверных вызова, которые и приводят к задержке.
На современных каналах связи эта задержка не столь существенна и незаметна, но если работа ведётся в глубинке, то значительно ухудшает работу пользователей.
Привожу доработанный код в расширении. Тестирование проводил на версии УТ 11.5.12.95, но думаю, будет работать и на других версиях.
Процедура СБП_ИнформацияОбОплатеЛокализация(Форма, ИнформацияОбОплате)
//++ Локализация
#Удаление
СуммаОплатыЭСФССПоДокументу = СуммаОплатыЭСФССПоДокументу(Форма.Объект.ОплатаПлатежнымиКартами);
#КонецУдаления
#Вставка
СуммаОплатыЭСФСС = 0;
Для Каждого СтрокаТЗ Из Форма.Объект.ОплатаПлатежнымиКартами Цикл
Если СтрокаТЗ.ВидОплаты = ПредопределенноеЗначение("Перечисление.ТипыПлатежнойСистемыККТ.СертификатНСПК") Тогда
СуммаОплатыЭСФСС = СуммаОплатыЭСФСС + СтрокаТЗ.Сумма;
КонецЕсли;
КонецЦикла;
СуммаОплатыЭСФССПоДокументу = СуммаОплатыЭСФСС;
#КонецВставки
Форма.ЭтоОплатаЭСФСС = (СуммаОплатыЭСФССПоДокументу > 0);
ИнформацияОбОплате.Вставить("ЭСФСС", СуммаОплатыЭСФССПоДокументу);
ИтогоОплачено = ИнформацияОбОплате.ИтогоОплачено
+ ИнформацияОбОплате.ЭСФСС;
ИнформацияОбОплате.Вставить("ИтогоОплачено", ИтогоОплачено);
#Удаление
СуммаОплатыСБППоДокументу = СуммаОплатыСБППоДокументу(Форма.Объект.ОплатаПлатежнымиКартами);
#КонецУдаления
#Вставка
СуммаОплатыСБП = 0;
ТолькоОплатаВыполнена = Истина;
Для Каждого СтрокаТЗ Из Форма.Объект.ОплатаПлатежнымиКартами Цикл
Если СтрокаТЗ.ВидОплаты = ПредопределенноеЗначение("Перечисление.ТипыПлатежнойСистемыККТ.СистемаБыстрыхПлатежей") Тогда
Если ТолькоОплатаВыполнена И СтрокаТЗ.СтатусОплатыСБП = ПредопределенноеЗначение("Перечисление.ТипыСтатусовОплатыСБП.Выполнена")
ИЛИ Не ТолькоОплатаВыполнена Тогда
СуммаОплатыСБП = СуммаОплатыСБП + СтрокаТЗ.Сумма;
КонецЕсли;
КонецЕсли;
КонецЦикла;
СуммаОплатыСБППоДокументу = СуммаОплатыСБП;
#КонецВставки
#Удаление
СуммаОжиданиеОплатыСБППоДокументу = СуммаОжиданиеОплатыСБППоДокументу(Форма.Объект.ОплатаПлатежнымиКартами);
#КонецУдаления
#Вставка
ТолькоОплатаВыполнена = Ложь;
СуммаОплатыСБП = 0;
Для Каждого СтрокаТЗ Из Форма.Объект.ОплатаПлатежнымиКартами Цикл
Если СтрокаТЗ.ВидОплаты = ПредопределенноеЗначение("Перечисление.ТипыПлатежнойСистемыККТ.СистемаБыстрыхПлатежей") Тогда
Если ТолькоОплатаВыполнена И СтрокаТЗ.СтатусОплатыСБП = ПредопределенноеЗначение("Перечисление.ТипыСтатусовОплатыСБП.Выполнена")
ИЛИ Не ТолькоОплатаВыполнена Тогда
СуммаОплатыСБП = СуммаОплатыСБП + СтрокаТЗ.Сумма;
КонецЕсли;
КонецЕсли;
КонецЦикла;
СуммаОжиданиеОплатыСБППоДокументу = СуммаОплатыСБП;
#КонецВставки
Форма.ЕстьОплатаСБП = (СуммаОплатыСБППоДокументу > 0);
ИнформацияОбОплате.Вставить("СБП", СуммаОплатыСБППоДокументу);
ИнформацияОбОплате.Вставить("СБПОжидание", СуммаОжиданиеОплатыСБППоДокументу);
ИтогоОплачено = ИнформацияОбОплате.ИтогоОплачено
+ ИнформацияОбОплате.СБП;
ИнформацияОбОплате.Вставить("ИтогоОплачено", ИтогоОплачено);
//-- Локализация
КонецПроцедуры
Вступайте в нашу телеграмм-группу Инфостарт