Недостаточно полномочий для печати непроведенного

В форме списка документов
ВводРаспределенияОсновногоЗаработкаСотрудниковОрганизации, в
процедуре ДокументСписокПередНачаломДобавления заменить код:

РаботаСДиалогами.СписокДокументовПередНачаломДобавления(ЭтаФорма, Отказ, Копирование, Отбор.Организация.Значение, «ВводПроцентаДеятельностиЕНВД»);

РаботаСДиалогами.СписокДокументовПередНачаломДобавления(ЭтаФорма, Отказ, Копирование, Отбор.Организация.Значение, «ВводРаспределенияОсновногоЗаработкаРаботниковОрганизации»);

Заменить процедуру Печать() модуля документа ПолучениеУслугПоПереработке на текст:

// Процедура осуществляет печать документа. Можно направить печать на
// экран или принтер, а также распечатать необходимое количество копий.
//
// Название макета печати передается в качестве параметра,
// по переданному названию находим имя макета в соответствии.
//
// Параметры:
// НазваниеМакета — строка, название макета.
//
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт

Если ЭтоНовый() Тогда
Предупреждение(«Документ можно распечатать только после его записи»);
Возврат;
ИначеЕсли Не УправлениеДопПравамиПользователей.РазрешитьПечатьНепроведенныхДокументов(Проведен) Тогда
Предупреждение(«Недостаточно полномочий для печати непроведенного документа!»);
Возврат;
КонецЕсли;

// Получить экземпляр документа на печать
Если ИмяМакета = «СправкаРасчетВал» тогда

// Справка-расчет формирования рублевой суммы документа в валюте
БухгалтерскийУчетРасчетовСКонтрагентами.НапечататьСправкуРасчетРублеваяСуммаДокументаВВалюте(Ссылка);

ТабДокумент = УниверсальныеМеханизмы.НапечататьВнешнююФорму(Ссылка, ИмяМакета);

Если ТабДокумент = Неопределено Тогда
Возврат;
КонецЕсли;

Иначе
ПараметрКоманды = Новый Массив;
ПараметрКоманды.Добавить(Ссылка);

УправлениеПечатьюКлиент.ВыполнитьКомандуПечати(«Документ.ПолучениеУслугПоПереработке», ИмяМакета,
ПараметрКоманды, Неопределено, Неопределено);

УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект), Ссылка);

downloads.v8.1c.ru

Управление торговлей 11. Печать непроведенных документов — 1С/1C 8.x

1С:Предприятие 8.2 (8.2.19.83)

Привет, столкнулся с вопросом печати документов, если они еще не проведены.

Задача: заполнить документ «Реализация товаров» и без проведения напечатать.
Проблема: сначала провести документ, а потом сделать его отмену было бы отличным решением. НО, провести документ нельзя, т.к. у номенклатуры могут быть недостаточны остатки (т.е. в документе пишем кол-во 5, а на самом деле кол-во на складе 0).

Вопрос: как напечатать документ, если он не проведен. При этом не изменять конфигурацию.

Поиском пользовался, но вроде все под конфигуратор. Даже у нас на форуме есть ответ (конфигуратор):

Fenomen написал интересную вещь:

Можно примерчик? А то у меня как-то не вышло. Все равно пытается проверить на проведение документа.

P.S. В УТ 11 нет в настройках пользователя «Печать без проведения», поэтому не предлагать.

Добавлено через 23 минуты
В своей обработке сделал:

Управление торговлей 10.3. Ошибка при выводе обработки на печать
Здравствуйте. Была поставлена задача изменить макет обработки вывода на печать ценника. Удалив ненужное из ячеек, я расставил всё, как было.

Печать счета без колонки «Скидка» Управление Торговлей 10.3
Как сделать ,чтобы при печати счета не выводилась колонка "Скидка", а то печатаю, а получается ТЧ короткая, не на весь макет .

Зависает Управление торговлей
Установила себе на компьютер Управление торговлей версии 11.1 для 1С 8.3 для доработки конфигурации. Проблема в том, что она тормозит.

С Управление торговлей 11
Здравствуйте,, обладаю правами администратора, но после записи элемента справочника или документа не могу его редактировать, что делать.

Управление торговлей
У меня магазин по продажам авто запчастей. Я виду свой бизнес как ИП (Индивидуальный предприниматель). Как правильно заполнить пункт "Ввод.

1С управление торговлей
Друзья! Помогите пожалуйста Проблема вот в чем: После исправления ошибок в базе 1с:8.2 УТ загрузка ККМ Offline перестала заполняться.

www.cyberforum.ru

Печать по умолчанию в документах и справочниках

Для решения нашей задачи изменим стандартный алгоритм формирования печати по «умолчанию».

1 В своем общем модуле размещаем вспомогательную функцию

// Функция «расщепляет» строку на подстроки, используя заданный
// разделитель. Разделитель может иметь любую длину.
// Если в качестве разделителя задан пробел, рядом стоящие пробелы
// считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
// игнорируются.
// Например,
// РазложитьСтрокуВМассивПодстрок(«,один. два», «,») возвратит массив значений из пяти элементов,
// три из которых — пустые строки, а
// РазложитьСтрокуВМассивПодстрок(» один два», » «) возвратит массив значений из двух элементов
//
// Параметры:
// Стр — строка, которую необходимо разложить на подстроки.
// Параметр передается по значению.
// Разделитель — строка-разделитель, по умолчанию — запятая.
//
// Возвращаемое значение:
// массив значений, элементы которого — подстроки
//
Функция РазложитьСтрокуВМассивПодстрок (Знач Стр , Разделитель = «,» ) Экспорт

МассивСтрок = Новый Массив ();
Если Разделитель = » » Тогда
Стр = СокрЛП ( Стр );
Пока 1 = 1 Цикл
Поз = Найти ( Стр , Разделитель );
Если Поз = 0 Тогда
МассивСтрок . Добавить ( Стр );
Возврат МассивСтрок ;
КонецЕсли;
МассивСтрок . Добавить ( Лев ( Стр , Поз — 1 ));
Стр = СокрЛ ( Сред ( Стр , Поз ));
КонецЦикла;
Иначе
ДлинаРазделителя = СтрДлина ( Разделитель );
Пока 1 = 1 Цикл
Поз = Найти ( Стр , Разделитель );
Если Поз = 0 Тогда
Если ( СокрЛП ( Стр ) <> «» ) Тогда
МассивСтрок . Добавить ( Стр );
КонецЕсли;
Возврат МассивСтрок ;
КонецЕсли;
МассивСтрок . Добавить ( Лев ( Стр , Поз — 1 ));
Стр = Сред ( Стр , Поз + ДлинаРазделителя );
КонецЦикла;
КонецЕсли;
КонецФункции

2 В общей форме»ФормаВыбораПечатныхФорм» вносим изменения в Процедуру ПередОткрытием

Процедура ПередОткрытием ( Отказ , СтандартнаяОбработка )

// Получить объект метаданных (переданный форме)
Объект = КлючУникальности ;

// Установить заголовок
Заголовок = «Печать: » + Объект ;
Если Не ВладелецФормы = Неопределено Тогда
Если Не РаботаСДиалогами . ПроверитьМодифицированностьВФорме ( Объект , ВладелецФормы ) Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
КонецЕсли;

// Проверка возможности печати объекта
Если Метаданные . Документы . Содержит ( Объект . Метаданные ()) И Объект . Метаданные (). Проведение = Метаданные . СвойстваОбъектов . Проведение . Разрешить И Не УправлениеДопПравамиПользователей . РазрешитьПечатьНепроведенныхДокументов ( Объект . Проведен ) Тогда
Предупреждение ( «Недостаточно полномочий для печати непроведенного документа!» );
Отказ = Истина;
Возврат;
КонецЕсли;

НаПринтер = УправлениеПользователями . ПолучитьЗначениеПоУмолчанию ( ПараметрыСеанса . ТекущийПользователь , «ПечатьДокументовБезПредварительногоПросмотра» ) = Истина;

// Получить внутренние печатные формы (имена макетов объектов)
Попытка
СтруктураВнутреннихПечатныхФорм = Объект . ПолучитьСтруктуруПечатныхФорм ()
Исключение
СтруктураВнутреннихПечатныхФорм = Новый Структура ;
КонецПопытки;

// Сформировать дерево макетов печати
ДеревоМакетовПечати = УниверсальныеМеханизмы . ПолучитьДеревоМакетовПечати ( Объект . Ссылка , СтруктураВнутреннихПечатныхФорм . Ложь);

// Установить макеты печати по умолчанию
ВыделенныеСтроки = ЭлементыФормы . ДеревоМакетовПечати . ВыделенныеСтроки ;
ВыделенныеСтроки . Очистить ();
Для каждого ТекущаяСтрока Из ДеревоМакетовПечати . Строки Цикл
Если ТекущаяСтрока . Пометка Тогда

Если НЕ ВыделенныеСтроки . Количество () Тогда
ЭлементыФормы . ДеревоМакетовПечати . ТекущаяСтрока = ТекущаяСтрока ;
КонецЕсли;

ВыделенныеСтроки . Добавить ( ТекущаяСтрока );
Прервать; // ГДВ Для того чтобы только первая строка была выделена
КонецЕсли;
КонецЦикла;

Процедура ПоУмолчаниюНажатие ( Элемент )

ТекущиеДанные = ЭлементыФормы . ДеревоМакетовПечати . ТекущиеДанные ;
Если ТекущиеДанные . Пометка тогда
ТекущиеДанные . Пометка =Ложь;
иначе
ТекущиеДанные . Пометка =Истина;
КонецЕсли;
// Сняли или поставили пометку теперь создадим кнопки
сч = 0 ;
// Запоминает макет печать по умолчанию для текущего объекта метаданных.
ИмяМетаданных = КлючУникальности . Метаданные (). Имя ;
ТекущиеДанныеТекст = «» ;
Для каждого Строка Из ДеревоМакетовПечати . Строки Цикл
если Строка . Пометка тогда
ТекущиеДанныеТекст = ТекущиеДанныеТекст + «,» + Строка . Текст ;
КонецЕсли;
КонецЦикла;

Если ПустаяСтрока ( ТекущиеДанныеТекст ) Тогда
СохранитьЗначение ( ИмяМетаданных + «МакетПечати» , Ложь);
Иначе
СохранитьЗначение ( ИмяМетаданных + «МакетПечати» , Прав ( ТекущиеДанныеТекст , СтрДлина ( ТекущиеДанныеТекст )- 1 ));
ФормированиеПечатныхФорм . СоздатьКнопкиПечати ( КлючУникальности , ВладелецФормы );
КонецЕсли;

3 В общем модуле ФормированиеПечатныхФорм меняем процедуру СоздатьКнопкиПечать

Процедура СоздатьКнопкиПечати ( ДокументОбъект , ФормаДокумента ) Экспорт

Попытка
СтруктураВнутреннихПечатныхФорм = ДокументОбъект . ПолучитьСтруктуруПечатныхФорм ()
Исключение
СтруктураВнутреннихПечатныхФорм = Новый Структура ;
КонецПопытки;

ДеревоМакетов = УниверсальныеМеханизмы . ПолучитьДеревоМакетовПечати ( ДокументОбъект . Ссылка , СтруктураВнутреннихПечатныхФорм );

//СтрокаПоУмолчанию = УниверсальныеМеханизмы.ПолучитьСтрокуДереваМакетовПоУмолчанию(ДокументОбъект.Метаданные().Имя, ДеревоМакетов);
СтрокиПоУмолчанию = УниверсальныеМеханизмы . ПолучитьСтрокиДереваМакетовПоУмолчанию ( ДокументОбъект . Метаданные (). Имя , ДеревоМакетов ); // ГДВ

Если ДеревоМакетов . Строки . Количество () = 0 Тогда
Возврат;
КонецЕсли;

ПанельКнопок = ФормаДокумента . ЭлементыФормы . ОсновныеДействияФормы ;
КнопкиСправа = ( ПанельКнопок . ВыравниваниеКнопок = ВыравниваниеКнопокКоманднойПанели . Право );

Если ПанельКнопок . Кнопки . Найти ( «Печать» ) = Неопределено Тогда
Если КнопкиСправа Тогда
ПанельКнопок . Кнопки . Вставить ( 0 ,, ТипКнопкиКоманднойПанели . Разделитель );
ПанельКнопок . Кнопки . Вставить ( 0 , «Печать» , ТипКнопкиКоманднойПанели . Действие , «Печать» , Новый Действие ( «ОсновныеДействияФормыПечать» ));
Иначе
ПанельКнопок . Кнопки . Добавить (, ТипКнопкиКоманднойПанели . Разделитель );
ПанельКнопок . Кнопки . Добавить ( «Печать» , ТипКнопкиКоманднойПанели . Действие , «Печать» , Новый Действие ( «ОсновныеДействияФормыПечать» ));
КонецЕсли;
КонецЕсли;

// Если (СтрокаПоУмолчанию <> Неопределено) И (ПанельКнопок.Кнопки.Найти(«ДействиеПечать») = Неопределено) Тогда
// Если КнопкиСправа Тогда
// ПанельКнопок.Кнопки.Вставить(0,, ТипКнопкиКоманднойПанели.Разделитель);
// ПанельКнопок.Кнопки.Вставить(0,»ДействиеПечать», ТипКнопкиКоманднойПанели.Действие, СтрокаПоУмолчанию.Текст, Новый Действие(«ОсновныеДействияФормыПечатьПоУмолчанию»));
// Иначе
// ПанельКнопок.Кнопки.Добавить(, ТипКнопкиКоманднойПанели.Разделитель);
// ПанельКнопок.Кнопки.Добавить(«ДействиеПечать», ТипКнопкиКоманднойПанели.Действие, СтрокаПоУмолчанию.Текст, Новый Действие(«ОсновныеДействияФормыПечатьПоУмолчанию»));
// КонецЕсли;
// КонецЕсли;
// ГДВ
Индекс = ПанельКнопок . Кнопки . Количество () — 1 ; // Удалить товар Осрам
Пока Индекс >= 0 Цикл
Если Найти ( ПанельКнопок . Кнопки [ Индекс ]. Имя , «ДействиеПечать» ) тогда ПанельКнопок . Кнопки . Удалить ( Индекс ); КонецЕсли;
Индекс = Индекс — 1 ;
КонецЦикла;

Для ч = 0 по СтрокиПоУмолчанию . Количество ()- 1 цикл
СтрокаПоУмолчанию = СтрокиПоУмолчанию . Получить ( ч );
Если ( СтрокаПоУмолчанию <> Неопределено) И ( ПанельКнопок . Кнопки . Найти ( «ДействиеПечать» + ч ) = Неопределено) Тогда
Если КнопкиСправа Тогда
ПанельКнопок . Кнопки . Вставить ( 0 ,, ТипКнопкиКоманднойПанели . Разделитель );
ПанельКнопок . Кнопки . Вставить ( 0 , «ДействиеПечать» + ч , ТипКнопкиКоманднойПанели . Действие , СтрокаПоУмолчанию . Текст , Новый Действие ( «ОсновныеДействияФормыПечатьПоУмолчанию» ));
Иначе
ПанельКнопок . Кнопки . Добавить (, ТипКнопкиКоманднойПанели . Разделитель );
ПанельКнопок . Кнопки . Добавить ( «ДействиеПечать» + ч , ТипКнопкиКоманднойПанели . Действие , СтрокаПоУмолчанию . Текст , Новый Действие ( «ОсновныеДействияФормыПечатьПоУмолчанию» ));
КонецЕсли;
КонецЕсли;
КонецЦикла;
// ГДВ
КонецПроцедуры // УстановитьКнопкуПечати()

4 В Общй модуль УниверсальныеМеханизмы добавить Функцию ПолучитьСтрокиДереваМакетовПоУмолчанию

Функция ПолучитьСтрокиДереваМакетовПоУмолчанию ( ИмяМетаданных , ДеревоКнопок ) Экспорт // ГДВ строки а не строка

ИмяМакетаПоУмолчанию = ВосстановитьЗначение ( ИмяМетаданных + «МакетПечати» );

Если ИмяМакетаПоУмолчанию = Ложь или ДеревоКнопок . Строки . Количество () = 0 Тогда

Иначе
// значит есть как минимум 1 строка
// Разложим в
СтрокиПоУмолчанию = Новый Массив ;
Строки = МодульДоработок . РазложитьСтрокуВМассивПодстрок ( ИмяМакетаПоУмолчанию , «,» );
Для ч = 0 по Строки . Количество ()- 1 цикл

СтрокаПоУмолчанию = ДеревоКнопок . Строки . Найти ( Строки . Получить ( ч ), «Текст» );

Если СтрокаПоУмолчанию = Неопределено Тогда

СтрокаПоУмолчанию = ДеревоКнопок . Строки [ 0 ];

КонецЕсли;
СтрокаПоУмолчанию . Пометка =Истина;
СтрокиПоУмолчанию . Добавить ( СтрокаПоУмолчанию );
КонецЦикла;
КонецЕсли;

5 Общй модуль УниверсальныеМеханизмы изменить функции НапечататьДокументПоУмолчанию и ПолучитьДеревоМакетовПечати

// Кнопка=Неопределено,
Функция НапечататьДокументПоУмолчанию ( Объект , Кнопка =Неопределено, КоличествоЭкземпляров = 0 , НаПринтер = Ложь) Экспорт

Если Метаданные . Документы . Содержит ( Объект . Метаданные ()) и Объект . Метаданные (). Проведение = Метаданные . СвойстваОбъектов . Проведение . Разрешить и Не УправлениеДопПравамиПользователей . РазрешитьПечатьНепроведенныхДокументов ( Объект . Проведен ) Тогда
Сообщить ( «Недостаточно полномочий для печати непроведенного документа!» );
Возврат Ложь;
КонецЕсли;

Попытка
СтруктураВнутреннихПечатныхФорм = Объект . ПолучитьСтруктуруПечатныхФорм ()
Исключение
СтруктураВнутреннихПечатныхФорм = Новый Структура ;
КонецПопытки;

ДеревоМакетов = ПолучитьДеревоМакетовПечати ( Объект . Ссылка , СтруктураВнутреннихПечатныхФорм );

Если Кнопка =Неопределено тогда // ГДВ
СтрокаПоУмолчанию = ПолучитьСтрокуДереваМакетовПоУмолчанию ( Объект . Метаданные (). Имя , ДеревоМакетов );

Сообщить ( «Печать по умолчанию не определена!» );
Возврат Ложь;

Расшифровка = СтрокаПоУмолчанию . Расшифровка ;
Иначе
СтрокаПоУмолчанию = ДеревоМакетов . Строки . Найти ( Кнопка . Текст , «Текст» );
Расшифровка = СтрокаПоУмолчанию . Расшифровка ;
КонецЕсли; // ГДВ

Расшифровка = СтрокаПоУмолчанию . Расшифровка ;
Если ТипЗнч ( Расшифровка ) = Тип ( «Структура» ) и Расшифровка . ВидПечатнойФормы = Перечисления . ВидыДополнительныхВнешнихОбработок . ПечатнаяФорма Тогда
Если Не РаботаСДиалогами . ПроверитьМодифицированность ( Объект ) Тогда
Возврат Ложь;
КонецЕсли;
ТабДокумент = НапечататьВнешнююФорму ( Объект . Ссылка , Расшифровка );
ЭтоДокумент = Метаданные . Документы . Содержит ( Объект . Метаданные ());
НапечататьДокумент ( ТабДокумент , КоличествоЭкземпляров , НаПринтер , ?( ЭтоДокумент , ОбщегоНазначения . СформироватьЗаголовокДокумента ( Объект . Ссылка ), Строка ( Объект )), Объект . Ссылка );
Иначе
Объект . Печать ( Расшифровка , КоличествоЭкземпляров , НаПринтер );
КонецЕсли;
Возврат Истина;

Функция ПолучитьДеревоМакетовПечати ( СсылкаОбъекта , ВнутренниеПечатныеФормы , Действие = Неопределено, ДействиеУстановитьПечатьПоУмолчанию = Неопределено, ДобавлятьВДеревоРазделительИПечатьПоУмолчанию = Истина, ПредставлениеПечатнойФормы = Неопределено) Экспорт

// Сформировать структуру дерева
ДеревоКнопок = ИнициализироватьДеревоДополнительныхКнопок ();

// Добавить в дерево встроенные печатные формы
ДобавитьВДеревоМакетовВстроенныеФормы ( ДеревоКнопок , ВнутренниеПечатныеФормы , Действие , ДобавлятьВДеревоРазделительИПечатьПоУмолчанию , ПредставлениеПечатнойФормы );

// Добавить в дерево дополнительные печатные формы из Справочник.ДополнительныеПечатныеФормы
ДобавитьВДеревоМакетовДополнительныеФормы ( ДеревоКнопок , СсылкаОбъекта , Действие , ВнутренниеПечатныеФормы , ДобавлятьВДеревоРазделительИПечатьПоУмолчанию , ПредставлениеПечатнойФормы );

// Получить имя макета печати по умолчанию
//СтрокаПоУмолчанию = ПолучитьСтрокуДереваМакетовПоУмолчанию(СсылкаОбъекта.Метаданные().Имя ,ДеревоКнопок);
СтрокиПоУмолчанию = ПолучитьСтрокиДереваМакетовПоУмолчанию ( СсылкаОбъекта . Метаданные (). Имя , ДеревоКнопок ); // ГДВ

//// Для подменю Печать объекта: установить пометку кнопки печати по умолчанию
//Если НЕ СтрокаПоУмолчанию = Неопределено Тогда
// СтрокаПоУмолчанию.Пометка = Истина;
//КонецЕсли; ГДВ сделано в другом месте

// Добавит печать по умолчанию
Если ДобавлятьВДеревоРазделительИПечатьПоУмолчанию И ДеревоКнопок . Строки . Количество () > 0 Тогда

ДобавитьСтрокуВДеревоКнопок ( ДеревоКнопок , Строка (Новый УникальныйИдентификатор ), ТипКнопкиКоманднойПанели . Разделитель );

ДобавитьСтрокуВДеревоКнопок ( ДеревоКнопок , «ПечатьПоУмолчанию» , ТипКнопкиКоманднойПанели . Действие , «По умолчанию. » , ДействиеУстановитьПечатьПоУмолчанию , «ПечатьПоУмолчанию» );

6 В Документе ЗаказПокупателя ФормаДокумента меняем Процедуру ОсновныеДействияФормыПечатьПоУмолчанию

Процедура ОсновныеДействияФормыПечатьПоУмолчанию ( Кнопка )

УниверсальныеМеханизмы . НапечататьДокументПоУмолчанию ( ЭтотОбъект , Кнопка ); // ГДВ

7 Поиском можно найти и зменить везде ОсновныеДействияФормыПечатьПоУмолчанию, побочный эффект в » ФормаВыбораПечатныхФорм» по кнопке ПоУмолчаниюНажатие при нажатии первый раз Форма выделяется второй раз выделение снимается.

1c.ruboard.ru

Как быстро вынести типовую печатную форму из конфигурации во внешнюю печатную форму

Иногда требуется модифицировать встроенные печатные формы. Один из вариантов — выносить их во внешние печатные формы (чтобы конфигурацию не сильно портить). Но сталкиваемся с проблемой: хотя в типовой конфигурации логически выделяется в виде функции печать каждой печатной формы, но идет непосредственно обращение к реквизитам документа. А во внешней печатной форме этих реквизитов нет, есть только ссылка на объект. Приходится менять код формирования печатной формы не только там, где это нужно нам, но и везде. Плюс это вызовет проблему при возможном обновлении этого участка кода у поставщика конфигурации — придется или вникать в изменения после обновления, или заново вносить все наши изменения.

Как вариант решения этой проблемы — завести во внешней обработке, содержащей печатную форму, переменные, аналогичные реквизитам и табличным частям документа. А чтобы не уподобляться мастерам китайского кода, и не писать вещи, такие как: Реквизит1 = Док.Реквизит1 и т.д., можно воспользовать хорошей функцией ЗаполнитьЗначенияСвойств. Только переменные в обработке нужно объявлять экспортными. Вот пример кода модуля для внешней печатной формы заказа на производство (текст модуля ПечатьЗаказа() убран из соображений краткости).

Перем мВалютаРегламентированногоУчета Экспорт;

Перем //реквизиты док-та
ВремяНапоминания Экспорт,
ДатаИсполнения Экспорт,
Комментарий Экспорт,
НапомнитьОСобытии Экспорт,
Организация Экспорт,
Ответственный Экспорт,
Подразделение Экспорт,
Исполнитель Экспорт,
ОсновнойЗаказНаПроизводство Экспорт,
ДатаЗапуска Экспорт;

Перем
Номер Экспорт, Дата Экспорт, Проведен Экспорт, Ссылка Экспорт;

Перем //табличные части док-та
Продукция Экспорт,
ПараметрыВыпускаПродукции Экспорт,
Материалы Экспорт;

ЗаполнитьЗначенияСвойств ( ЭтотОбъект , СсылкаНаОбъект );

Функция Печать () Экспорт

Если Не УправлениеДопПравамиПользователей . РазрешитьПечатьНепроведенныхДокументов ( СсылкаНаОбъект . Проведен ) Тогда
Предупреждение ( «Недостаточно полномочий для печати непроведенного документа!» );
Возврат Неопределено;
КонецЕсли;

Такой подход позволяет нетронутыми использовать участки типового кода, внося изменения только там, где это нужно. На всякий случай выкладываю саму внешнюю печатную форму, как образец.

likion.ru

Недостаточно полномочий для печати непроведенного

Версия системы:
7.47 (16.04.2018)

Общие новости:
13.04.2018, 10:33

Последний вопрос:
13.07.2018, 19:52

Последний ответ:
13.07.2018, 17:32

Последняя рассылка:
13.07.2018, 22:45

РАЗДЕЛ [неизвестная рассылка]

[администратор рассылки: [неизвестный] ]

Лучшие эксперты в этом разделе

Уважаемые эксперты, прошу помочь, Упр.Торговлей 8.1, макет накладной РеализацияТоваровУслуг, как можно сделать, чтоб распечатать на одной страничке несколько накладных, допустим 4, ИмяМакета, КоличествоЭкземпляров, необходимо еще какое то условие? «КоличествоЭкземпляров=4 «, так понимаю не идет, а как можно программно?

Состояние: Консультация закрыта

Здравствуйте, Provnick!
ТабличныйДокумент (SpreadsheetDocument)
ЭкземпляровНаСтранице (PerPage)
Использование:
Чтение и запись.
Описание:
Тип: Число. Содержит количество страниц на листе при выводе табличного документа на печать. Допустимые значения: 1 — одна страница, 2 — две страницы, 0 — автоматическое определение.
Сериализуется.

0

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

ID: 218661

//**********В синтаксисе вижу, а как применить?*****************
// Процедура осуществляет печать документа. Можно направить печать на
// экран или принтер, а также распечатать необходмое количество копий.
//
// Название макета печати передается в качестве параметра,
// по переданному названию находим имя макета в соответствии.
//
// Параметры:
// НазваниеМакета — строка, название макета.
//
Процедура Печать(ИмяМакета, КоличествоЭкземпляров = 1, НаПринтер = Ложь) Экспорт

Если ЭтоНовый() Тогда
Предупреждение(«Документ можно распечатать только после его записи»);
Возврат;
ИначеЕсли Не УправлениеПользователями.РазрешитьПечатьНепроведенныхДокументов(Проведен) Тогда
Предупреждение(«Недостаточно полномочий для печати непроведенного документа!»);
Возврат;
КонецЕсли;

Если Не РаботаСДиалогами.ПроверитьМодифицированность(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;

Если ИмяМакета = «Чек» Тогда
Если НЕ ЗначениеЗаполнено(Организация) Тогда
Если НЕ ЗначениеЗаполнено(КассаККМ) Тогда
НачалоСообщенияОбОшибке = «Не выбрана касса ККМ.»
Иначе
НачалоСообщенияОбОшибке = «У выбранной кассы ККМ не задана организация.»;
КонецЕсли;

Предупреждение(НачалоСообщенияОбОшибке + Символы.ПС + «Печать чека невозможна.»);
Возврат;
КонецЕсли;

// Получить экземпляр документа на печать.
ТабДокумент = ПечатьЧека();
ИначеЕсли ИмяМакета = «СерийныеНомера» Тогда
ТабДокумент = УчетСерийныхНомеров.ПечатьСерийныхНомеров(Ссылка, «Товары»);
ИначеЕсли ИмяМакета = «РасходСРозничныхСкладовВЦенахАТТ» Тогда
ТабДокумент = ЗаполнениеДокументов.НапечататьПриходРасходСРозничныхСкладовВЦенахАТТ(Ссылка, мВалютаРегламентированногоУчета, Ложь);

ИначеЕсли ТипЗнч(ИмяМакета) = Тип(«ДвоичныеДанные») Тогда

Если ТабДокумент = Неопределено Тогда

УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, КоличествоЭкземпляров, НаПринтер, ОбщегоНазначения.СформироватьЗаголовокДокумента(ЭтотОбъект, ЭтотОбъект.Метаданные().Представление()), Ссылка);

rfpro.ru

Смотрите еще:

  • Подоходный налог в 1989 году История НДФЛ в России За свою историю налог на доходы граждан пережил множество изменений, но практически всегда высокие доходы облагались повышенным налогом, а минимально необходимые для жизни заработки […]
  • Расчет больничного листа если стаж менее 6 месяцев МРОТ для расчета больничных Актуально на: 7 июля 2016 г. Пособие по временной нетрудоспособности рассчитывается исходя из среднего заработка, полученного работником за расчетный период, т. е. 2 календарных […]
  • Районные суды алматинской области О назначении на должности и освобождении от должностей председателей, председателей судебных коллегий и судей судов Республики Казахстан Указ Президента Республики Казахстан от 8 июня 2011 года № 95 В […]
Закладка Постоянная ссылка.

Обсуждение закрыто.