Имя: Пароль:
1C
1С v8
Печать документа
,
0 Jamiq
 
21.03.12
11:15
упп 1,0 релиз 8,1,0,17

Документ проведен, предположим 2 недели назад, его надо напечатать. Вылезает оконце: Документ изменен. Для печати перепроведите документ.
После проводки все печатается. Но, есть докумы, которые перепроводить низззя.
Как решить сию задачу?
1 lxs
 
21.03.12
11:16
косяк. при открытии формы документа, что-то меняется. смотри отладчиком.
2 Jamiq
 
21.03.12
11:17
Изменений в документе соответственно не было.
3 Шапокляк
 
21.03.12
11:17
(0) Значит, при открытии форма модифицируется.
4 WF72
 
21.03.12
11:17
не косяк, а чьи-то кривые ручки, проставившие переопределение чего-то в ПриОткрытии документа.
5 Reset
 
21.03.12
11:17
Были, см, напр. (1)
Чудесов не бывает.
6 Reset
 
21.03.12
11:18
(5) к (2)
7 КМ155
 
21.03.12
11:18
(5) [Чудесов не бывает.]
учёт в УПП 1.0 супер чудо
8 Reset
 
21.03.12
11:19
(7) Ну,хорошо.. бывают исключения ;d
9 lxs
 
21.03.12
11:20
(7) +1)) приходилось сталкиваться))
10 catena
 
21.03.12
11:23
Гы, Поступления? Или Реализация.
Смотри при активизации строки ТЧ, там реквизиты аналитики присваивают тип. Плохо присваивают.
11 lxs
 
21.03.12
11:24
(10) вопрос даже не в том. плохо или хорошо, вопрос в том. нахрена это делать в проведенном документе. и там такое на каждом шагу.
12 Jamiq
 
21.03.12
11:28
Бух пока жаловался на списание и принятие ОС.
13 catena
 
21.03.12
11:28
(11)Это ко мне вопрос? Я бы с удовольствием занялась выяснением этого вопроса, но у меня самолет через 4 часа :(
14 Jamiq
 
21.03.12
11:29
Это утверждение =)
15 lxs
 
21.03.12
11:29
(13) это не вопрос) это констатация.
16 Jamiq
 
21.03.12
11:30
или так =Р
17 Jamiq
 
21.03.12
11:59
ох ты ж ёжик...
вот такая фигня там лежит:
Процедура ПриОткрытии()

      Если ЭтоНовый() Тогда // проверить объект на то, что он еще не внесен в ИБ

              // Заполнить реквизиты значениями по умолчанию.
              мРаботаСДиалогами.ЗаполнитьШапкуДокумента(ЭтотОбъект, глТекущийПользователь);
              мРаботаСДиалогами.УстановитьНомерДокумента(ЭтотОбъект);
              ЗаполнитьДаннымиПоУмолчанию(ЭтотОбъект);

      КонецЕсли;

      // Проверка ведения однофирменности
      ЭлементыФормы.Организация.ТолькоПросмотр = НЕ УчетПоВсемОрганизациям;

      // Заполнить подменю выбора печатных форм.
      СоответствиеМакетов = ЭтотОбъект.ПолучитьСписокПечатныхФорм();
      мРаботаСДиалогами.УстановитьПодменюВыбораПечатнойФормы(ЭлементыФормы.ОсновныеДействияФормы.Кнопки.ПодменюПечати,
                                           СоответствиеМакетов,
                                           Новый
Действие("КоманднаяПанельФормыДействиеВыбратьПечатнуюФормы"));

      // Установить печатную форму по умолчанию.
      мРаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект.Метаданные().Имя,
ЭтаФорма, СоответствиеМакетов);

      мРаботаСДиалогами.УстановитьЗаголовокФормыДокумента("", ЭтотОбъект, ЭтаФорма);

      ЗаполнитьСписокРеквизитовЗависимыхОтТиповУчета();

//++++++++++Н           Иванченко А. Ю. СиДата
//      мРаботаСДиалогами.ВидимостьРеквизитовПоТипуУчета(ЭтотОбъект,
ЭтаФорма, мСтрокаРеквизитыНалУчета);
              ОтражатьВБухгалтерскомУчете=Истина;
//++++++++++К

      // Установим видимость и доступность реквизитов
      УстановитьВидимость();

      // Установить активный реквизит.
      мРаботаСДиалогами.АктивизироватьРеквизитВФорме(ЭтотОбъект, ЭтаФорма);
      мТекущаяДатаДокумента = Дата;

КонецПроцедуры // ПриОткрытии()
18 catena
 
21.03.12
12:04
ЗаполнитьСписокРеквизитовЗависимыхОтТиповУчета();

Вот это подозрительно.
19 catena
 
21.03.12
12:05
мРаботаСДиалогами.АктивизироватьРеквизитВФорме(ЭтотОбъект, ЭтаФорма);
И вот это я бы глянула.
20 Jamiq
 
21.03.12
12:14
Ставлю точку останова:
ЗаполнитьСписокРеквизитовЗависимыхОтТиповУчета();  --> пусто

мРаботаСДиалогами.АктивизироватьРеквизитВФорме(ЭтотОбъект, ЭтаФорма);  -->
ЭтотОбъект - Списание ОС 00001 от такого то числа.
ЭтаФорма   - Форма.

Ставлю напротив каммент, ни чего не меняется.
21 catena
 
21.03.12
12:17
(20)При чем тут пусто? Ты процедуру посмотри, что там творяется?
22 catena
 
21.03.12
12:17
А после активироватьРеквизит - посмотри что активирует и нет ли в модуле процедур обработки активации этого реквизита.
23 lxs
 
21.03.12
12:18
(20)Перейди в процедуру-то
24 lxs
 
21.03.12
12:18
(22) ух, ты такая скоростная
25 catena
 
21.03.12
12:18
Ну, еще как вариант: по-очереди закоменти эти две строки, и посмотри - будет модифицированность или нет.
26 catena
 
21.03.12
12:19
(24)Я нервничаю, мне себя надо чем-то отвлечь :)
27 Jamiq
 
21.03.12
12:21
а паника паника !!!
как в процедуру перейти?
28 Jamiq
 
21.03.12
12:22
я еще, не на столько разбираюсь =(
29 catena
 
21.03.12
12:23
(27)ф11 в режиме отладки, ф12 в режиме конфигурирования.
30 catena
 
21.03.12
12:23
Там в меню есть "Отладка" - там много прикольных фишечек :)
31 Jamiq
 
21.03.12
12:29
Процедура ЗаполнитьСписокРеквизитовЗависимыхОтТиповУчета() Экспорт

   мСтрокаРеквизитыБухУчета = "СчетСписанияБУ, СубконтоБУ, ОС.СтоимостьБУ, ОС.АмортизацияБУ, ОС.АмортизацияЗаМесяцБУ, ОС.ОстСтоимостьБУ"; //, ОС.СписаноНаЗатратыБУ
   мСтрокаРеквизитыНалУчета = "СчетСписанияНУ, СубконтоНУ, ОС.СтоимостьНУ, ОС.АмортизацияНУ, ОС.АмортизацияЗаМесяцНУ, ОС.ОстСтоимостьНУ";

КонецПроцедуры // ЗаполнитьСписокРеквизитовЗависимыхОтТиповУчета()
32 Jamiq
 
21.03.12
12:34
Прожал ф11 дальше, ни куда больше не зашел. Вернулся обратно к ЗаполнитьСписокРеквизитовЗависимыхОтТиповУчета();

Процедура лежит в модуле объекта.
33 lxs
 
21.03.12
12:35
Глянь что в ПередОткрытием()
34 Jamiq
 
21.03.12
12:36
Ни чего нет.
Есть ПриОткрытии, ОбработкаВыбора и ПослеЗаписи
35 catena
 
21.03.12
12:36
(32)Нормально. Активируется что?
36 catena
 
21.03.12
12:37
мРаботаСДиалогами.АктивизироватьРеквизитВФорме(ЭтотОбъект, ЭтаФорма);
Вот в этой процедуре что происходит?
37 Jamiq
 
21.03.12
12:38
Функция АктивизироватьРеквизитВФорме(ДокументОбъект, ФормаДокумента ,СтруктураРеквизитов = неопределено,ТабличнаяЧасть = неопределено,СтраницыСТабЧастями = неопределено) Экспорт

   Если Не ДокументОбъект.Проведен Тогда
       
       Если СтруктураРеквизитов = Неопределено Тогда
           // Структура - порядок активизации реквизитов.
           // Активизируется первый не заполненный.
           СтруктураРеквизитов = Новый Структура();
           СтруктураРеквизитов.Вставить("Дата");
           СтруктураРеквизитов.Вставить("Организация");      
           СтруктураРеквизитов.Вставить("СчетОрганизации");
           СтруктураРеквизитов.Вставить("Склад");
           СтруктураРеквизитов.Вставить("БанковскийСчет");
           СтруктураРеквизитов.Вставить("ФизЛицо");
           СтруктураРеквизитов.Вставить("Контрагент");
           СтруктураРеквизитов.Вставить("ДоговорКонтрагента");
           СтруктураРеквизитов.Вставить("Касса");
           СтруктураРеквизитов.Вставить("Получатель");
           СтруктураРеквизитов.Вставить("Плательщик");
           СтруктураРеквизитов.Вставить("ПодразделениеОрганизации");
       КонецЕсли;
       
       Для каждого Элемент Из СтруктураРеквизитов Цикл
           
           // Определим, есть ли ЭУ с таким именем.
           ЭлементУправления = ФормаДокумента.ЭлементыФормы.Найти(Элемент.Ключ);
           Если ЭлементУправления <> Неопределено Тогда // есть такой
               Если ЭлементУправления.Видимость И ЭлементУправления.Доступность И НЕ ЗначениеЗаполнено(ЭлементУправления.Значение) Тогда
                   
                   // Нашли не заполненный ЭУ. Делаем его текущим и прекращаем цикл.
                   ФормаДокумента.ТекущийЭлемент = ЭлементУправления;
                   Возврат(Истина);
                   Прервать;
               КонецЕсли;
               ТекущийРеквезит = ЭлементУправления;
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   
   //если в документе есть ТЧ то необходимой фокус передать ей
   Если ТабличнаяЧасть <> Неопределено Тогда
       ЭлементУправления = ФормаДокумента.ЭлементыФормы.Найти(ТабличнаяЧасть.Имя);
       Если ТипЗнч(ЭлементУправления) = Тип("ТабличноеПоле") Тогда
           ФормаДокумента.ТекущийЭлемент = ЭлементУправления;
           Возврат(Истина);
       ИначеЕсли СтраницыСТабЧастями <> неопределено Тогда
           
           ЭлементУправления = ФормаДокумента.ЭлементыФормы.Найти(СтраницыСТабЧастями.НайтиПоЗначению(ТабличнаяЧасть.Имя));
           Если ТипЗнч(ЭлементУправления) = Тип("ТабличноеПоле") Тогда
               ФормаДокумента.ТекущийЭлемент = ЭлементУправления;
               Возврат(Истина);
           КонецЕсли;
           
       КонецЕсли;
   КонецЕсли;
   //Если все поля заполнены но нет ТЧ то передадим фокус панели, в результате
   //визуально будет казаться что фокус не установлен ни на одном ЭФ.
   //Хотелось бы фокус установить на кнопке "Закрыть", но пока технически не предоставляется
   //такой возможности.
   ЭлементУправления = ФормаДокумента.ЭлементыФормы.Найти("ОсновныеДействияФормы");
   Если ЭлементУправления <> Неопределено Тогда
           ФормаДокумента.ТекущийЭлемент = ЭлементУправления;
           Возврат(Истина);
   КонецЕсли;
   
Возврат(Ложь);

КонецФункции// АктивизироватьРеквизитВФорме()
38 catena
 
21.03.12
12:38
Кстати, выведи вообще в отладчик Модифицированность, прошлепай всю процедуру по ф10 и посмотри, после какой строчки переходит модифицированность в Да.
39 Jamiq
 
21.03.12
12:39
О_о
40 catena
 
21.03.12
12:40
(37)Нормально, не должно ничего слетать.
41 catena
 
21.03.12
12:41
(39)Поставь точку останова в начале процедуры. Начни отладку. В конфигураторе открой табло, там добавь строчку, введи ЭтотОбъет.Модифицированность(). Потом шлепай ф10 и смотри на значение.
42 Jamiq
 
21.03.12
12:44
написал ЭтотОбъет.Модифицированность() в Столбец "Выражение"
в "Значение" выдало {(1,1)}: Переменная не определена (ЭтотОбъет)
43 Jamiq
 
21.03.12
12:46
скопировал без буквы к )
44 catena
 
21.03.12
12:46
объеКт
45 catena
 
21.03.12
12:46
:)
46 lxs
 
21.03.12
12:47
ЭЭЭ
47 lxs
 
21.03.12
12:48
посмотри процедуру приактивизациистроки!
48 lxs
 
21.03.12
12:48
была такая фигня в УПП
49 Jamiq
 
21.03.12
12:48
Везде Ложь/булево
на  УстановитьВидимость();
изменилось на истина/булево
50 catena
 
21.03.12
12:48
(47)Там не активируется тч - она же не передается в процедуру. Там активизироваться основные действия должны
51 catena
 
21.03.12
12:49
(49)О как! Давай процедуру.
52 lxs
 
21.03.12
12:49
(50) строка сама по себе активизируется при открытии
53 catena
 
21.03.12
12:49
(52)Там принудительная активация идет же, смотри процедуру ПриОткрытии.
54 lxs
 
21.03.12
12:50
да-да, там тоже встречались засады
55 Jamiq
 
21.03.12
12:50
приактивизациистроки нет такой
56 lxs
 
21.03.12
12:51
(53) вот именно
57 lxs
 
21.03.12
12:51
смотри коммент//если в документе есть ТЧ то необходимой фокус передать ей
58 Jamiq
 
21.03.12
12:51
Процедура УстановитьВидимость()

   ЭлементыФормы.НадписьОрганизация.Видимость    = ЭлементыФормы.Организация.Видимость;
   ЭлементыФормы.СубконтоБУ.Доступность          = НЕ (мОбщегоНазначения.ЗначениеНеЗаполнено(СчетСписанияБУ) ИЛИ (СчетСписанияБУ.ВидыСубконто.Количество() = 0));
   ЭлементыФормы.СубконтоНУ.Доступность          = НЕ (мОбщегоНазначения.ЗначениеНеЗаполнено(СчетСписанияНУ) ИЛИ (СчетСписанияНУ.ВидыСубконто.Количество() = 0));
   ЭлементыФормы.НадписьСчетСписанияНУ.Видимость = ОтражатьВНалоговомУчете;
   ЭлементыФормы.НадписьСубконтоНУ.Видимость     = ОтражатьВНалоговомУчете;

   мНалоговыйУчетУСН.УстановитьВидимостьРеквизитовУСН(ЭлементыФормы, Организация, Дата);

КонецПроцедуры //УстановитьВидимость()
59 catena
 
21.03.12
12:51
(55)Давай смотри уже УстановитьВидимость(), а то я улечу сейчас уже.
60 Jamiq
 
21.03.12
12:51
НЕТ, не отпущу!!!!!!
61 catena
 
21.03.12
12:52
(57)И чо? ЧТ в параметрах не передается! Код несколько приоритетнее каментов.
62 lxs
 
21.03.12
12:52
короче, что за док? у меня есть 1.0 релиз. сам посмотрю
63 catena
 
21.03.12
12:52
(60)Меня там муж ждет :)
64 lxs
 
21.03.12
12:52
(61) спокойно! тебе перед полетом стрессы противопоказаны))
65 catena
 
21.03.12
12:53
Ну, кроме
   мНалоговыйУчетУСН.УстановитьВидимостьРеквизитовУСН(ЭлементыФормы, Организация, Дата);

ничего подозрительного не вижу.
Пройдись так же отладчиком, посмотри, когда меняется модифицированность.
66 Jamiq
 
21.03.12
12:53
Списание ОС и Принятие ОС
67 catena
 
21.03.12
12:53
(64)Для меня полет сам по себе стресс, у меня сейчас истерика начнется :)
68 lxs
 
21.03.12
12:53
ща, смотрю ужО
69 lxs
 
21.03.12
12:54
(67) а что ж ты? поехала бы на поезде))
70 Jamiq
 
21.03.12
12:54
какой муж?!! =))
у меня паника была, когда я с питера в ростов летел, самолет на 5 часов задержали, из-за поломки....
71 catena
 
21.03.12
12:54
(69)Дак это... 5 дней выходных, я даже туда-обратно на поезде не успею :)
72 catena
 
21.03.12
12:56
(70)ААА, не надо меня пугать, я без посторонней помощи справлюсь!
73 Jamiq
 
21.03.12
12:56
Прожал ф10 по Процедура УстановитьВидимость()
везде истина/булево
74 Reset
 
21.03.12
12:57
(17) ОтражатьВБухгалтерскомУчете=Истина;
75 Jamiq
 
21.03.12
12:57
Без паники! все будет отлично!
76 catena
 
21.03.12
12:57
Когда я на АН-24 в Кустанай летела 5 часов, я даже в туалет боялась выйти - двруг этот запорожец с моторчиком перевернется?
77 J_B
 
21.03.12
12:57
ОтражатьВБухгалтерскомУчете=Истина;

не оно косячит?
78 Jamiq
 
21.03.12
12:58
ставил остонов - Истина
79 catena
 
21.03.12
12:59
(77)А, похоже оно, если оно не закомментировано.
80 catena
 
21.03.12
12:59
(78)перед УстановитьВидимость() строка ОтражатьВБухгалтерскомУчете=Истина; закоментирована или нет?
81 Reset
 
21.03.12
12:59
Какой останов? Идет прямое присваевание реквизиту
82 Jamiq
 
21.03.12
13:00
нет без комментов
83 Reset
 
21.03.12
13:01
Видно же его невооруженным взглядом, полсотни постов ниочем
84 Jamiq
 
21.03.12
13:02
ДАААААА
85 catena
 
21.03.12
13:02
(83)Там перед ней закоментирована функция криво, часть параметров вне коментов, я и проглядела :)
Так что, (82) спасибо за разговор.
86 Jamiq
 
21.03.12
13:02
я ВАС обожаю!!!
87 Jamiq
 
21.03.12
13:02
Спасибо!
88 Jamiq
 
21.03.12
13:03
Катёна, удачно долететь!
89 lxs
 
21.03.12
13:04
У меня более свежая версия. значит, а тут да. проглядели)
90 lxs
 
21.03.12
13:08
(83) а то тут в каждой теме не так, млин.
91 Jamiq
 
21.03.12
13:08
=)
92 catena
 
21.03.12
13:10
(88)Спасибо :)
93 Jamiq
 
21.03.12
14:36
Со списанием разобрались.
Принятие к учету ОС другая проблема.

Процедура ПриОткрытии()

   Если ЭтоНовый() Тогда // проверить объект на то, что он еще не внесен в ИБ

       // Заполнить реквизиты значениями по умолчанию.
       мРаботаСДиалогами.ЗаполнитьШапкуДокумента(ЭтотОбъект, глТекущийПользователь);
       мРаботаСДиалогами.УстановитьНомерДокумента(ЭтотОбъект);
       ЗаполнитьДаннымиПоУмолчанию(ЭтотОбъект);
       
//+++++++++Н        Иванченко А. Ю. СиДата
       ОтражатьВБухгалтерскомУчете=Истина;
       КоэффициентУскоренияБУ=1;
//+++++++++К

       Если НЕ мНалоговыйУчетУСН.ПрименениеУСН(Организация, Дата) Тогда

           СпециальныйКоэффициентНУ = 1;

       КонецЕсли;

   КонецЕсли;

   // Проверка ведения однофирменности
   ЭлементыФормы.Организация.ТолькоПросмотр = НЕ УчетПоВсемОрганизациям;

   // Заполняем подменю, вызываемое нажатием кнопки "Операция" командной панели
   // формы, значениями перечисления "Вид операции" данного вида документа.
   // В качестве обработки выбора вида операции назначается процедура
   // ДействияФормыДействиеУстановитьОперацию модуля формы.

   мРаботаСДиалогами.УстановитьПодменюВыбораВидаОперации(ЭлементыФормы.ДействияФормы.Кнопки.ПодменюВидаОперации,
                                       ВидОперации.Метаданные().ЗначенияПеречисления,
                                       Новый Действие("ДействияФормыДействиеУстановитьОперацию"));

   // Заполнить подменю выбора печатных форм.
   СоответствиеМакетов = ЭтотОбъект.ПолучитьСписокПечатныхФорм();
   мРаботаСДиалогами.УстановитьПодменюВыбораПечатнойФормы(ЭлементыФормы.ОсновныеДействияФормы.Кнопки.ПодменюПечати,
                                        СоответствиеМакетов,
                                        Новый Действие("ДействияФормыДействиеВыбратьПечатнуюФормы"));

   // Установить печатную форму по умолчанию.
   мРаботаСДиалогами.УстановитьКнопкуПечати(ЭтотОбъект.Метаданные().Имя, ЭтаФорма, СоответствиеМакетов);

   // Отобразить в заголовке формы вид операции.
   мРаботаСДиалогами.УстановитьЗаголовокФормыДокумента(Строка(ВидОперации), ЭтотОбъект, ЭтаФорма);

   ВалютаРегл = Константы.ВалютаРегламентированногоУчета.Получить();

   ЭлементыФормы.РеглВалюта.Заголовок  = ВалютаРегл;
   ЭлементыФормы.РеглВалюта1.Заголовок = ВалютаРегл;
   ЭлементыФормы.РеглВалюта2.Заголовок = ВалютаРегл;
   ЭлементыФормы.РеглВалюта3.Заголовок = ВалютаРегл;

   ПараметрВыработкиБУПриИзменении(ЭлементыФормы.ПараметрВыработкиБУ);
   УстановитьВидимость();

   // Установить активный реквизит.
   мРаботаСДиалогами.АктивизироватьРеквизитВФорме(ЭтотОбъект, ЭтаФорма);
   мТекущаяДатаДокумента = Дата;
   
//+++++++++++Н        Иванченко А. Ю.
   ПриВыбореДокументаПриобретения(ДокументПриобретения);
//+++++++++++К

КонецПроцедуры // ПриОткрытии()

Комментирую вот этот кусочек:

//+++++++++++Н        Иванченко А. Ю.
   ПриВыбореДокументаПриобретения(ДокументПриобретения);
//+++++++++++К

Проблема исчезает. Захожу в процедуру:
Процедура ПриВыбореДокументаПриобретения(Элемент)
   Если ДокументПриобретения=Документы.ПоступлениеТоваровУслуг.ПустаяСсылка() Тогда
       ЭлементыФормы.НомерДокументаПриобретения.Доступность=Истина;
       ЭлементыФормы.ДатаПриобретенияОС.Доступность=Истина;
   Иначе
       ЭлементыФормы.НомерДокументаПриобретения.Доступность=Ложь;
       ЭлементыФормы.ДатаПриобретенияОС.Доступность=Ложь;
       НомерДокументаПриобретения=ДокументПриобретения.Номер;
       ДатаПриобретенияОС=ДокументПриобретения.Дата;
   КонецЕсли;
КонецПроцедуры

Делаю модифицированность, ставит Истина/Булево на строчке:
ДатаПриобретенияОС=ДокументПриобретения.Дата;

Чего дальше делать не знаю =(
94 Jamiq
 
21.03.12
14:51
в процедуре ставлю комменты на против:

НомерДокументаПриобретения=ДокументПриобретения.Номер;
ДатаПриобретенияОС=ДокументПриобретения.Дата;

все работает.