Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прошу помочь с написанием цикла
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Fabri
Добрый день. Помогите пожалуйста новичку с написанием цикла. Документ Реализация Товаров и Услуг, Форма списка, необходимо выводить общую сумму документов, в табличное поле ДокументСписок включил в подвал, в текст подвала поля Сумма документа и будет выводится общая сумма. Добавил процедуру в событие табл. док ДокументСписок- ПриПолученииДанных, вот код:
Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
        ТекущаяСтрока=ЭтаФорма.ЭлементыФормы.ДокументСписок.ТекущиеДанные;
        Если Не ТекущаяСтрока=Ложь Тогда //Проверка заполненности формы
        ЭтаФорма.ЭлементыФормы.ДокументСписок.Колонки.СуммаДокумента.ТекстПодвала = ТекущаяСтрока.СуммаДокумента;
    КонецЕсли        
КонецПроцедуры

Но вот незнаком с операторами, и на данный момент просто выводит сумму текущей строки, а хотелось бы чтоб цылк перебирал кажду запись таблицы по очереди и суммировал. Пожалуйста помогите написать данный цикл. Заранее спасибо.
Vofka
Сумма = 0;
Для Каждого Строка из ОформленияСтрок Цикл
    Сумма = Сумма + Строка.ДанныеСтроки.Ссылка.СуммаДокумента;
КонецЦикла;
ЭтаФорма.ЭлементыФормы.ДокументСписок.Колонки.СуммаДокумента.ТекстПодвала = Сумма;
Fabri
Цитата(Vofka @ 02.02.12, 10:45) необходимо зарегистрироваться для просмотра ссылки
Сумма = 0;
Для Каждого Строка из ОформленияСтрок Цикл
    Сумма = Сумма + Строка.ДанныеСтроки.Ссылка.СуммаДокумента;
КонецЦикла;
ЭтаФорма.ЭлементыФормы.ДокументСписок.Колонки.СуммаДокумента.ТекстПодвала = Сумма;

Некатит, цикл почему-то запускается каждый раз при переходе на новую строку, и в результате выводится сумма последнего документа, а не общая сумма документов.

Можно ещё событием при выводе каждой строки, но оно будет и грузить реально проц, да и кривое решение
Процедура ДокументСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    Сума=ДанныеСтроки.СуммаДокумента;
    ЭтаФорма.ЭлементыФормы.ДокументСписок.Колонки.СуммаДокумента.ТекстПодвала =
ЭтаФорма.ЭлементыФормы.ДокументСписок.Колонки.СуммаДокумента.ТекстПодвала + Сума;
КонецПроцедуры

Причем незнаю оператор для преобразования в число, поэтому выводится только суммирование текста 31000000.gif
Vofka
Цитата
Некатит, цикл почему-то запускается каждый раз при переходе на новую строку, и в результате выводится сумма последнего документа, а не общая сумма документов.

Вы в какую процедуру мой код вставили?
Fabri
Цитата(Vofka @ 02.02.12, 11:20) необходимо зарегистрироваться для просмотра ссылки
Вы в какую процедуру мой код вставили?

В Процедура ДокументСписокПриПолученииДанных(Элемент, ОформленияСтрок)
Zaval
Цитата(Fabri @ 02.02.12, 10:14) необходимо зарегистрироваться для просмотра ссылки
хотелось бы чтоб цылк перебирал кажду запись таблицы по очереди и суммировал. Пожалуйста помогите написать данный цикл. Заранее спасибо.


Видимых на экране?
Попадающих в выбранный интервал дат?
С учетом установленных фильтров?
Или всех вообще?

Зачем курочить Форму списка, если в конфигурации куча отчетов?
Fabri
Цитата(Zaval @ 02.02.12, 14:18) необходимо зарегистрироваться для просмотра ссылки
Видимых на экране?
Попадающих в выбранный интервал дат?
С учетом установленных фильтров?
Или всех вообще?

Зачем курочить Форму списка, если в конфигурации куча отчетов?


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


 ! 

Правила! Пункт 13. Вофка.
 
Zaval
Цитата(Fabri @ 02.02.12, 17:29) необходимо зарегистрироваться для просмотра ссылки
Да видимых на екране.


ПриПолученииДанных не знает размер Вашего монитора.
ПриВыводеСтроки - знает, что строка выводится. Вот только при прокрутке ей пофиг, сколько и каких строк ушли с экрана.
Batchir
Цитата(Zaval @ 02.02.12, 19:02) необходимо зарегистрироваться для просмотра ссылки
ПриПолученииДанных не знает размер Вашего монитора.


Зато ПриПолученииДанных знает сколько видимых строк на экране и ОформленияСтрок содержит их
Код который предложил Vofka с самого начала должен отработать, покрайней мере с виду так.

Всё зависит от того насколько правильно подобный код вставить в обработчик.

Только что в УТ в форме списка в процедуре ПриПолученииДанных написал:
Сумма = 0;
    Для Каждого Строка из ОформленияСтрок Цикл
           Сумма = Сумма + Строка.ДанныеСтроки.Ссылка.СуммаДокумента;
    КонецЦикла;
    ЭтаФорма.ЭлементыФормы.Список.Колонки.СуммаДокумента.ТекстПодвала = Сумма;

И в подвале отобразилась сумма видимых документов. Единственный минус, что в эту сумму входит и сумма самой последней строки, даже если видна только граница этой строки
Fabri
Цитата(Batchir @ 02.02.12, 20:09) необходимо зарегистрироваться для просмотра ссылки
И в подвале отобразилась сумма видимых документов. Единственный минус, что в эту сумму входит и сумма самой последней строки, даже если видна только граница этой строки

Жаль в конфе торговля для ЧП даже такого результата нет, а вроде ж елементарная процедура. 09000000.gif
Vofka
Цитата
Жаль в конфе торговля для ЧП даже такого результата нет

Мне почему-то кажется, что не в конфе дело...
Fabri
Подскажите, неужели в 1С 8.1 нет функции переобразования переменной с текста в число и т.д. как есть во многих системах программирования?

Цитата(Vofka @ 03.02.12, 13:24) необходимо зарегистрироваться для просмотра ссылки
Мне почему-то кажется, что не в конфе дело...

Я согласен, но посмотрите 1е сообщение - помогите новичку с написанием цикла...
но результата ж пока нет sad.gif
Vofka
Fabri, есть пример, который у 2 из 3 людей работает. Почему у вас не работает - это, наверно, останется для всех загадкой...
Flexy
Цитата(Fabri @ 03.02.12, 13:27) необходимо зарегистрироваться для просмотра ссылки
Подскажите, неужели в 1С 8.1 нет функции переобразования переменной с текста в число и т.д. как есть во многих системах программирования?

Синтаксис:

Число(<Значение>)

Такая функция не подходит?
Fabri
Цитата(Vofka @ 03.02.12, 13:31) необходимо зарегистрироваться для просмотра ссылки
Fabri, есть пример, который у 2 из 3 людей работает. Почему у вас не работает - это, наверно, останется для всех загадкой...

И у меня работает, если после обработки процедуры и выводе суммы выбрать 1-ю запись и нажать обновить smile.gif Если выбираю 2-ю строку, то выводит сумму только текущей строки и последующих.

Просто по логике просится елементарная процедура:
Сумма=0;
Для а=1 до Список.КоличествоЗаписей Цикл
Сумма=Сумма+Список.ДанныеКолонки.СуммаДокумента;
КонецЦикла
ЭтаФорма.ЭлементыФормы.ДокументСписок.Колонки.СуммаДокумента.ТекстПодвала = Сумма;


Неужели в платформе 1с нет возможности подобной записи?


 ! 

Правила читать будем или нет?! Код!!! Вофка.
 


Цитата(Flexy @ 03.02.12, 13:37) необходимо зарегистрироваться для просмотра ссылки
Синтаксис:

Число(<Значение>)

Такая функция не подходит?

Ошибка:
Преобразование значения к типу Число не может быть выполнено


 ! 

Есть 2 варианта: или вы пользуетесь нормально тегами или я чищу ваши посты. Не надо выделять сообщения об ошибках тегами кода! Это НЕ КОД! Вофка.
 
Vofka
Цитата
Неужели в платформе 1с нет возможности подобной записи?

Нет. В 1С вооще программировать нельзя.
Zaval
Цитата(Fabri @ 03.02.12, 13:54) необходимо зарегистрироваться для просмотра ссылки
Ошибка:
Преобразование значения к типу Число не может быть выполнено


Извините, у Вас проблемы с логикой вообще.
Если "значение" не может быть преобразовано в число - Вы не допускаете, что в "значение" у Вас находится "неведомая гусиная хня"? Которую, б.я буду, никто в число преобразовать не может? smile.gif

Ну не всегда проханже "по ходу дела разберусь", когда ж Вы это поймете? Почитайте книг хоть немного, не позорьте профессию. Мою(!) профессию - я ж обидчив и злопамятен. Бываю.
Fabri
Цитата(Zaval @ 03.02.12, 15:12) необходимо зарегистрироваться для просмотра ссылки
Извините, у Вас проблемы с логикой вообще.
Если "значение" не может быть преобразовано в число - Вы не допускаете, что в "значение" у Вас находится "неведомая гусиная хня"? Которую, б.я буду, никто в число преобразовать не может? smile.gif

Ну не всегда проханже "по ходу дела разберусь", когда ж Вы это поймете? Почитайте книг хоть немного, не позорьте профессию. Мою(!) профессию - я ж обидчив и злопамятен. Бываю.


Толку розводить этот пустой разговор и флудить попусту в теме. Я обратился с просьбой, никто положительно не ответил, а только показывают какие мы умные все, а вы учите матчасть. Толку тогда с форума? Или бессплатно никто помочь нехочет?
Zaval
Вы абсолютно правы, толку - ноль полный.
Причина - в Вашей неспособности понять ответ.
Вам дали готовый код.
Вы не сподобились его применить.
Вас в Отладчике забанили?

Вы не прошли проверку на адекватность. Вам никто ничего не должен.
Fabri
Цитата(Zaval @ 03.02.12, 16:01) необходимо зарегистрироваться для просмотра ссылки
Вы абсолютно правы, толку - ноль полный.
Причина - в Вашей неспособности понять ответ.
Вам дали готовый код.
Вы не сподобились его применить.
Вас в Отладчике забанили?

Вы не прошли проверку на адекватность. Вам никто ничего не должен.


Ответ я понял, но попросил уточнить.
Код дали, и я всегда благодарю за это, но он не работает в данной конфигурации.
Более подходит событие ПриВыводеСтроки, но обьект Подвал Колонки Табличного поля, если и присвоен переменной
является скорей текстовыми данными, чем числом, поэтому при суммированию к нему данных каждой выводимой строки, выводится суммы в одной строке, а не сложенные в общую. А вы вместо того чтоб обяснить, что обьекты в конфигурации невозможно переобразовать в числовые данные, только угнетаете, и оскорбляете человека.
На счет проверки на адекватность судить я думаю не Вам. А раз вы не можете помочь и обяснить доступными словами новичку "своей проффесии" почему у него не работает процедура, то я думаю стоит задуматся и о собственном уровне адекватности.
Zaval
Давайте вместе подумаем.
Прежде чем лезть "со скальпелем" в Конфигуратор - нужно с ним хоть слегка ознакомиться?
Почитать об Отладчике?
Плин, "не работает, выдает ошибку "..."" - это уровень юзера!

Рановато Вы в "ученики" намылились. Ваше отношение больше похоже на "а х.ли там знать/учить? Я и "с морозу пришедши" все сделаю, че они там выпендриваются?!"

Я не обязан Вас учить.
Если пинок в нужном направлении для Вас оскорбителен - нах с Форума! Со всех Форумов!
Этот метод обучения требует самокритичности и сообразительности гораздо выше Ваших.
На платные курсы, там Вас оближут за Ваши деньги
Vofka
Полагаю, тема себя исчерпала. Поэтому объявляю её закрытой.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.