Имя: Пароль:
1C
1C 7.7
v7: Модифицированность - вылазит после печати
0 Масянька
 
17.08.18
09:33
День добрый!
В док-те есть несколько печ. форм.
Открываем док-т только для просмотра и давим на кнопку печать. Затем закрываем печ. форму.
И вот при закрытии док-та (после описанных манипуляций) - спрашивает про сохранить. Причем, только после двух печ. формах. После других трех пче. форм - не спрашивает.
Да, после двух печ. форм вылазит модифицированность.
Как отловить?
До открытия печ. формы (нажатия на кнопку), после формирования печ. формы - модифицированность = 0. Как только выводится на экран - всё, есть модифицированность...
Спасибо.
1 butterbean
 
17.08.18
09:34
проанализировать обработки печати, возможно даже с отладчиком
2 kossmatiy
 
17.08.18
09:35
Ты видимо реквизит пытаешся изменить при формировании печ.формы. сюСмотри код.
3 lxndr
 
17.08.18
09:36
проверить свойство команды "Изменяет сохраняемые данные"
4 butterbean
 
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.
Конечно, семерка.
8 butterbean
 
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 + " - " + Модифицированность())
И гляди, в какой момент появляется модифицированность, а там уж локализуешь
14 vladko
 
17.08.18
10:59
+(13) сложно что ли отладчиком пройтись и посмотреть где возникает модифицированность? А так, гадаем на кофейной гуще!
15 Сияющий Асинхраль
 
17.08.18
11:15
(14) Смотря какая печатная форма... Одно дело проходить форму с кодом в 100 строчек, другое в пару тысяч. Во втором случае я бы предпочел не ходить пару тысяч по строчке, а хотя бы для начала локализовать место, где смотреть повнимательней...
16 Salimbek
 
17.08.18
11:30
(0) Если в процедуре ничего не меняется, то может в кнопке прописано что-то, что меняет модифицированность уже после этой процедуры?
17 Peltik
 
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.
А закрываешь печ. форум - и звездочка в заголовке...
Бред какой-то...
20 NSSerg
 
17.08.18
11:57
(15) Какая разница сколько строчек, если перед "конец процедуры" модифицированность=0. Туда и поставить точку останова.
21 Масянька
 
17.08.18
12:04
(20)         Таб.Напечатать(0);
    КонецЕсли;
Сообщить("18 - " + Модифицированность());
    
КонецПроцедуры // ПечатьЗаказа
22 NSSerg
 
17.08.18
12:05
(21) Точку останова в отладчике, а не "сообщить".
23 Масянька
 
17.08.18
12:06
Я уже и таблица пустую впихнула - все равно есть 1...
24 Масянька
 
17.08.18
12:06
(22) Я не умею им пользоваться. А какая разница?
25 NSSerg
 
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) Проверь функцию ИнициализацияОбщихПолейДляПечати();
35 s03
 
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
Если уж выкладываешь код, то неплохо бы еще выложить имеющиеся в документе реквизиты (шапки и тч), плюс в какой из форм меняется док... Ну и процедуры печати тоже. Проще пустой мд выложить, чем все это сюда постить...
38 s03
 
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 :-)))
50 MWWRuza
 
гуру
17.08.18
16:02
Где-нибудь имя переменной в процедуре, совпадает с именем реквизита в документе... Какой-нибудь "ИНН" или что-то в этом роде. Поэтому, при печати и изменяются данные самого дока...
51 Злопчинский
 
18.08.18
00:38
..поржал...
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.