|
Нужна помощь со структурой | ☑ | ||
---|---|---|---|---|
0
pavelul73
20.09.12
✎
12:28
|
Добрый день. Возникла вот такая проблема:
Через обработку создаю документ Установка цен номенклатуры Часть кода: Процедура СформироватьДокумент() Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); ФормаВыбораЦен = Обработки.ФормированиеЦен.ПолучитьФорму("ФормаВыбораТипаЦен", ЭтаФорма); СписокЦен = ФормаВыбораЦен.ОткрытьМодально(); СписокЦен получается структура с выбранными типами цен. Вопрос в следующем, как передать эту структуру в документ, чтобы в нем заполнились эти типы цен? Заранее спасибо за помощь. Прошу сильно не "пинать", со структурами работал мало. |
|||
1
pavelul73
20.09.12
✎
12:37
|
Никто не сталкивался?
|
|||
2
Zmich
20.09.12
✎
12:38
|
(0). Как у тебя эта структура формируется в самой обработке?
|
|||
3
pavelul73
20.09.12
✎
12:41
|
обращаюсь к обработке ФормированиеЦен, открываю ее модально, она возвращает структуру выбранных типов цен
|
|||
4
pavelul73
20.09.12
✎
12:42
|
к обработке ФормированиеЦен обращаюсь из своей обработки
|
|||
5
pavelul73
20.09.12
✎
12:53
|
Мне просто нужно, чтобы в документе установки цен были заполнены типы цен. Может можно как-то по другому?
|
|||
6
ice777
20.09.12
✎
12:53
|
Проще всего вниматено посмотреть код обработки ФормированиеЦен
|
|||
7
pavelul73
20.09.12
✎
13:00
|
А как можно выбрать данные из структуры? или передать ее в таблицу значений? или так нельзя?
|
|||
8
pavelul73
20.09.12
✎
13:10
|
Возвращаемая структура имеет список значений. Можно ли теперь передать этот список значений в документ. В документе типыцен - это также список значений.
|
|||
9
Шапокляк
20.09.12
✎
13:12
|
(8) В документе это табличная часть. Перебрать список и заполнить ТЧ не предлагать?
|
|||
10
pavelul73
20.09.12
✎
13:18
|
Там есть и ТЧ, но на самой форме документа - это список значений.
Скриншот: http://narod.ru/disk/61290466001.6a4ebe99b03f82cfad6ab9b60ea2a357/установкацен.JPG.html |
|||
11
Шапокляк
20.09.12
✎
13:23
|
Да пофиг что на форме, вы ж документ создаете!
|
|||
12
pavelul73
20.09.12
✎
13:38
|
(11)Не заполняет. Оставляет пустым.
|
|||
13
hhhh
20.09.12
✎
13:44
|
(12) а как заполняете?
|
|||
14
1Сергей
20.09.12
✎
13:46
|
(10) http://savepic.ru/
|
|||
15
pavelul73
20.09.12
✎
13:46
|
Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
Для каждого строка из СписокТиповЦен Цикл НЭлемент = Док.ТипыЦен.добавить(); НЭлемент.ТипЦен = Строка.Значение; КонецЦикла; //где списоктипов цен - список значений с выбранными типами цен. Этот список находится на форме обработки. |
|||
16
pavelul73
20.09.12
✎
13:48
|
после этого записываю документ и открываю форму документа
|
|||
17
pavelul73
20.09.12
✎
13:49
|
(14) спасибо за ссылку
|
|||
18
Шапокляк
20.09.12
✎
13:55
|
(16) Отладчик показывает, что в вашей обработке СписокТиповЦен заполнен?
Отладчик показывает, что при открытии документа ТЧ ТипыЦен пустая? Вы в (0) получаете структуру - там список заполнен? Если да, почему не его перебираете для заполнения в документ? |
|||
19
pavelul73
20.09.12
✎
14:01
|
(18)Я на форме создал такое же поле как и в документе Установки цен. Его заполняю при открытии обработки:
Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) // Вставить содержимое обработчика. ФормаВыбораЦен = Обработки.ФормированиеЦен.ПолучитьФорму("ФормаВыбораТипаЦен", ЭтаФорма); МойТипЦен = ФормаВыбораЦен.ОткрытьМодально(); СписокТиповЦен.Добавить(МойТипЦен.СписокТиповЦенСкидок); КонецПроцедуры Далее я создаю документ Процедура СформироватьДокумент() Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); Док.Дата = ТекущаяДата(); Док.Комментарий = "Введен из обработки Изменение цен номенклатуры"; для Каждого строка из СписокТиповЦен цикл Нэлемент=Док.ТипыЦен.Добавить(); сообщить(строка.значение); Нэлемент.ТипЦен = строка.значение; конеццикла; док.Записать(); Для каждого строка из Товары Цикл ТчТовары = Док.Товары.Добавить(); ТчТовары.Номенклатура = Строка.Номенклатура; ТчТовары.Цена = Строка.НоваяЦена; ТчТовары.ЕдиницаИзмерения = Строка.Номенклатура.ЕдиницаХраненияОстатков; КонецЦикла; Попытка Док.Записать(); Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ФормаДокумента = Док.ПолучитьФорму("ФормаДокумента"); ФормаДокумента.Открыть(); КонецПроцедуры СписокЦен в форме обработки заполнен. список цен на форме обработки - такой же список значений как и в документе. Когда я пытался заполнить список типов цен в документе вот таким образом: Док.СписокТиповЦен.ДОбавить(МойСписокТиповЦен) Ругалется что не может найти список типов цен в документе хотя в конфигураторе в форме этого документа он прописан именно так. Потом я попытался сделать по другому: ФормаДокумента = Док.ПолучитьФорму("ФормаДокумента"); ФормаДокумента.СписокТиповЦен.Добавить(МойСписокТиповЦен); Тоже самое |
|||
20
pavelul73
20.09.12
✎
14:03
|
уже прям и не знаю как еще можно заполнить список значений в документе, который создаю, имея такой же список значений заполненный в обработке.
|
|||
21
pavelul73
20.09.12
✎
14:07
|
По моему понятно в чем ошибка, когда я перебираю в цикле :
для каждого строка из списоктиповцен Цикл строка.значение = списку значений как можно перебрать список значений, чтобы получить каждый элемент отдельно? |
|||
22
Рэйв
20.09.12
✎
14:07
|
(19)У тебя СписокТиповЦен - реквизит формы, а не объекта. а ты ищешь его в объекте, судя по
Док.СписокТиповЦен Естественно, что он его н находит. |
|||
23
Шапокляк
20.09.12
✎
14:08
|
(19) я правильно поняла - вы получили структуру МойТипЦен = ФормаВыбораЦен.ОткрытьМодально();
и значение итой структуры - МойТипЦен.СписокТиповЦенСкидок - это список? И вы его прямо так берете и добавляете как элемент списка в СписокТиповЦен? И программа не ругается? и далее - вы в тчТовары добавляете строки. Почему вы там не указываете тип цен? Вы получаете форму пустого незаписанного документа. Открываете ее и там внезапно пусто. |
|||
24
Рэйв
20.09.12
✎
14:09
|
(23)Она не доходит до того что бы начать ругаться:-))...Оно даже список найти не может:-)
|
|||
25
pavelul73
20.09.12
✎
14:11
|
(22) нет это я просто так пробовал сейчас через цикл.
Судя по всему нужно выгрузить этот список значений и записать все его значения в табличную часть документа |
|||
26
Рэйв
20.09.12
✎
14:12
|
(25)Так будет проще всего.
|
|||
27
Рэйв
20.09.12
✎
14:12
|
(25)Только не выгружать, а перебирать.
|
|||
28
pavelul73
20.09.12
✎
14:14
|
(27) как его перебрать?
|
|||
29
Шапокляк
20.09.12
✎
14:14
|
(24) пардон, затупила. Когда все делается через задний проход сложно сориентироваться.
(21) Почему бы вам уже после открытия обработки не вызвать форму подбора типов цен? И не сохранить результат этого подбора в какой-то реквизит обработки или ее формы? В виде структуры или ее значения, которое список значений? А когда дойдет ход до создания документа, перебрать этот список и записать его в ТЧ документа. Ну и тчТовары заполнять с указанием типов цен, т.е. если у вас типов цен несколько, то и каждому товару в тч товары должно соответствовать несколько строк с этими разными типами цен. |
|||
30
pavelul73
20.09.12
✎
14:18
|
(29) да можно и так, так кажется намного проще, но как перебрать этот список значений?
что-то я совсем уже запутался с этим списком |
|||
31
Шапокляк
20.09.12
✎
14:23
|
(30) ну хотя бы так
Кол=ТвойСписок.Количество()-1; Если Кол>=0 Тогда Для инд=0 по кол Цикл Эл=ТвойСписок.Получить(инд); Стр=ТвояТЧ.Добавить(); Стр.ТипЦен=Эл.Значение; КонецЦикла; КонецЕсли; |
|||
32
pavelul73
20.09.12
✎
14:28
|
Пробовал я так, но он не перебирает их, поставил сообщить(Эл.Значение); вот что показывает:
закупочные; опт т.е он их списком и показывает, а не по отдельности |
|||
33
Шапокляк
20.09.12
✎
14:48
|
(32) невозможно понять, что за список вы перебираете!
Если у вас Эл.Значение - это список, то вы этот Эл.Значение и перебирайте. ТакойТоСписок=Эл.Значение. И вот этот ТакойТоСписок перебирайте. Мне почему-то кажется, что на самом деле вам это не нужно, т.к. у вас есть некоторая таблица с колонками товар,Цена. Это так? |
|||
34
pavelul73
20.09.12
✎
14:51
|
(32) нет это не так, если бы было так, я бы не спрашивал(
|
|||
35
pavelul73
20.09.12
✎
14:53
|
Всем спасибо за советы. проблему решил следующим образом:
Док = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент(); //заполнение шапки документа //получение типов цен типовым образом ФормаДокумента = Док.ПолучитьФорму("ФормаДокумента"); ФормаВыбораЦен = Обработки.ФормированиеЦен.ПолучитьФорму("ФормаВыбораТипаЦен", ФормаДокумента); ФормаВыбораЦен.ОткрытьМодально(); //заполнение ТЧТовары и далее уже заполняю документ нужными значениями для каждого типа цен. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |