Имя: Пароль:
1C
1C 7.7
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
Жесть. Запросы в функции... Да еще видать для каждой строки вызывается... Ух!
Ошибка? Это не ошибка, это системная функция.