Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
Bukem
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 30
1

Данные из текущего документа + Данные из справочника. Внешняя печатная форма

22.08.2013, 15:11. Просмотров 6625. Ответов 35
Метки нет (Все метки)

Волей судьбы пришлось столкнуться с 1С, до этого 1С не видел...
Задача: Создать Внешнюю печатную форму, чтоб пользователь из "Реализация товаров и услуг", мог распечатать договор "на фирменном бланке", подредактировал немного чужой исходник, более менее понял что и как берется из ТЕКУЩЕГО документа, но в документе не хватает параметров, а именно: ФИО руководителя, Должность.. возможно еще чего, это уже не суть.
Листинг:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Функция ПечатьДокумента()
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   РеализацияТоваровУслуг.Номер,
    |   РеализацияТоваровУслуг.Дата,
    |   РеализацияТоваровУслуг.Контрагент,
    |   РеализацияТоваровУслуг.Контрагент.Ссылка.НаименованиеПолное КАК НаименованиеПолное,
    |   РеализацияТоваровУслуг.Организация
    |ИЗ
    |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |   РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
        
    Запрос.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект); //используем в качетсве параметра реквизит обработки СсылкаНаОбъект
    
    Шапка = Запрос.Выполнить().Выбрать();
    Шапка.Следующий();
    
    ТабДокумент = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Макет");
 
    Макет.Параметры.НомерДоговора = "Лицензионный договор №" + Шапка.Номер;
    Макет.Параметры.ДатаДоговора = Шапка.Дата;
    
    Макет.Параметры.Пункт0 = 
                "    Общество с ограниченной ответственностью " 
                + Шапка.Организация + 
                ", именуемое в дальнейшем Лицензиат";
    
    ТабДокумент.Вывести(Макет);
    
    Возврат ТабДокумент;
 
КонецФункции // ПечатьДокумента()
 
Функция Печать() Экспорт
    
    ТабДокумент = ПечатьДокумента();
    Возврат ТабДокумент;
    
КонецФункции // Печать
Собственно и вопрос, как в данный документ подключить ФИО руководителя контрагента?
1С:Предприятие 8.1 (8.1.14.69)
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2013, 15:11
Ответы с готовыми решениями:

Внешняя печатная форма с доп.формой. Как перенести данные открытого документа
Доброго всем. Бухгалтерия 2.0 Проф У меня есть внешняя печатная форма,...

Печатная форма, выбирать данные не только из одного документа
Подскажите пожалуйста что нужно написать что бы в печатной форме выбирать...

Внешняя печатная форма в 1С 7.7
Всем доброго дня! Появилась необходимость добавить в 1С 7.7 Бухгалтерию...

Внешняя печатная форма
Необходимо чтобы во внешней печатной форме, вызываемой из документа "Реализация...

Внешняя печатная форма
Подскажите пожалуйста,как привязать внешнюю печатную форму к документу в 1с 8.2

35
Bukem
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 30
28.08.2013, 08:45  [ТС] 21
//есть Контакт, но что нам это даёт, вдруг там какой нибудь курьер, как в демке?
Все верно, по этому и хочу из Справочника Контактные Лица, а не через Основное Контактное Лицо эту инфу получить

Добавлено через 2 часа 9 минут
Цитата Сообщение от wladimir_ui Посмотреть сообщение
1C
1
2
3
| РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицо.Фамилия,
| РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицо.Имя,
| РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицо.Отчество,
дает значение ложь
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
28.08.2013, 16:36 22
1 картина: случай когда основной есть
2 картина: крутим все контакты контрагента
0
Миниатюры
Данные из текущего документа + Данные из справочника. Внешняя печатная форма   Данные из текущего документа + Данные из справочника. Внешняя печатная форма  
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
28.08.2013, 16:41 23
должность там - это строка... если руководителя/директора среди контактов не идентифицируете, кого царем делать будете?
0
Bukem
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 30
29.08.2013, 06:51  [ТС] 24
wladimir_ui, пусть это будет форс-мажор )) а если серьезно, то это условие будет обязательно для заполнения, т.е. ОсновноеКонтактноеЛицо будет обязательно директор/босс/шеф и тд.. в любом случае это проще чем бухгалтер при заполнении договора копипастит данные из 1С в Word
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
29.08.2013, 07:20 25
Ну если основное контактное будет заполнено то все должно работать. Только концовку надо поменять:
1C
1
2
3
4
5
6
...
Иначе
         //есть Контакт...
        Должность = Выборка.КонтрагентОсновноеКонтактноеЛицоДолжность;
        Фамилия = Выборка.КонтрагентОсновноеКонтактноеЛицоФамилия;
        ///.... и т.д.
0
Bukem
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 30
29.08.2013, 09:46  [ТС] 26
wladimir_ui, я похоже тормоз (
1C
1
2
3
4
5
6
////////
"ВЫБРАТЬ
|   РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицоФамилия
///////
Фамилия = Выборка.КонтрагентОсновноеКонтактноеЛицоФамилия;
////////
такая связка не работает
1C
1
Поле не найдено "РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицоФамилия"
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
29.08.2013, 11:25 27
Сделайте так:
| РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицо.Фамилия как Фамилия,
| РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицо.Имя как Имя,
| РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицо.Отчество как Отчество,

Тогда у вас заработает:
Фамилия = Выборка.Фамилия;
...


Добавлено через 20 минут
в приведенном вами
| РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицоФамилия
точки между харей и фамилией не хватат
| РеализацияТоваровУслуг.Контрагент.ОсновноеКонтактноеЛицо.Фамилия
0
Bukem
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 30
29.08.2013, 11:33  [ТС] 28
я так пробовал, дает значение ложь
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
29.08.2013, 12:52 29
сделаем проще: выложите обработку - гляну чего вы там навояли
0
Bukem
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 30
29.08.2013, 13:08  [ТС] 30
Добавил
Dogovor.rar
0
wladimir_ui
Шизофреник
358 / 361 / 83
Регистрация: 25.06.2013
Сообщений: 1,141
29.08.2013, 15:00 31
1C
1
2
3
Макет.Параметры.Пункт881 = "Лицензиат: " + Шапка.Организация + 
    //"Юридический адрес: " + Шапка.ПолеКИ1+;
    Макет.Параметры.Пункт882 = "Сублицензиат: " + Шапка.Фамилия;
фактически это:
Макет.Параметры.Пункт881 = "Лицензиат: " + Шапка.Организация + Макет.Параметры.Пункт882 ="Сублицензиат: " + Шапка.Фамилия;


По сути это звучит так:
В Макете вместо параметра "Пункт881" вставить результат сравнения строки
"Лицензиат: " + Шапка.Организация + Макет.Параметры.Пункт882
и строки
"Сублицензиат: " + Шапка.Фамилия
а так как они не равны, то и результат сложения = ЛОЖЬ

Не по теме:

Вопрос: 2х2=4
Ответ: Истина

Вопрос: 2х2=5
Ответ: Ложь



В шапку то фио/должность нормально попали, будьте внимательнее.

Добавлено через 53 минуты
з.ы. рекомендую:
1. в обработке создать форму (при создании поставить галки на реквизитах, чтоб они на форму попали)
2. на кнопку "выполнить" повесьте код:
1C
1
2
3
4
Процедура КнопкаВыполнитьНажатие(Кнопка)
    ТабДокумент = ПечатьДокумента();
    ТабДокумент.Показать()
КонецПроцедуры
3. в модуле обработке допишите слово Экспорт:
1C
1
Функция ПечатьДокумента()Экспорт
и пользуйтесь отладчиком, чтоб понимать, что происходит, а не играться с черным ящиком
1
Bukem
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 30
30.08.2013, 14:34  [ТС] 32
долбаная ";" )))) спасибо, сам бы 100% не нашел!!!

Добавлено через 23 часа 31 минуту
почти все получилось, осталось добавить данные о адресах и телефонах контрагента..
1C
1
2
3
4
|   РеализацияТоваровУслуг.Контрагент.ЭлементыФормы.ПолеКИ1 КАК ПолеКИ1,
или
 РеализацияТоваровУслуг.Контрагент.ПолеКИ1 КАК ПолеКИ1,
итд
не получается (
0
fastumgel
32 / 32 / 3
Регистрация: 11.02.2012
Сообщений: 91
30.08.2013, 22:22 33
1C
1
2
3
4
5
НаборКонтактнойИнформации = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию(НаборКонтактнойИнформации,Шапка.Контрагент);
Для Каждого Стр из НаборКонтактнойИнформации Цикл
     //тут свое условие
КонецЦикла
0
Kubus
20 / 20 / 0
Регистрация: 29.08.2013
Сообщений: 57
31.08.2013, 15:53 34
Может неправильно понимаю задачу, но что мешает сделать так как уже советовали в самом начеле?
Если справочник КонтактныеЛица подчинен справочнику Контрагенты, то дополнить запрос как-то так:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ВЫБРАТЬ
    РеализацияТоваровУслуг.Контрагент,
    РуководствоКонтрагента.ФИО          КАК ФИОРуководителяКонтрагента,
    РуководствоКонтрагента.Должность    КАК ДолжностьРуководителяКонтрагента
ИЗ
    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
 
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            КонтактныеЛица.Должность КАК Должность,
            КонтактныеЛица.ФИО       КАК ФИО,
            КонтактныеЛица.Владелец  КАК Владелец
        ИЗ
            Справочник.КонтактныеЛица КАК КонтактныеЛица
        ГДЕ
            КонтактныеЛица.Должность = &Должность) КАК РуководствоКонтрагента    
        ПО (РуководствоКонтрагента.Владелец = РеализацияТоваровУслуг.Контрагент)
А в параметры запроса добавить:
1C
1
 Запрос.УстановитьПараметр("Должность", <Тут вставить представление должности в справочнике КонтактныеЛица>);
0
Bukem
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 30
02.09.2013, 13:26  [ТС] 35
fastumgel, не понял как это реализовать..
весь текст приводить не буду, только что касается контактной информации, сделал так:
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 "ВЫБРАТЬ
    |   КонтактнаяИнформацияТелефон.Представление КАК Телефон,
    |   КонтактнаяИнформацияАдрес.Представление КАК Адрес,
    |   КонтактнаяИнформацияДругое.Представление КАК Другое,
 
    |ИЗ
    |   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    ////////
    |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияАдрес
    |    ПО (КонтактнаяИнформацияАдрес.Объект = Контрагент.Ссылка)
    |        И (КонтактнаяИнформацияАдрес.Тип = &Адрес)
    ////////
    |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияДругое
    |    ПО (КонтактнаяИнформацияДругое.Объект = Контрагент.Ссылка)
    |        И (КонтактнаяИнформацияДругое.Тип = &Другое)
    /////// 
    |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформацияТелефон
    |    ПО (КонтактнаяИнформацияТелефон.Объект = Контрагент.Ссылка)
    |        И (КонтактнаяИнформацияТелефон.Тип = &Телефон)
    |        И (КонтактнаяИнформацияТелефон.Вид = &Вид) 
    |ГДЕ
    |   РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент";
 
 
Запрос.УстановитьПараметр("Телефон", Перечисления.ТипыКонтактнойИнформации.Телефон);
    Запрос.УстановитьПараметр("Вид", Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента);
    Запрос.УстановитьПараметр("Адрес", Перечисления.ТипыКонтактнойИнформации.Адрес);
    Запрос.УстановитьПараметр("Другое", Перечисления.ТипыКонтактнойИнформации.Другое);
Поле Другое использую как Почтовый (Фактический) адрес, по другому не получилось... в принципе осталось только это до ума довести, есть еще пара "костылей"... Это ФИО руководителя в родительском падеже, реализовал через "Представление", т.е. ФИО будет Тест Т.Т., представление Тестов Тест Тестович...

Добавлено через 4 минуты
Kubus, спорить не буду, но мне показалось что так проще, по крайней мере работает
0
fastumgel
32 / 32 / 3
Регистрация: 11.02.2012
Сообщений: 91
02.09.2013, 14:18 36
1C
1
2
3
4
5
6
7
НаборКонтактнойИнформации = РегистрыСведений.КонтактнаяИнформация.СоздатьНаборЗаписей();
    УправлениеКонтактнойИнформацией.ПрочитатьКонтактнуюИнформацию(НаборКонтактнойИнформации,Ссылка);
    Для Каждого стр из НаборКонтактнойИнформации Цикл 
        Если стр.Вид.Наименование = "Юридический адрес"  Тогда 
            ПолеКи1 = стр.Представление;
        КонецЕсли;  
    КонецЦикла;
1
02.09.2013, 14:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.09.2013, 14:18

Внешняя печатная форма
Народ! Помогите, пожалуйста! Делаю ВПФ Торг12 для дока ПередачаТоваров. Конфа...

Внешняя печатная форма КС-2 и КС-3
Здравствуйте, я не программист, а бухгалтер. Очень понадобились внешние...

Внешняя печатная форма
Здравствуйте. Я только знакомлюсь с «языком» 1с, поэтому решил обратиться за...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru