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

Печатная форма распечатать всех сотрудников если не один не выбран.

Автор Silent_Assassin, 23 июн 2013, 14:08

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

Silent_Assassin

Проблема в следующем:
Нужно напечатать справочник Физические лица (вместе с табличной частью).
Условие - если сторудник выбран то печатать его если нет то всех.
Но когда я запускаю конфигкрацию, то у меня уже выбран один из сотрудников (выделяется синим фоном) хотя я не нажимал нечего. Как мене сделать чтобы он подряд печатал?  Всех сотрудников пока я не выберу мышкой нужного?

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

ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМестоРаботыШапка = Макет.ПолучитьОбласть("МестоРаботыШапка");
ОбластьМестоРаботы = Макет.ПолучитьОбласть("МестоРаботы");
ТабДок.Очистить();

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

ТабДок.Вывести(ОбластьЗаголовок);

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

ТабДок.Вывести(ОбластьМестоРаботыШапка);
ВыборкаМестоРаботы = Выборка.МестоРаботы.Выбрать();
Пока ВыборкаМестоРаботы.Следующий() Цикл
ОбластьМестоРаботы.Параметры.Заполнить(ВыборкаМестоРаботы);
ТабДок.Вывести(ОбластьМестоРаботы, ВыборкаМестоРаботы.Уровень());
КонецЦикла;

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

GRADUS


Silent_Assassin

Цитата: GRADUS от 23 июн 2013, 19:29
Запустить печать в цикле? :bleh:
По идее да но до того момента как не выберешь конкретного сотрудника.

GRADUS

Цитата: Silent_Assassin от 23 июн 2013, 19:40
Цитата: GRADUS от 23 июн 2013, 19:29
Запустить печать в цикле? :bleh:
По идее да но до того момента как не выберешь конкретного сотрудника.

Я бы сделал галочку, типа "Выбрать всех". Интуитивно не будет понятно клиенту - "надо никуда не жать, тогда все будет"......

Besart

я бы сделал так: в процедуре вызывающей печать вставил бы вопрос "Печатать всех сотрудников или только выделенного?", результат ответа приводил бы к какой нибудь переменной, например Истина, и передавал бы этй переменную в экспортную процедуру Печать, где поставил бы условие
Если МояПермеменная = Истина Тогда
СтрЗаменить(Запрос.Текст, "ГДЕ ФизическиеЛица.Ссылка В(&Ссылка)", "");
КонецЕсли

Silent_Assassin

Цитата: Besart от 23 июн 2013, 22:34
я бы сделал так: в процедуре вызывающей печать вставил бы вопрос "Печатать всех сотрудников или только выделенного?", результат ответа приводил бы к какой нибудь переменной, например Истина, и передавал бы этй переменную в экспортную процедуру Печать, где поставил бы условие
Если МояПермеменная = Истина Тогда
СтрЗаменить(Запрос.Текст, "ГДЕ ФизическиеЛица.Ссылка В(&Ссылка)", "");
КонецЕсли

Не врублю где это в моем коде вставлять?

Besart

Не врублю где это в моем коде вставлять?
[/quote]
этот код вставляете в процедуру где находится кнопка Печать Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Печатать всех сотрудников или только выбранного?", Режим);
Если Ответ = КодВозвратаДиалога.Да Тогда
П = Истина;
Иначе
П = Ложь;
КонецЕсли;

Печать(ТабДок, Ссылка, П);//Экспортная Процедура


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



ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМестоРаботыШапка = Макет.ПолучитьОбласть("МестоРаботыШапка");
ОбластьМестоРаботы = Макет.ПолучитьОбласть("МестоРаботы");
ТабДок.Очистить();

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

ТабДок.Вывести(ОбластьЗаголовок);

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

ТабДок.Вывести(ОбластьМестоРаботыШапка);
ВыборкаМестоРаботы = Выборка.МестоРаботы.Выбрать();
Пока ВыборкаМестоРаботы.Следующий() Цикл
ОбластьМестоРаботы.Параметры.Заполнить(ВыборкаМестоРаботы);
ТабДок.Вывести(ОбластьМестоРаботы, ВыборкаМестоРаботы.Уровень());
КонецЦикла;

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

Silent_Assassin

Пишет
Справочник.ФизическиеЛица.МодульМенеджера(27,24)}: Встроенная функция может быть использована только в выражении. (СтрЗаменить)
            СтрЗаменить<<?>>(Запрос.Текст, "ГДЕ ФизическиеЛица.Ссылка В(&Ссылка)", "");  (Проверка: Сервер)
{Справочник.ФизическиеЛица.МодульМенеджера(28,18)}: Ожидается символ ';'
        КонецЕсли<<?>> (Проверка: Сервер)

Besart

Тогда попробуйте так     Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("Печатать всех сотрудников или только выбранного?", Режим);
    Если Ответ = КодВозвратаДиалога.Да Тогда
        П = "ГДЕ ФизическиеЛица.Ссылка В(&Ссылка)";
    Иначе
        П = "";
    КонецЕсли;
   
    Печать(ТабДок, Ссылка, П);//Экспортная Процедура

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



ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМестоРаботыШапка = Макет.ПолучитьОбласть("МестоРаботыШапка");
ОбластьМестоРаботы = Макет.ПолучитьОбласть("МестоРаботы");
ТабДок.Очистить();

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

ТабДок.Вывести(ОбластьЗаголовок);

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

ТабДок.Вывести(ОбластьМестоРаботыШапка);
ВыборкаМестоРаботы = Выборка.МестоРаботы.Выбрать();
Пока ВыборкаМестоРаботы.Следующий() Цикл
ОбластьМестоРаботы.Параметры.Заполнить(ВыборкаМестоРаботы);
ТабДок.Вывести(ОбластьМестоРаботы, ВыборкаМестоРаботы.Уровень());
КонецЦикла;

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



извеняюсь, мой косяк, можно было оставить первый вариант, только изменив одну строку Запрос.Текст = СтрЗаменить(Запрос.Текст, "ГДЕ ФизическиеЛица.Ссылка В(&Ссылка)", ""); глаз замылился :xfbnsdfb:

Silent_Assassin

Цитата: Besart от 24 июн 2013, 01:24
Тогда попробуйте так     Режим = РежимДиалогаВопрос.ДаНет;
    Ответ = Вопрос("Печатать всех сотрудников или только выбранного?", Режим);
    Если Ответ = КодВозвратаДиалога.Да Тогда
        П = "ГДЕ ФизическиеЛица.Ссылка В(&Ссылка)";
    Иначе
        П = "";
    КонецЕсли;
   
    Печать(ТабДок, Ссылка, П);//Экспортная Процедура

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



ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
Шапка = Макет.ПолучитьОбласть("Шапка");
ОбластьМестоРаботыШапка = Макет.ПолучитьОбласть("МестоРаботыШапка");
ОбластьМестоРаботы = Макет.ПолучитьОбласть("МестоРаботы");
ТабДок.Очистить();

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

ТабДок.Вывести(ОбластьЗаголовок);

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

ТабДок.Вывести(ОбластьМестоРаботыШапка);
ВыборкаМестоРаботы = Выборка.МестоРаботы.Выбрать();
Пока ВыборкаМестоРаботы.Следующий() Цикл
ОбластьМестоРаботы.Параметры.Заполнить(ВыборкаМестоРаботы);
ТабДок.Вывести(ОбластьМестоРаботы, ВыборкаМестоРаботы.Уровень());
КонецЦикла;

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



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

Теги:

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

Рейтинг@Mail.ru

Поиск