Документ "Ведомость на выплату зарплаты в банк", как получить значение "КВыплате"?
Добрый день! Конфигурация ЗУП 3.1.8.216. Документ "Ведомость на выплату зарплаты в банк", поле "К выплате". Значение введено вручную. Как получить значение "КВыплате" из самого документа, например, для внешней обработки?
Есть запрос:
Далее по тексту вызов
В итоге имеем неизвестно из каких регистров притянутые суммы, а не то что в документе. Прошу помощи, можно прям носом ткнуть.
Есть запрос:
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Физлицо", Физлицо);
Запрос.Текст =
"ВЫБРАТЬ
|ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК ФизЛицо,
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК СуммаКПеречислению
|
|ИЗ
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата
|ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо";
Выборка = Запрос.Выполнить().Выбрать();
СуммаКВыплате = Новый Структура("ФизЛицо, СуммаКПеречислению");
Если Выборка.Следующий() Тогда
Возврат Выборка;
КонецЕсли;
Возврат "";
ПоказатьДалее по тексту вызов
ОбластьСтрока.Параметры.СуммаП=ЗарплатаКВыплате(Физлицо).СуммаКПеречислению;
В итоге имеем неизвестно из каких регистров притянутые суммы, а не то что в документе. Прошу помощи, можно прям носом ткнуть.
По теме из базы знаний
- 6-НДФЛ из ЗУП 2.5 без проблем. Специальная обработка проведения документов. Методика
- Механизмы и транспорт обмена данными. Пример создания в КД 2.1 правил обмена данными ЗУП 2.5 -> БП 3.0. Выгрузка ведомостей и банковских счетов. Передача параметров обмена из Источника в Приемник. ВыгрузитьПоПравилу(). ПередатьОдинПараметрВПриемник().
- Задачи по доработке типовых решений. ЗУП 3.1. Доработка выплаты аванса фиксированной суммой, проверка на отработанное время. Вывод предупреждения как в ЗУП 2.5
- Справка по начислениям и выплатам пособий за счет Фонда социального страхования
- Создание ведомостей на выплату зарплаты в банк из XML банка
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6) Надеюсь вы поняли (7)...
Но на всякий случай... - Вы делаете выборку из документа "Ведомость на выплату зарплаты в банк" , из какого конкретно документа ( где ссылка на документ ) вы хотите увидеть данные вы не указываете нигде...
Поэтому завпрос выдает все документы "Ведомость на выплату зарплаты в банк" и вы берете первый из всех для вывода
Если Выборка.Следующий() Тогда
Возврат Выборка;
КонецЕсли;
Можете увидеть какое количество документов в вашей выборке -
Выборка.Количество()
Но на всякий случай... - Вы делаете выборку из документа "Ведомость на выплату зарплаты в банк" , из какого конкретно документа ( где ссылка на документ ) вы хотите увидеть данные вы не указываете нигде...
Поэтому завпрос выдает все документы "Ведомость на выплату зарплаты в банк" и вы берете первый из всех для вывода
Если Выборка.Следующий() Тогда
Возврат Выборка;
КонецЕсли;
Можете увидеть какое количество документов в вашей выборке -
Выборка.Количество()
(9)Если Вы имеете ввиду группировку по Физлицу, то в результате получаются неимоверные суммы. Возможно связано с переходом с 2.5 (как вариант). Мне нужно - что введено, то и получаем (пример: подотчет - ни какого отношения к зп не имеет). Выход - ссылка на документ. Осталось добить где и как :)
(10)Вы смеетесь? Или код в (1) не ваш? У вас в запросе выборка из всех документов, поэтому сейчас при группировке по физлицу вы и получаете все суммы к выплате из всех документов. Добавьте в запрос условие на документ, рядом с условием по физлицу.
А группировка нужна, если в одном документе у вас по одному физлицу несколько строк.
|ИЗ
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата
|ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо
| И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка=&Ссылка";
А группировка нужна, если в одном документе у вас по одному физлицу несколько строк.
(14)
Вызов
Если обработка на уф то все немного круче
""Функция ЗарплатаКВыплате(Физлицо,СсылкаНаОбъект) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Физлицо", Физлицо);
Запрос.УстановитьПараметр("Ссылка", СсылкаНаОбъект);
Запрос.Текст =
"ВЫБРАТЬ
|ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК ФизЛицо,
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК СуммаКПеречислению
|
|ИЗ
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата
|ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо
| И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка=&Ссылка";
Выборка = Запрос.Выполнить().Выгрузить();
Возврат Выборка;
КонецФункции""
ПоказатьВызов
""Сумма = ЗарплатаКВыплате(Физлицо,СсылкаНаДокумент);
ОбластьСтрока.Параметры.СуммаП=Сумма.СуммаКПеречислению;""
Если обработка на уф то все немного круче
(17)
...и вот что у меня получается (проверка в консоли запросов и вывод сообщения)
Функция ЗарплатаКВыплате(Физлицо, Ссылка,СуммаКПеречислению) Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Физлицо", Физлицо);
Запрос.УстановитьПараметр("Ссылка", "%"+Ссылка+"%");
Запрос.Текст =
"ВЫБРАТЬ
|ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК Физлицо,
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК СуммаКПеречислению
|
|ИЗ
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата
|ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо
| И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка = &Ссылка ";
Выборка = Запрос.Выполнить().Выбрать();
Сообщить("У "+Физлицо+" к выплате "+СуммаКПеречислению);
Возврат Выборка;
КонецФункции
ПоказатьСумма = ЗарплатаКВыплате(Физлицо,СсылкаНаДокумент,СуммаКПеречислению);
ОбластьСтрока.Параметры.СуммаП=Сумма.СуммаКПеречислению;
...и вот что у меня получается (проверка в консоли запросов и вывод сообщения)
Прикрепленные файлы:
(18) )) нагородили, только начинаете разбираться в этом ODIN ASS?)
Не нужное зачеркнуто)
А нужное это спозиционироваться на Следующем элементе выборки..... Либо выгрузить весь результат запроса и перебрать циклом для каждого..
В БП 3.0 ВнешняяОбработка
Функция ЗарплатаКВыплате(Физлицо, Ссылка "СуммаКПеречислению") Экспорт
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Физлицо", Физлицо);
Запрос.УстановитьПараметр("Ссылка", ""%"+"Ссылка"+"%"");
Запрос.Текст =
"ВЫБРАТЬ
|ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК Физлицо,
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК СуммаКПеречислению
|
|ИЗ
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата
|ГДЕ ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо=&Физлицо
| И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка = &Ссылка ";
Выборка = Запрос.Выполнить().Выбрать();
"Сообщить("У "+Физлицо+" к выплате "+СуммаКПеречислению);"
Выборка.Следующий();//////////////////////////////////////////////////////////// //////////
Возврат Выборка.СуммаКПеречислению;
КонецФункции
Показать
ОбластьСтрока.Параметры.СуммаП=ЗарплатаКВыплате(Физлицо,СсылкаНаДокумент",СуммаКПеречислению");
Не нужное зачеркнуто)
А нужное это спозиционироваться на Следующем элементе выборки..... Либо выгрузить весь результат запроса и перебрать циклом для каждого..
В БП 3.0 ВнешняяОбработка
&НаСервере
Процедура Команда1НаСервере()
ПростоОбъект = РеквизитФормыВЗначение("Объект") ;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо КАК ФизическоеЛицо,
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.КВыплате КАК КВыплате
|ИЗ
| Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК ВедомостьНаВыплатуЗарплатыВБанкЗарплата
|ГДЕ
| ВедомостьНаВыплатуЗарплатыВБанкЗарплата.Ссылка = &Ссылка
| И ВедомостьНаВыплатуЗарплатыВБанкЗарплата.ФизическоеЛицо = &ФизическоеЛицо";
Запрос.УстановитьПараметр("Ссылка", ПростоОбъект.СсылкаНаДокумент);
Запрос.УстановитьПараметр("ФизическоеЛицо", ПростоОбъект.физлицо);
РезультатЗапроса = Запрос.Выполнить().Выбрать();
РезультатЗапроса.Следующий();
Сообщить(РезультатЗапроса.Квыплате);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Для каждого Строка Из РезультатЗапроса Цикл
Сообщить(Строка.Квыплате);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Команда1(Команда)
Команда1НаСервере();
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот