Столкнулся с тем что в УТ 11.4 нельзя распечатать непроведенный документ
Возможно не нашел таких настроек прав, но видел их для УПП
Поэтому сделал такое лекарство-
Лучше всего вставить в расширение конфигурации в процедуру "ХХХ_ПриСозданииНаСервереПосле" интересующего документа
Следующий код
ТЗ = ПолучитьИзВременногоХранилища(ЭтотОбъект.ПараметрыПодключаемыхКоманд.АдресТаблицыКоманд);
Для каждого стр из ТЗ.НайтиСтроки(Новый Структура("Вид,РежимЗаписи","Печать","Проводить")) цикл
Стр.РежимЗаписи="Записывать";
Конеццикла;
ПоместитьВоВременноеХранилище (ТЗ,ЭтотОбъект.ПараметрыПодключаемыхКоманд.АдресТаблицыКоманд);
(1) или вот так в расширении модуля ДополнительныеОтчетыИОбработкиКлиентПереопределяемый:
&После("ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы")
Процедура Х_ПередВыполнениемКомандыПечатиВнешнейПечатнойФормы(ПечатаемыеОбъекты, СтандартнаяОбработка) Экспорт
Для Каждого ПечОбъект ИЗ ПечатаемыеОбъекты Цикл
Если ТипЗнч(ПечОбъект) = Тип("ДокументСсылка.РеализацияТоваровУслуг")
или ТипЗнч(ПечОбъект) = Тип("ДокументСсылка.ПередачаТоваровХранителю")
или ТипЗнч(ПечОбъект) = Тип("ДокументСсылка.ПеремещениеТоваров") Тогда
СтандартнаяОбработка=Ложь;
Иначе
СтандартнаяОбработка=Истина;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Да работает, спасибо огромное (КА 2.4.6.189), если еще к этому всему добавить проверку дополнительного реквизита Пользователя (например "Пользователю разрешено печатать не проведенные документы" с именем "ПользователюРазрешеноПечататьНепроведенныеДокументы_ДР"), тогда получается полноценный функционал с разрешением и запретом. Как вариант:
// Берем Текущего пользователя открывшего форму документы, (не важно кто это документ создавал) и проверяем на разрешение печати, значение дополнительного реквизита получим через существующую функцию в ТК...
ПользователюРазрешеноОтправлятьНаПечатьНД = УправлениеСвойствами.ЗначениеСвойства(ПараметрыСеанса.ТекущийПользователь, "ПользователюРазрешеноПечататьНепроведенныеДокументы_ДР");
Если ПользователюРазрешенаПечатьНД Тогда
ТЗ = ПолучитьИзВременногоХранилища(ЭтотОбъект.ПараметрыПодключаемыхКоманд.АдресТаблицыКоманд);
Для Каждого Стр Из ТЗ.НайтиСтроки(Новый Структура("Вид, РежимЗаписи", "Печать", "Проводить")) Цикл
Стр.РежимЗаписи = "Записывать";
КонецЦикла;
ПоместитьВоВременноеХранилище (ТЗ, ЭтотОбъект.ПараметрыПодключаемыхКоманд.АдресТаблицыКоманд);
КонецЕсли;
У меня только один вопросы, зачем? Я могу 100500 причин написать почему в типовых запрещено печатать непроведенные документы и не одной причины разрешать печатать их, причем глобально всех, а не точечно.
(7)одна из причин, что бы не смогли не санкционированно реализовать товар со склада и скрыть этот факт.
например создали расходную накладную, распечатали, не провели
и вывезли товар на свои нужды
(6) всегда поражали такие ответы
Я вам также могу привести 100500 причин почему это нужно, но думаю достаточно озвучить и 1 причину, так хочет заказчик.
&Вместо("ОписаниеКоманды")
Функция Расширение_ОписаниеКоманды(ИмяКоманды, АдресНастроек)
// Вставить содержимое метода.
Результат = ПродолжитьВызов(ИмяКоманды, АдресНастроек);
Если ТипЗнч(Результат)=Тип("ФиксированнаяСтруктура") Тогда
Если Результат.Свойство("Вид") и Результат.Свойство("РежимЗаписи") Тогда
Если Результат.Вид="Печать" и Результат.РежимЗаписи="Проводить" Тогда
Результат = Новый Структура(Результат);
Результат.РежимЗаписи = "Записывать";
Результат = Новый ФиксированнаяСтруктура(Результат);
КонецЕсли;
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
Показать
Для УТ 11.4.10, добавить в расширение модуль"ПодключаемыеКомандыКлиентПовтИсп"
(10)Не прокатит, если стоит проверка отрицательных остатков(если отключить не будет контроля остатков), вообще такие случаи есть когда нужно сделать ТОРГ12 - например бюджетникам сначала нужен пакет документов, а потом только привезти товар, по счетам бюджетные организации не работают.
Всем привет, вот и я наткнулся на задачу печати Торг-12 для не проведенного документа, не будем касаться методических причин зачем это надо, задача поставлена и её надо решать. Суть проблемы заключается в том, что данные для печати Торг-12 собираются не из ТЧ Товары, а из ТЧ ВидыЗапасов, а это табличная часть заполняется только при проведении, а при отмене проведения зачищается.
Собственно идея реализации, состоит в том, чтобы заполнить эту табличную часть при записи документа, а у же потом при помощи описанного тут механизма разрешить печатать документ, в сети много примеров реализаций механизма разрешения печати не проведенных, мне больше нравится такой:
&После("ДобавитьКомандыПечати")
Процедура WIT0ДобавитьКомандыПечати(КомандыПечати)
Отбор = Новый Структура("Идентификатор", "ТОРГ12");
СтрокиТЗ = КомандыПечати.НайтиСтроки(Отбор);
Для каждого СтрокаТЗ Из СтрокиТЗ Цикл
СтрокаТЗ.ПроверкаПроведенияПередПечатью = Ложь;
КонецЦикла;
Отбор = Новый Структура("Идентификатор", "СчетФактура");
СтрокиТЗ = КомандыПечати.НайтиСтроки(Отбор);
Для каждого СтрокаТЗ Из СтрокиТЗ Цикл
СтрокаТЗ.ПроверкаПроведенияПередПечатью = Ложь;
КонецЦикла;
КонецПроцедуры
Показать
Так как он работает сразу для основной формы и формы списка не надо писать код в две формы, а только в модуль менеджера документа РеализацияТоваровУслуг. Итак печать не проведенных мы разрешили, далее надо нам заполнить ТЧ ВидыЗапасов, идем в модуль документа и пишем такой код:
&После("ПередЗаписью")
Процедура WIT0ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если РежимЗаписи = РежимЗаписиДокумента.Запись Тогда
ЗаполнитьВидыЗапасов(Отказ);
КонецЕсли;
КонецПроцедуры
Показать
В итоге получаем результат, после записи документа форма формируется и выводится на печать.
(19) У меня не дает сохранить непроведенный документ после заполнения видов запасов. Ругается на отсутствие остатков по налогообложению, хотя документ не провожу, а просто сохраняю.