Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Модифицированность - вылазит после печати

v7: Модифицированность - вылазит после печати
Я
   Масянька
 
17.08.18 - 09:33
День добрый!
В док-те есть несколько печ. форм.
Открываем док-т только для просмотра и давим на кнопку печать. Затем закрываем печ. форму.
И вот при закрытии док-та (после описанных манипуляций) - спрашивает про сохранить. Причем, только после двух печ. формах. После других трех пче. форм - не спрашивает.
Да, после двух печ. форм вылазит модифицированность.
Как отловить?
До открытия печ. формы (нажатия на кнопку), после формирования печ. формы - модифицированность = 0. Как только выводится на экран - всё, есть модифицированность...
Спасибо.
 
 
   butterbean
 
1 - 17.08.18 - 09:34
проанализировать обработки печати, возможно даже с отладчиком
   kossmatiy
 
2 - 17.08.18 - 09:35
Ты видимо реквизит пытаешся изменить при формировании печ.формы. сюСмотри код.
   lxndr
 
3 - 17.08.18 - 09:36
проверить свойство команды "Изменяет сохраняемые данные"
   butterbean
 
4 - 17.08.18 - 09:37
(3) судя по  модифицированность = 0, там 7.7
   Масянька
 
5 - 17.08.18 - 09:37
(1) В конце процедуры печати:
    КонецЕсли; 
Сообщить("5 - " + Модифицированность());    

КонецПроцедуры    // ПечатьАкта


выводит = 0.
   Масянька
 
6 - 17.08.18 - 09:38
По кнопке печать:
    КонецЕсли;
Сообщить("11 - " + Модифицированность());    
        
КонецПроцедуры    // ПоКнопкеПечать


тоже = 0.
   Масянька
 
7 - 17.08.18 - 09:40
Блин... Пардон - вроде, выбирала 7.7.
Конечно, семерка.
   butterbean
 
8 - 17.08.18 - 09:40
(6) это внешняя печатная форма?
   Масянька
 
9 - 17.08.18 - 09:41
(8) Нет. Внутри док-а все.
   вым
 
10 - 17.08.18 - 09:49
реквизит какой-то меняется в процедуре печати. Проверь имена переменных используемых, какая то совпадает с реквизитом
 
 Рекламное место пустует
   Масянька
 
11 - 17.08.18 - 09:58
(10) Не нашла.
   Масянька
 
12 - 17.08.18 - 10:28
У меня (вообще-то) стоит OpenConf. Реквизиты (шапки и ТЧ) подсвечиваются голубым.
Нету переопределения.
   Сияющий Асинхраль
 
13 - 17.08.18 - 10:41
Если бы переопределения не было, то и сообщения об изменении тоже не было бы... Вполне возможно отрабатывает какая-то процедура глобальника или еще что. Поставь в некоторых местах процедур формирования печ. форм (через несколько строчек пронумерованные вызовы Сообщить()) что-нибудь типа Сообщить("№" + 1 + " - " + Модифицированность())
И гляди, в какой момент появляется модифицированность, а там уж локализуешь
   vladko
 
14 - 17.08.18 - 10:59
+(13) сложно что ли отладчиком пройтись и посмотреть где возникает модифицированность? А так, гадаем на кофейной гуще!
   Сияющий Асинхраль
 
15 - 17.08.18 - 11:15
(14) Смотря какая печатная форма... Одно дело проходить форму с кодом в 100 строчек, другое в пару тысяч. Во втором случае я бы предпочел не ходить пару тысяч по строчке, а хотя бы для начала локализовать место, где смотреть повнимательней...
   Salimbek
 
16 - 17.08.18 - 11:30
(0) Если в процедуре ничего не меняется, то может в кнопке прописано что-то, что меняет модифицированность уже после этой процедуры?
   Peltik
 
17 - 17.08.18 - 11:31
(15) про Двоичный поиск никогда не слышал? Ставишь точку останова в середине кода, и опа, уже в половину меньше анализировать надо, ну и т.д. в худшем случае за 12 точек останова для 2000 строк кода
   Масянька
 
18 - 17.08.18 - 11:45
(13) Так и тыкала...
Пока нет на экране (печ. формы) - 0.
Как только появилась (моё ощущение) - 1.
   Масянька
 
19 - 17.08.18 - 11:49
+ (18) У меня в печати - 20 штук сообщить... Везде - 0.
А закрываешь печ. форум - и звездочка в заголовке...
Бред какой-то...
   NSSerg
 
20 - 17.08.18 - 11:57
(15) Какая разница сколько строчек, если перед "конец процедуры" модифицированность=0. Туда и поставить точку останова.
   Масянька
 
21 - 17.08.18 - 12:04
(20)         Таб.Напечатать(0);
    КонецЕсли; 
Сообщить("18 - " + Модифицированность());
    
КонецПроцедуры// ПечатьЗаказа
   NSSerg
 
22 - 17.08.18 - 12:05
(21) Точку останова в отладчике, а не "сообщить".
   Масянька
 
23 - 17.08.18 - 12:06
Я уже и таблица пустую впихнула - все равно есть 1...
   Масянька
 
24 - 17.08.18 - 12:06
(22) Я не умею им пользоваться. А какая разница?
   NSSerg
 
25 - 17.08.18 - 12:07
(24) Код может выполняться и после выхода из процедуры.
   Кац
 
26 - 17.08.18 - 12:07
в макете печформы наверняка функция
   Кац
 
27 - 17.08.18 - 12:09
(22) она не умеет отладчик, издревле так сложилось
   Сияющий Асинхраль
 
28 - 17.08.18 - 12:12
+(26) Кстати, да, может быть и так, тогда надо еще и всю печ. форму просматривать на навешенные функции.
   Масянька
 
29 - 17.08.18 - 12:14
(26) (28) Я же говорю - тупо взяла пустую таблицу...
В тех макетах, где вылазит мод. И опять (пустая печ. форма) вылазит.
   Кац
 
30 - 17.08.18 - 12:27
в кнопке формула, не?
   Масянька
 
31 - 17.08.18 - 12:31
(30) ПоКнопкеПечать()

Процедура ПоКнопкеПечать(СразуНаПринтер = 0, КолЭкз = 1)
    
    СпецПечать = 0;

    Если ПроверкаЗаполнения() = 0 Тогда
        ИнициализацияОбщихПолейДляПечати();
        фКнопка = Форма.кнПечать.Заголовок();
        Если (фКнопка = "Заказ") Тогда
            ПечатьЗаказа(СразуНаПринтер, КолЭкз);
        Иначе
            Ответ = Вопрос("Печатать 2 экземпляра на странице?", "Да+Нет", 60);
            Если Ответ = "Да" Тогда
                СпецПечать = 1;
            КонецЕсли;
            Если (фКнопка = "Акт передачи") Тогда
                ПечатьАкта(СпецПечать, СразуНаПринтер, КолЭкз, 1);
            ИначеЕсли (фКнопка = "Акт возврата") Тогда
                Если (ПустоеЗначение(ДатаВыполнения) = 1) Тогда
                    Предупреждение("Не заполнена дата выполнения ремонта.");
                    Активизировать("Выполнение");
                    СтатусВозврата(0);
                Иначе
                    ПечатьАкта(СпецПечать, СразуНаПринтер, КолЭкз, 2);
                КонецЕсли;
            ИначеЕсли (фКнопка = "Квитанция") Тогда
                ПечатьКвитанции(СпецПечать, СразуНаПринтер, КолЭкз, "Квитанция");
            ИначеЕсли (фКнопка = "Заправка") Тогда
                ПечатьКвитанции(СпецПечать, СразуНаПринтер, КолЭкз, "Заправка");
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;
   Масянька
 
32 - 17.08.18 - 12:31
Семерка.
   МимохожийОднако
 
33 - 17.08.18 - 12:34
(24) не научишься потратишь времени в несколько раз больше
 
 
   МимохожийОднако
 
34 - 17.08.18 - 12:35
(31) Проверь функцию ИнициализацияОбщихПолейДляПечати();
   s03
 
35 - 17.08.18 - 12:36
(31) а "СпецПечать" это переменная или такой реквизит в документе есть?
   Масянька
 
36 - 17.08.18 - 12:38
(34) Процедура ИнициализацияОбщихПолейДляПечати()

    СтрокаТелефоны     = СокрЛП(Фирма.ЮрЛицо.Телефоны);
    СтрокаМыло         = СокрЛП(Фирма.ЭлПочта);
    ПечИнфо         = "телефон: " + СтрокаТелефоны + ", e-mail: " + СтрокаМыло;
    
    СтрокаИНН = СокрЛП(Фирма.ЮрЛицо.ИНН);

    Если Найти(СтрокаИНН, "/") <> 0 Тогда
        // найден разделитель

        ИНН = Лев(СтрокаИНН, Найти(СтрокаИНН, "/") - 1);
        КПП = Сред(СтрокаИНН, Найти(СтрокаИНН, "/") + 1);
    КонецЕсли;;
    
    СтрокаОКПО    = СокрЛП(Фирма.ЮрЛицо.ОКПО);
    СтрокаОКОНХ    = СокрЛП(Фирма.ЮрЛицо.ОКОНХ);
    СтрокаОГРН    = СокрЛП(Фирма.ЮрЛицо.ОГРН);
    
    ПечКоды = ?(ПустоеЗначение(ИНН) = 0, "ИНН " + СокрЛП(ИНН), "") + 
              ?(ПустоеЗначение(КПП) = 0, ", КПП " + СокрЛП(КПП), "") + 
              ?(ПустоеЗначение(СтрокаОКПО) = 0, ", ОКПО " + СокрЛП(СтрокаОКПО), "") + 
              ?(ПустоеЗначение(СтрокаОКОНХ) = 0, ", ОКОНХ " + СокрЛП(СтрокаОКОНХ), "") + 
              ?(ПустоеЗначение(СтрокаОГРН) = 0, ", ОГРН " + СокрЛП(СтрокаОГРН), "");
    ПечКоды1 = "ООО ""Компью-Сервис""" + ?(ПустоеЗначение(ИНН) = 0, ", ИНН " + СокрЛП(ИНН), "") + 
               ?(ПустоеЗначение(КПП) = 0, ", КПП " + СокрЛП(КПП), "") + 
               ?(ПустоеЗначение(СтрокаОКПО) = 0, ", ОКПО " + СокрЛП(СтрокаОКПО), "");
    ПечКоды2 = ?(ПустоеЗначение(СтрокаОКОНХ) = 0, "ОКОНХ " + СокрЛП(СтрокаОКОНХ), "") +
               ?(ПустоеЗначение(СтрокаОГРН) = 0, ", ОГРН " + СокрЛП(СтрокаОГРН), "");

КонецПроцедуры// ИнициализацияОбщихПолейДляПечати


(35) Переменная, не глобальная.
   Сияющий Асинхраль
 
37 - 17.08.18 - 12:40
Если уж выкладываешь код, то неплохо бы еще выложить имеющиеся в документе реквизиты (шапки и тч), плюс в какой из форм меняется док... Ну и процедуры печати тоже. Проще пустой мд выложить, чем все это сюда постить...
   s03
 
38 - 17.08.18 - 12:40
(36) также и остальные функции, которые из печати вызываются проверять надо
   Масянька
 
39 - 17.08.18 - 12:41
Мужики!!!!
Я нашла!!!!
Всем спасибо!!!!!!
   Кац
 
40 - 17.08.18 - 12:43
обращайтесь!
   Масянька
 
41 - 17.08.18 - 12:44
(40) Главное - никогда не сдаваться :)))))))))))))))
   МимохожийОднако
 
42 - 17.08.18 - 12:44
(39) Не благодари. Лучше скажи, где ошибка была. А то маяться будем
   Кац
 
43 - 17.08.18 - 12:45
(41) включи отладчик или сдавайся!
   Масянька
 
44 - 17.08.18 - 12:46
(42) ПроверкаЗаполнения - там почему-то реквизиты присваиваются. Буду ковырять...
   Эльниньо
 
45 - 17.08.18 - 12:47
(43) Отладчик придумали для слабаков и трусов
   Масянька
 
46 - 17.08.18 - 12:47
(43) Мне уже и инструкцию (бумажную давали) - не получается...
В данном случае - на пальцах никак не выходит научиться...
   Масянька
 
47 - 17.08.18 - 12:47
(45) Точно! :))))))))))
   Кац
 
48 - 17.08.18 - 12:48
нужно больше скобок!)
   Сияющий Асинхраль
 
49 - 17.08.18 - 12:48
(45) +100500 :-)))
 
 Рекламное место пустует
   MWWRuza
 
50 - 17.08.18 - 16:02
Где-нибудь имя переменной в процедуре, совпадает с именем реквизита в документе... Какой-нибудь "ИНН" или что-то в этом роде. Поэтому, при печати и изменяются данные самого дока...
   Злопчинский
 
51 - 18.08.18 - 00:38
..поржал...


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует