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

Хранилище

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

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



> Хочу получить сумму по колонке, но получаю значение первого элемента ТЗ первой строки , Уличная магия отдыхает.          
Talkman Подменю пользователя
сообщение 04.02.19, 14:26
Сообщение #1

Завсегдатай
****
Группа: Пользователи
Сообщений: 189
Из: Черкассы
Спасибо сказали: 9 раз
Рейтинг: 9

И сразу кусочек кода.
ТТТ.Очистить();
    ТТТ.НоваяКолонка("Автор","Справочник.Сотрудники");
    ТТТ.НоваяКолонка("Д");
    ТТТ.НоваяКолонка("Т");
    ТТТ.НоваяКолонка("С","Число");
    
    Сз = Создатьобъект("СписокЗначений");
    Спр = Создатьобъект("Справочник.ТМЦ");
    Спр.Использоватьродителя(папка);
    Спр.ВыбратьЭлементы();
    Пока Спр.ПолучитьЭлемент() = 1 Цикл
        Если Спр.этоГруппа() = 0 Тогда
            Сз.ДобавитьЗначение(Спр.ТекущийЭлемент());
        КонецЕсли;    
    КонецЦикла;    
    Д = "";                                            
    СзД = СоздатьОбъект("СписокЗначений");
    Би = Создатьобъект("Бухгалтерскиеитоги");
    Би.ИспользоватьСубконто(ВидыСубконто.ТМЦ,Сз);
    Би.ВыполнитьЗапрос(НачДата,КонДата,"281","902",,2,"Операция");
    Би.ВыбратьСубконто(ВидыСубконто.ТМЦ);
    Пока Би.ПолучитьСубконто(ВидыСубконто.ТМЦ) = 1 Цикл  
        Би.ВыбратьПериоды();
        Пока Би.ПолучитьПериод() = 1 Цикл    
            Д = Би.Операция.Документ.ТекущийДокумент();
            ТТТ.НоваяСтрока();
            ТТТ.Автор = Д.АвторДока;
            ТТТ.Д = Д.ТекущийДокумент();
            ТТТ.Т = Би.Субконто(ВидыСубконто.ТМЦ);
            ТТТ.С = Би.КО(1) - БИ.ДО(1);
            
        КонецЦикла;
    КонецЦикла;    
    ИТОГ = ТТТ.итог(4);
    Сообщить(ИТОГ,"!!!");

По логике вещей в конце я должен получить сумму по колонке "С". Но кабака. Выводит значение первого элемента ТЗ первой строки. Я пошел немного дальше. Перед
Сообщить(ИТОГ,"!!!");
я вставил
Предупреждение(ИТОГ,"!!!");
и о чудо! Выводится предупреждение и сообщить верно. Убираю предупреждение и снова вижу автора документа из первой строки ТЗ. Добавляю в произвольных местах в коде еще несколько "сообщить" и снова БИНГО. Выводит нужную мне сумму по последней колонке. Убираю сообщить все кроме итога и угадайте что мне выводит? Правильно... автора документа из первой строки ТЗ. Через отладчик смотрю значение
ИТОГ = ТТТ.итог(4);
, убеждаюсь в правильности расчета итога по колонке, но после нажатия F5 угадайте что мне выводит 1С-ка? Да! АВТОРА ДОКУМЕНТА ИЗ ПЕРВОЙ СТРОКИ ТЗ. Забиваю на таблицу значений на форме обработки, инициализирую ее в коде - сообщить выводит нужный мне Итог. Убираю создание ТЗ в коде, возвращаю ее на место на форму, запускаю обработку и снова на меня через сообщить смотрит уже ненависная фамилия автора документа из первой строки ТЗ. Наименование объекта ТЗ менял. Наименования колонок тоже. Ситуация повторяется.
А теперь вопрос. Со мной совсем все плохо или это все таки баг?...


 ! 

Правила: 4
 


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

igmig65 Подменю пользователя
сообщение 04.02.19, 17:36
Сообщение #2

Почти ветеран
Иконка группы
Группа: Местный
Сообщений: 613
Из: Донецкая обл
Спасибо сказали: 168 раз
Рейтинг: 140.9

читайте мат.часть..операции конкатенации...
в Сообщить первый параметр - строка, а не число...
а что выведет Сообщить(""+ИТОГ,!!!)?

Talkman Подменю пользователя
сообщение 05.02.19, 8:29
Сообщение #3

Завсегдатай
****
Группа: Пользователи
Сообщений: 189
Из: Черкассы
Спасибо сказали: 9 раз
Рейтинг: 9

igmig65 @ Вчера, 17:36 * ,
Вывело правильный итог. Хорошо. Предположим проблема в преобразовании числа итога в строку. Но почему тогда Сообщить(Итог) выводит ИТОГ правильно после не первого использования сообщить в коде обработки. И почему при первом использовании сообщить() выводится именно первое значение первой строки ТЗ? Все равно логика непонятна...



Ну вот как так?

Talkman Подменю пользователя
сообщение 06.02.19, 8:11
Сообщение #4

Завсегдатай
****
Группа: Пользователи
Сообщений: 189
Из: Черкассы
Спасибо сказали: 9 раз
Рейтинг: 9

Talkman @ Вчера, 8:29 * ,
Коллеги, меня реально интересует эта тема. Если это баг и кто то такое уже ловил, поделитесь опытом.

a1exs Подменю пользователя
сообщение 06.02.19, 11:10
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 1
Из: Киев
Спасибо сказали: 0 раз
Рейтинг: 0

А как отработает у Вас такой код

...
ИТОГ = ТТТ.итог(4);
Сообщить(ИТОГ,"!!!");

Сообщить(ТТТ.итог(4),"!!!");
Сообщить(ТТТ.итог("С"),"!!!");

alx389d Подменю пользователя
сообщение 06.02.19, 11:27
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 29
Спасибо сказали: 13 раз
Рейтинг: 0

Набросал вот такое у себя. Работает адекватно
Процедура Сформировать()

    тз.Очистить();
    
    тз.НоваяКолонка("А");
    тз.НоваяКолонка("Б");
    тз.НоваяКолонка("В");
    тз.НоваяКолонка("Г");
    
    Би = Создатьобъект("Бухгалтерскиеитоги");
    Би.ИспользоватьСубконто(ВидыСубконто.Счета);
    Би.ВыполнитьЗапрос('01.01.2013','01.02.2013',"311",,,2,"Операция");
    Би.ВыбратьСубконто(ВидыСубконто.Счета);
    Пока Би.ПолучитьСубконто(ВидыСубконто.Счета) = 1 Цикл  
        Би.ВыбратьПериоды();
        Пока Би.ПолучитьПериод() = 1 Цикл    
            Д = Би.Операция.Документ.ТекущийДокумент();
            тз.НоваяСтрока();
            //ТТТ.Автор = Д.АвторДока;
            //ТТТ.Д = Д.ТекущийДокумент();
            //ТТТ.Т = Би.Субконто(ВидыСубконто.ТМЦ);
            //ТТТ.С = Би.КО(1) - БИ.ДО(1);
            
            тз.А = "А";
            тз.Б = "Б";
            тз.В = "В";
            тз.Г = Би.КО(1) - БИ.ДО(1);
            
            Прервать;
        КонецЦикла;
        
        Прервать;
    КонецЦикла;    
    
    Сообщить(тз.Итог(4));
КонецПроцедуры

это новая обработка, на нее брошен элемент управления ТаблицаЗначений. И одна процедура. Все. Не видно бага.
Упрощайте ваш код по максимуму, уберите запрос вообще сначала, добавьте просто новую строку. Разнесите очистку/создание колонок на разных кнопки/процедуры. Через загрузку/выгрузку другой таблицы значений. Ну и тд. Ну вообщем, копать. бывает такое что-то где-то напишешь, а потом ищешь баг совсем не в том месте smile.gif А так баг не подтверждается пока что.

Talkman Подменю пользователя
сообщение 06.02.19, 15:15
Сообщение #7

Завсегдатай
****
Группа: Пользователи
Сообщений: 189
Из: Черкассы
Спасибо сказали: 9 раз
Рейтинг: 9

alx389d @ Сегодня, 11:27 * ,
Есть один нюанс. Если я не создаю колонку Автора и ТЗ состоит только из трех колонок, баг тоже не подтверждается. И я не вижу в этом никакой закономерности sad.gif

Naghual Подменю пользователя
сообщение 20.03.19, 17:28
Сообщение #8

Завсегдатай
****
Группа: Пользователи
Сообщений: 102
Из: Днепропетровск
Спасибо сказали: 21 раз
Рейтинг: 0

Посмотрите, нет ли в общих реквизитах документов таких-же названий реквизитов как и используемые вами на формах.


Signature
Я желаю всем Счастья!

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


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

 

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