![]() |
![]() |
|
v7: Получить данные из документа в отчет | ☑ | ||
---|---|---|---|---|
0
asa_ua
17.09.11
✎
12:31
|
Доброго времени суток.Так сложилось, что возложили на меня ещё и некоторый программинг под 1С 7.7
И вот такой небольшой вопрос, Вам как профессионалам будет не сложно его решить, а меня, как новичка - это вводит в ступор. Делаю отчет (печать за период времени расходных накладных со склада), но дело в том, что я не знаю (и не могу найти прямого ответа) как получить данные из табличной части формы текущего документа (товар, количество, цена) в отчет, для дальнейшего оперирования данными. Нашел универсальный отчет "Печать Документов", но значения из таблицы он не берет. А при виде его кода в 1200+ строк я покрываюсь мелкой испариной. З.Ы. отчет делаю на базе отчета "Реестр Документов" (на выходе получаю список накладных за определенную дату) А нужно еще и товар, цена, количество. Подскажите, или дайте фрагмент кода, как реализовать данную задачу. |
|||
1
VladZ
17.09.11
✎
12:33
|
См. "Запрос".
|
|||
2
VladZ
17.09.11
✎
12:33
|
В качестве примере глянь код в docprint
|
|||
3
asa_ua
17.09.11
✎
12:35
|
Спасибо за оперативный ответ, сейчас посмотрю по Вашей рекомендации.
|
|||
4
ТакВотЖе
17.09.11
✎
12:37
|
ВыбратьСтроки()
ПолучитьСтроку() |
|||
5
Kookish
17.09.11
✎
12:40
|
Что-то вроде:
ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл ПеремЦена = Цена; // В строке табличной части ПеремСумма = ..... // или просто ТабДок.ВывестиСекцию("СтрокаТаблицы"); КонецЦикла; |
|||
6
VladZ
17.09.11
✎
12:44
|
(4), (5) А если документов тысячи? Десятки тысяч?
|
|||
7
VladZ
17.09.11
✎
12:46
|
(0) 1200 строк - это не так уж и много... Пусть тебя это не пугает.. Запомни: программист мыслит алгоритмами! Т.е. глядя на код ты должен видеть не синие/красные/зеленые буквы, а алгоритм работы.
|
|||
8
asa_ua
17.09.11
✎
12:47
|
Документов тысячи не будет (даже в будущем).
Спасибо большое за ответ, docprint очень помог. Kookish, а как обратится к значению табличной части документа? Пока Док.ПолучитьДокумент() = 1 Цикл Таб.ВывестиСекцию("Строка"); ВыбратьСтроки(); Пока ПолучитьСтроку() = 1 Цикл ПеремЦена = Цена; // В строке табличной части ПеремСумма = ..... // или просто ТабДок.ВывестиСекцию("СтрокаТаблицы"); КонецЦикла; ЧислоСтрок=ЧислоСтрок+1; Состояние("В отчет выведено "+ЧислоСтрок+" строк."); КонецЦикла; |
|||
9
asa_ua
17.09.11
✎
14:26
|
Дабы темы не плодить, подскажите пожалуйста, как провернуть такую штуку.
При выборе товара из справочника сделать так, что бы для некоторых пользователей не отображались остатки товара. |
|||
10
ТакВотЖе
17.09.11
✎
14:55
|
а не много они от тебя хотят?
при полном отсутствии знаний и опыта? |
|||
11
VladZ
17.09.11
✎
14:57
|
(9) Конфа какая?
|
|||
12
GROOVY
17.09.11
✎
14:58
|
||||
13
asa_ua
17.09.11
✎
15:35
|
Спасибо за ссылку, но я и так догадался как сделать :)
В Справочник.Товары.ФормаСписка.ДляПодбора, нужно было добавить такой код: Мб пригодиться кому. Спасибо за помощь. Функция ОстатокТовараНаСкладе() Если (Найти(СокрЛП(Строка(Пользователь)),"Менеджер")<>0) Тогда Если (Регистр.ОстаткиТоваров.Остаток(ТекущийЭлемент(),Склад,"ОстатокТовара"))>5 Тогда Возврат(5); Иначе Возврат Формат(Регистр.ОстаткиТоваров.Остаток(ТекущийЭлемент(),Склад,"ОстатокТовара"),"Ч6.1"); КонецЕсли; КонецЕсли; Возврат Формат(Регистр.ОстаткиТоваров.Остаток(ТекущийЭлемент(),Склад,"ОстатокТовара"),"Ч6.1"); КонецФункции |
|||
14
GROOVY
17.09.11
✎
15:41
|
Жесть. Запросы в функции... Да еще видать для каждой строки вызывается... Ух!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |