Документ "Ведомость на выплату зарплаты в банк", как получить значение "КВыплате"?

1. user1078168 10.07.19 06:24 Сейчас в теме
Добрый день! Конфигурация ЗУП 3.1.8.216. Документ "Ведомость на выплату зарплаты в банк", поле "К выплате". Значение введено вручную. Как получить значение "КВыплате" из самого документа, например, для внешней обработки?

Есть запрос:

Запрос = Новый Запрос; 
Запрос.УстановитьПараметр("Физлицо",	Физлицо); 

Запрос.Текст = 
"ВЫБРАТЬ 
|ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК ФизЛицо, 
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК СуммаКПеречислению 
| 
|ИЗ 
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата 
|ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо"; 

Выборка = Запрос.Выполнить().Выбрать(); 

СуммаКВыплате = Новый Структура("ФизЛицо, СуммаКПеречислению"); 

Если Выборка.Следующий() Тогда 
Возврат Выборка; 
КонецЕсли; 

Возврат ""; 
Показать


Далее по тексту вызов
ОбластьСтрока.Параметры.СуммаП=ЗарплатаКВыплате(Физлицо).СуммаКПеречислению;


В итоге имеем неизвестно из каких регистров притянутые суммы, а не то что в документе. Прошу помощи, можно прям носом ткнуть.
По теме из базы знаний
Ответы
Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. catena 110 10.07.19 06:37 Сейчас в теме
А условие на документ кто ставить будет?
YannikAlx; +1 Ответить
6. user1078168 10.07.19 10:52 Сейчас в теме
(2)А по-подробнее? На примере каком-нибудь? Пожа-а-а-а-а-алуйста! Мозг кипит. Чувствую мелочь какая-то, а где понять не могу.
7. catena 110 10.07.19 11:00 Сейчас в теме
(6)Вы хотите из конкретного документа суммы? Почему условие на физлицо вы в запрос добавили, а на документ нет? У вас выборка из всех документов в базе.
8. YannikAlx 43 10.07.19 11:11 Сейчас в теме
(6) Надеюсь вы поняли (7)...
Но на всякий случай... - Вы делаете выборку из документа "Ведомость на выплату зарплаты в банк" , из какого конкретно документа ( где ссылка на документ ) вы хотите увидеть данные вы не указываете нигде...

Поэтому завпрос выдает все документы "Ведомость на выплату зарплаты в банк" и вы берете первый из всех для вывода

Если Выборка.Следующий() Тогда
Возврат Выборка;
КонецЕсли;


Можете увидеть какое количество документов в вашей выборке -
Выборка.Количество()
3. leosoft 165 10.07.19 09:26 Сейчас в теме
А про группировку слышали?
4. YannikAlx 43 10.07.19 09:54 Сейчас в теме
(3) Какая группировка ? Зачем?
данные берутся из одного документа, возможно из каждого для физ лица.
Но уж группировать точно нечего....
5. user1078168 10.07.19 10:50 Сейчас в теме
(3)Слышали, пробовали, группировка здесь неуместна.
9. leosoft 165 10.07.19 12:59 Сейчас в теме
Без группировки получите несколько записей для одного документа т.к. сумм к выплате может быть несколько. Аванс, например, с минусом идет...
10. user1078168 11.07.19 06:16 Сейчас в теме
(9)Если Вы имеете ввиду группировку по Физлицу, то в результате получаются неимоверные суммы. Возможно связано с переходом с 2.5 (как вариант). Мне нужно - что введено, то и получаем (пример: подотчет - ни какого отношения к зп не имеет). Выход - ссылка на документ. Осталось добить где и как :)
11. catena 110 11.07.19 06:34 Сейчас в теме
(10)Вы смеетесь? Или код в (1) не ваш? У вас в запросе выборка из всех документов, поэтому сейчас при группировке по физлицу вы и получаете все суммы к выплате из всех документов. Добавьте в запрос условие на документ, рядом с условием по физлицу.



|ИЗ 
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата 
|ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо
|   И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка=&Ссылка"; 


А группировка нужна, если в одном документе у вас по одному физлицу несколько строк.
12. user1078168 11.07.19 06:41 Сейчас в теме
(11)Код мой и мне не смешно
13. kuzyaa 2 11.07.19 09:42 Сейчас в теме
(12) зачем тебе структура СуммаКВыплате если она не используется... И тебе сказали если для внешней обработки то ткни СсылкуНаОбъект и передай эту ссылку в запрос и добавь в условие на документ по этой ссылке.
14. user1078168 16.07.19 08:24 Сейчас в теме
(13)Ссылку в запрос добавила, параметр добавила... а она мне
"Значение не является значением объектного типа (СуммаКПеречислению)
ОбластьСтрока.Параметры.СуммаП=ЗарплатаКВыплате(Физлицо, ЭтотОбъект).СуммаКПеречислению"

Что я делаю не так?
15. kuzyaa 2 16.07.19 15:10 Сейчас в теме
(14)
""Функция ЗарплатаКВыплате(Физлицо,СсылкаНаОбъект) Экспорт
Запрос = Новый Запрос; 
Запрос.УстановитьПараметр("Физлицо",    Физлицо); 
Запрос.УстановитьПараметр("Ссылка",    СсылкаНаОбъект);
Запрос.Текст = 
"ВЫБРАТЬ 
|ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК ФизЛицо, 
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК СуммаКПеречислению 
| 
|ИЗ 
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата 
|ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо
|   И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка=&Ссылка"; 

Выборка = Запрос.Выполнить().Выгрузить(); 



 
Возврат Выборка; 


КонецФункции""
Показать


Вызов
""Сумма = ЗарплатаКВыплате(Физлицо,СсылкаНаДокумент);
ОбластьСтрока.Параметры.СуммаП=Сумма.СуммаКПеречислению;""



Если обработка на уф то все немного круче
16. user1078168 18.07.19 11:41 Сейчас в теме
(15)
У меня внешняя печатная форма. Ошибку "Значение не является значением объектного типа..." я исправила. Теперь у меня значение СуммаКПеречислению выводится пустое.
Структуру СуммаКВыплате убрала.
17. kuzyaa 2 18.07.19 15:15 Сейчас в теме
(16) надо целиком видеть ваш код. и проверьте запрос в консоли возвращает ли он то что вам надо.
18. user1078168 19.07.19 11:51 Сейчас в теме
(17)
Функция ЗарплатаКВыплате(Физлицо, Ссылка,СуммаКПеречислению) Экспорт
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Физлицо",	Физлицо);
	Запрос.УстановитьПараметр("Ссылка",	"%"+Ссылка+"%");
	
	Запрос.Текст = 
	"ВЫБРАТЬ 
	|ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК Физлицо,
    | ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК СуммаКПеречислению
	|
    |ИЗ 
    | Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата
    |ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо
	|   И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка = &Ссылка ";
	
Выборка = Запрос.Выполнить().Выбрать();

Сообщить("У "+Физлицо+" к выплате "+СуммаКПеречислению);
Возврат Выборка;

	КонецФункции
Показать


Сумма = ЗарплатаКВыплате(Физлицо,СсылкаНаДокумент,СуммаКПеречислению);
ОбластьСтрока.Параметры.СуммаП=Сумма.СуммаКПеречислению;


...и вот что у меня получается (проверка в консоли запросов и вывод сообщения)
Прикрепленные файлы:
19. kuzyaa 2 20.07.19 01:06 Сейчас в теме
(18) )) нагородили, только начинаете разбираться в этом ODIN ASS?)

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

"Сообщить("У "+Физлицо+" к выплате "+СуммаКПеречислению);"

Выборка.Следующий();////////////////////////////////////////////////////////////­//////////
Возврат Выборка.СуммаКПеречислению;

    КонецФункции
Показать


ОбластьСтрока.Параметры.СуммаП=ЗарплатаКВыплате(Физлицо,СсылкаНаДокумент",СуммаКПеречислению");


Не нужное зачеркнуто)
А нужное это спозиционироваться на Следующем элементе выборки..... Либо выгрузить весь результат запроса и перебрать циклом для каждого..



В БП 3.0 ВнешняяОбработка

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

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот