|
Вывод на печать параметров, после сравнения | ☑ | ||
---|---|---|---|---|
0
Chuvaschow
05.11.15
✎
09:07
|
Здравствуйте!
Прошу помощи. Ситуация следующая: есть документ http://s017.radikal.ru/i413/1511/f8/19e3adaca00a.jpg с табличной частью ОтветственныеЛица, куда я выбираю лиц, которые подпишут документ. В этой ТЧ реквизит Роль - перечисление, остальные - справочники. Необходимо на макет http://s017.radikal.ru/i422/1511/4b/39b7abab8feb.jpg вывести эти лица в нужных местах, в зависимости от перечисления, которое с этими лицами указано в ТЧ. То есть, в ТЧ указано "Представитель лица, осуществляющего подготовку проектной документации", то и в макете это лицо необходимо вывести в нужное место. Правильно ли я рассуждаю, необходимо циклом пробежаться по результатам запроса, для каждой строки выполнить сравнение и назначить через Лист.Параметры необходимый параметр? |
|||
1
Горогуля
05.11.15
✎
09:23
|
я думаю, необходимо циклом пробежаться по результатам запроса и назначить через Лист.Параметры необходимый параметр. скрины не смотред
|
|||
2
Chuvaschow
05.11.15
✎
09:27
|
Я тоже так думаю, но что-то сравнение не выходит сделать.
|
|||
3
Горогуля
05.11.15
✎
09:33
|
какое такое сравнение?
|
|||
4
Chuvaschow
05.11.15
✎
11:04
|
Необходимо из этой ТЧ вывести определенные значения в определенные места на макете
|
|||
5
Горогуля
05.11.15
✎
11:06
|
Область.Параметры...
ТабДокумент.Вывести(Область) вперёд |
|||
6
Chuvaschow
05.11.15
✎
11:22
|
Например. В ТЧ мы выбрали так
Проектировщик Иванов А.А. Мастер цеха Слесарев А.А. Циклом мы получим эти строки. Но как на макет в нужное место поставить именно Проектировщика, а в другое место Мастера цеха ?? |
|||
7
Горогуля
05.11.15
✎
11:24
|
параметрами
|
|||
8
Горогуля
05.11.15
✎
11:25
|
ОбластьМакета.Параметры.ДолжностьИНазваниеОрганизации = ДолжностьИНазваниеОрганизации;
ОбластьМакета.Параметры.ЗаместительПоПриказу = ЗаместительПоПриказу; ТабДокумент.Вывести(ОбластьМакета); |
|||
9
Chuvaschow
05.11.15
✎
11:39
|
ВыборкаОтветственныеЛица = Выборка.ОтветственныеЛица.Выгрузить();
Для Каждого Строка Из ВыборкаОтветственныеЛица Цикл ОбластьПодписи.Параметры.ПредставительЗастройщикаИлиЗаказчика = ВыборкаОтветственныеЛица.Найти("ПредставительЗастройщикаИлиЗаказчика","РольОтветственногоЛица"); ТабДок.Вывести(ОбластьПодписи); КонецЦикла; |
|||
10
Chuvaschow
05.11.15
✎
11:39
|
не работает
|
|||
11
Горогуля
05.11.15
✎
11:40
|
(10) хм.. похоже, что ты не врёшь
|
|||
12
Горогуля
05.11.15
✎
11:41
|
а обязательно только один параметр заполнять?
|
|||
13
Chuvaschow
05.11.15
✎
11:43
|
не понял. Параметров столько же, сколько в перечилении значений, около 20 шт.
|
|||
14
Горогуля
05.11.15
✎
11:45
|
ладно-ладно. чем заполнять хочешь? и чем заполняешь?
|
|||
15
Chuvaschow
05.11.15
✎
11:47
|
эммм...
вот что у меня модуле менеджера Процедура Печать(ТабДок, Ссылка) Экспорт //{{_КОНСТРУКТОР_ПЕЧАТИ(Печать) Макет = Документы.АктВыполненныхРабот.ПолучитьМакет("Печать"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | АктВыполненныхРабот.Дата, | АктВыполненныхРабот.ЛокальнаяСмета, | АктВыполненныхРабот.Номер, | АктВыполненныхРабот.Объект, | АктВыполненныхРабот.Проект, | АктВыполненныхРабот.Работы.( | НомерСтроки, | ВидРаботы, | Количество, | Артикул, | ЕдИзм, | Артикул КАК Артикул1 | ), | АктВыполненныхРабот.ОтветственныеЛица.( | НомерСтроки, | Должность, | ОтветственноеЛицо, | РольОтветственногоЛица | ), | АктВыполненныхРабот.Заказчик, | АктВыполненныхРабот.Организация, | АктВыполненныхРабот.Заказчик.СвидетельствоОРегистрации, | АктВыполненныхРабот.Заказчик.ИНН, | АктВыполненныхРабот.Заказчик.ОГРН, | АктВыполненныхРабот.Заказчик.Адрес, | АктВыполненныхРабот.Организация.ИНН, | АктВыполненныхРабот.Организация.ОГРН, | АктВыполненныхРабот.Организация.СвидетельствоОРегистрации, | АктВыполненныхРабот.Организация.Адрес, | АктВыполненныхРабот.Проект.Наименование |ИЗ | Документ.АктВыполненныхРабот КАК АктВыполненныхРабот |ГДЕ | АктВыполненныхРабот.Ссылка В(&Ссылка)"; Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ОбластьАкт = Макет.ПолучитьОбласть("Акт"); ОбластьПодписи = Макет.ПолучитьОбласть("Подписи"); ТабДок.Очистить(); ВставлятьРазделительСтраниц = Ложь; Пока Выборка.Следующий() Цикл Если ВставлятьРазделительСтраниц Тогда ТабДок.ВывестиГоризонтальныйРазделительСтраниц(); КонецЕсли; ОбластьШапка.Параметры.Заполнить(Выборка); ТабДок.Вывести(ОбластьШапка, Выборка.Уровень()); ОбластьАкт.Параметры.Заполнить(Выборка); Номер = УбратьЛидирующиеНули(Выборка.Номер); ОбластьАкт.Параметры.Номер = Номер; ТабДок.Вывести(ОбластьАкт, Выборка.Уровень()); //ТабДок.Вывести(ОбластьРаботыШапка); //ВыборкаРаботы = Выборка.Работы.Выбрать(); //Пока ВыборкаРаботы.Следующий() Цикл // ОбластьРаботы.Параметры.Заполнить(ВыборкаРаботы); // ТабДок.Вывести(ОбластьРаботы, ВыборкаРаботы.Уровень()); //КонецЦикла; //ТабДок.Вывести(ОбластьПодписи); ВыборкаОтветственныеЛица = Выборка.ОтветственныеЛица.Выгрузить(); Для Каждого Строка Из ВыборкаОтветственныеЛица Цикл ОбластьПодписи.Параметры.ПредставительЗастройщикаИлиЗаказчика = ВыборкаОтветственныеЛица.Найти("ПредставительЗастройщикаИлиЗаказчика","РольОтветственногоЛица"); ТабДок.Вывести(ОбластьПодписи); КонецЦикла; ВставлятьРазделительСтраниц = Истина; КонецЦикла; //}} КонецПроцедуры |
|||
16
Горогуля
05.11.15
✎
11:48
|
(15) пофих, это не работает
|
|||
17
Lexey_
05.11.15
✎
11:55
|
(15) ОбластьПодписи.Параметры.ПредставительЗастройщикаИлиЗаказчика = ВыборкаОтветственныеЛица.Найти(...
посмотри в СП, что возвращает метод Найти() для таблицы значений |
|||
18
Chuvaschow
05.11.15
✎
11:57
|
Неопределено однако...
|
|||
19
Горогуля
05.11.15
✎
12:00
|
(18) иногда. чем заполнять хочешь?
|
|||
20
Chuvaschow
05.11.15
✎
12:17
|
(19) Простите, не понимаю вопроса. Новичок-с...
|
|||
21
Горогуля
05.11.15
✎
12:19
|
а не хочешь ли ты заполнить два параметра про должность и фамилию в цикле по соответствующей ТЧ значениями реквизитов каждой строки?
|
|||
22
Chuvaschow
05.11.15
✎
12:23
|
Наверное да :)
|
|||
23
Chuvaschow
05.11.15
✎
12:28
|
Можно пример? Не могу сам составить....
|
|||
24
Горогуля
05.11.15
✎
12:33
|
Для Каждого ТекСтрока Из ТЧ Цикл
Область.Параметры.Заполнить(ТекСтрока); ТабДокумент.Вывести(Область); |
|||
25
Chuvaschow
05.11.15
✎
12:43
|
Нет. вот что получается запросом из табличной части
http://s018.radikal.ru/i527/1511/fb/d7fd3b514e04.jpg Теперь необходимо, скажем, ОтветственноеЛицо, у которого роль "Представитель лица, осуществляющего строительство" (в данном случае Борисков А.В.) вывести в конце печатной формы, другие лица совсем в другие места, в другие области. |
|||
26
Горогуля
05.11.15
✎
12:50
|
Область.Параметры.ФИОПредставителяЛицаОсуществляющегоСтроительство=ЗаранееЗаготовленнаяСтрока
|
|||
27
Chuvaschow
05.11.15
✎
12:52
|
Да, но как получить эту заранее заготовленную строку. Необходимо ведь в ТЧ выполнить некое сравнение,отбор, чтобы отобрать именно ту строку, которая нам нужна.
|
|||
28
Горогуля
05.11.15
✎
12:55
|
Найти() найдёт тебе немножко строк ТЗ, из которых потом можно будет её собрать
|
|||
29
Горогуля
05.11.15
✎
12:55
|
(28) *НайтиСтроки
|
|||
30
Chuvaschow
05.11.15
✎
13:23
|
Отбор1 = Новый Структура;
Отбор1.Вставить("РольОтветственногоЛица", "Представитель лица, осуществляющего строительство"); ПредставительЛицаОсуществляющегоСтроительство = ВыборкаОтветственныеЛица.Скопировать(Отбор1); |
|||
31
Chuvaschow
05.11.15
✎
13:24
|
Увы ничего в новую ТЗ не складывается.
|
|||
32
Горогуля
05.11.15
✎
13:25
|
теперь можешь попробовать найти в ТЗ строки с нужной ролью
|
|||
33
Горогуля
05.11.15
✎
13:27
|
(31) это всё потому, что нет ни одной строки, в которой РольОтветственногоЛица была бы равна "Представитель лица, осуществляющего строительство". внезапно, правда?
|
|||
34
cw014
05.11.15
✎
13:29
|
Схожу за попкорном
|
|||
35
Chuvaschow
05.11.15
✎
13:32
|
(33) Конечно внезапно, ведь в ТЗ по которой отбираем РольОтветственногоЛица с таким значением есть
http://s018.radikal.ru/i527/1511/fb/d7fd3b514e04.jpg |
|||
36
Горогуля
05.11.15
✎
13:32
|
(35) они просто похожи, типы разные
|
|||
37
Chuvaschow
05.11.15
✎
13:37
|
Понял :)
Отбор1 = Новый Структура; Отбор1.Вставить("РольОтветственногоЛица", Перечисления.РолиОтветственныхЛиц.ПредставительЛицаОсуществляющегоСтроительство); ПредставительЛицаОсуществляющегоСтроительство = ВыборкаОтветственныеЛица.НайтиСтроки(Отбор1); Получили массив. Что дальше? |
|||
38
cw014
05.11.15
✎
13:38
|
(37) Попробуй посмотреть что в массиве, а так же почитать, как работать с массивом. Там все просто
|
|||
39
Горогуля
05.11.15
✎
13:41
|
(37) а что ты хочешь сделать с этими двумя сотнями строк ТЗ, у которых есть нужная роль?
|
|||
40
cw014
05.11.15
✎
13:41
|
(39) Не двумя, а тремя
|
|||
41
Горогуля
05.11.15
✎
13:41
|
(40) сойдёмся на двух с половиной ;)
|
|||
42
cw014
05.11.15
✎
13:43
|
(41) Не вопрос
|
|||
43
Chuvaschow
05.11.15
✎
13:44
|
Столько не будет. Запрещено в доке выбирать более одной роли.
А если бы такого условия не было - как правильно делать такие вещи? |
|||
44
cw014
05.11.15
✎
13:44
|
(43) а) Руками б) кодом
|
|||
45
Горогуля
05.11.15
✎
13:46
|
(43) запрещено перед записью, надеюсь?
|
|||
46
Горогуля
05.11.15
✎
13:47
|
да и пофих, бери нулевого
|
|||
47
Chuvaschow
05.11.15
✎
13:47
|
угу
|
|||
48
cw014
05.11.15
✎
13:47
|
+(46) Даже если там нету нулевого
|
|||
49
Горогуля
05.11.15
✎
13:50
|
(48) а я так надеялся в самом конце посоветовать убрать нужную роль...
|
|||
50
cw014
05.11.15
✎
13:51
|
(49) Ааааа, прости. Буду молчать и наблюдать за происходящим
|
|||
51
Горогуля
05.11.15
✎
13:54
|
задача на специалиста, самая первая. контроль остатков. человек 4 часа пыхтит, потеет, делает. всё работает. ура! я самая умная!
ага. сколько там на остатке? пять? введи пять порстигаров и ещё один. провелось? надо было видеть это лицо. сгруппировать человек не догадался |
|||
52
cw014
05.11.15
✎
13:55
|
(51) Хммм, у меня бы провелось ))))
|
|||
53
Chuvaschow
05.11.15
✎
14:01
|
Все работает. Много кода, не красиво. Пока так, как временное решение. Осталось решить проблему с пустым массивом, дабы в ошибку не вываливалось.
А так я все понял. Затея изначально глуповатая. Спасибо что попинали и научили :) |
|||
54
cw014
05.11.15
✎
14:03
|
(53) Почитай про массивы
|
|||
55
Горогуля
05.11.15
✎
14:03
|
(53) а вот тут уже пригодится то самое сравнение
|
|||
56
Chuvaschow
05.11.15
✎
14:10
|
Решил через Массив.Количество() <> 0 Тогда
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |