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