Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 ноя 2024, 13:16

Расширение для УНФ автоматическое создание и проведение СФ вместе с РТУ

Автор Kerim0955, 08 апр 2020, 22:15

0 Пользователей и 1 гость просматривают эту тему.

Kerim0955

Добрый день. Дорогие форумчане подскажите пожалуйста, где ошибка не могу понять.
Привязал процедуру к кнопке провести и закрыть в расходной накладной УНФ 1.6.
Процедура после основной (Провести и закрыть):
&НаСервере
Процедура СА_АФСФ_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)
   Если Не ЗначениеЗаполнено(Объект.Ссылка)
      Или Не Объект.Проведен Тогда
      Возврат;
   
   КонецЕсли;

   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ
      |   РасходнаяНакладная.Ссылка КАК Ссылка
      |ИЗ
      |   Документ.РасходнаяНакладная КАК РасходнаяНакладная
      |      ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактура КАК СчетФактура
      |      ПО РасходнаяНакладная.Ссылка = СчетФактура.ДокументыОснования.Ссылка
      |ГДЕ
      |   РасходнаяНакладная.Проведен = &Проведен
      |   И СчетФактура.Ссылка ЕСТЬ NULL
      |   И РасходнаяНакладная.Ссылка = &Ссылка";
         
   
   Запрос.УстановитьПараметр("Ссылка", объект.Ссылка);
   
   РезультатЗапроса = Запрос.Выполнить();
   Если РезультатЗапроса.пустой() Тогда
   
      Возврат;
   
   КонецЕсли;
   
   СФ = Документы.СчетФактура.СоздатьДокумент();
   ДанныеСчетаФактуры = Новый Структура;
   ДанныеСчетаФактуры.Вставить("ДокументОснование", Объект.Ссылка);
   ДанныеСчетаФактуры.Вставить("Организация",       Объект.Организация);
   СФ.Заполнить(ДанныеСчетаФактуры);
   СФ.Записать(РежимЗаписиДокумента.Проведение);
   
      
КонецПроцедуры


В Предприятии при проверке никаких действий не проиходит, хотя проведение и закрытие документа по времени увеличилось.
СФ не создается и не проводится на основании РТУ


LexaK

попробуйте такой вариант

&НаСервере
Процедура СА_АФСФ_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)

Если Не Объект.Проведен Тогда
      Возврат;
   КонецЕсли;

   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ Первые 1
      |   100500
      |ИЗ
      |   Документ.СчетФактура КАК СчетФактура
      |ГДЕ
      |   СчетФактура.ДокументыОснования = &Ссылка";
   Запрос.УстановитьПараметр("Ссылка", объект.Ссылка);
   
   РезультатЗапроса = Запрос.Выполнить();
   Если РезультатЗапроса.пустой() Тогда
   //нет ни одной СчетФактуры, создаем - как было
ДанныеСчетаФактуры = Новый Структура;    
ДанныеСчетаФактуры.Вставить("ДокументОснование", Объект.Ссылка);
ДанныеСчетаФактуры.Вставить("Организация",       Объект.Организация);
СФ = Документы.СчетФактура.СоздатьДокумент();
СФ.Заполнить(ДанныеСчетаФактуры);
СФ.Записать(РежимЗаписиДокумента.Проведение);
   КонецЕсли;
   
КонецПроцедуры

если помогло нажмите: Спасибо!

Kerim0955

Цитата: LexaK от 08 апр 2020, 22:49
попробуйте такой вариант

&НаСервере
Процедура СА_АФСФ_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)

Если Не Объект.Проведен Тогда
      Возврат;
   КонецЕсли;

   Запрос = Новый Запрос;
   Запрос.Текст =
      "ВЫБРАТЬ Первые 1
      |   100500
      |ИЗ
      |   Документ.СчетФактура КАК СчетФактура
      |ГДЕ
      |   СчетФактура.ДокументыОснования = &Ссылка";
   Запрос.УстановитьПараметр("Ссылка", объект.Ссылка);
   
   РезультатЗапроса = Запрос.Выполнить();
   Если РезультатЗапроса.пустой() Тогда
   //нет ни одной СчетФактуры, создаем - как было
ДанныеСчетаФактуры = Новый Структура;    
ДанныеСчетаФактуры.Вставить("ДокументОснование", Объект.Ссылка);
ДанныеСчетаФактуры.Вставить("Организация",       Объект.Организация);
СФ = Документы.СчетФактура.СоздатьДокумент();
СФ.Заполнить(ДанныеСчетаФактуры);
СФ.Записать(РежимЗаписиДокумента.Проведение);
   КонецЕсли;
   
КонецПроцедуры



Попробовал как Вы написали только результата нет.

&НаСервере
Процедура СА_АФСФ_ПослеЗаписиНаСервереПосле(ТекущийОбъект, ПараметрыЗаписи)
   
    Если Не Объект.Проведен Тогда
      Возврат;
   КонецЕсли;

   Запрос = Новый Запрос;
   Запрос.Текст =
     "ВЫБРАТЬ
     | РасходнаяНакладная.Ссылка КАК Ссылка,
     | РасходнаяНакладная.Дата КАК Дата,
     | СчетФактура.ДокументыОснования.(
     | ДокументОснование КАК ДокументОснование
     | ) КАК ДокументыОснования
     |ИЗ
     | Документ.РасходнаяНакладная КАК РасходнаяНакладная
     | ЛЕВОЕ СОЕДИНЕНИЕ Документ.СчетФактура КАК СчетФактура
     | ПО (СчетФактура.ДокументыОснования.ДокументОснование = РасходнаяНакладная.Ссылка)
     |ГДЕ
     | РасходнаяНакладная.Проведен = &Проведен
     | И СчетФактура.Ссылка ЕСТЬ NULL
     | И РасходнаяНакладная.Ссылка = &Ссылка";
   Запрос.УстановитьПараметр("Ссылка", Объект.Ссылка);
   
   РезультатЗапроса = Запрос.Выполнить();
   Если РезультатЗапроса.пустой() Тогда
       //нет ни одной СчетФактуры, создаем - как было
        ДанныеСчетаФактуры = Новый Структура;
ДанныеСчетаФактуры.Вставить("ДокументОснование", Объект.Ссылка);
        ДанныеСчетаФактуры.Вставить("Организация", Объект.Организация);
ДанныеСчетаФактуры.Вставить("Дата", Объект.Дата);
        СФ = Документы.СчетФактура.СоздатьДокумент();
        СФ.Заполнить(ДанныеСчетаФактуры);
        СФ.Записать(РежимЗаписиДокумента.Проведение);
   КонецЕсли;
   
КонецПроцедуры

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск