Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 7, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> УФ. ПриАктивацииСтроки - несколько раз просчитывает код          
Inkognito Подменю пользователя
сообщение 15.01.20, 14:18
Сообщение #1

Почти ветеран
******
Группа: Пользователи
Сообщений: 713
Из: Украина
Спасибо сказали: 435 раз
Рейтинг: 7.5

Перевожу код с обычных форм на управляемые. Бухгалтерия 2.0
Нужно: подсчитать суммы (БезНДС, НДС, СНДС) по выделенным строкам. В обычных формах все работает, типовая процедура табличной части: ПриАктивацииСтроки()
В управляемых формах все считает в первый раз корректно, но потом цикл срабатывает только по последней выделенной строке (дважды, хотя вызовов больше нигде нет). И суммы в результате - некорректны (по последней выделенной строке показывает в результате):

Код
ИтогПоВыделеннымСуммаБезНДС = 0; ИтогПоВыделеннымСуммаНДСДокумента = 0;  ИтогПоВыделеннымСуммаДокумента = 0; 
Вариант = Элементы.ТЧДокументы.ТекущиеДанные;
Если Вариант = Неопределено Тогда
    Возврат;
КонецЕсли;
Для Каждого Строка Из Элементы.ТЧДокументы.ВыделенныеСтроки Цикл
    НайденнаяСтрока = Элементы.ТЧДокументы.ДанныеСтроки(Строка);
    Сообщить("До: " + ИтогПоВыделеннымСуммаБезНДС);    
    ИтогПоВыделеннымСуммаБезНДС = ИтогПоВыделеннымСуммаБезНДС + Формат(НайденнаяСтрока.СуммаБезНДС, "ЧЦ=10; ЧДЦ=2; ЧН=0,00");  
    ИтогПоВыделеннымСуммаНДСДокумента = ИтогПоВыделеннымСуммаНДСДокумента + ?(ЗначениеЗаполнено(НайденнаяСтрока.СуммаНДСДокумента), Формат(НайденнаяСтрока.СуммаНДСДокумента, "ЧЦ=10; ЧДЦ=2; ЧН=0,00"), 0);
    ИтогПоВыделеннымСуммаДокумента = ИтогПоВыделеннымСуммаДокумента + Формат(НайденнаяСтрока.СуммаДокумента, "ЧЦ=10; ЧДЦ=2; ЧН=0,00");
    Сообщить("После: " + ИтогПоВыделеннымСуммаБезНДС);
КонецЦикла;
Сообщить("------------------");


В результате почему-то происходит три вызова, где первый - правильный, а остальные непонятно откуда и зачем берутся:
Результат
До: 0
После: 833,33
До: 833,33
После: 1 833,33
До: 1 833,33
После: 2 477,33 //прекрасно, то что нужно
------------------// Зачем считает непонятно что?
До: 0
После: 644
------------------// Зачем считает непонятно что?
До: 0
После: 644
------------------


Вопрос: как корректно просчитать суммы по выделенным строкам?



Сообщение отредактировал Vofka - 15.01.20, 17:28


fly Подменю пользователя
сообщение 15.01.20, 16:50
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 213
Спасибо сказали: 43 раз
Рейтинг: 42

Inkognito @ Сегодня, 14:18 * ,

по сути кож должен сработать.
проверьте, может есть "связь по типу" у Элементов каких то - там так же участвовать может событие "При активации строки"

daveal Подменю пользователя
сообщение 17.01.20, 14:07
Сообщение #3

Говорящий
***
Группа: Пользователи
Сообщений: 53
Из: Киев
Спасибо сказали: 18 раз
Рейтинг: 18

Возможно из-за того что дергается сервер (ЗначениеЗаполнено). С явным вызовом серверного метода так и было, здесь нужно проверить.
В таких случаях обычно в событии вызывают обработчик ожидания через 0.1 секунды для вызова кода:

Если Элементы.Список.ВыделенныеСтроки.Количество() = 1 Тогда

ПодключитьОбработчикОжидания("ОбработатьАктивизациюСтрокиСписка",0.1,Истина);

КонецЕсли;


Попробуйте точку останова поставить ПриАктивизацииСтроки и пройтись по шагам, в какой момент происходит второй вызов?

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 23.02.20, 2:41
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!