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

Хранилище

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

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



> Получить данные из формы документа          
alexkhua Подменю пользователя
сообщение 01.07.13, 22:58
Сообщение #1

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

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

asd34 Подменю пользователя
сообщение 02.07.13, 6:31
Сообщение #2

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: где-то под Киевом
Спасибо сказали: 65 раз
Рейтинг: 0


 i 

Вредный совет. Удалил специально.
 


Сообщение отредактировал logist - 02.07.13, 8:40

Спасибо сказали: alexkhua,

Vofka Подменю пользователя
сообщение 02.07.13, 7:55
Сообщение #3

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

МаксимальноеЗначение = Неопределено;
Если ТабличнаяЧасть.Количество() > 0 Тогда
     ТЗ = ТабличнаяЧасть.Выгрузить();
     ТЗ.Сортировать("ИмяКолонки Убыв");
     МаксимальноеЗначение = ТЗ[0];
КонецЕсли;

Спасибо сказали: alexkhua,

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

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

Цитата(Vofka @ 02.07.13, 8:55) *
МаксимальноеЗначение = Неопределено;
Если ТабличнаяЧасть.Количество() > 0 Тогда
     ТЗ = ТабличнаяЧасть.Выгрузить();
     ТЗ.Сортировать("ИмяКолонки Убыв");
     МаксимальноеЗначение = ТЗ[0];
КонецЕсли;

Спасибо за ответы, буду разбираться.

asd34 Подменю пользователя
сообщение 02.07.13, 9:31
Сообщение #5

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: где-то под Киевом
Спасибо сказали: 65 раз
Рейтинг: 0

Logist, в чем вредность?

pablo Подменю пользователя
сообщение 02.07.13, 9:34
Сообщение #6

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Цитата
в чем вредность?
Лишний цикл => дольше работать будет


Signature
Правильно поставленный вопрос содержит до 90% ответа.

Спасибо сказали: asd34,

logist Подменю пользователя
сообщение 02.07.13, 9:38
Сообщение #7

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(asd34 @ 02.07.13, 10:31) *
в чем вредность?

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


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Спасибо сказали: asd34,

asd34 Подменю пользователя
сообщение 02.07.13, 9:50
Сообщение #8

Завсегдатай
Иконка группы
Группа: Местный
Сообщений: 170
Из: где-то под Киевом
Спасибо сказали: 65 раз
Рейтинг: 0

Т.е. выгружать все табличное поле в ТЗ всегда быстрее чем в цикле вставить значения одной колонки, даже если колонок очень много? Вот процедурка из типовой УПП:
// Процедура проверяет максимальное значение ключа связи. 
//
Процедура ПроверитьМаксЗначениеКлюча(ПараметрыСвязиСтрокТЧ, ДокументОбъект, ИмяТЧ) Экспорт
    
    Если ПараметрыСвязиСтрокТЧ[ИмяТЧ].СвободныйКлюч <> Неопределено Тогда
        Возврат; // «не занятый» ключ уже был определен ранее.
    КонецЕсли;
    
    // При первом обращении «свободный» ключ необходимо рассчитать.
    Если ДокументОбъект[ИмяТЧ].Количество() = 0 Тогда
        ПараметрыСвязиСтрокТЧ[ИмяТЧ].СвободныйКлюч = 1; // отсчет начинается с нуля
    Иначе
        
        // Если в табл. части уже присутствуют строки, то новое «свободное» значение ключа
        // рассчитывается от максимального существующего значения.
        СписокКлючей = Новый СписокЗначений;                
        Для каждого ЭлКоллекции Из ДокументОбъект[ИмяТЧ] Цикл
            СписокКлючей.Добавить(ЭлКоллекции.КлючСвязи);
        КонецЦикла;
        СписокКлючей.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
        ПараметрыСвязиСтрокТЧ[ИмяТЧ].СвободныйКлюч = СписокКлючей[0].Значение + 1;
        
    КонецЕсли;
    
КонецПроцедуры // ПроверитьМаксЗначениеКлюча()

Vofka Подменю пользователя
сообщение 02.07.13, 10:06
Сообщение #9

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

logist, ну зачем же удалять? На то у нас и форум, что каждый может высказать свое мнение. Мне тоже не всегда нравятся советы, которые одни участники дают другим (независимо от группы пользователей). Но, на то у нас и форум, что каждый может высказать свое мнение и, если это не спам или не бред сивой кобылы, то удалению оно не подлежит. Кто-то привел код, который вам не нравится? Напишите про это ниже, укажите человеку почему его код, с вашей точки зрения, не айс, напишите свой вариант. Тем более я лично не проверял его код на практике и не замерял производительность. Возможно, код asd34-а в конкретных условиях (в реалиях ТС-а) будет работать даже быстрее чем мой код, откуда ж мы можем знать? А мы взяли и запилили его помощь. Нельзя же так.

asd34, приведите ещё раз свой код. Как я писал выше, каждый имеет право высказать свое мнение.

Спасибо сказали: asd34,

pablo Подменю пользователя
сообщение 02.07.13, 10:12
Сообщение #10

Старейшина
********
Группа: Команда (модераторы)
Сообщений: 1116
Из: Одесса-Луганск
Спасибо сказали: 192 раз
Рейтинг: 0

Я бы предложил и третий вариант исключительно для того, чтобы сверить быстродействие
МаксимальноеЗначение = Неопределено;
Если ТабличнаяЧасть.Количество() > 0 Тогда
     ТЗ = ТабличнаяЧасть.ВыгрузитьКолонки("ИмяКолонки");
     ТЗ.Сортировать("ИмяКолонки Убыв");
     МаксимальноеЗначение = ТЗ[0];
КонецЕсли;


Signature
Правильно поставленный вопрос содержит до 90% ответа.

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

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Vofka, я посчитал, что в данном конкретном случае это вредный совет. Если ТЧ будет содержать много (или очень много) строк, то копирование таблицы произойдет быстрее чем ее построчный перебор (не надо требовать замеры, думаю это должно быть и так понятно). Если не прав, ну значит не прав, в следующий раз не буду так реагировать, хотя останусь тут при своем мнении.
Насчет типовых процедур УПП, там можно встретить процедуры которые написаны миллион лет назад, и на их оптимизацию никто не обращает внимания, потому,что работает (по принципу: работает - не трогай), просто не попался еще прецедент для возникновения необходимости оптимизации.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

Vofka Подменю пользователя
сообщение 02.07.13, 10:52
Сообщение #12

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4520 раз
Рейтинг: 3642.8

Цитата(logist @ 02.07.13, 11:31) *
Vofka, я посчитал, что в данном конкретном случае это вредный совет.

Тем не менее, это не повод удалять чужой пост.

Цитата(logist @ 02.07.13, 11:31) *
Если ТЧ будет содержать много (или очень много) строк, то копирование таблицы произойдет быстрее чем ее построчный перебор (не надо требовать замеры, думаю это должно быть и так понятно).

Нет, непонятно. И вообще, на слово я не верю, в конкретно этом вопросе. Никому. Я даже сам не возьмусь утверждать что-то. Единственныая группа людей, мнению которых я доверил бы больше остальных, в конкретно этом вопросе - это разработчики платформы. И, помнится мне, как-то была тема, где как раз у нас с вами smile.gif зашел спор о производительности какого-то кода. Так вот, насколько я помню, я лично провел замеры и предоставил цифры, где было видно, что неоптимальный, с вашей точки зрения, код работает не хуже оптимального, опять таки, с вашей точки зрения.

Цитата(logist @ 02.07.13, 11:31) *
Если не прав, ну значит не прав, в следующий раз не буду так реагировать, хотя останусь тут при своем мнении.

У каждого свое мнение. И я ещё раз скажу, что у нас же тут форум, а не блог одного автора, поэтому каждый имеет право высказать конкретно свое мнение. Если вы с кем-то не согласны - напишите об этом и каждый сделает, как это не странно, свои выводы в поддержку вашего мнения либо мнения кого-то другого. Я лично тоже, иногда, не согласен с вашим мнением. Но максимум что я сделаю - так это напишу о своем несогласиии и выражу свое мнение по данному вопросу. И не смотря на то, что наши мнения расходятся - это не повод оставлять лишь одно из них. В общем, можно сказать, что у нас на форуме демократия и свобода слова smile.gif .

Цитата(logist @ 02.07.13, 11:31) *
просто не попался еще прецедент для возникновения необходимости оптимизации.

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

Сообщение отредактировал Vofka - 02.07.13, 11:00

logist Подменю пользователя
сообщение 02.07.13, 13:10
Сообщение #13

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0

Цитата(Vofka @ 02.07.13, 11:52) *
Тем не менее, это не повод удалять чужой пост.

Я понял свою ошибку, можно не акцентировать каждый раз. Вероятно я уже стал старым для модератора.


Signature
Личные бесплатные консультации не даю, для этого есть форум!

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


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

 

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