Здравствуйте!
Простите, если не сюда пишу и за глупые вопросы.
Изучаю внешние печатные формы и БСП.
1С:Предприятие 8.3 (8.3.27.1859)
Бухгалтерия предприятия, редакция 3.0 (3.0.177.30)
Пытаюсь вывести адрес через запрос.
Написал:
Обработка устанавливается но при работе появляется сообщение:
Так понимаю, не правильно передаю данные контрагента.
Подскажите, пожалуйста, как решить вопрос.
Начитался много, но сложить в общую картину не получается.
Простите, если не сюда пишу и за глупые вопросы.
Изучаю внешние печатные формы и БСП.
1С:Предприятие 8.3 (8.3.27.1859)
Бухгалтерия предприятия, редакция 3.0 (3.0.177.30)
Пытаюсь вывести адрес через запрос.
Написал:
Функция СведенияОВнешнейОбработке() Экспорт
ВерсияБСП = "3.0.1.0";
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке(ВерсияБСП);
ПараметрыРегистрации.Информация = НСтр("ru = 'Договор (Word)'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Версия = "1.0.0.0";
ПараметрыРегистрации.Назначение.Добавить("Документ.ПоступлениеТоваровУслуг");
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Договор (Word)'");
Команда.Идентификатор = "ПечатьДоговораWord";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
Возврат ПараметрыРегистрации;
КонецФункции
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "ПечатьДоговораWord");
Если ПечатнаяФорма <> Неопределено Тогда
ОфисныеДокументы = НапечататьДоговор(МассивОбъектов);
ПечатнаяФорма.СинонимМакета = НСтр("ru = 'Печать договора (Word)'");
ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы;
КонецЕсли;
КонецПроцедуры
Функция НапечататьДоговор(МассивОбъектов)
ОфисныеДокументы = Новый Соответствие;
МакетДокумента = ПолучитьМакет("ПФ_DOCX_Макет");
Шаблон = НСтр("ru = 'Заказ покупателя №[Номер] от [Дата]'");
Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(МакетДокумента, Неопределено);
Если Макет = Неопределено Тогда
Возврат "";
КонецЕсли;
ОписаниеОбластей = Новый Структура;
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Шапка", "Общая");
УправлениеПечатью.ДобавитьОписаниеОбласти(ОписаниеОбластей, "Подвал", "Общая");
ДанныеПоШапке = ПолучитьДанныеДляПечати(МассивОбъектов);
Для Каждого ДанныеПечати Из ДанныеПоШапке Цикл
ДанныеПечати.Дата = Формат(ДанныеПечати.Дата, "ДЛФ=DD");
ПечатнаяФорма = УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Неопределено, Макет);
Если ПечатнаяФорма = Неопределено Тогда
УправлениеПечатью.ОчиститьСсылки(Макет);
Возврат ОфисныеДокументы;
КонецЕсли;
// Вывод верхней части документа - обычная область с параметрами.
Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["Шапка"]);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеПечати);
// Вывод подвала документа
Область = УправлениеПечатью.ОбластьМакета(Макет, ОписаниеОбластей["Подвал"]);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФорма, Область, ДанныеПечати);
АдресХранилищаПечатнойФормы = УправлениеПечатью.СформироватьДокумент(ПечатнаяФорма);
УправлениеПечатью.ОчиститьСсылки(ПечатнаяФорма);
ЗначенияРеквизитовДокумента = Новый Структура("Организация,Номер,Дата,Ссылка");
ЗаполнитьЗначенияСвойств(ЗначенияРеквизитовДокумента, ДанныеПечати);
ЗначенияРеквизитовДокумента.Дата = Формат(ЗначенияРеквизитовДокумента.Дата, "ДЛФ=D");
ЗначенияРеквизитовДокумента.Номер = ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ЗначенияРеквизитовДокумента.Номер);
ИмяДокумента = СтроковыеФункцииКлиентСервер.ВставитьПараметрыВСтроку(Шаблон, ЗначенияРеквизитовДокумента);
ОфисныеДокументы.Вставить(АдресХранилищаПечатнойФормы, ИмяДокумента);
КонецЦикла;
УправлениеПечатью.ОчиститьСсылки(Макет);
Возврат ОфисныеДокументы;
КонецФункции
Функция ПолучитьДанныеДляПечати(МассивОбъектов)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| &ДатаПечати КАК ДатаПечати,
| ПоступлениеТоваровУслуг.Организация КАК Заказчик,
| ПоступлениеТоваровУслуг.Контрагент КАК Самозанятый,
| ПоступлениеТоваровУслуг.Контрагент.ИНН КАК ИННСамозанятого,
| ПоступлениеТоваровУслуг.Дата КАК Дата,
| ПоступлениеТоваровУслуг.Организация.ИНН КАК ЗаказчикИНН,
| ПоступлениеТоваровУслуг.Организация.ОГРН КАК ЗаказчикОГРН
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
| ПоступлениеТоваровУслуг.Ссылка В(&МассивДоговоров)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| КонтрагентыКонтактнаяИнформация.Представление КАК ЗаказчикАдрес
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
|ГДЕ
| КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
| И КонтрагентыКонтактнаяИнформация.Вид = &ВидКИ
| И КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)";
Запрос.Параметры.Вставить("ДатаПечати", ТекущаяДата());
Запрос.Параметры.Вставить("МассивДоговоров", МассивОбъектов);
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", 1111111111);
Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
Результат = Запрос.Выполнить();
КонецФункции ПоказатьОбработка устанавливается но при работе появляется сообщение:
Ошибка при вызове метода контекста (Выполнить)
{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(155)}:Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(52)}:ДанныеПоШапке = ПолучитьДанныеДляПечати(МассивОбъектов);
{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(24)}:ОфисныеДокументы = НапечататьДоговор(МассивОбъектов);
{ОбщийМодуль.УправлениеПечатью.Модуль(2134)}:ВнешняяОбработкаОбъект.Печать(
{ОбщаяФорма.ПечатьДокументов.Форма(793)}:УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
{ОбщаяФорма.ПечатьДокументов.Форма(61)}:КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(345)}:ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ВладелецФормы, Строка(Новый УникальныйИдентификатор));
{ОбщийМодуль.УправлениеПечатьюГлобальный.Модуль(13)}:УправлениеПечатьюСлужебныйКлиент.ПродолжитьВыполнениеКомандыПечати();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
{(21, 43)}: Не задано значение параметра "Контрагент"
КонтрагентыКонтактнаяИнформация.Ссылка = <<?>>&Контрагент
Показать{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(155)}:Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(52)}:ДанныеПоШапке = ПолучитьДанныеДляПечати(МассивОбъектов);
{ВнешняяОбработка.ПоступлениеДоговор.МодульОбъекта(24)}:ОфисныеДокументы = НапечататьДоговор(МассивОбъектов);
{ОбщийМодуль.УправлениеПечатью.Модуль(2134)}:ВнешняяОбработкаОбъект.Печать(
{ОбщаяФорма.ПечатьДокументов.Форма(793)}:УправлениеПечатью.ПечатьПоВнешнемуИсточнику(
{ОбщаяФорма.ПечатьДокументов.Форма(61)}:КоллекцияПечатныхФорм = СформироватьПечатныеФормы(Параметры.ИменаМакетов, Отказ);
{ОбщийМодуль.УправлениеПечатьюСлужебныйКлиент.Модуль(345)}:ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", ПараметрыОткрытия, ВладелецФормы, Строка(Новый УникальныйИдентификатор));
{ОбщийМодуль.УправлениеПечатьюГлобальный.Модуль(13)}:УправлениеПечатьюСлужебныйКлиент.ПродолжитьВыполнениеКомандыПечати();
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
{(21, 43)}: Не задано значение параметра "Контрагент"
КонтрагентыКонтактнаяИнформация.Ссылка = <<?>>&Контрагент
Так понимаю, не правильно передаю данные контрагента.
Подскажите, пожалуйста, как решить вопрос.
Начитался много, но сложить в общую картину не получается.
По теме из базы знаний
- Как мы научились автоматически отслеживать ошибки в 1С
- Реализация с кодами маркировки через ЭДО в Рознице 2.3 + ввод на основании реализации Вывод из оборота ИС МП
- Отправка и получение почтовых сообщений
- Интеграция 1С с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Авито, Алиэкспресс, Ламода, Магнит - для БП, УНФ, УТ, КА, ERP
- Учет адресов доставки для партнеров (косметологов)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Параметры запроса установите перед тем как
| КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
| И КонтрагентыКонтактнаяИнформация.Вид = &ВидКИ
| И КонтрагентыКонтактнаяИнформация.Вид = &ВидКИ
Параметры запроса установите перед тем как
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
(2)
Теперь у меня так:
Получаю сообщение:
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
Теперь у меня так:
Функция ПолучитьДанныеДляПечати(МассивОбъектов)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| &ДатаПечати КАК ДатаПечати,
| ПоступлениеТоваровУслуг.Организация КАК Заказчик,
| ПоступлениеТоваровУслуг.Контрагент КАК Самозанятый,
| ПоступлениеТоваровУслуг.Контрагент.ИНН КАК ИННСамозанятого,
| ПоступлениеТоваровУслуг.Дата КАК Дата,
| ПоступлениеТоваровУслуг.Организация.ИНН КАК ЗаказчикИНН,
| ПоступлениеТоваровУслуг.Организация.ОГРН КАК ЗаказчикОГРН
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
| ПоступлениеТоваровУслуг.Ссылка В(&МассивДоговоров)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| КонтрагентыКонтактнаяИнформация.Представление КАК ЗаказчикАдрес
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
|ГДЕ
| КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
| И КонтрагентыКонтактнаяИнформация.Вид = &ВидКИ
| И КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)";
//Запрос.УстановитьПараметр("Город", "г. Петропавловск-Камчатский");
Запрос.Параметры.Вставить("ДатаПечати", ТекущаяДата());
Запрос.Параметры.Вставить("МассивДоговоров", МассивОбъектов);
СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", 1435262677);
Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
Результат = Запрос.Выполнить();
Возврат ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
КонецФункции ПоказатьПолучаю сообщение:
Не определен список получаемых файлов.
[ОшибкаИспользованияВстроенногоЯзыка]
[ОшибкаИспользованияВстроенногоЯзыка]
(1)
Это должно быть ДО выполнения запроса
(1)
Пойти и посмотреть какой тип у реквизита ИНН
Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
Это должно быть ДО выполнения запроса
(1)
СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", 1111111111);
Пойти и посмотреть какой тип у реквизита ИНН
3.
Anton_new01
01.09.26 14:39
Сейчас в теме
(1) попробуй так...
но ты лучше сформулируй, что ты хочешь получить...
а то ты не только не понимаешь как это сделать, но и что надо сделать.
но ты лучше сформулируй, что ты хочешь получить...
а то ты не только не понимаешь как это сделать, но и что надо сделать.
Функция ПолучитьДанныеДляПечати(МассивОбъектов)
Запрос = Новый Запрос;
СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", 1111111111);
Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
//Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
Запрос.УстановитьПараметр("ДатаПечати", ТекущаяДата());
Запрос.УстановитьПараметр("МассивДоговоров", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| &ДатаПечати КАК ДатаПечати,
| ПоступлениеТоваровУслуг.Организация КАК Заказчик,
| ПоступлениеТоваровУслуг.Контрагент КАК Самозанятый,
| ПоступлениеТоваровУслуг.Контрагент.ИНН КАК ИННСамозанятого,
| ПоступлениеТоваровУслуг.Дата КАК Дата,
| ПоступлениеТоваровУслуг.Организация.ИНН КАК ЗаказчикИНН,
| ПоступлениеТоваровУслуг.Организация.ОГРН КАК ЗаказчикОГРН
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
|ГДЕ
| ПоступлениеТоваровУслуг.Ссылка В(&МассивДоговоров)
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| КонтрагентыКонтактнаяИнформация.Представление КАК ЗаказчикАдрес
|ИЗ
| Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
|ГДЕ
| КонтрагентыКонтактнаяИнформация.Ссылка = &Контрагент
| И КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
| И КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)";
// данный запрос - выгрузит только тз ЗаказчикАдрес по контрагенту
ТЗ = Запрос.Выполнить().Выгрузить();
//Если нужны данные из первого запроса, то так :
массивРезультатовЗапроса = Запрос.ВыполнитьПакет(); // два запроса - соответсвенно два результата запроса 0 и 1 в массиве.
ТЗПоДоговрам = массивРезультатовЗапроса[0].Выгрузить();
МассивПоТЗ = ОбщегоНазначения.ТаблицаЗначенийВМассив(ТЗПоДоговрам);
Возврат МассивПоТЗ; // тут можно в отладке посмотреть а то что надо в нем или нет...
КонецФункции Показать
5.
Anton_new01
01.09.26 14:45
Сейчас в теме
(1)
понял нужны данные по ПТУ + адрес контрагента.
что-то типа того
понял нужны данные по ПТУ + адрес контрагента.
что-то типа того
Функция ПолучитьДанныеДляПечати(МассивОбъектов)
Запрос = Новый Запрос;
СсылкаНаКонтрагента = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", "1111111111"); // лучше по коду
Запрос.УстановитьПараметр("Контрагент", СсылкаНаКонтрагента);
//Запрос.УстановитьПараметр("ВидКИ", Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
Запрос.УстановитьПараметр("ДатаПечати", ТекущаяДата());
Запрос.УстановитьПараметр("МассивДоговоров", МассивОбъектов);
Запрос.Текст =
"ВЫБРАТЬ
| &ДатаПечати КАК ДатаПечати,
| ПоступлениеТоваровУслуг.Организация КАК Заказчик,
| ПоступлениеТоваровУслуг.Контрагент КАК Самозанятый,
| ПоступлениеТоваровУслуг.Контрагент.ИНН КАК ИННСамозанятого,
| КонтрагентыКонтактнаяИнформация.Представление КАК ЗаказчикАдрес,
| ПоступлениеТоваровУслуг.Дата КАК Дата,
| ПоступлениеТоваровУслуг.Организация.ИНН КАК ЗаказчикИНН,
| ПоступлениеТоваровУслуг.Организация.ОГРН КАК ЗаказчикОГРН
|ИЗ
| Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
| Левое соединение Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
| По ПоступлениеТоваровУслуг.Контрагент = КонтрагентыКонтактнаяИнформация.ссылка
| И КонтрагентыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ЮрАдресКонтрагента)
| И КонтрагентыКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Адрес)
|ГДЕ
| ПоступлениеТоваровУслуг.Ссылка В(&МассивДоговоров)";
МассивПоТЗ = ОбщегоНазначения.ТаблицаЗначенийВМассив(Запрос.Выполнить().Выгрузить());
Возврат МассивПоТЗ; // тут можно в отладке посмотреть а то что надо в нем или нет...
КонецФункции Показать
9.
Anton_new01
01.09.26 15:07
Сейчас в теме
(7) а остальное заполняется?
в консоль запросов запихайте запрос и посомтрите что он получает. возможно не совсем то что хотелось бы.
за образец лучше взять из (5).
в консоль запросов запихайте запрос и посомтрите что он получает. возможно не совсем то что хотелось бы.
за образец лучше взять из (5).
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот