8.х Создание нового документа Реализация ТМЗ

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Стивен, 4 янв 2009.

  1. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Всем привет!
    Я создал новый документ Реализации ТМЗ путем копирования типового док-та, оставил только товары и столкнулся с такой проблемой: при вводе счет-фактуры выходит ошибка "Значение не является значением объектного типа (ПолучитьОбъект)".
    Эта ошибка возникает в процедуре заполнения Счет-Фактуры.

    Я создал новый док-т чтобы не вносить изменения в типовой док-т (две дполнительные проводки и небольшой алгоритм расчета)
    А вообще сам подход правильный или лучше эти изменения вносить в типовом документе, не добавляя нового?
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    ПолучитьОбъект() не работает если документ не записан..или если ты передаешь значение не Ссылку..... проверяй... а зачем новый документ? Воспользуйся документом корректировка регистров.... и добавь в событие приПроведении ссылку на твой код.. пускай даже он будет во внешеней обработке.. или просто подключи внешнюю обработку и обязуй пользователей ее делать.. способов то много .. что конкретно тебя интересует...
  3. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    В 7-ке в документе Реализация ТМЗ была добавлена возможность выбора водителя, который развозил товар и при проведении ему начислялась оплата. Может нужно создать дополнительный док-т по начислению оплаты водителям, в котором выбирался бы водитель и документ Реализации ТМЗ, в котором указаны товары доставленные указанным водителем. Хотя можно было бы просто изменить типовой док-т, но не знаю правильный ли такой подход-изменять типовые документы.
  4. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    Конечно ПРАВИЛЬНО!! Если вы хотите сделать конфу под себя... тут вам надо решить вопрос с поддержкой, т.е. будет ли конфа у вас обновляться или нет.. если нет.. то можно вообще все переписать.. если будете обновлять.. то правильнее будет создать свой документ который не будет изменяться при обновлении.. и сответственно не будет никаких проблем с изменением.. а также все глобальные процедуры лучше писать в новом модуле.ю.. т.е. что имеем на выходе:
    1. Свой модуль
    2. Свой Документ.. который отражается в регистрах.. журналах документов и в последовательности, конечно при парвильном написании...
    3. Получаем что при обновлении все остается.. регистры не трогаются... и т.п.
  5. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    я записал документ, но ошибка снова возникает : "Значение не является значением объектного типа (ПолучитьОбъект)".
  6. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    ДАйте код
  7. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    Код:
    Процедура ВвестиСчетФактуру(ДокументОбъект, ФормаДокумента, ВидСчетаФактуры = "СчетФактураВыданный") Экспорт
    
    Если (НЕ ДокументОбъект.Проведен) и (НЕ ДокументОбъект.ПометкаУдаления) Тогда
    
    Ответ = Вопрос("Счет-фактуру нельзя вводить на основании не проведенного документа! Провести документ?", РежимДиалогаВопрос.ДаНет);
    
    Если Ответ = КодВозвратаДиалога.Да Тогда
    
    Попытка
    // выполняем проведение документа, через режим записи в форме. Так как необходима отработка событий формы.
    ФормаДокумента.ЗаписатьВФорме(РежимЗаписиДокумента.Проведение);
    Исключение
    Возврат;
    КонецПопытки;
    
    Иначе
    Возврат;
    КонецЕсли;
    
    КонецЕсли;
    
    //Попытаемся найти счет-фактуру
    СчетФактура = ОбщегоНазначения.НайтиПодчиненныйДокумент(ДокументОбъект.Ссылка, ВидСчетаФактуры);
    
    ОбъектСчетаФактуры = Неопределено;
    
    //Если потерпели неудачу, то необходимо ввести новый документ 
    Если (НЕ ЗначениеЗаполнено(СчетФактура))
    И (НЕ ДокументОбъект.ПометкаУдаления) Тогда
    
    //Вводим новый документ на основании нашего
    Если ДокументОбъект.Модифицированность() Тогда
    Предупреждение("Документ был изменен! Сначала следует записать документ!");
    Возврат;
    КонецЕсли;
    
    ОбъектСчетаФактуры = Документы[ВидСчетаФактуры].СоздатьДокумент();
    ОбъектСчетаФактуры.Заполнить(ДокументОбъект); 
    
    ИначеЕсли ЗначениеЗаполнено(СчетФактура) Тогда
    ОбъектСчетаФактуры = СчетФактура.ПолучитьОбъект();
    Иначе
    Предупреждение("На основании документов, помеченных на удаление, ввод счетов-фактур не предусмотрен.");
    КонецЕсли;
    
    Если ОбъектСчетаФактуры <> Неопределено Тогда
    // Откроем форму для редактирования счета-фактуры
    ФормаОбъекта = ОбъектСчетаФактуры.ПолучитьФорму( , ФормаДокумента, Строка(ДокументОбъект));
    ФормаОбъекта.Открыть();
    Если ОбъектСчетаФактуры.Модифицированность() Тогда
    ФормаОбъекта.Модифицированность = Истина;
    КонецЕсли;
    КонецЕсли;
    
    КонецПроцедуры // ВвестиСчетФактуру()
    
    ошибка возникает на этой строке
    ОбъектСчетаФактуры.Заполнить(ДокументОбъект);
  8. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    ОбъектСчетаФактуры.Заполнить(ДокументОбъект);

    Посмоьтри в надо чтоб в счет фактуре в процедуре ОбработкаЗаполнения Было описание твоего документа.. Потому как если ты просто скопировал документ, то значет в стандартной СФ нет упоменания про твой документ )))
  9. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Даже создание своего документа не решает проблему с поддержкой.
    Особенно возникают сложности с общими модулями - 1С в типовых часто перекидывает процедуры из одного в другой. Судя по задаче там доработок то на полчасика. Значит при обновлении будет дополнительной работы минут на 10. В общем мне кажется в данной ситуации лучше просто аккуратно доделать типовой документ.
  10. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    решений много.. главное чтоб Gerrard решил как ему поступить )))
    Можно же и создать свой модуль..в который буду кидаться и последующие доработки.. и никаких траблов при обновлении))
  11. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    У меня была такая ситуация, как правило мы на своих проектах и делаем новые модули. А дальше, наши процедуры часто используют общие, которые переписываются, наши доработанные формы в принципе могут отказать из-за общего модуля "Работа с диалогами". А еще часто бывает, что названия процедур совпадают (не люблю я свои процедуры префиксами снабжать, называю их так, как удобнее понимать).
  12. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    я скорее всего буду изменять типовой документ, т.к. изменений немного. В последующем я добавлю новую подсистему со своим именем например и этот измененный док-т включу в новую подсистему.
    А при объединении с обновленной базой просто сниму галочку с новой подсистемы и этот документ не будет обновляться. Думаю, такой подход будет наиболее рациональным.
  13. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Насчет обновления и подсистем. Отчасти вы правы, но обновлять документ придется. Это один из основных документов, затрагивает основные торговые регистры и не обновить его - это сделать систему неработоспособной. Надо просто аккуратно перетащить изменения в новую конфигурацию и все.
  14. TopicStarter Overlay
    Стивен
    Offline

    Стивен Опытный в 1С

    Регистрация:
    3 янв 2009
    Сообщения:
    51
    Симпатии:
    0
    Баллы:
    26
    т.е. сначала обновить все объекты (измененные и неизмененные), а затем снова вносить изменения?
  15. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26

Поделиться этой страницей