Имя: Пароль:
1C
1С v8
Помогите прочитать код формы подбора товаров продажи в типовой УТ
0 И Р
 
14.01.19
22:32
http://www.1c-cod.ru/code/L8GrRN27sBLJ2eJ/
Уважаемые форумчане, никак не могу понять на каком этапе и откуда происходит заполнения данных табличной части корзины.

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

Могли бы Вы описать логическую цепочку? Заранее очень благодарен!
1 palsergeich
 
14.01.19
22:39
(0) ПараметрыПеретаскивания - поставляет Вам платформа.
2 И Р
 
14.01.19
22:44
(1) Если можно было бы на примере, допустим я хочу в табличную часть Корзина заполнить реквизит объекта "Вес" из "Номенклатура.ВесЗнаменатель"  на каком этапе это можно сделать правильно?
3 palsergeich
 
14.01.19
22:45
По факту - вы интерактивно в одном элементе формы являющимся или ДанныеФормыКоллекция или ДанныеФормыДерево выделяете несколько строк и интерактивно переносите в другой элеменьт формы имеющий тип - ДанныеФормыКоллекция или ДанныеФормыДерево. Вот это и описано в ПараметрыПеретаскивания
4 palsergeich
 
14.01.19
22:45
(2) А кто мешает посмотреть это в отладчике?
5 palsergeich
 
14.01.19
22:46
+ так как это происходит на клиенте - Номенклатура.ВесЗнаменатель без обращения на сервер не быйдет и надо будет подумать как это сделать оптимальнее.
6 palsergeich
 
14.01.19
22:48
В любой посиковик вбейте - перетаскивание 1С, ссылок с примерами полно.
Я думал есть какой то конкрентый вопрос, а не напишите код за меня.
7 palsergeich
 
14.01.19
22:51
(3) Типов больше, но в рамках этой задачи это не важно.
8 И Р
 
14.01.19
23:34
(6) Не, код писать за меня не надо. Пытаюсь понять как работает,... книги читал но не всё остаётся в голове, нужна практика для закрепления. А иногда ловишь себя на мысли, что  из книги понял совсем не так как есть на самом деле.
9 И Р
 
14.01.19
23:37
Просто на примере проще пройтись по логическому каскаду.
10 FIXXXL
 
15.01.19
08:46
(2) добавь на форму элемент у которого путь к данным "Номенклатура.ВесЗнаменатель"
11 И Р
 
15.01.19
12:04
(10) Можно добавить, но в таком случае данные будут подставляться, а Итог рассчитан не будет. Т.е. придётся делать переобход строчек и суммировать это поле, чего не хотелось бы. Или вы что то другое имели в виду?
12 И Р
 
15.01.19
12:32
(5) Не совсем понимаю, почему это происходит на клиенте, когда функция &НаСервере ?
13 FIXXXL
 
15.01.19
12:34
(11) как вариант, скинь массив номенклатур в функцию с &СерверБезКонтекста, одним запросом рассчитай Итог, результат функции выведи в подвал или куда там...
14 И Р
 
15.01.19
12:36
Также почему то не срабатывают точки останова в этой функции, хотя сервер запущен с debug

(13) Спасибо! Рабочий совет, если не разберусь в итоге то так и сделаю, просто пытаюсь понять архитектуру решения.
15 PiotrLoginov
 
15.01.19
12:39
(14)  >> почему то не срабатывают точки останова в этой функции
Функция серверная? режим клиент-серверный? смотреть в подключенных предметах отладки
16 FIXXXL
 
15.01.19
12:59
(14) на новых платформах постоянно Сервер в отладке отваливается... уже в привычку входит перед дебагом зайти в предметы и перещелкнуть строку с Сервер туда-сюда...
17 И Р
 
15.01.19
13:38
Короче решил пока делать так: насовал точек останова в каждую процедуру и функцию и теперь буду пошагово смотреть что когда срабатывает.)
18 И Р
 
15.01.19
15:56
Поднялся по иерархии вверх, в итоге понял как одно "вытекает" из другого. Но вот столкнулся с такой ситуацией:


Функция ПараметрыТовара(Номенклатура = Неопределено) Экспорт
    
    ПараметрыТовара = Новый Структура();
    ПараметрыТовара.Вставить("Номенклатура", ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ВидНоменклатуры", ПредопределенноеЗначение("Справочник.ВидыНоменклатуры.ПустаяСсылка"));
    ПараметрыТовара.Вставить("Артикул", "");
    ПараметрыТовара.Вставить("Характеристика", ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ХарактеристикиИспользуются", Ложь);
    ПараметрыТовара.Вставить("Упаковка", ПредопределенноеЗначение("Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ВидЦены", ПредопределенноеЗначение("Справочник.ВидыЦен.ПустаяСсылка"));
    ПараметрыТовара.Вставить("Цена",0);
    ПараметрыТовара.Вставить("Склад", ПредопределенноеЗначение("Справочник.Склады.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ДатаОтгрузки",'00010101');
    ПараметрыТовара.Вставить("СрокПоставки",0);
    ПараметрыТовара.Вставить("КоличествоУпаковок",0);
    ПараметрыТовара.Вставить("Количество",0);
    ПараметрыТовара.Вставить("ЭтоТовар",Ложь);
    ПараметрыТовара.Вставить("ЭтоУслуга",Ложь);
    ПараметрыТовара.Вставить("ВидЦеныПоставщика", ПредопределенноеЗначение("Справочник.ВидыЦенПоставщиков.ПустаяСсылка"));
    ПараметрыТовара.Вставить("НоменклатураПоставщика",ПредопределенноеЗначение("Справочник.НоменклатураПоставщиков.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ЦеноваяГруппа",ПредопределенноеЗначение("Справочник.ЦеновыеГруппы.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ПроцентРучнойСкидки",0);
    ПараметрыТовара.Вставить("Продавец", ПредопределенноеЗначение("Справочник.Пользователи.ПустаяСсылка"));
    ПараметрыТовара.Вставить("Помещение", ПредопределенноеЗначение("Справочник.СкладскиеПомещения.ПустаяСсылка"));
    ПараметрыТовара.Вставить("Марка", ПредопределенноеЗначение("Справочник.Марки.ПустаяСсылка"));
    ПараметрыТовара.Вставить("РольАссортимента", ПредопределенноеЗначение("Перечисление.РолиАссортимента.ПустаяСсылка"));
    ПараметрыТовара.Вставить("РейтингПродаж", ПредопределенноеЗначение("Справочник.РейтингиПродажНоменклатуры.ПустаяСсылка"));
    ПараметрыТовара.Вставить("СтадияАссортимента", ПредопределенноеЗначение("Перечисление.СтадииАссортимента.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ТоварнаяКатегория", ПредопределенноеЗначение("Справочник.ТоварныеКатегории.ПустаяСсылка"));
    ПараметрыТовара.Вставить("НоменклатураНабора", ПредопределенноеЗначение("Справочник.Номенклатура.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ХарактеристикаНабора", ПредопределенноеЗначение("Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ВариантКомплектацииНоменклатуры", ПредопределенноеЗначение("Справочник.ВариантыКомплектацииНоменклатуры.ПустаяСсылка"));
    ПараметрыТовара.Вставить("ВариантОбеспечения", ПредопределенноеЗначение("Перечисление.ВариантыОбеспечения.ПустаяСсылка"));
    ПараметрыТовара.Вставить("Серия", ПредопределенноеЗначение("Справочник.СерииНоменклатуры.ПустаяСсылка"));
    ПараметрыТовара.Вставить("Доступно", 0);
    ПараметрыТовара.Вставить("ВНаличии", 0);
    ПараметрыТовара.Вставить("Погрешность", 0);
    ПараметрыТовара.Вставить("Вес", ПредопределенноеЗначение("Справочник.Номенклатура.ВесЗнаменатель"));




Выкидывает ошибку на  последней строчке. Но почему? Ведь у справочника Номенклатура есть реквизит "ВесЗнаменатель"
19 И Р
 
15.01.19
15:59
ПредопределенноеЗначение("Справочник.Номенклатура.ВесЗнаменатель"));
по причине:
Предопределенный элемент не существует
20 Вафель
 
15.01.19
16:04
рано тебе еще ут пилить
21 hhhh
 
15.01.19
16:07
(19) да, нет такого предопределенного элемента. Это ты его сейчас на ходу придумал
22 И Р
 
16.01.19
00:25
В общем разобрался, всем огромное спасибо, методика "Наставить точек останова в каждую функцию и смотреть какая за какой срабатывает" сработала. Понял зачем всё всё таки нужно ПредопределенноеЗначение(...).
   Нашёл наконец где происходит наполнение ПараметрыТовара.
Интересно а есть ли какие то определённые методики в разборе чужого кода в 1С?

(20) Ну сказал конечно как в лужу пёрнул, вроде звук был, а смысла никакого ))