Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: УФ. ПриАктивацииСтроки - несколько раз просчитывает код
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.3
Inkognito
Перевожу код с обычных форм на управляемые. Бухгалтерия 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
------------------


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

fly
Inkognito @ Сегодня, 14:18 необходимо зарегистрироваться для просмотра ссылки ,

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

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

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

КонецЕсли;


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