|
v7: Странное поведение реквизита документа | ☑ | ||
---|---|---|---|---|
0
lamo4ok
04.07.12
✎
15:39
|
Есть документ, в нем есть несколько функций/процедур и предопределенная процедура ВводНаОсновании(ДокументОснование). У этого документа есть реквизит ДокументОснование. При введении этого документа на основании в его реквизит ДокументОснование естественно попадает документ-основание (в предопределенной процедуре ВводНаОсновании используется сразу название реквизита, как и написано выше).
Но вот если из процедуры ВводНаОсновании() мы переходим в другие процедуры и функции модуля формы документа, то реквизит ДокументОснование становится пустым, как будто это не реквизит документа, а переменная, которая локально объявлена в процедуре ВводНаОсновании(). Но это не так, и более того - этот документ целиком перенесен из другой базы, в которой аналогичный код работает отлично и при переходе из ВводНаОсновании() в другие процедуры и функции значение ДокументОснование не обнуляется "на время". |
|||
1
1Сергей
04.07.12
✎
15:42
|
покажи эту процедуру
|
|||
2
lamo4ok
04.07.12
✎
15:43
|
Процедура ВводНаОсновании(ДокументОснование, Переоформление=0)
Перем ОписаниеОш; глПолучитьНомерСФ(, , Контекст); СинонимДокумента = ПредставлениеВида(); СинонимОснования = ДокументОснование.ПредставлениеВида(); Список = глПолучитьСписокВводимыхНаОсновании(ДокументОснование); Поз = Список.НайтиЗначение(Вид()); // выполним проверку, можно ли вводить документ на основании ДокументОснование Если Поз = 0 Тогда // ДокументОснование не найден в списке разрешенных Предупреждение("Документ """ + СинонимДокумента + """ нельзя вводить на основании """ + СинонимОснования + """",60); СтатусВозврата(0);Возврат; КонецЕсли; Если ДополнительнаяПроверкаОснования(ДокументОснование, ОписаниеОш) = 0 Тогда Предупреждение(ОписаниеОш, 60); СтатусВозврата(0); Возврат; КонецЕсли; // документ основание должен быть проведен Если ДокументОснование.Проведен() = 0 Тогда Предупреждение("Документ """ + ПредставлениеВида() + """ нельзя вводить на основании не проведенного документа!",60); СтатусВозврата(0); Возврат; КонецЕсли; // все нормально, заполняем СФ на основании документа - основания ЗаполнитьШапкуНаОсн(Контекст,ДокументОснование); Если глЕстьРеквизитШапки("Валюта",ДокументОснование.Вид()) = 1 Тогда Валюта = ДокументОснование.Валюта; КонецЕсли; УчитыватьНДС = 1; СуммаВклНДС = 1; КодВидаОперации = "01"; СпособВыставления = 1; Результат = ЗаполнениеПоДокументуОснованию(); Если Переоформление = 1 Тогда УдалитьСтроки(); КонецЕсли; ЗаполнитьТабЧастьНаОсн(); Если ПустоеЗначение(Результат) = 0 Тогда Сообщить(Результат); СтатусВозврата(0); КонецЕсли; КонецПроцедуры // ВводНаОсновании() |
|||
3
dk
04.07.12
✎
15:44
|
тип не совпадает
|
|||
4
Ёпрст
04.07.12
✎
15:44
|
Область видимости имён видать в школе не проходили ?
ты своим формальным параметром "забил" реквизит документа. |
|||
5
lamo4ok
04.07.12
✎
15:44
|
+(2) Вот допустим код ЗаполнениеПоДокументуОснованию(), в которой ДокументОснование становится пустым (она находится естественно в том же модуле формы документа):
Функция ЗаполнениеПоДокументуОснованию() Если ДокументОснование.Выбран()=0 Тогда Возврат "Не выбран документ - основание"; КонецЕсли; Фирма = ДокументОснование.Фирма; Если глЕстьРеквизитШапки("Договор", ДокументОснование.Вид()) = 1 Тогда Клиент = ДокументОснование.Клиент; Договор = ДокументОснование.Договор; КонецЕсли; НомерИсходногоДокумента = глНомерНаПечать(ДокументОснование); ДатаИсходногоДокумента = ДокументОснование.ДатаДок; Возврат ""; КонецФункции //ЗаполнениеПоДокументуОснованию() |
|||
6
1Сергей
04.07.12
✎
15:45
|
Процедура ВводНаОсновании(ДокОснование, Переоформление=0)
Перем ОписаниеОш; ДокументОснование = ДокОснование; и не ипи моск |
|||
7
Ёпрст
04.07.12
✎
15:46
|
(6) ага..
или в ЗаполнитьШапкуНаОсн нужно заполнить этот реквизит |
|||
8
lamo4ok
04.07.12
✎
15:47
|
(4) Проходили, лол, но в том-то и дело что в другой базе все ровно также и там значение этого реквизита не теряется при переходе из ВводНаОсновании в др функции/процедуры. Почему так? Вообще вопрос-то да, скорее почему в предыдущей базе работает так, чем почему в этой - нет.
(6) Понятно что так можно. (7) Точняк, сейчас проверю - скорее всего там и заполняется в старой базе. |
|||
9
lamo4ok
04.07.12
✎
15:51
|
+(8) Точно, там и заполняется.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |