Замечание

Внимание! Данный форум является модерируемым.
Для получения к нему доступа необходимо зарегистрироваться или авторизоваться на сайте.

Страницы: 1
RSS
Замечание, Не понятная проверка при вводе документа "Заказ поставщику" на основании "Заказ покупателя"
 
20 релиз в 19 этого нет т.к. исправили одну логическую ошибку вследствии чего всплыла другая...
 
А что собственно не так в данном сообщении? Какой вид договора в данном документе выбран?
 
Да Вы правы так ничего не понятно. Прошу прощения!!!  Действие: Ввод документа "Заказ поставщику" на основании документа "Заказ покупателя".

ЗаказПоставщику: Модуль объекта
Код
// Процедура - обработчик ввода на основании
Процедура ОбработкаЗаполнения(Основание) Экспорт
   Если НЕ дкОбработкаЗаполнения(ЭтотОбъект, Основание) Тогда Возврат; КонецЕсли;
   
   Попытка
      Если ЭтотОбъект.Метаданные().ВводитсяНаОсновании.Содержит(Основание.Метаданные())
         // KRAA 18.06.10 Запретим очистку, если ввод на основании счета от 

поставщика
         И (ТипЗнч(Основание)<>Тип("ДокументСсылка.СчетОтПоставщика"))
         // KRAA --
         И (ТипЗнч(Основание)<>Тип("ДокументСсылка.ПоступлениеТоваров")) Тогда
         Контрагент            = Неопределено;
         ДоговорВзаиморасчетов   = Неопределено;
      КонецЕсли;
   Исключение
   КонецПопытки;

   Если ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказВнутренний") ИЛИ 
       ТипЗнч(Основание) = Тип("ДокументСсылка.ЗаказПокупателя")Тогда
       //Для документов покупки
...


Что происходит по порядку: Выполняется  функция "дкОбработкаЗаполнения", далее в этой функции
выполняется процедура "дкОбработкаЗаполненияПоУмолчанию", вот в ней то как раз и происходит
первоначальное заполнение реквизитов "Контрагент" и "ДоговорВзаиморасчетов" причем значениями из
документа основания ("Заказа покупателя")!!!,  далее происходит проверка на корректность вида
договора хоз. операции документа и совершенно справедливо что системе не нравится что
хозяйственной операции "Заказ поставщику" присваивается договор значение реквизита "вид договора"
у которого "Продажа", на что собстно и выводится предупреждение. Далее происходит очистка
реквизитов Контрагент и ДоговорВзаиморасчетов что справедливо т.к. покупатель который заказал
товар ну никак не может быть поставщиком этого товара (хотя может но это не логично!!! В нашей не
стабильной жизни возможно все :) ). Вывод: Очистка реквизитов происходит до проверки на их
корректность для данной хоз операции.

Вообще процедура дкОбработкаЗаполненияПоУмолчанию по моему мнению
требует некоторый рефакторинг.
Есть некоторые не понятные моменты:

Код
      Если (МетаданныеДокумента.Реквизиты.Найти("Контрагент") <> Неопределено) И обЗначениеНеЗаполнено(ЭтотОбъект.Контрагент) Тогда
         Если Основание <> Неопределено Тогда
            Попытка
               ЭтотОбъект.Контрагент = Основание.Контрагент;
            Исключение
               ЭтотОбъект.Контрагент = Неопределено;
            КонецПопытки; 
         Иначе
            ЭтотОбъект.Контрагент = Неопределено;
         КонецЕсли;


Код
   Если Основание = Неопределено ИЛИ Копирование Тогда 
   Иначе
      // попытаемся скопировать одноименные реквизиты шапки
      МетаданныеОснования = Основание.Метаданные();
      Для Каждого РеквизитШапки Из МетаданныеОснования.Реквизиты Цикл
         Попытка
            // исключим реквизиты которые не копируются
            Если Найти(ВРЕГ("Дата,Номер,ДокументОснование,Автор,СуммаДокумента,
Комментарий,ХозОперация,КурсДокумента,КурсВалютыУпр,
ВалютаДокумента"),ВРЕГ(РеквизитШапки.Имя)) > 0 Тогда Продолжить; КонецЕсли;
            ЭтотОбъект[РеквизитШапки.Имя] = Основание[РеквизитШапки.Имя];
         Исключение
         КонецПопытки;
      КонецЦикла;


Не понятные куски кода из процедуры. Для чего собстно нужно дважды заполнять реквизит к примеру "Контрагент" практически на одинаковых условиях ???
Изменено: Евгений Львов - 18.04.2011 12:00:45 (Не влез текст)
 
В принципе да. Во втором фрагменте в список исключаемых из заполнения реквизитов можно включить те реквизиты, которые заполнены на предыдущих этапах.
 
Цитата
Александр Яблочкин пишет:
В принципе да. Во втором фрагменте в список исключаемых из заполнения реквизитов можно включить те реквизиты, которые заполнены на предыдущих этапах.

А по поводу предупреждения "Вид договора не соответствует Хоз.операции" то что ответите ??? Ведь очевидно же, что не должно сообщение появляться...
 
Данное сообщение скорее информирует пользователя что договор изменен в документе (очищен). И требуется выбрать другой.
 
Цитата
Александр Яблочкин пишет:
Данное сообщение скорее информирует пользователя что договор изменен в документе (очищен). И требуется выбрать другой.

А почему раньше (< 20 релиза) сообщение отсутствовало ???!!! Я знаю почему и уже писал выше что исправив одно вылезло другое. Если интересно могу пояснить? Просто хочется чтобы ПП выглядело достойно с минимумом ошибок как явных так и  нет.
Страницы: 1
Читают тему
Поддержка отраслевых решений «1С-Рарус»
Услуги 1С