Имя: Пароль:
1C
1С v8
Перебрать ТЧ
, ,
0 KENT2007
 
04.12.12
11:05
Помогите обработать табличную часть документа Оказание услуг
нужно изменить Наименование договора Сумма из документа Оказание услуг + номер договора
1 Wobland
 
04.12.12
11:05
принимай телепатический луч помощи
2 KENT2007
 
04.12.12
11:11
может есть пример как отобрать ТЧ документа
3 Wobland
 
04.12.12
11:11
(2) у кого?
4 cw014
 
04.12.12
11:12
(3) Судя по всему у документа
5 Килограмм
 
04.12.12
11:13
Сделай так:

Для Каждого Строка Из ТабличнаяЧасть Цикл
// команды по обработка табл. части
КонецЦикла
6 Wobland
 
04.12.12
11:13
(5) Строка - плохая ид6ея
7 cw014
 
04.12.12
11:14
(5) Хотя бы СтрокаТЧ сделал бы... А то использование ключевых слов в качестве переменных... Ну ты в общем понял
8 KENT2007
 
04.12.12
11:14
в оказание услуг
нужно перебрать список договоров и присвоисть имени договора сумма + номер договора
9 mzelensky
 
04.12.12
11:15
(5) лучше строкаТЧ
10 Wobland
 
04.12.12
11:15
(8) как _список_ договоров относится к документу?
11 Godofsin
 
04.12.12
11:15
(8) попахивает бредятиной
12 Килограмм
 
04.12.12
11:15
(2) вот пример


   Для Каждого Строка ИЗ ВидыРабот Цикл
       
       Если ПустаяСтрока(НаименованиеПеречня) Тогда
           НаименованиеПеречня = СокрЛП(Строка.ВидРабот.Владелец.Наименование);
       КонецЕсли;
       
       Если ЗначениеЗаполнено(Строка.Стоимость) Тогда
           Если Строка.Стоимость.РазмерВзносаВКомпенсационныйФондСоСтраховкой>МаксСтоимостьЧисло Тогда
               МаксСтоимостьЧисло = Строка.Стоимость.РазмерВзносаВКомпенсационныйФондСоСтраховкой;
               МаксСтоимостьСпр   = Строка.Стоимость;
           КонецЕсли;
       КонецЕсли;
       
       //Посчитаем группы только первого уровня
       Если Строка.ВидРабот.ЭтоГруппа Тогда
           Если Строка.ВидРабот.Родитель=ПустойВидРабот Тогда
               КоличествоГрупп = КоличествоГрупп + 1;
           Иначе
               ВстретилиУровень2 = Истина;
               РодительУровень2  = Строка.ВидРабот.Родитель;
           КонецЕсли;
       Иначе
           КоличествоВР = КоличествоВР + 1;
       КонецЕсли;
       
       //Проверим на ГП
       Если НЕ ЕстьГП Тогда
           ЕстьГП = ОбщегоНазначения.ПроверкаНаГП(Строка.ВидРабот.Код, НаименованиеПеречня);
       КонецЕсли;
       
       Если Строка.ОпасныйВидРабот Тогда
           КоличествоВРОО = КоличествоВРОО + 1;
       КонецЕсли;
       
   КонецЦикла;
13 Wobland
 
04.12.12
11:16
(12) Строка - плохая идея
14 KENT2007
 
04.12.12
11:16
(10) из дока нужна сумма, при разноски кассы видно какая сумма по договору
15 Килограмм
 
04.12.12
11:16
(7) копипастил пример из чужой самописки
16 Wobland
 
04.12.12
11:17
(14) тут одна сумма, там другая. 0договор один и тот же. что делать?
17 KENT2007
 
04.12.12
11:17
(15) можно на обменик
18 informts
 
04.12.12
11:18
групповой обработкой справочников и документов, галку обрабатывать табличные части
19 KENT2007
 
04.12.12
11:18
(16) на каждую сумму договор другой
20 Wobland
 
04.12.12
11:19
ладно я, у меня руки нет. но ТСу-то ничего не  стоит в нужном месте шифт+7 нажать, а?
21 beer_fan
 
04.12.12
11:19
Может так:

   СуммаИтог = Док.Товары.Итог("Сумма");
   Договор = док.ДоговорКонтрагента.ПолучитьОбъект();
   Договор.Наименование = "" + СуммаИтог + " " + Договор.Номер;
   Договор.Записать();
22 Wobland
 
04.12.12
11:19
(19) это частные случаи
23 cw014
 
04.12.12
11:20
Я понять не могу. Тебе нужно табличную часть перебрать? У табличной части нет реквизита "Договор". Тебе нужно договор поменять? Тогда вообще лучше запросом делай, и не нужна тебе табличная часть - СуммаДокумента тебе в помощь
24 Килограмм
 
04.12.12
11:21
(6) (7) - если в типовой БП сделать поиска по "Для Каждого Строка", то будет найдено очень много примеров использования зарезервированного слова в типовой
25 KENT2007
 
04.12.12
11:21
(23) документ оказание услуг, там все есть
26 Wobland
 
04.12.12
11:22
(25) а попробуй задачу в одно внятное предложение уложить
27 hhhh
 
04.12.12
11:24
но ведь все пишут

Запрос = Новый Запрос;

и никто почему-то не возмущается.
28 KENT2007
 
04.12.12
11:25
взлетит по примеру ?
Запрос = Новый Запрос;
  Запрос.Текст =
      "ВЫБРАТЬ
      |    ПотребностьВТранспорте.Ссылка КАК Потребность,
      |    ПотребностьВТранспорте.ПометкаУдаления
      |ИЗ
      |    Документ.ПотребностьВТранспорте КАК ПотребностьВТранспорте
      |ГДЕ
      |    ПотребностьВТранспорте.ПометкаУдаления = ЛОЖЬ";
  Запрос.УстановитьПараметр("Ложь", Ложь);
  Результат = Запрос.Выполнить();
  ВыборкаДетальныеЗаписи = Результат.Выбрать();
  докПотребность = Документы.ПотребностьВТранспорте.СоздатьДокумент();
  ТипКонтрагент = Новый ОписаниеТипов("СправочникСсылка.Контрагенты");
  ТаблицаЗначений = Новый ТаблицаЗначений;
  ТаблицаЗначений.Колонки.Добавить("Перевозчик",ТипКонтрагент,"Перевозчик");
  ТаблицаЗначений.Колонки.Добавить("Плательщик",ТипКонтрагент,"Плательщик");
  ТаблицаЗначений.Колонки.Добавить("НомерСчета",Новый ОписаниеТипов("Строка"),"Номер счета");
  ТаблицаЗначений.Колонки.Добавить("СуммаСчета",Новый ОписаниеТипов("Число"),"Сумма счета");
  ТаблицаЗначений.Колонки.Добавить("ДатаПолучСчета",Новый ОписаниеТипов("Дата"),"Дата получ.");
  ТаблицаЗначений.Колонки.Добавить("ДатаОплСчета",Новый ОписаниеТипов("Дата"),"Дата опл.");
  Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      докПотребность = ВыборкаДетальныеЗаписи.Потребность;
      Если ЗначениеЗаполнено(докПотребность.ТК) = Истина Тогда
          СтрокаТабЗначений = ТаблицаЗначений.Добавить();
          СтрокаТабЗначений.Перевозчик = докПотребность.ТК;
          СтрокаТабЗначений.Плательщик = докПотребность.Плательщик;
          СтрокаТабЗначений.Плательщик = докПотребность.НомерСчета;
          СтрокаТабЗначений.Плательщик = докПотребность.СуммаСчета;
          СтрокаТабЗначений.Плательщик = докПотребность.ДатаПолучСчета;
          СтрокаТабЗначений.Плательщик = докПотребность.ДатаОплСчета;
          докПотребность.Счета.Загрузить(ТаблицаЗначений);
          докПотребность.Записать(РежимЗаписиДокумента.Запись);
      КонецЕсли;
  КонецЦикла;
29 Pro-tone
 
04.12.12
11:26
(28) зачем ты в цикле записываешь один и тот же документ?
30 KENT2007
 
04.12.12
11:27
я не записываю, это пример
31 Pro-tone
 
04.12.12
11:29
твой код (28) совсем не под тему (0). Ответ в (5)
32 KENT2007
 
04.12.12
11:32
(31) а есть пример с (5)
33 Wobland
 
04.12.12
11:36
(32) он в (24)
34 Килограмм
 
04.12.12
11:38
(32) и ещё в (12)
35 Pro-tone
 
04.12.12
11:39
(32)

Сч=0;
Для Каждого ТекСтрока Из МояТабличнаяЧасть Цикл
 Сч=Сч+1;  
 ТекСтрока.МояМистоКолонка1 = Сч;
 ТекСтрока.МояМистоКолонка2 = Сч/   МояТабличнаяЧасть.Количество();

 Если Сч = МояТабличнаяЧасть.Количество() Тогда
    Сообщить("Ура! Наконец-то я познал пример с перебором строк ТЧ!");
 Иначе
     Сообщить("Пока рано...");  
 КонецЕсли;
 
КонецЦикла
36 KENT2007
 
04.12.12
11:42
а с самого нчала как документ ссылка ....
37 Килограмм
 
04.12.12
11:45
(35) забавные месаги :)
38 KENT2007
 
04.12.12
11:47
)
39 KENT2007
 
04.12.12
11:47
ОУ=Документы.ОказаниеУслуг.Выбрать();
так
40 Килограмм
 
04.12.12
11:47
(37) с самого начала так:
   ДокументАктСв = Документы.АктСверкиВзаиморасчетов.НайтиПоНомеру("00000001");
   МояТабличнаяЧасть = ДокументАктСв.ПоДаннымОрганизации;
41 Килограмм
 
04.12.12
11:48
(40) только для этого примера нужно будет потом ещё документ записать
42 KENT2007
 
04.12.12
11:51
документы есть, проведены
43 Килограмм
 
04.12.12
11:52
(42) перезаписать в смысле, чтобы изменения сохранить в таб. части
44 KENT2007
 
04.12.12
12:00
бред ?
Процедура КнопкаВыполнитьНажатие(Кнопка)
 Документ = Документы.ОказаниеУслуг.НайтиПоНомеру("00000000109");
  МояТабличнаяЧасть = Документ.Контрагенты;    
Для Каждого ТекСтрока Из МояТабличнаяЧасть Цикл
   
    тДоговор =ТекСтрока.ДоговорКонтрагента.ПолучитьОбъект();

тДоговор = ТекСтрока.ДоговорКонтрагента.ВидВзаиморасчетов + " " +ТекСтрока.Сумма+ " " +ТекСтрока.ДоговорКонтрагента.Номер;
  тДоговор.Записать();
 
КонецЦикла

КонецПроцедуры
45 KENT2007
 
04.12.12
12:00
даже в цикл не попадает
46 kosts
 
04.12.12
12:03
(44) тДоговор <тут что то пропустил> = ...
47 kosts
 
04.12.12
12:04
тДоговор <тут имею ввиду> = ТекСтрока.ДоговорКонтрагента.ВидВзаиморасчетов ...
48 salvator
 
04.12.12
12:04
(45) Документ не нашелся по номеру?
49 KENT2007
 
04.12.12
12:05
нашелся а в цикл не входит
50 OberNew
 
04.12.12
12:06
пустая ТЧ
51 KENT2007
 
04.12.12
12:07
вроде не нашелся док
52 Wobland
 
04.12.12
12:07
(49) теперь разучи комбинацию шифт+.
53 KENT2007
 
04.12.12
12:09
почему док может не находить?
54 salvator
 
04.12.12
12:11
(53) Потому что номера такого нет, видимо.
55 kosts
 
04.12.12
12:12
(53) НайтиПоНомеру(<НомерДокумента>, <ДатаИнтервала>)
56 kosts
 
04.12.12
12:14
Проверь, нет ли случайно еще документа с таким же номером.
может НайтиПоНомеру() так и должно работать?
57 KENT2007
 
04.12.12
12:17
все норм с датой документ нашелся
{Форма.Форма.Форма(11)}: Преобразование значения к типу Число не может быть выполнено
   тДоговор.Наименование = ТекСтрока.ДоговорКонтрагента.ВидВзаиморасчетов + " " +ТекСтрока.Сумма+ " " +ТекСтрока.ДоговорКонтрагента.Номер;
58 salvator
 
04.12.12
12:18
(57) Добавь
""+
после "равно"
59 Wobland
 
04.12.12
12:19
(57) сочувствую
60 KENT2007
 
04.12.12
12:21
все разобрался, спасибо всем
61 KENT2007
 
04.12.12
12:21
тДоговор.Наименование = Строка(ТекСтрока.ДоговорКонтрагента.ВидВзаиморасчетов) + " " +Строка(ТекСтрока.Сумма)+ " " +Строка(ТекСтрока.ДоговорКонтрагента.Номер)+ " ";