Не указано место хранения получаемого файла.
По теме из базы знаний
- Telegram-боты
- Комплексный контроль остатков. Для одного или сразу нескольких логически связанных регистров накопления. Универсальное решение уровня данных для контроля не только складских остатков
- Загрузка чеков в 1С из ФНС в документы БП, УНФ, ERP, КА и УТ
- Обзор полезных методов БСП 3.1.4
- Самые используемые методы БСП 3.1.9
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Логично, не правда ли?
PS. Всем напоминать про отладчик уже пальцы устали.
Причем, на другом док-те этого же вида все норм.
В чем проблема?
проблема в том, что это разные документы с разными данными. Соответственно, могут работать отличающиеся алгоритмы формирования печатной формы (в зависимости от состава данных).
В чем проблема?
Логично, не правда ли?
PS. Всем напоминать про отладчик уже пальцы устали.
(4) Пожалуйста:
Функция СведенияОВнешнейОбработке() Экспорт
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.РаботаВВыходныеИПраздничныеДни");
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "Уведомление");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Печать уведомления");
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Уведомление сотрудника", "Уведомление", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
Возврат ПараметрыРегистрации;
КонецФункции
Функция ПолучитьТаблицуКоманд()
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
Возврат Команды;
КонецФункции
Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
НоваяКоманда = ТаблицаКоманд.Добавить();
НоваяКоманда.Представление = Представление;
НоваяКоманда.Идентификатор = Идентификатор;
НоваяКоманда.Использование = Использование;
НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "Уведомление") Тогда
ПечатьДокумента(КоллекцияПечатныхФорм, МассивОбъектов, ОбъектыПечати);
КонецЕсли;
КонецПроцедуры
Процедура ПечатьДокумента(КоллекцияПечатныхФорм, МассивОбъектов, ОбъектыПечати) Экспорт
ВывестиДанныеДокументаВТабличныйДокумент(КоллекцияПечатныхФорм, МассивОбъектов);
КонецПроцедуры
Процедура ВывестиДанныеДокументаВТабличныйДокумент(КоллекцияПечатныхФорм, ОбъектыПечати)
МодульСклонениеПредставленийОбъектов = ОбщегоНазначения.ОбщийМодуль("СклонениеПредставленийОбъектов");
ДвоичныеДанныеМакета = ПолучитьМакет("ПФ_DOC_Уведомление");
// общие параметры
СсылкаНаДокумент = ОбъектыПечати[0];
СтрокаШтрихкода = СсылкаНаДокумент.НЛЭ_Штрихкод;
ДатаУведомления = Формат(СсылкаНаДокумент.Дата, "ДЛФ=Д");
ПодписантФИО = СокрЛП(ТРег(СсылкаНаДокумент.НЛЭ_Подписант.ФизическоеЛицо.Фамилия) + " " + ТРег(СсылкаНаДокумент.НЛЭ_Подписант.ФизическоеЛицо.Инициалы));
ПодписантДолжность = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СсылкаНаДокумент.НЛЭ_Подписант, "Должность", СсылкаНаДокумент.Дата)[0].Должность;
ФИОПодготовил = СокрЛП(ТРег(СсылкаНаДокумент.Ответственный.ФизическоеЛицо.Фамилия) + " " + СсылкаНаДокумент.Ответственный.ФизическоеЛицо.Инициалы);
КонтактнаяИнформация = ПользователиСлужебный.ОписаниеПользователя(СсылкаНаДокумент.Ответственный);
ТелефонПодготовил = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(КонтактнаяИнформация, "Телефон", "");
КолВоСотрудников = ПолучитьКоличествоСотрудниковВДокументе(СсылкаНаДокумент);
ТекСотрудник = 0;
Если ДвоичныеДанныеМакета <> Неопределено Тогда
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, "Уведомление");
ПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент;
Макет = УправлениеПечатью.ИнициализироватьМакетОфисногоДокумента(ДвоичныеДанныеМакета,Неопределено);
ПечатнаяФормаДокумента = УправлениеПечатью.ИнициализироватьПечатнуюФорму(Неопределено, Макет.НастройкиСтраницыМакета, Макет);
ДанныеДляПечати = ТабличныеДанные(СсылкаНаДокумент);
ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоШапке.Выбрать();
ВыборкаПоСтрокам = ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоДокументам.Следующий() Цикл
СтруктураПоиска = Новый Структура("Ссылка", СсылкаНаДокумент);
ВыборкаПоСтрокам.Сбросить();
Пока ВыборкаПоСтрокам.НайтиСледующий(СтруктураПоиска) Цикл
ВыборкаПоДатам = ВыборкаПоСтрокам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПоДатам.Следующий() Цикл
ВыборкаПоСотрудникам = ВыборкаПоДатам.Выбрать();
Пока ВыборкаПоСотрудникам.Следующий() Цикл
ТекСотрудник = ТекСотрудник + 1;
Данные = Новый Структура;
ОбластьКолонтитул = Новый Структура;
ОбластьКолонтитул.Вставить("ИмяОбласти", "НижнийКолонтитул");
ОбластьКолонтитул.Вставить("ТипОбласти", "НижнийКолонтитул");
ОбластьЗаголовок = Новый Структура;
ОбластьЗаголовок.Вставить("ИмяОбласти", "Заголовок");
ОбластьЗаголовок.Вставить("ТипОбласти", "Общая");
ОбластьУведомление = Новый Структура;
ОбластьУведомление.Вставить("ИмяОбласти", "Уведомление");
ОбластьУведомление.Вставить("ТипОбласти", "Общая");
ОбластьСогласие = Новый Структура;
ОбластьСогласие.Вставить("ИмяОбласти", "Согласие");
ОбластьСогласие.Вставить("ТипОбласти", "Общая");
ОбластьПереводСтраницы = Новый Структура;
ОбластьПереводСтраницы.Вставить("ИмяОбласти", "ПереводСтраницы");
ОбластьПереводСтраницы.Вставить("ТипОбласти", "Общая");
ТекстПодготовил = "Подготовил: " + ФИОПодготовил + ?(ЗначениеЗаполнено(ТелефонПодготовил), ", телефон: " + ТелефонПодготовил, "");
Данные.Вставить("Подготовил", ТекстПодготовил);
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьКолонтитул);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, Данные);
ДолжностьСотрудникаУведомление = МодульСклонениеПредставленийОбъектов.ПросклонятьПредставление(СокрЛП(ВыборкаПоСотрудникам.Должность), 3);
ФИОСотрудникаУведомление = НЛЭ_ВспомогательныйДляПечатныхФорм.ОбработатьФамилиюСотрудника(ВыборкаПоСотрудникам.Сотрудник.ФизическоеЛицо, 3, МодульСклонениеПредставленийОбъектов,);
ТекстУважаемыйУведомление = ?(ВыборкаПоСотрудникам.Пол = Перечисления.ПолФизическогоЛица.Женский, "Уважаемая ", "Уважаемый ") +
СокрЛП(ТРег(ВыборкаПоСотрудникам.Имя)) + " " + СокрЛП(ТРег(ВыборкаПоСотрудникам.Отчество)) + ".";
Данные.Вставить("ДатаУведомления", ДатаУведомления);
Данные.Вставить("ДолжностьСотрудника", ДолжностьСотрудникаУведомление);
Данные.Вставить("ФИОСотрудникаПолностью", ТРег(ФИОСотрудникаУведомление));
Данные.Вставить("ТекстУважаемый", ТекстУважаемыйУведомление);
Данные.Вставить("Code", СтрокаШтрихкода);
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьЗаголовок);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, Данные);
ПодписантФИО = СокрЛП(ТРег(СсылкаНаДокумент.НЛЭ_Подписант.ФизическоеЛицо.Фамилия) + " " + ТРег(СсылкаНаДокумент.НЛЭ_Подписант.ФизическоеЛицо.Инициалы));
Данные.Вставить("ДатаВыхода", Формат(ВыборкаПоСотрудникам.Дата, "ДЛФ=Д"));
Данные.Вставить("ДолжностьРуководителя", ПодписантДолжность);
Данные.Вставить("ФИОРуководителя", ПодписантФИО);
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьУведомление);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, Данные);
СтрокаСогласиеСЗаглавной = ?(ВыборкаПоСотрудникам.Пол = Перечисления.ПолФизическогоЛица.Женский, "Согласна ", "Согласен ");
СтрокаСогласиеСтрочными = ?(ВыборкаПоСотрудникам.Пол = Перечисления.ПолФизическогоЛица.Женский, "согласна ", "согласен ");
ФИОСотрудникаКратко = СокрЛП(ТРег(ВыборкаПоСотрудникам.ФамилияИО));
Данные.Вставить("ДатаВыхода", Формат(ВыборкаПоСотрудникам.Дата, "ДЛФ=Д"));
Данные.Вставить("СогласиеСЗаглавной", СтрокаСогласиеСЗаглавной);
Данные.Вставить("ДатаУведомления", ДатаУведомления);
Данные.Вставить("СогласиеСтрочными", СтрокаСогласиеСтрочными);
Данные.Вставить("ФИОСотрудникаКратко", ФИОСотрудникаКратко);
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьСогласие);
УправлениеПечатью.ПрисоединитьОбластьИЗаполнитьПараметры(ПечатнаяФормаДокумента, Область, Данные);
Если (ТекСотрудник <> КолВоСотрудников) Тогда
Область = УправлениеПечатью.ОбластьМакета(Макет, ОбластьПереводСтраницы);
УправлениеПечатью.ПрисоединитьОбласть(ПечатнаяФормаДокумента, Область);
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
АдресХранилищаОфисныйДокумент = УправлениеПечатью.СформироватьДокумент(ПечатнаяФормаДокумента);
УправлениеПечатью.ОчиститьСсылки(ПечатнаяФормаДокумента, Ложь);
УправлениеПечатью.ОчиститьСсылки(Макет);
ОфисныеДокументы = Новый Соответствие;
ИмяДокумента = "Уведомление";
ОфисныеДокументы.Вставить(АдресХранилищаОфисныйДокумент, ИмяДокумента);
ПечатнаяФорма.СинонимМакета = ИмяДокумента;
ПечатнаяФорма.ОфисныеДокументы = ОфисныеДокументы;
КонецЕсли;
КонецПроцедуры
Функция ПолучитьКоличествоСотрудниковВДокументе(МассивОбъектов)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Сотрудники.Ссылка КАК Ссылка,
| КОЛИЧЕСТВО(Сотрудники.НомерСтроки) КАК КолВоСтрок
|ИЗ
| Документ.РаботаВВыходныеИПраздничныеДни.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.Ссылка В(&МассивОбъектов)
| И (НЕ ВЫРАЗИТЬ(Сотрудники.Ссылка КАК Документ.РаботаВВыходныеИПраздничныеДни).ВремяВЧасах
| И НЕ Сотрудники.НеРаботал
| ИЛИ ВЫРАЗИТЬ(Сотрудники.Ссылка КАК Документ.РаботаВВыходныеИПраздничныеДни).ВремяВЧасах
| И Сотрудники.ОтработаноЧасов > 0)
|
|СГРУППИРОВАТЬ ПО
| Сотрудники.Ссылка";
РезультатЗапроса = Запрос.Выполнить().Выбрать();
РезультатЗапроса.Следующий();
Возврат РезультатЗапроса.КолВоСтрок;
КонецФункции
Функция ТабличныеДанные(МассивОбъектов)
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| Сотрудники.Ссылка КАК Ссылка,
| Сотрудники.Сотрудник КАК Сотрудник,
| Сотрудники.Дата КАК Дата,
| Сотрудники.НЛЭ_ПричиныОбоснования КАК Причина,
| Сотрудники.НЛЭ_ФИОЗамещаемого КАК Замещаемый,
| Сотрудники.Ссылка.Дата КАК Период
|ПОМЕСТИТЬ ВТДанныеДокументов
|ИЗ
| Документ.РаботаВВыходныеИПраздничныеДни.Сотрудники КАК Сотрудники
|ГДЕ
| Сотрудники.Ссылка В(&МассивОбъектов)
| И (НЕ ВЫРАЗИТЬ(Сотрудники.Ссылка КАК Документ.РаботаВВыходныеИПраздничныеДни).ВремяВЧасах
| И НЕ Сотрудники.НеРаботал
| ИЛИ ВЫРАЗИТЬ(Сотрудники.Ссылка КАК Документ.РаботаВВыходныеИПраздничныеДни).ВремяВЧасах
| И Сотрудники.ОтработаноЧасов > 0)";
РезультатЗапроса = Запрос.Выполнить();
ДанныеДляПечати = Новый Структура;
ДанныеДляПечати.Вставить("РезультатПоШапке", РезультатЗапроса);
ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотруднико в(Запрос.МенеджерВременныхТаблиц, "ВТДанныеДокументов");
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Истина, "Фамилия,Имя,Отчество,Пол,ФамилияИО,ИОФамилия,Должность");
Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДанныеДокументов.Ссылка КАК Ссылка,
| ДанныеДокументов.Дата КАК Дата,
| ДанныеДокументов.Сотрудник КАК Сотрудник,
| ДанныеДокументов.Причина КАК Причина,
| ДанныеДокументов.Замещаемый КАК Замещаемый,
| КадровыеДанныеСотрудников.Должность.Наименование КАК Должность,
| КадровыеДанныеСотрудников.Фамилия КАК Фамилия,
| КадровыеДанныеСотрудников.Пол КАК Пол,
| КадровыеДанныеСотрудников.Отчество КАК Отчество,
| КадровыеДанныеСотрудников.Имя КАК Имя,
| КадровыеДанныеСотрудников.ФамилияИО КАК ФамилияИО,
| КадровыеДанныеСотрудников.ИОФамилия КАК ИОФамилия
|ИЗ
| ВТДанныеДокументов КАК ДанныеДокументов
| ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
| ПО ДанныеДокументов.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
| И ДанныеДокументов.Период = КадровыеДанныеСотрудников.Период
|
|УПОРЯДОЧИТЬ ПО
| Ссылка,
| Дата,
| КадровыеДанныеСотрудников.Фамилия
|ИТОГИ ПО
| Ссылка,
| Дата";
РезультатЗапроса = Запрос.Выполнить();
ДанныеДляПечати.Вставить("РезультатПоТабличнойЧасти", РезультатЗапроса);
Возврат ДанныеДляПечати;
КонецФункции
Процедура ПроверкаВыводимыхПараметров(СсылкаНаДокумент)
Ошибки = Неопределено;
Если (Не ЗначениеЗаполнено(СсылкаНаДокумент.НЛЭ_Подписант)) Тогда
ТекстСообщения = СтрШаблон(НСтр("ru = 'Не выбран руководитель (подписант служебной записки).'"), );
ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю(Ошибки, , ТекстСообщения, , , ТекстСообщения, );
КонецЕсли;
ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю(Ошибки, Ложь);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот