Имя: Пароль:
1C
1С v8
Запись документа при печати.
,
0 R1A1
 
16.11.11
10:30
Столкнулся с таким траблом. Имеем некую форму документа прихода, на форме кнопка печать. Изменяем количество, нажимаем кнопку печать - документ сам волюнтариски перезаписывается. Как бы это счастье отключить? (Версия 8.2.14.519)
1 zak555
 
16.11.11
10:30
имя и номер конфы
2 Vladal
 
16.11.11
10:31
(0) Это шастя нужно рубить на корню. Печатать можно только проведенный и не модифицированный документ. Иначе в сад.
3 Maxus43
 
16.11.11
10:31
вобще - правильно что записывает, но вроде спрашивал в типовых мол надо записать перед печатью
4 R1A1
 
16.11.11
10:38
Оно понятно, что правильно. Но не хорошо, что сам. Это как машина с автоматом. Боязно.
5 R1A1
 
16.11.11
10:40
(1) Нет номера, просто маленькая самописная конфа.
6 Maxus43
 
16.11.11
10:40
(4) в типовых спрашивало, может чо накодили своё там
7 Maxus43
 
16.11.11
10:40
(5) алилуя. Смотрите как в типовых и копипастите механизмы печати
8 R1A1
 
16.11.11
10:43
(7) Ну в типовых допустим если спрашивает записать, а ты отказываешься что происходит?
Наверняка она не печатает. А надо как-раз наоборот. Чтоб печатало и не записывало. Желаю сделать все не по правилам. Свободы хочется.
9 shuhard
 
16.11.11
10:44
(8) сделай свою кнопку печати
10 Maxus43
 
16.11.11
10:44
(8) переписывать надо всё, при печати обычно запросы юзают, а если не запишеш - он вернёт старые значения. В чем проблема? если самописка дак мы щас в небо пальцем тыкаем, я хз как там написана печать
11 Vladal
 
16.11.11
10:45
В обработчик печати добавь условие на Модифицированность и Проведен. Если Модифицированность - Истина или проведен = Ложь выдавай предупреждение.

ИМХО, автозапись документа - зло.

Чтоб печатало и не записывало - первый косяк и тебе скажут "твоя sranaja 1C даёт неправильные остатки".
12 R1A1
 
16.11.11
10:50
(11) "твоя sranaja 1C даёт неправильные остатки". - не в этом дело. Просто не люблю когда меня обкладывают красными флажками. Ну, раз нельзя ентот менизЬм победить, придется его возглавить.
13 Maxus43
 
16.11.11
10:53
(12) у тебя самописка, о каком механизме идёт речь? вы сами написали свои механизмы
14 Vladal
 
16.11.11
10:57
(8) Для своей свободы проанализируй обработчик кнопки печать. Наверняка в нём есть и запись документа.
15 Vladal
 
16.11.11
10:58
(13) Мож, она ему досталась в наследство?
16 Vladal
 
16.11.11
10:58
R1A1, если не могёшь отследить код, давай мы поможем.
Код кнопки печати в студию!
17 R1A1
 
16.11.11
11:00
(12) В самой конфе, все просто, никаких принудительных записей документа при печати нет. Сама платформа сделана так, чтобы при печати документ записывался. Я так думаю.
18 R1A1
 
16.11.11
11:01
(16)
&НаСервере
Функция ФормированиеТабличногоДокумента(ПараметрКоманды)
   ТабличныйДокумент = Новый ТабличныйДокумент;
   ТабличныйДокумент.ОтображатьСетку = Ложь;
   ТабличныйДокумент.Защита = Ложь;
   ТабличныйДокумент.ТолькоПросмотр = Ложь;
   ТабличныйДокумент.ОтображатьЗаголовки = Ложь;
   Для каждого Док Из ПараметрКоманды Цикл
       Документ = Док.ПолучитьОбъект();        
       Если НЕ Документ.Проведен Тогда
           Сообщение = Новый СообщениеПользователю();
           Сообщение.Текст = "Документ не проведен: " + Строка(Документ);
           Сообщение.КлючДанных = Док;
           Сообщение.Сообщить();
           Продолжить;
       КонецЕсли;              
      Документ.ФормированиеПечатнойФормы(ТабличныйДокумент);
   КонецЦикла;

   Возврат ТабличныйДокумент;
КонецФункции



&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
          ТабличныйДокумент=ФормированиеТабличногоДокумента(ПараметрКоманды);
          ТабличныйДокумент.Показать();
КонецПроцедуры
19 R1A1
 
16.11.11
11:02
Предупреждение о проведении написано позже. Прошу его игнорировать.
20 ptiz
 
16.11.11
11:11
(17) Богатая фантазия.
21 Vladal
 
16.11.11
11:13
+(20) Посмотри процедуру "ФормированиеПечатнойФормы".
В неё-то и должен находиться оператор Записать.
Или вызывать еще какую-то процедуру для записи.
22 R1A1
 
16.11.11
11:31
(21)
Процедура ФормированиеПечатнойФормы(ТабличныйДокумент) Экспорт
   Макет=Документы.ПриходЗапчастей.ПолучитьМакет("МакетПриходЗапчастей");
   ОбластьЗаголовок=Макет.ПолучитьОбласть("Заголовок");
   ОбластьСклад=Макет.ПолучитьОбласть("Склад");
   ОбластьШапкаТаблицы=Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьСтрокаЗапчасти=Макет.ПолучитьОбласть("СтрокаЗапчасти");
   
   ОбластьЗаголовок.Параметры.Заполнить(ЭтотОбъект);
   ОбластьСклад.Параметры.Заполнить(ЭтотОбъект);

   ТабличныйДокумент.Вывести(ОбластьЗаголовок);
   ТабличныйДокумент.Вывести(ОбластьСклад);
   ТабличныйДокумент.Вывести(ОбластьШапкаТаблицы);
   
   Для Каждого СтрокаЗапчасти Из Запчасти Цикл
       ОбластьСтрокаЗапчасти.Параметры.Заполнить(СтрокаЗапчасти);
       ТабличныйДокумент.Вывести(ОбластьСтрокаЗапчасти);
   КонецЦикла;
КонецПроцедуры
23 Vladal
 
16.11.11
12:56
(22) Сранно...
А та первая функция ФормированиеТабличногоДокумента(ПараметрКоманды) откель вызывается? Ну не могёт быть такого, если не сделали подписку на нажатие кнопки ;)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший