![]() |
|
Заполнение поля ввода в табличной части | ☑ | ||
---|---|---|---|---|
0
Gill
10.11.11
✎
16:29
|
Привет всем!
Есть ТЧ документа след.вида: №стр Работник Техника ВидРаботы ПутевойЛист 1 Иванов Камаз Перевозка товара ... 2 Петров ГАЗ Перевозка товара ... На форме приделана кнопка процедура которой по каждой строке создает документ ПутевойЛист.Вопрос: у меня в текущем примере создасться 2 путевых листа, как заполнить реквизиты ТЧ в поле ПутевойЛист соответствующими ссылками на созданные документы? ... Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ТЧДанные=Запрос.Выполнить().Выгрузить(); Информация=ТЧДанные.Скопировать(,"Работник,Техника"); Информация.Свернуть("Работник,Техника"); Для каждого Очередной из Информация цикл ПутевойЛистАвто=Документы.ПутевойЛистАвтотранспорта.СоздатьДокумент(); ПутевойЛистАвто.Дата = Дата + 1; ПутевойЛистАвто.Организация = Организация; ПутевойЛистАвто.Водитель=Очередной.Работник; ПутевойЛистАвто.ТранспортноеСредство=Очередной.Техника; Состав=ТЧДанные.НайтиСтроки(Новый Структура("Работник,Техника",Очередной.Работник, Очередной.Техника)); Для каждого СтрокаСДанными из Состав цикл СтрокаТЧ=ПутевойЛистАвто.ТЧЗадание.Добавить(); ... СтрокаТЧ.ВидРаботы=СтрокаСДанными.ВидРаботы; КонецЦикла; ПутевойЛистАвто.Записать(РежимЗаписиДокумента.Запись); ЭтотОбъект.Записать(); Форма=ПутевойЛистАвто.ПолучитьФорму(); Форма.Открыть(); КонецЦикла; |
|||
1
DrShad
10.11.11
✎
16:38
|
код в топку
|
|||
2
Gill
10.11.11
✎
16:54
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | СводныйПланРабот.Работник, | СводныйПланРабот.Техника, | СводныйПланРабот.ВидРаботы |ИЗ | Документ.СводныйПлан.Работы КАК СводныйПланРаботы |ГДЕ | СводныйПланРаботы.Ссылка = &ТекущийДокумент"; Запрос.УстановитьПараметр("ТекущийДокумент",ДокументОбъект.Ссылка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ТЧДанные=Запрос.Выполнить().Выгрузить(); Информация=ТЧДанные.Скопировать(,"Работник,Техника"); Информация.Свернуть("Работник,Техника"); Для каждого Очередной из Информация цикл ПутевойЛистАвто=Документы.ПутевойЛистАвтотранспорта.СоздатьДокумент(); ПутевойЛистАвто.Дата = Дата + 1; ПутевойЛистАвто.Организация = Организация; ПутевойЛистАвто.Водитель=Очередной.Работник; ПутевойЛистАвто.ТранспортноеСредство=Очередной.Техника; Состав=ТЧДанные.НайтиСтроки(Новый Структура("Работник,Техника",Очередной.Работник, Очередной.Техника)); Для каждого СтрокаСДанными из Состав цикл СтрокаТЧ=ПутевойЛистАвто.ТЧЗадание.Добавить(); ... СтрокаТЧ.ВидРаботы=СтрокаСДанными.ВидРаботы; КонецЦикла; ПутевойЛистАвто.Записать(РежимЗаписиДокумента.Запись); ЭтотОбъект.Записать(); Форма=ПутевойЛистАвто.ПолучитьФорму(); Форма.Открыть(); КонецЦикла; |
|||
3
Gill
10.11.11
✎
17:09
|
^
|
|||
4
Maxus43
10.11.11
✎
17:11
|
см. (1)
|
|||
5
Gill
10.11.11
✎
17:14
|
(1),(3)какой еще код вы имеете ввиду?
|
|||
6
Maxus43
10.11.11
✎
17:15
|
по делу об "как заполнить реквизиты ТЧ в поле ПутевойЛист соответствующими ссылками на созданные документы?"
После записи каждого документа запоминай их ссылки, например в массив. После записи всех доков будеш иметь ссылки на новые документы |
|||
7
Gill
10.11.11
✎
17:17
|
(6) а как прописывать соответствие строки ТЧ к созданному документу?
|
|||
8
Maxus43
10.11.11
✎
17:20
|
в документе "Документ.СводныйПлан.Работы" в таком случае обычно ставится реквизит в этой ТЧ, и там ссылки на новые доки
|
|||
9
Gill
10.11.11
✎
17:22
|
(8) реквизит в ТЧ Работы у меня имеется - Наряд (тип ДокументСсылка.ПутевойЛистАвтотранспорта), я не врубаюсь как именно записать созданный док в этот реквизит
|
|||
10
Шапокляк
10.11.11
✎
17:25
|
(7) Добавьте в таблицу Информация колонку со ссылкой на создаваемые документы. После того как все документы создадутся, шебуршите таблицу Информация и заполняйте строки в своем документе.
|
|||
11
Gill
10.11.11
✎
17:25
|
(8) если я напишу
Для каждого СтрокаТЧ из Работы цикл СтрокаТЧ.Наряд = ПутевойЛистАвто.Ссылка КонецЦикла //у меня в обе строки ТЧ Работы записывается один и тот же наряд, хотя их создалось 2 |
|||
12
Maxus43
10.11.11
✎
17:28
|
ПутевойЛистАвто.Записать(РежимЗаписиДокумента.Запись);
СтрокаТЧ.Наряд = ПутевойЛистАвто.Ссылка не? |
|||
13
hhhh
10.11.11
✎
17:33
|
(12) похоже СтрокаТЧ у него в документе ПутевойЛист. А в (11) это он хочет в ЭтотОбъект записать строку.
|
|||
14
Gill
10.11.11
✎
17:35
|
(13) Да, мне нужно именно в текущий документ записать ссылку на созданный путевой лист, а не в сам путевой лист
|
|||
15
Gill
10.11.11
✎
17:35
|
+(14) точнее наоборот, мне нужно именно в текущий документ записать ссылку на созданный путевой лист, а не в сам путевой лист
|
|||
16
Maxus43
10.11.11
✎
17:39
|
(14)(15) не пиши так больше, я чуть не завис пока отличия пытался найти
|
|||
17
Gill
10.11.11
✎
17:43
|
в конце кода из (2) пишу
Для каждого СтрокаТЧ из Работы цикл СтрокаТЧ.Наряд = ПутевойЛистАвто.Ссылка КонецЦикла и в итоге в каждую строку записывается ссылка на один и тот же созданный документ, а не 2 разных как нужно |
|||
18
Maxus43
10.11.11
✎
17:44
|
(17) > (6). а я домой
|
|||
19
Шапокляк
10.11.11
✎
17:51
|
(17) Вы, судя по коду, делаете следующее:
В открытой форме документа запускаете формирование путевых листов. Для этого вы запросом по табличной части работы получаете таблицу значений Информация, строк в которой столько,сколько сочетаний Работник-Техника - и столько же путевых листов будет создано. Так? |
|||
20
Gill
10.11.11
✎
17:51
|
(19) да, именно так
|
|||
21
hhhh
10.11.11
✎
17:52
|
(20) наверно, уже нужно
Состав=Работы.НайтиСтроки(Новый Структура("Работник,Техника",Очередной.Работник, Очередной.Техника)); Для каждого СтрокаТЧ из Состав цикл СтрокаТЧ.Наряд = ПутевойЛистАвто.Ссылка КонецЦикла |
|||
22
Шапокляк
10.11.11
✎
17:53
|
(20) Ну вот. Значит, вам надо после формирования таблицы значений Информация добавить в нее колонку Путевой лист. В процессе обхода цикла по строкам Информация не просто создавать ПутевойЛист, но и записывать ссылку на него в колонку таблицы Информация.
|
|||
23
Gill
10.11.11
✎
17:54
|
(21) мне нужно добавлять ссылку не в создаваемом документе, а в текущем (из которого) создается путевой лист
|
|||
24
Шапокляк
10.11.11
✎
17:56
|
Таким образом, после формирования всех путевых листов у вас будет таблица Информация, в каждой строке которой будет Работник, Техника, ПутевойЛист.
Дальше переберите строки этой таблицы Информация и для каждой строки найдите в своей табличной части Работы такие строки, в которых такие же Работник и Техника и запишите туда Путевой лист из перебираемой строки Информации. |
|||
25
Gill
10.11.11
✎
18:00
|
(24) понять бы еще как это сделать с использованием встренного языка 1с
|
|||
26
Шапокляк
10.11.11
✎
18:03
|
ПЕРВАЯ ЧАСТЬ
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СводныйПланРабот.Работник, | СводныйПланРабот.Техника, | СводныйПланРабот.ВидРаботы |ИЗ | Документ.СводныйПлан.Работы КАК СводныйПланРаботы |ГДЕ | СводныйПланРаботы.Ссылка = &ТекущийДокумент"; Запрос.УстановитьПараметр("ТекущийДокумент",ДокументОбъект.Ссылка); Результат = Запрос.Выполнить(); Выборка = Результат.Выбрать(); ТЧДанные=Запрос.Выполнить().Выгрузить(); Информация=ТЧДанные.Скопировать(,"Работник,Техника"); Информация.Свернуть("Работник,Техника"); ////////////ВОТ ТУТА Информация.Колонки.Добавить("ПутевойЛист"); Для каждого Очередной из Информация цикл ПутевойЛистАвто=Документы.ПутевойЛистАвтотранспорта.СоздатьДокумент(); ПутевойЛистАвто.Дата = Дата + 1; ПутевойЛистАвто.Организация = Организация; ПутевойЛистАвто.Водитель=Очередной.Работник; ПутевойЛистАвто.ТранспортноеСредство=Очередной.Техника; Состав=ТЧДанные.НайтиСтроки(Новый Структура("Работник,Техника",Очередной.Работник, Очередной.Техника)); Для каждого СтрокаСДанными из Состав цикл СтрокаТЧ=ПутевойЛистАвто.ТЧЗадание.Добавить(); ... СтрокаТЧ.ВидРаботы=СтрокаСДанными.ВидРаботы; КонецЦикла; ПутевойЛистАвто.Записать(РежимЗаписиДокумента.Запись); ////// И ТУТА Очередной.ПутевойЛист=ПутевойЛистАвто.ссылка; ЭтотОбъект.Записать(); /// НАФИГ не надо Форма=ПутевойЛистАвто.ПолучитьФорму(); Форма.Открыть(); КонецЦикла; |
|||
27
Шапокляк
10.11.11
✎
18:05
|
ДАЛЕЕ:
Для каждого Стр Из Информация Цикл Для Каждого СтрРаботники Из Работы Цикл Если СтрРаботники.Работа=Стр.Работа И СтрРаботники.Техника=Стр.Техника тогда СтрРаботники.КакойТамНадоРеквизит=Стр.Путевойлист; КонецЦикла; КонецЦикла; |
|||
28
Шапокляк
10.11.11
✎
18:06
|
пардон
Если СтрРаботники.Работа=Стр.Работа И СтрРаботники.Техника=Стр.Техника тогда СтрРаботники.КакойТамНадоРеквизит=Стр.Путевойлист; КонецЕсли; КонецЦикла; КонецЦикла; |
|||
29
Шапокляк
10.11.11
✎
18:12
|
* (28)Работа=Работник
|
|||
30
Gill
10.11.11
✎
18:14
|
(26),(28) Всё получилось, спасибо Вам!!!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |