Имя: Пароль:
1C
 
Как отследить модифицированность?
0 pro3ri
 
23.04.15
13:52
ДОбрый день!
Делаю печ форму, вношу данные интерактивно, а в печатной форме выходит старое.Как поправить?

код:
&НаКлиенте
Перем ТабДок;

&НаСервереБезКонтекста
Процедура ПечатьНаСервере(Объект, Ссылка, Пользователь, ТабДок)
    
    //если документ модифицирован, тогда вопрос о том, нужно ли провести документ
    //Объект = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.РеализацияТоваров"));
    //Модифицированность = Объект.Модифицированность();
    
    Макет = Документы.РеализацияТоваров.ПолучитьМакет("Макет");
    ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
    ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    
    ТабДок = Новый ТабличныйДокумент;
    Если Ссылка.Контрагент.ВидКонтрагента = Перечисления.ВидКонтрагента.ЮрЛицо Тогда
        ОбластьШапка.Параметры.НазваниеДокумента = "ТОРГ-12";
    Иначе
        ОбластьШапка.Параметры.НазваниеДокумента = "Кассовый чек";
    КонецЕсли;
    
    ОбластьШапка.Параметры.Номер = Ссылка.Номер;
    ОбластьШапка.Параметры.Дата = Формат(Ссылка.Дата,"ДЛФ=Д");
    ТабДок.Вывести(ОбластьШапка);
    
    Для каждого Строка Из Ссылка.Товары Цикл
    
        ОбластьСтрока.Параметры.Заполнить(Строка);
        ТабДок.Вывести(ОбластьСтрока);
    
    КонецЦикла;
    
    СуммаДокумента = Ссылка.Товары.Итог("Сумма");
    
    ОбластьПодвал.Параметры.Пользователь = Пользователь;
    ОбластьПодвал.Параметры.КонтактноеЛицоКонтрагента = Ссылка.КонтакноеЛицо;
    ОбластьПодвал.Параметры.СуммаДокумента = ЧислоПрописью(Окр(СуммаДокумента,2),,"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");
    ТабДок.Вывести(ОбластьПодвал);
    //ЗначениеВДанныеФормы(Тип("ДанныеФормыСтруктура"),Объект);
    
КонецПроцедуры

&НаКлиенте
Процедура Печать(Команда)
    ПечатьНаСервере(Объект,Объект.Ссылка, ТекПользователь, ТабДок);
    ТабДок.Показать();
КонецПроцедуры
1 pro3ri
 
23.04.15
13:53
приходиться записывать док
2 DrShad
 
23.04.15
13:55
ты не поверишь Модифицированность()
3 pro3ri
 
23.04.15
13:57
(2)  //Объект = ДанныеФормыВЗначение(Объект, Тип("ДокументОбъект.РеализацияТоваров"));

    //Модифицированность = Объект.Модифицированность();
так правильно будет?
4 Basilio
 
23.04.15
13:57
а на фига печатать незаписаный док?
5 pro3ri
 
23.04.15
13:59
(4) хочется сделать чтобы если док модифицирован, то выходило окошко с вопросом о записи документа и послед. открытием печ формы
6 DrShad
 
23.04.15
13:59
и в печать передаешь ДанныеФормыСтруктура?
7 DrShad
 
23.04.15
13:59
(5) не нужно окошек - проклянут
8 Basilio
 
23.04.15
14:01
УправляемаяФорма.Модифицированность (ManagedForm.Modified)
УправляемаяФорма (ManagedForm)
Модифицированность (Modified)
Использование:

Чтение и запись.
Описание:

Тип: Булево.
Признак изменения (модифицированности) данных в форме. Модифицированность отображается символом (*) в заголовке окна формы.
Истина - изменена.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.
9 DrShad
 
23.04.15
14:03
(8) и? а форма где?
10 Basilio
 
23.04.15
14:03
&НаКлиенте
Процедура Печать(Команда)
Если Модифицированность Тогда
Ответ = Вопрос ("бла-бла-бла",..)
Если Ответ = Да Тогда
Записать();
Иначе
Возврат;
Конецесли
    ПечатьНаСервере(Объект,Объект.Ссылка, ТекПользователь, ТабДок);
    ТабДок.Показать();
КонецПроцедуры
11 Basilio
 
23.04.15
14:04
(9) так он из формы документа же печатает вроде, не?
12 DrShad
 
23.04.15
14:04
(11) вроде из нее и это странно
13 pro3ri
 
23.04.15
14:06
(11) да форма документа
14 DrShad
 
23.04.15
14:15
(13) и кто тебя такому научил?
15 pro3ri
 
23.04.15
14:20
(14) по видеоуроку
16 DrShad
 
23.04.15
14:21
(15) да ладно!? это кто же такое записал?
17 Рэйв
 
23.04.15
14:23
(0)Нафига ты все из сылки берешь, чудик?:-)  Естественно оно  тебе все старое давать будет:-))
18 pro3ri
 
23.04.15
14:26
(17) а как надо?
19 ЧеловекДуши
 
23.04.15
14:26
(15) Лучше через Команды рисуй печать.
Сам модуль формирование печатной формы в Менеджер документа.

Подсмотри в типовые УТ 11 :)
20 Рэйв
 
23.04.15
14:27
(18)Просто обращайся к реквизитам. Но если так страшно и хочется непременно за чтото подержаться, бери все не от Ссылка.  а от  ЭтотОбъект.
:-)
21 pro3ri
 
24.04.15
12:13
(10) как то так...
&НаКлиенте
Процедура Печать(Команда)
    
    Если Модифицированность Тогда
        Ответ = Вопрос("Документ был изменен, печать возможна после сохраниния изменений. Сохранить изменения?",РежимДиалогаВопрос.ДаНет);
    Иначе
        ПечатьНаСервере(Объект.Ссылка, ТекПользователь, ТабДок);
        ТабДок.Показать();
        Возврат;
    КонецЕсли;
    
    Если Ответ = КодВозвратаДиалога.Да Тогда
        Записать();
        
    Иначе
        Прочитать();
    КонецЕсли;
    
    ПечатьНаСервере(Объект.Ссылка, ТекПользователь, ТабДок);
    ТабДок.Показать();
        
КонецПроцедуры
22 pro3ri
 
27.04.15
13:34
Модуль команды:

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

    КонецЕсли;
    
    ТабДок = Новый ТабличныйДокумент;
    ПечатьДокумента(ТабДок, ПараметрКоманды, ТекПользователь);

    ТабДок.Показать();
    
КонецПроцедуры

&НаСервере
Процедура ПечатьДокумента(ТабДок, ПараметрКоманды, Пользователь)
    Документы.РеализацияТоваров.ПечатьДок(ТабДок, ПараметрКоманды, Пользователь);
КонецПроцедуры


модуль менеджера:
Процедура ПечатьДок(ТабДок, Ссылка, Пользователь) Экспорт

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

КонецПроцедуры // ()

А как теперь отследить модифицированность? При изменении формы значение ПараметрыВыполненияКоманды.Источник.Модифицированность в модуле команды возвр Ложь.
23 pro3ri
 
27.04.15
13:48
+ причем интерактивно внесенные данные указанные в форме сразу в печ форме...
24 pro3ri
 
27.04.15
13:54
(23) + т.е. при нажатии на кнопку документ автоматически сохраняется