Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 сен 2021, 16:50

Вывод на печать по всем реквизитам

Автор Provodnik, 04 апр 2017, 11:56

0 Пользователей и 1 гость просматривают эту тему.

Provodnik

Приветствую.
Не могу понять что не так в запросе
На форме при выборе одного наименования из справочника (ЦЗН) по идее при печати договор должен формироваться только для этого наименования, а у меня получается что при печати формируются договора для ВСЕХ наименований что есть в справочнике.
Все делается через Документ
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.ДоговорОтветствХран.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦЗН.Наименование,
| ЦЗН.АдресЦЗНполн,
| ЦЗН.НП,
| ЦЗН.НазваниеНП,
| ЦЗН.ДиректорЦЗНсокр,
| ЦЗН.ФамилияДирЦЗН,
| ЦЗН.ИмяДирЦЗН,
| ЦЗН.ОтчествоДирЦЗН,
| ЦЗН.ИННЦЗН,
| ЦЗН.КППЦЗН,
| ЦЗН.ОГРНЦЗН,
| ДоговорОтветствХран.Дата,
| ДоговорОтветствХран.ДоговорНом,
| ДоговорОтветствХран.ЦЗНполн
|ИЗ
| Справочник.ЦЗН КАК ЦЗН,
| Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
|ГДЕ
| ДоговорОтветствХран.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.ПолнНаимОргФ = Константы.ПолнНаимОргФ.Получить();
Шапка.Параметры.ДиректорФ = Константы.РуководительФ.Получить();
Шапка.Параметры.ДиректорФскр = Константы.РуководительФсокр.Получить();
Шапка.Параметры.АдресФ = Константы.ПочтовыйАдресПолнФ.Получить();
Шапка.Параметры.ИННФ = Константы.ИННФ.Получить();
Шапка.Параметры.КППФ = Константы.КППФ.Получить();
Шапка.Параметры.ОГРНФ = Константы.ОГРНФ.Получить();
Шапка.Параметры.СокрНазвФ = Константы.СокрНазвОргФ.Получить();
//Поля страницы
ТабДок.Автомасштаб=истина;
    ТабДок.ПолеСлева=30;
ТабДок.ПолеСправа=15;
ТабДок.ПолеСверху=20;
ТабДок.ПолеСнизу=20;
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());

ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры


LexaK

как вариант исправления ошибки
вот здесь

   |ИЗ
    |    Справочник.ЦЗН КАК ЦЗН,
    |    Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
    |ГДЕ


вставьте левое соединение, примерно так

   |ИЗ
    |    Справочник.ЦЗН КАК ЦЗН
    |левое соединение
    |    Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
    |    по ЦЗН.Ссылка = ДоговорОтветствХран.<ЦЗН> //проверьте/укажите нужный реквизит
    |ГДЕ

ответ Понравился? (в смысле пригодился?)

Norfolk

Цитата: Provodnik от 04 апр 2017, 11:56
Приветствую.
Не могу понять что не так в запросе
На форме при выборе одного наименования из справочника (ЦЗН) по идее при печати договор должен формироваться только для этого наименования, а у меня получается что при печати формируются договора для ВСЕХ наименований что есть в справочнике.
Все делается через Документ
Процедура Печать(ТабДок, Ссылка) Экспорт
//{{_КОНСТРУКТОР_ПЕЧАТИ(Печать)
Макет = Документы.ДоговорОтветствХран.ПолучитьМакет("Печать");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЦЗН.Наименование,
| ЦЗН.АдресЦЗНполн,
| ЦЗН.НП,
| ЦЗН.НазваниеНП,
| ЦЗН.ДиректорЦЗНсокр,
| ЦЗН.ФамилияДирЦЗН,
| ЦЗН.ИмяДирЦЗН,
| ЦЗН.ОтчествоДирЦЗН,
| ЦЗН.ИННЦЗН,
| ЦЗН.КППЦЗН,
| ЦЗН.ОГРНЦЗН,
| ДоговорОтветствХран.Дата,
| ДоговорОтветствХран.ДоговорНом,
| ДоговорОтветствХран.ЦЗНполн
|ИЗ
| Справочник.ЦЗН КАК ЦЗН,
| Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
|ГДЕ
| ДоговорОтветствХран.Ссылка В (&Ссылка)";
Запрос.Параметры.Вставить("Ссылка", Ссылка);
Выборка = Запрос.Выполнить().Выбрать();

Шапка = Макет.ПолучитьОбласть("Шапка");
Шапка.Параметры.ПолнНаимОргФ = Константы.ПолнНаимОргФ.Получить();
Шапка.Параметры.ДиректорФ = Константы.РуководительФ.Получить();
Шапка.Параметры.ДиректорФскр = Константы.РуководительФсокр.Получить();
Шапка.Параметры.АдресФ = Константы.ПочтовыйАдресПолнФ.Получить();
Шапка.Параметры.ИННФ = Константы.ИННФ.Получить();
Шапка.Параметры.КППФ = Константы.КППФ.Получить();
Шапка.Параметры.ОГРНФ = Константы.ОГРНФ.Получить();
Шапка.Параметры.СокрНазвФ = Константы.СокрНазвОргФ.Получить();
//Поля страницы
ТабДок.Автомасштаб=истина;
    ТабДок.ПолеСлева=30;
ТабДок.ПолеСправа=15;
ТабДок.ПолеСверху=20;
ТабДок.ПолеСнизу=20;
ТабДок.Очистить();

ВставлятьРазделительСтраниц = Ложь;
Пока Выборка.Следующий() Цикл
Если ВставлятьРазделительСтраниц Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;

Шапка.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Шапка, Выборка.Уровень());

ВставлятьРазделительСтраниц = Истина;
КонецЦикла;
//}}
КонецПроцедуры

Что вы видите в результате запроса?
Запрос.Выполнить() вот здесь

Provodnik

Цитата: LexaK от 04 апр 2017, 12:36
как вариант исправления ошибки
вот здесь

   |ИЗ
    |    Справочник.ЦЗН КАК ЦЗН,
    |    Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
    |ГДЕ


вставьте левое соединение, примерно так

   |ИЗ
    |    Справочник.ЦЗН КАК ЦЗН
    |левое соединение
    |    Документ.ДоговорОтветствХран КАК ДоговорОтветствХран
    |    по ЦЗН.Ссылка = ДоговорОтветствХран.<ЦЗН> //проверьте/укажите нужный реквизит
    |ГДЕ

Благодарю. Помогло. Как это вообще работает? я до подобного вообще бы не догадался никогда

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск