Помогите прочитать код формы подбора товаров продажи в типовой УТ

1. user712943 15.01.19 08:24 Сейчас в теме
http://www.1c-cod.ru/code/L8GrRN27sBLJ2eJ/
Уважаемые форумчане, никак не могу понять на каком этапе и откуда происходит заполнения данных табличной части корзины.

Видно, что в процедуре Процедура ПеретащитьВКорзинуНаСервере(Данные)
идёт перебор НовыеСтроки в цикле но выше не могу осмыслить что происходит, не могу понять откуда берутся ПараметрыПеретаскивания.

Могли бы Вы описать логическую цепочку? Заранее очень благодарен!

Если можно было бы на примере, допустим я хочу в табличную часть Корзина заполнить реквизит объекта "Вес" из "Номенклатура.ВесЗнаменатель" на каком этапе это можно сделать правильно?
Код писать за меня не надо. Пытаюсь понять как работает,... книги читал но не всё остаётся в голове, нужна практика для закрепления. А иногда ловишь себя на мысли, что из книги понял совсем не так как есть на самом деле.
Просто на примере проще пройтись по логическому каскаду.
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
3. Dmitry77 83 15.01.19 13:55 Сейчас в теме +1 $m
есть такое понятие как замер времени.
Оно дает побочный эфект - показывает все выполненые команды (отладка на сервере должна быть включена)
дальше механизм следующий
1. включается замер производительности.
2. активируешь подбор.
3. выключаешь замер производительности.

4. смотришь выполненый код.
5. ставишь точки останова.
6. повторяешь пункты 1-3. смотришь стек вызовов.


это универсальный механизм понять откуда что и в каком порядке вызывается.. правда не быстрый.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Dmitrij-2 45 15.01.19 09:16 Сейчас в теме
(1) Сначала из параметра данные происходит заполнение массива НовыеСтроки. Затем происходит перебор массива. В массиве реквизиты строки. Если в Объект.Корзина уже есть строка с такими реквизитами, то количество увеличивается в данной строке. Если нет - добавляется новая строка. Затем выполняется заполнение реквизитов строки и расчет сумм.

ТекущаяСтрока = Объект.Корзина.Добавить();
ЗаполнитьЗначенияСвойств(ТекущаяСтрока, Отбор);

Вот здесь должен заполняться все.

Может быть в табличной части нет реквизита "Вес"?
4. dhurricane 15.01.19 14:09 Сейчас в теме
(1) Мои мысли на тему перетаскивания.

Судя по коду на форме размещена таблица "Корзина" для сбора данных о товаре, который попадет в форму-владелец, а также несколько таблиц для представления доступных для подбора товаров. Исходя из имен обработчиков могу заключить, что к таблицам для подбора относятся "Список", "ПодборТаблицаХарактеристики" и "ОстаткиТоваров".

Подразумевается, что пользователь будет из таблиц подбора "хватать" мышкой нужные позиции и перетаскивать их прямо в корзину. Когда пользователь "хватает" товар в списках подбора, срабатывает обработчик событий "НачалоПеретаскивания" (наприме, ОстаткиТоваровНачалоПеретаскивания). Здесь и заполняется вся сопутствующая информация о том, какой товар нужен пользователю в корзине (ПараметрыПеретаскивания). Заполнение сопутствующей информации реализовано где-то в недрах конфигурации:
ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.Копирование;
ПодборТоваровКлиент.ПолучитьДанныеПеретаскиванияОстатков(ЭтаФорма, Элемент, ПараметрыПеретаскивания);

Далее, когда пользователь отпустит кнопку мыши над Корзиной, сработает событие Перетаскивание (обработчик КорзинаПеретаскивание). В нем анализируется собранная ранее сопутствующая информация (ПараметрыПеретаскивания) о товаре и корзина пополняется.
3. Dmitry77 83 15.01.19 13:55 Сейчас в теме +1 $m
есть такое понятие как замер времени.
Оно дает побочный эфект - показывает все выполненые команды (отладка на сервере должна быть включена)
дальше механизм следующий
1. включается замер производительности.
2. активируешь подбор.
3. выключаешь замер производительности.

4. смотришь выполненый код.
5. ставишь точки останова.
6. повторяешь пункты 1-3. смотришь стек вызовов.


это универсальный механизм понять откуда что и в каком порядке вызывается.. правда не быстрый.
6. user712943 23.01.19 19:47 Сейчас в теме
(3) В итоге сделал не совсем так, а просто накидал точек останова чуть ли не в каждую строчку модуля формы, когда точки срабатывали смотрел какие переменные были определены, смотрел из каких функций они брали свои значения, далее переходил в функции, ставил там точки останова и т.д., в итоге нарисовалась рабочая схема иерархии. После чего уже писал необходимый код.


Друзья, спасибо всем!
5. muskul 17.01.19 09:39 Сейчас в теме
Обработка ПодборТоваровВДокументПродажи
Форма ЗапросКоличества в функции ОК в параметрах добавляешь твой параметр для передачи.
В основной форме ДобавитьВКорзинуНаКлиенте ДобавитьВКорзинуНаКлиенте там нужно так же добавить уже в корзину с параметра.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот