Имя: Пароль:
1C
1С v8
Ввод на основании
0 tanaka2907
 
04.05.13
19:39
Уважаемые. вот столкнулся с такой проблемой.
У меня есть документ "Приказ на командировку." в нем есть табличная часть, в которой я перечисляю командируемых подотчетных лиц. и я вот решил сделать чтобы проходя табличную часть создавался документ "командировочное удостоверение". Я так понимаю нужно делать ввод на основании???? попробовал конструктором как то не впечатлил результат...
1 EugeniaK
 
04.05.13
19:46
(0) А что конкретно не получилось?
При вводе на основании в процедуре "ОбработкаЗаполнения" обходишь табличну часть и добавляешь по документу на каждую строку табличной части.
2 tanaka2907
 
04.05.13
19:55
У меня в другом документе нету табличной части. а фамилию надо из табличной части забрать.
3 tanaka2907
 
04.05.13
19:56
&НаКлиенте
Процедура СозданиеКомандировочногоУдостоверения(Команда)
   Для каждого строка из Объект.ТабличнаяЧасть1 Цикл
       НовДок = документы.КомандировочноеУдостоверение.СоздатьДокумент();
       НовДок.Заполнить(Что Сюда передать???);
       НовДок.ПолучитьФорму().Открыть();
       КонецЦикла;
   
   КонецПроцедуры

Это пишу в документе на основании которого идет ввод. нашел по гуглу
4 EugeniaK
 
04.05.13
19:58
(2) Я же так и написала.
Отдельный домен на каждую строку табличной части.
Просто конструктором без дополнительной модификации можно создать только документ с идентичными реквизитами.
В данном случае нужно подкорректировать код вручную.
Не знаете как, позовите программиста.
5 EugeniaK
 
04.05.13
20:00
(3) А какие там поля в документе?
НовДок.Сотрудник = строка.Сотрудник;
НовДок.Поле2 = строка.Поле2;
......
Только на сервере, а не на клиенте
6 tanaka2907
 
04.05.13
20:01
Да я вообще то сам учусь))) что мне звать кого-то))
в документе "Приказ" в шапке:
7 tanaka2907
 
04.05.13
20:02
номер
дата
Дата С
ДатаПо
Цель
8 tanaka2907
 
04.05.13
20:02
В табличной части Сотрудник и командировочноеУдостоверение
9 tanaka2907
 
04.05.13
20:03
5) Кстати да на Сервере надо ато документ не создать тогда ж получается
10 EugeniaK
 
04.05.13
20:23
(7)
Чир-то типа:
Для каждого строка из Объект.ТабличнаяЧасть1 Цикл
       НовДок = Документы.КомандировочноеУдостоверение.СоздатьДокумент();
   НовДок.Сотрудник = строка.Сотрудник;
   НовДок.Поле2 = строка.Поле2;
   НовДок.Дата = Объект.Дата;
   НовДок.ДатаС = Объект.ДатаС;
   НовДок.ДатаПо = Объект.ДатаПо;
   НовДок.Записать();
КонецЦикла;
11 tanaka2907
 
04.05.13
20:28
Тобишь Процедуру  ОбработкаЗаполнения() и создавать не надо???
12 EugeniaK
 
04.05.13
20:40
(11) Думаю, в данном конкретном случае проще кнопку в документ "Приказ на командировку."
13 tanaka2907
 
04.05.13
21:09
спасибо большое за помощь)
14 tanaka2907
 
04.05.13
22:11
Процедура СоздатьУдостоверение(Команда)
   Для каждого строка из Объект.ТабличнаяЧасть1 Цикл
       ФизЛицо = строка.Сотрудник;    
       строка.Удостоверение = ЗаполнениеУдостоверения(физЛицо);
   КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ЗаполнениеУдостоверения(Сотрудник)
   НовДок = Документы.КомандировочноеУдостоверение.СоздатьДокумент();
   НовДок.ФизЛицо = Сотрудник;
   НовДок.Дата =Объект.Дата;
   НовДок.ДатаС = Объект.ДатаНачала;
   НовДок.ДатаПо  = Объект.ДатаОкончания;
   НовДок.Приказ = Объект.Номер;
   НовДок.ДатаПриказа = Объект.Дата;
   НовДок.МестоКомандировки = Объект.ПунктНазначения;
   НовДок.ЦельКомандировки = Объект.ПоДокументу;
   НовДок.Записать();
   //строка.удостоверение = НовДок.Ссылка;
Возврат НовДок.Ссылка;
   КонецФункции

как то так и получилось
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший