Имя: Пароль:
1C
 
в БП 30 расширение, как правильно сделать?
, ,
0 ded20ded
 
04.01.22
10:41
Добрый день. Всех с наступившим новым годом.

Делаю расширение в счет фактуре выданной, нужно заполнить оплаты. Сделал кнопку на форму.
Но что-то не работает. Помогите как правильно сделать.


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

    
КонецПроцедуры
1 SuperMario
 
04.01.22
10:45
Сделай обработку заполнения многострочных частей документов м подключи её.
Понимаю, что для Вас это сейчас сложно. Но зато скил вкачаете себе ;-)
2 SuperMario
 
04.01.22
10:47
(0) а по вопросу , что не так


            СтрокаТЧ = >>Объект<<    это не тот тип, что вам нужен Это коллекция, а не объект    .ПлатежноРасчетныеДокументы.Добавить();
3 ded20ded
 
04.01.22
10:53
(2) как правильно получить коллекцию?
4 ded20ded
 
04.01.22
10:54
Ставлю точку остановки "Выборка = Запрос.Выполнить().Выбрать();" но как буд-то не отрабатывается
5 Фрэнки
 
04.01.22
10:57
(4) А если простую внешнюю обработку делаешь - обрабатывается?
6 ded20ded
 
04.01.22
11:00
(5) увы не умею, запрос проверил работает данные выдает
7 ded20ded
 
04.01.22
11:01
(1) SuperMario примером не поделитесь? попробую разобраться
(5) Фрэнки а промером не поделитесь?
8 Фрэнки
 
04.01.22
11:11
(7) каким именно примером? На заполнение колонки в ТЧ внешней подключаемой обработкой или с использованием Расширения или просто не подключаемой внешней вспомогательной обработкой, где удобно проверять написанный код процедур?

Создаешь новый файл конфигуратором, выбираешь что это внешняя обработка, сразу проваливаешься в модуль объекта, создаешь процедуру и пишешь там любой код, можно и конструктором запросов с обработкой результата. Поскольку такая обработка находится в контексте типового решения, а не расширения, то получаешь обыкновенный работающий код для работы с запросом, который можно затем скопировать почти куда угодно и он будет синтаксически правильным везде. ( возможно, что не везде работающим, но не по причине синтаксиса :-) )
9 hhhh
 
04.01.22
11:45
(7) добавьте в расширение эти ПлатежноРасчетные документы, и все реквизиты табчасти тоже добавьте.
10 ded20ded
 
04.01.22
11:55
(9) добавил все но результат не изменился
11 ded20ded
 
04.01.22
12:06
https://cloud.mail.ru/public/8rBJ/Li5yMhpbg
расширение пока не работает :(
БП 30
12 hhhh
 
04.01.22
13:07
(11) вот тут

&НаСервере
Процедура СФВ_ЗаполнитьОплатыПосле(Команда)

какая-то невероятная хрень. Откуда это? В расширении должно быть совсем по другому.
13 Михаил Козлов
 
04.01.22
14:07
(0) В если это ППВ не для реализации, связанной с СФ?
Прикиньте, как это будет работать, если по договору несколько реализаций и оплат.
Кроме того, платежные документы имеет смысл заполнять, только если это СФ на аванс (возможно, ошибаюсь).
14 SuperMario
 
04.01.22
14:45
(7) куда пример кинуть? Почты в профиле не нашел
15 ded20ded
 
04.01.22
14:46
[email protected]
спасибо
16 SuperMario
 
04.01.22
15:06
(15) лови
17 ded20ded
 
04.01.22
15:12
&НаКлиенте
Процедура СФВ_ЗаполнитьОплатыПосле(Команда)
    //// Вставить содержимое обработчика.
//    Таб = Новый ТаблицаЗначений;
    ПолучитьОплатыПоДоговору();
    КоличествоСтрок=Таб.Количество();
    Если КоличествоСтрок > 0 Тогда
        Для Каждого ТекстСтрока из Таб Цикл
            СтрокаТЧ = Объект.ПлатежноРасчетныеДокументы.Добавить();
    
            СтрокаТЧ.ПлатежноРасчетныеДокументыДатаДокумента=СокрЛП(ТекстСтрока.ДатаВходящегоДокумента);
            СтрокаТЧ.ПлатежноРасчетныеДокументыНомерДокумента=ТекстСтрока.НомерВходящегоДокумента;
            
        КонецЦикла;    
    Иначе
        Сообщить("Оплат по данному договору - "+СокрЛП(Объект.ДоговорКонтрагента)+" не было.");
    КонецЕсли;
18 ded20ded
 
04.01.22
15:13
СтрокаТЧ = Объект.ПлатежноРасчетныеДокументы.Добавить();
Возращает ДанныеФормыЭлементКоллекции а как заполнить таблицу ПлатежноРасчетныеДокументы
19 hhhh
 
04.01.22
15:30
(18) это всё правильно у тебя
20 ded20ded
 
04.01.22
15:42
https://cloud.mail.ru/public/n3Je/vE6J8uF5R
Спасибо, все получилось
21 ded20ded
 
04.01.22
15:42
Заполнение оплат по договору
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.