Ошибка "Защита" как обойти?
Добрый день!
Возникла следующая ситуация,
Есть Макет печатной формы, в него нужно добавить строку "Заказчик" с реквизитом <Наименование>,
который будет включать в себя Наименование, Контактное лицо и телефон
В модуле Маршрутного листа в Функцию "ПечатьМаршрутныйЛистСЗаказами" добавил
И при печати Маршрутного Листа детализация по заказам выходит ошибка:
Значение не является значением объектного типа "Защита"
Код:
Направьте на путь истинный
Возникла следующая ситуация,
Есть Макет печатной формы, в него нужно добавить строку "Заказчик" с реквизитом <Наименование>,
который будет включать в себя Наименование, Контактное лицо и телефон
В модуле Маршрутного листа в Функцию "ПечатьМаршрутныйЛистСЗаказами" добавил
//Контрагент, контактное лицо
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| уатЗаказГрузоотправителя.Контрагент.Наименование КАК Наименование,
| уатЗаказГрузоотправителя.Контрагент.ОсновноеКонтактноеЛицо КАК ОсновноеКонтактноеЛицо
|ИЗ
| Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
КонтрагентКонтактноеЛицо = "";
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
КонтрагентИКонтактноеЛицо =
" " + ВыборкаДетальныеЗаписи.Наименование
+
" " + ВыборкаДетальныеЗаписи.ОсновноеКонтактноеЛицо;
КонецЕсли;
Возврат КонтрагентИКонтактноеЛицо;
//Телефон
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| уатЗаказГрузоотправителя.Контрагент.КонтактнаяИнформация.(
| НомерТелефона КАК НомерТелефона
| )
|ИЗ
| Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Телефон = ВыборкаДетальныеЗаписи.НомерТелефона;
КонецЕсли;
//Выводим данные
ОбластьМакетаШапка.Параметры.Наименование = КонтрагентИКонтактноеЛицо + Телефон;
ПоказатьИ при печати Маршрутного Листа детализация по заказам выходит ошибка:
Значение не является значением объектного типа "Защита"
Код:
// Процедура устанавливает свойства Защита и ТолькоПросмотр для табл. документов
//согласно настройкам пользователя УАТ
//
Процедура УстановитьРедактированиеПечатныхФормДокумента(КоллекцияПечатныхФорм) Экспорт
ЗащитаПечФорм = уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя(, "ЗащитаПечатныхФорм");
ТолькоПросмотрПечФорм = уатПраваИНастройки.уатПолучитьПраваИНастройкиПользователя(, "ОткрытиеПечатныхФормДокументовВРежимеПросмотра");
Для Каждого ТекПечФорма Из КоллекцияПечатныхФорм Цикл
ТекПечФорма.ТабличныйДокумент.Защита = ЗащитаПечФорм;
ТекПечФорма.ТабличныйДокумент.ТолькоПросмотр = ТолькоПросмотрПечФорм;
Для Каждого ТекОбл Из ТекПечФорма.ТабличныйДокумент.Области Цикл
ТекОбл.Защита = ЗащитаПечФорм;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьНаправьте на путь истинный
Прикрепленные файлы:
По теме из базы знаний
- Номенклатура. Правила заполнения справочника или как избежать дублей и ошибок в расчетах
- Bugs must die! или Как повысить качество внедрений инструментами тестирования
- Концепция автоматизации многопрофильного Холдинга в системе АУБ на платформе 1С
- Не спеша, эффективно и правильно – путь разработки. Часть 2. Теория
- Как быстро развернуть автоматическую линию проверки своего решения на 1С, затратив 8 часов и получив выигрыш в 1 человеко/месяц
Найденные решения
(16) Спасибо, разобрался вот итоговый код
Функция ПолучитьПараметрыЗаказчика(СсылкаНаМЛ)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| уатМаршрутныйЛистЗаказы.ЗаказГрузоотправителя.Контрагент КАК Контрагент,
| уатМаршрутныйЛистЗаказы.Контрагент.ОсновноеКонтактноеЛицо
|ИЗ
| Документ.уатМаршрутныйЛист.Заказы КАК уатМаршрутныйЛистЗаказы
|ГДЕ
| уатМаршрутныйЛистЗаказы.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СсылкаНаМЛ);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Телефон = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
ТелефонКонтрагента = уатОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформацию(ВыборкаДетальныеЗаписи.Контрагент,Телефон);
ВидДругое = Справочники.ВидыКонтактнойИнформации.ДругаяИнформацияКонтрагенты;
Другое = уатОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформацию(ВыборкаДетальныеЗаписи.Контрагент,ВидДругое);
ИнфоКонтрагент =
""
+ ВыборкаДетальныеЗаписи.Контрагент.Наименование
+ ", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо
+ ", Телефон: " + ТелефонКонтрагента
+ ", Другое: " + Другое;
КонецЕсли;
Возврат ИнфоКонтрагент;
КонецФункции
ПоказатьОбластьМакетаШапка.Параметры.ПредставлениеЗаказчика = ПолучитьПараметрыЗаказчика(ТекущийДокумент);
ИнфоКонтрагент =
""
+ ВыборкаДетальныеЗаписи.Контрагент.Наименование
+ ?(ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо),", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо, "")
+ ?(ЗначениеЗаполнено(ТелефонКонтрагента), ", Телефон: " + ТелефонКонтрагента, "")
+ ?(ЗначениеЗаполнено(Другое),", Другое: " + Другое, "");
Остальные ответы
В избранное
Подписаться на ответы
Сортировка:
Древо развёрнутое
Свернуть все
Посмотрите в печати любого похожего документа будет код на подобии
или похожим способом можно получить структуру со всякими Инн, телефонами, адресами и прочим.
В примере вашего кода лучше явно "привести к строке" поставив в начале кавычки
в дальнейшем обязательно пригодится )
ОбластьМакета.Параметры.ПредставлениеПоставщика = ФормированиеПечатныхФормСервер.ОписаниеОрганизации(УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка.Поставщик, Шапка.Дата), "ПолноеНаименование,");
или похожим способом можно получить структуру со всякими Инн, телефонами, адресами и прочим.
В примере вашего кода лучше явно "привести к строке" поставив в начале кавычки
ОбластьМакетаШапка.Параметры.Наименование = "" + КонтрагентИКонтактноеЛицо +" " + Телефон;
в дальнейшем обязательно пригодится )
Возврат КонтрагентИКонтактноеЛицо;
ОбластьМакетаШапка.Параметры.Наименование = "" + КонтрагентИКонтактноеЛицо +" " + Телефон;
(8)
просто закомментируйте эту строчку..
Да все работает, выводятся данные КонтрагентИКонтактноеЛицо, а вот с Телефоном проблемы, передалал запрос, но все равно пустая строка
Возврат КонтрагентИКонтактноеЛицо;
просто закомментируйте эту строчку..
Да все работает, выводятся данные КонтрагентИКонтактноеЛицо, а вот с Телефоном проблемы, передалал запрос, но все равно пустая строка
//Телефон
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтрагентыКонтактнаяИнформация.НомерТелефона КАК НомерТелефона1
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Телефон = ВыборкаДетальныеЗаписи.НомерТелефона1;
КонецЕсли;
Показать
Есть мысли что у меня нет прав на изменение макетов,
// Процедура устанавливает свойства Защита и ТолькоПросмотр для табл. документов согласно настройкам пользователя УАТ
Но если закомментировать данные которые я ввожу в модуль, и оставить на макете надпись Заказчик, то документ выводится на печать...
help
// Процедура устанавливает свойства Защита и ТолькоПросмотр для табл. документов согласно настройкам пользователя УАТ
Но если закомментировать данные которые я ввожу в модуль, и оставить на макете надпись Заказчик, то документ выводится на печать...
help
У Вас в коде почему-то посреди печати стоит "Возврат КонтрагентИКонтактноеЛицо;" и видимо дальше вместо КоллекцииПечатныхФорм передаётся контактное лицо которое и выпадает с ошибкой.. или это вы выложили разные процедуры общим текстом ?
Выложите всю процедуру печати и всё станет ясно.
Выложите всю процедуру печати и всё станет ясно.
Значение не является значением объектного типа "Защита"
Означает, что в момент
ТекПечФорма.ТабличныйДокумент.Защита
ТекПечФорма.ТабличныйДокумент не имеет свойства "Защита", что говорит о том, что ТекПечФорма.ТабличныйДокумент - совсем не табличный документ в этот момент.
А если внимательно поглядеть на код, то можно увидеть:
Возврат КонтрагентИКонтактноеЛицо;
И что-то мне подсказывает, что это прописано в функции, формирующей и заполняющей ТабличныйДокумент, который она потом и должна возвращать. А возвращает КонтрагентИКонтактноеЛицо - строка.
Стоит внимательно рассмотреть код формирования ПФ, и правильно разместить свои доработки.
ВСЯ Функция
Функция ПечатьМаршрутныйЛистСЗаказами(МассивОбъектов, ОбъектыПечати)
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.КлючПараметровПечати = "ПараметрыПечати_МаршрутныйЛист";
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ПервыйДокумент = Истина;
Для Каждого ТекущийДокумент Из МассивОбъектов Цикл
Если Не ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_МаршрутныйЛист_МаршрутныйЛистСЗаказами";
Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.уатМаршрутныйЛист.ПФ_MXL_МаршрутныйЛистСЗаказами");
//Контрагент, контактное лицо
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| уатЗаказГрузоотправителя.Контрагент.Наименование КАК Наименование,
| уатЗаказГрузоотправителя.Контрагент.ОсновноеКонтактноеЛицо КАК ОсновноеКонтактноеЛицо
|ИЗ
| Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
КонтрагентКонтактноеЛицо = "";
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
КонтрагентИКонтактноеЛицо =
" " + ВыборкаДетальныеЗаписи.Наименование
+
" " + ВыборкаДетальныеЗаписи.ОсновноеКонтактноеЛицо;
КонецЕсли;
Возврат КонтрагентИКонтактноеЛицо;
//
//Телефон
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| уатЗаказГрузоотправителя.Контрагент.КонтактнаяИнформация.(
| НомерТелефона КАК НомерТелефона
| )
|ИЗ
| Документ.уатЗаказГрузоотправителя КАК уатЗаказГрузоотправителя";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Телефон = ВыборкаДетальныеЗаписи.НомерТелефона;
КонецЕсли;
//
// Заголовок
ОбластьМакетаШапка = Макет.ПолучитьОбласть("Заголовок");
ОбластьМакетаШапка.Параметры.ТекстЗаголовка = уатОбщегоНазначенияТиповые.уатСформироватьЗаголовокДокумента(ТекущийДокумент, "Маршрутный лист");
ОбластьМакетаШапка.Параметры.ПредставлениеПеревозчика = уатОбщегоНазначенияТиповыеСервер.ОписаниеОрганизации(
уатОбщегоНазначенияСервер.СведенияОЮрФизЛице(ТекущийДокумент.Контрагент, ТекущийДокумент.Дата), "ПолноеНаименование");
ОбластьМакетаШапка.Параметры.ПредставлениеТС = уатОбщегоНазначения.уатПредставлениеТС(ТекущийДокумент.ТС, ТекущийДокумент.Организация)
+ " (" + уатОбщегоНазначения.уатПредставлениеМоделиТС(ТекущийДокумент.ТС) + ")";
ОбластьМакетаШапка.Параметры.Водитель = ТекущийДокумент.Водитель1;
ОбластьМакетаШапка.Параметры.ПредставлениеВодителя = уатОбщегоНазначения.уатФИОСотрудникаПолноеСтрокой(ТекущийДокумент.Водитель1, НачалоДня(ТекущийДокумент.Дата));
//Заполняем Наименование
ОбластьМакетаШапка.Параметры.Наименование = КонтрагентИКонтактноеЛицо + Телефон;
//
Если ТекущийДокумент.Заказы.Количество() Тогда
ОбластьМакетаШапка.Параметры.ПлановоеВремяВыезда = ПолучитьВремяОтправленияПлан(ТекущийДокумент);
Если ТекущийДокумент.Заказы.НайтиСтроки(Новый Структура("Выполнен", Истина)).Количество() Тогда
ОбластьМакетаШапка.Параметры.ФактическоеВремяВыезда = ТекущийДокумент.ДатаИВремяОтправления;
КонецЕсли;
ОбластьМакетаШапка.Параметры.ПлановоеВремяВозврата = ПолучитьВремяВозвратаПлан(ТекущийДокумент);
Если ТекущийДокумент.Выполнен Тогда
ОбластьМакетаШапка.Параметры.ФактическоеВремяВозврата = ТекущийДокумент.ДатаИВремяВыполнения;
ОбластьМакетаШапка.Параметры.ДатаВыполнения = ТекущийДокумент.ДатаИВремяВыполнения;
КонецЕсли;
ПервыйПункт = ТекущийДокумент.Заказы[0].Пункт;
ПерваяСтоянка = 0;
ПредЗаказ = Неопределено;
Для Сч = 0 По ТекущийДокумент.Заказы.Количество()-1 Цикл
ТекСтрока = ТекущийДокумент.Заказы[Сч];
Если Не ТекСтрока.Пункт = ПервыйПункт Тогда
Прервать;
КонецЕсли;
Если Не ПредЗаказ = ТекСтрока.ЗаказГрузоотправителя Тогда
ПерваяСтоянка = уатЗащищенныеФункцииСервер.СложитьВремя(ПерваяСтоянка, ТекСтрока.Стоянка);
ПредЗаказ = ТекСтрока.ЗаказГрузоотправителя;
КонецЕсли;
КонецЦикла;
мВремяПрибытия = уатЗащищенныеФункцииСервер.СложитьВремя(ТекущийДокумент.ДатаИВремяОтправленияПлан, -ПерваяСтоянка);
КонецЕсли;
ТабДокМаршрут = Новый ТабличныйДокумент;
ТабДокЗаказ = Новый ТабличныйДокумент;
ОбластьМакета = Макет.ПолучитьОбласть("МаршрутШапка");
ТабДокМаршрут.Вывести(ОбластьМакета);
ОбластьМакетаАдрес = Макет.ПолучитьОбласть("СтрокаАдрес");
ОбластьМакетаЗаказ = Макет.ПолучитьОбласть("СтрокаЗаказ");
ПредАдр = 0;
ПредСтрока = Неопределено;
ИзменилсяЗаказ = Ложь;
ОбщийПробег = 0; мСтоянка = 0;
СчАдресов = 1; СчЗаказов = 1;
МаксВес = 0; МаксОбъем = 0; МаксКолМест = 0; МаксЗаказов = 0;
ПеревезВес = 0; ПеревезОбъем = 0; ПеревезКолМест = 0; ПеревезЗаказов = 0;
мВес = 0; мОбъем = 0; мКолМест = 0;
ТекВес = 0; ТекОбъем = 0; ТекКолМест = 0; ТекКолЗаказов = 0;
Для Каждого ТекСтрока ИЗ ТекущийДокумент.Заказы цикл
Если ТекСтрока.Пункт = Неопределено ИЛИ НЕ ЗначениеЗаполнено(ТекСтрока.Пункт) тогда
Если НЕ ТекСтрока.ЗаказГрузоотправителя.Пустая() И ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Погрузка тогда
мАдр = ТекСтрока.ЗаказГрузоотправителя.АдресОтправления;
ИначеЕсли НЕ ТекСтрока.ЗаказГрузоотправителя.Пустая() И ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Погрузка тогда
мАдр = ТекСтрока.ЗаказГрузоотправителя.АдресДоставки;
Иначе
Продолжить;
КонецЕсли;
Иначе
мАдр = ТекСтрока.Пункт;
КонецЕсли;
мАдр = ПолучитьАдресСтрокой(мАдр);
Если мАдр <> ПредАдр тогда
Если ПредАдр <> 0 тогда
//выводим старую
ОбластьМакетаАдрес.Параметры.Стоянка = мСтоянка;
ТабДокМаршрут.Вывести(ОбластьМакетаАдрес);
Если ИзменилсяЗаказ = Истина тогда
ОбластьМакетаЗаказ.Параметры.Вес = мВес;
ОбластьМакетаЗаказ.Параметры.Объем = мОбъем;
ОбластьМакетаЗаказ.Параметры.КоличествоМест = мКолМест;
Если СчАдресов >= 2 тогда
мВремяПрибытия = уатЗащищенныеФункцииСервер.СложитьВремя(мВремяПрибытия, мСтоянка);
ОбластьМакетаАдрес.Параметры.ПрибытиеПлан = мВремяПрибытия;
КонецЕсли;
ТабДокЗаказ.Вывести(ОбластьМакетаЗаказ);
мВес = 0; мОбъем = 0; мКолМест = 0;
КонецЕсли;
ТабДокМаршрут.Вывести(ТабДокЗаказ);
ТабДокЗаказ = Новый ТабличныйДокумент;
ИзменилсяЗаказ = Ложь;
КонецЕсли;
ОбластьМакетаАдрес = Макет.ПолучитьОбласть("СтрокаАдрес");
ОбластьМакетаАдрес.Параметры.Адрес = мАдр;
ОбластьМакетаАдрес.Параметры.РасстояниеВремя = "" + ТекСтрока.Расстояние + " / " + Формат(ТекСтрока.Время,"ЧДЦ=2; ЧРД=:; ЧН=0:00");
ОбластьМакетаАдрес.Параметры.ПрибытиеПлан = мВремяПрибытия;
ОбластьМакетаАдрес.Параметры.ПрибытиеФакт = ТекСтрока.ПрибытиеФакт;
ОбластьМакетаАдрес.Параметры.Номер = СчАдресов;
мВремяПрибытия = уатЗащищенныеФункцииСервер.СложитьВремя(мВремяПрибытия,ТекСтрока.Время);
мСтоянка = 0;
СчАдресов = СчАдресов + 1;
СчЗаказов = 1;
ОбщийПробег = ОбщийПробег + ТекСтрока.Расстояние;
КонецЕсли;
ПредАдр = мАдр;
//произвольный пункт
Если ТекущийДокумент.ВидОперации = Перечисления.уатВидыОперацийМаршрутныйЛист.ПоЗаказуГрузоотправителя И НЕ ЗначениеЗаполнено(ТекСтрока.ЗаказГрузоотправителя)
ИЛИ ТекущийДокумент.ВидОперации = Перечисления.уатВидыОперацийМаршрутныйЛист.Произвольный И НЕ ЗначениеЗаполнено(ТекСтрока.Контрагент)
И НЕ ЗначениеЗаполнено(ТекСтрока.Номенклатура) тогда
мСтоянка = мСтоянка + ТекСтрока.Стоянка;
ПредСтрока = ТекСтрока;
Продолжить;
КонецЕсли;
Если ПредСтрока = Неопределено
ИЛИ (ТекущийДокумент.ВидОперации = Перечисления.уатВидыОперацийМаршрутныйЛист.ПоЗаказуГрузоотправителя И
(ПредСтрока.ЗаказГрузоотправителя <> ТекСтрока.ЗаказГрузоотправителя ИЛИ ПредСтрока.ТипТочкиМаршрута <> ТекСтрока.ТипТочкиМаршрута))
ИЛИ (ТекущийДокумент.ВидОперации = Перечисления.уатВидыОперацийМаршрутныйЛист.Произвольный И ТекСтрока.Контрагент <> ПредСтрока.Контрагент) Тогда
Если ИзменилсяЗаказ = Истина Тогда
//Выводим
ОбластьМакетаЗаказ.Параметры.Вес = мВес;
ОбластьМакетаЗаказ.Параметры.Объем = мОбъем;
ОбластьМакетаЗаказ.Параметры.КоличествоМест = мКолМест;
ТабДокЗаказ.Вывести(ОбластьМакетаЗаказ);
ИзменилсяЗаказ = Ложь;
мВес = 0; мОбъем = 0; мКолМест = 0;
КонецЕсли;
мСтоянка = уатЗащищенныеФункцииСервер.СложитьВремя(мСтоянка,ТекСтрока.Стоянка);
ОбластьМакетаЗаказ = Макет.ПолучитьОбласть("СтрокаЗаказ");
мКонтр = "";
Если ТекСтрока.ЗаказГрузоотправителя.Пустая() И ЗначениеЗаполнено(ТекСтрока.Контрагент) тогда
мКонтр = ТекСтрока.Контрагент;
Иначе
Если ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Погрузка тогда
мКонтр = ТекСтрока.ЗаказГрузоотправителя.Грузоотправитель;
Иначе
мКонтр = ТекСтрока.ЗаказГрузоотправителя.Грузополучатель;
КонецЕсли;
Если мКонтр = Неопределено ИЛИ НЕ ЗначениеЗаполнено(мКонтр) тогда
мКонтр = ТекСтрока.ЗаказГрузоотправителя.Контрагент;
КонецЕсли;
КонецЕсли;
ОбластьМакетаЗаказ.Параметры.Номер = "" + (СчАдресов - 1) + "." + СчЗаказов;
ОбластьМакетаЗаказ.Параметры.Контрагент = мКонтр;
ОбластьМакетаЗаказ.Параметры.Заказ = "" + ТекСтрока.ЗаказГрузоотправителя.Номер + " от " + ТекСтрока.ЗаказГрузоотправителя.Дата;
ОбластьМакетаЗаказ.Параметры.НомерПоУчетуЗаказчика = ТекСтрока.ЗаказГрузоотправителя.НомерПоУчетуЗаказчика;
ОбластьМакетаЗаказ.Параметры.Операция = ТекСтрока.ТипТочкиМаршрута;
СчЗаказов = СчЗаказов + 1;
ИзменилсяЗаказ = Истина;
КонецЕсли;
мВес = мВес + ТекСтрока.ВесБрутто;
мОбъем = мОбъем + ТекСтрока.Объем;
мКолМест = мКолМест + ТекСтрока.КоличествоМест;
Если ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Погрузка тогда
ПеревезВес = ПеревезВес + ТекСтрока.ВесБрутто;
ПеревезОбъем = ПеревезОбъем + ТекСтрока.Объем;
ПеревезКолМест = ПеревезКолМест + ТекСтрока.КоличествоМест;
ТекВес = ТекВес + ТекСтрока.ВесБрутто;
ТекОбъем = ТекОбъем + ТекСтрока.Объем;
ТекКолМест = ТекКолМест + ТекСтрока.КоличествоМест;
ПеревезЗаказов = ПеревезЗаказов + 1;
ТекКолЗаказов = ТекКолЗаказов + 1;
ИначеЕсли ТекСтрока.ТипТочкиМаршрута = Перечисления.уатТипыТочекМаршрута.Разгрузка тогда
ТекВес = ТекВес - ТекСтрока.ВесБрутто;
ТекОбъем = ТекОбъем - ТекСтрока.Объем;
ТекКолМест = ТекКолМест - ТекСтрока.КоличествоМест;
ТекКолЗаказов = ТекКолЗаказов - 1;
КонецЕсли;
МаксВес = Макс(МаксВес ,ТекВес);
МаксОбъем = Макс(МаксОбъем ,ТекОбъем);
МаксКолМест = Макс(МаксКолМест,ТекКолМест);
МаксЗаказов = Макс(МаксЗаказов,ТекКолЗаказов);
ПредСтрока = ТекСтрока;
КонецЦикла;
ОбластьМакетаАдрес.Параметры.Стоянка = мСтоянка;
ТабДокМаршрут.Вывести(ОбластьМакетаАдрес);
Если ИзменилсяЗаказ = Истина тогда
ОбластьМакетаЗаказ.Параметры.Вес = мВес;
ОбластьМакетаЗаказ.Параметры.Объем = мОбъем;
ОбластьМакетаЗаказ.Параметры.КоличествоМест = мКолМест;
ТабДокЗаказ.Вывести(ОбластьМакетаЗаказ);
КонецЕсли;
ТабДокМаршрут.Вывести(ТабДокЗаказ);
ОбластьМакета = Макет.ПолучитьОбласть("МаршрутПодвал");
ОбластьМакета.Параметры.ПеревезеноВес = ПеревезВес;
ОбластьМакета.Параметры.ПеревезеноОбъем = ПеревезОбъем;
ОбластьМакета.Параметры.ПеревезеноКолМест = ПеревезКолМест;
ОбластьМакета.Параметры.ПеревезеноЗаказов = ПеревезЗаказов;
ОбластьМакета.Параметры.МаксВес = МаксВес;
ОбластьМакета.Параметры.МаксОбъем = МаксОбъем;
ОбластьМакета.Параметры.МаксКолМест = МаксКолМест;
ОбластьМакета.Параметры.МаксЗаказов = МаксЗаказов;
ТабДокМаршрут.Вывести(ОбластьМакета);
ТабличныйДокумент.Вывести(ОбластьМакетаШапка);
ТабличныйДокумент.Вывести(ТабДокМаршрут);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ТекущийДокумент);
КонецЦикла;
ТабличныйДокумент.АвтоМасштаб = Истина;
Возврат ТабличныйДокумент;
КонецФункции // ПечатнаяФорма()
Показать
Как минимум в запросе не хватает условия ну и скорее всего других отборов на Вид/Тип контактной информации (где выбирается что это Телефон а не адрес или почта) , с контактнымЛицом та же история
ГДЕ ссылка = &ВашКонтрагент
Не уверен что он записывает в этот реквизит телефон. Думаю вам нужно поле "Представление" и при этом указать и Тип и Вид в условии, для теста заполните поле телефон, а в запросе выберите все поля из таблицы КонтактнаяИнформация, для теста напишите таб = Запрос.Выполнить().Выгрузить(); и посмотрите что содержится в таблице и в какой колонке (подчеркну, что это для теста и получать инфу уже из выборки лучше)
"ВЫБРАТЬ
| КонтрагентыКонтактнаяИнформация.НомерТелефона КАК НомерТелефона1
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
|ГДЕ
| КонтрагентыКонтактнаяИнформация.Ссылка = &ВашКонтрагент";
Прошу прощение за нубство, но что такое &ВашКонтрагент? Название контрагента?
Получилось, номер телефона находится в НомерТелефонаБезКодов
Вот код :)
//Телефон
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КонтрагентыКонтактнаяИнформация.НомерТелефонаБезКодов
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Телефон = ВыборкаДетальныеЗаписи.НомерТелефонаБезКодов;
КонецЕсли;
ПоказатьВот код :)
(16) Спасибо, разобрался вот итоговый код
Функция ПолучитьПараметрыЗаказчика(СсылкаНаМЛ)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| уатМаршрутныйЛистЗаказы.ЗаказГрузоотправителя.Контрагент КАК Контрагент,
| уатМаршрутныйЛистЗаказы.Контрагент.ОсновноеКонтактноеЛицо
|ИЗ
| Документ.уатМаршрутныйЛист.Заказы КАК уатМаршрутныйЛистЗаказы
|ГДЕ
| уатМаршрутныйЛистЗаказы.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", СсылкаНаМЛ);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Если ВыборкаДетальныеЗаписи.Следующий() Тогда
Телефон = Справочники.ВидыКонтактнойИнформации.ТелефонКонтрагента;
ТелефонКонтрагента = уатОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформацию(ВыборкаДетальныеЗаписи.Контрагент,Телефон);
ВидДругое = Справочники.ВидыКонтактнойИнформации.ДругаяИнформацияКонтрагенты;
Другое = уатОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформацию(ВыборкаДетальныеЗаписи.Контрагент,ВидДругое);
ИнфоКонтрагент =
""
+ ВыборкаДетальныеЗаписи.Контрагент.Наименование
+ ", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо
+ ", Телефон: " + ТелефонКонтрагента
+ ", Другое: " + Другое;
КонецЕсли;
Возврат ИнфоКонтрагент;
КонецФункции
ПоказатьОбластьМакетаШапка.Параметры.ПредставлениеЗаказчика = ПолучитьПараметрыЗаказчика(ТекущийДокумент);
Подскажите пожалуйста, как реализовать возможность вывода на печать только заполненных выражений.
Например:
значение "Контактное лицо" пустое, а "Другое" заполнено. Выводится на печать "Другое"
значение "Контактное лицо" заполнено, а "Другое" пустое. Выводится на печать "Контактное лицо"
значение "Контактное лицо" заполнено, и "Другое" заполнено. Выводится на печать "Контактное лицо" и "Другое"
Например:
значение "Контактное лицо" пустое, а "Другое" заполнено. Выводится на печать "Другое"
значение "Контактное лицо" заполнено, а "Другое" пустое. Выводится на печать "Контактное лицо"
значение "Контактное лицо" заполнено, и "Другое" заполнено. Выводится на печать "Контактное лицо" и "Другое"
ИнфоКонтрагент =
""
+ ВыборкаДетальныеЗаписи.Контрагент.Наименование
+ ?(ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо),", Контактное лицо: " + ВыборкаДетальныеЗаписи.Контрагент.ОсновноеКонтактноеЛицо, "")
+ ?(ЗначениеЗаполнено(ТелефонКонтрагента), ", Телефон: " + ТелефонКонтрагента, "")
+ ?(ЗначениеЗаполнено(Другое),", Другое: " + Другое, "");
Если в запросе не будет контрагента то вылетит ошибка т.к. переменная ИнфоКонтрагент не будет определена.
В данном случае можно обойтись и без запроса, и получать "через точку" всё, типа
только перед этим надо будет проверить заполнен ли ЗаказГрузоотправителя. просто для примера)
В данном случае можно обойтись и без запроса, и получать "через точку" всё, типа
Контрагент = СсылкаНаМЛ.ЗаказГрузоотправителя.Контрагент;
только перед этим надо будет проверить заполнен ли ЗаказГрузоотправителя. просто для примера)
Вакансии
Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)