Имя: Пароль:
1C
1С v8
ЗУП 3.1. Невидимые строки в документе Ведомость в банк
0 bvn-2005
 
30.01.18
13:50
Док Ведомость в банк. В табличной части одна строка:
Сотрудник: Иванов; К выплате: 10 626,50.
А запрос по табличной части этого документа выдает 2 строки:
Сотрудник: Иванов; К выплате: -5 400
Сотрудник: Иванов; К выплате: 16 026,5
В сумме те же 10 626,50...
Что это такое?
1 asady
 
30.01.18
13:56
(0) это называется группировка

ты там кто?
2 KnightAlone
 
30.01.18
13:58
(0) это расшифровка. 5400 аванс, смотри РН ВзаиморасчетыССотрудниками
3 SleepyHead
 
гуру
30.01.18
14:07
(0) В форме ведомости поставь курсор на сотрудника и нажми кнопку "Изменить зарплату", увидишь, из чего сложилась итоговая сумма.
4 bvn-2005
 
30.01.18
14:17
"нажми кнопку "Изменить зарплату""
Получается, -5400 - это аванс...
Собственно, задача: перебрать табличную часть документа и вывести данные по выплатам в excel. Предполагалось, что один человек - одна строка...
5 SleepyHead
 
гуру
30.01.18
14:20
(4) Какую проблему ты решаешь, выводя в эксел строки документа?
6 borodaty_
pontorez
 
30.01.18
14:39
(4) пользуйся
        ТаблицаПоСотруднику = парамВедомостьНаВыплатуЗарплатыВБанк.Зарплата.Выгрузить();
        Отбор = Новый Структура("ФизическоеЛицо", ТекСтрока.ФизическоеЛицо);
        МассивСтрок = ТаблицаПоСОтруднику.НайтиСтроки(Отбор);
        СвернутаяТаблица = парамВедомостьНаВыплатуЗарплатыВБанк.Зарплата.Выгрузить(МассивСтрок);
        ИтоговаяСуммаСотрудника = СвернутаяТаблица.Итог("КВыплате");
7 bvn-2005
 
30.01.18
14:47
"Какую проблему ты решаешь"
Файл для банка для перечисления на карточки
8 SleepyHead
 
гуру
30.01.18
14:49
(7)

Вот пример выборки данных из массива ведомостей. Дата передается для чтения ФИО из регистра сведений по фио сотрудников и для выборки прочих периодических данных

&НаСервереБезКонтекста
Функция ПрочитатьДанныеДляВыгрузки(Знач ДатаФормирования, Знач МассивВедомостей)
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |    Зарплата.ФизическоеЛицо КАК ФизическоеЛицо
        |ПОМЕСТИТЬ ВТ_ФизЛица
        |ИЗ
        |    Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК Зарплата
        |ГДЕ
        |    Зарплата.Ссылка В(&МассивВедомостей)
        |
        |СГРУППИРОВАТЬ ПО
        |    Зарплата.ФизическоеЛицо
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Зарплата.ФизическоеЛицо.Наименование КАК ФИО,
        |    ЕСТЬNULL(ФИО.Фамилия, """") КАК Фамилия,
        |    ЕСТЬNULL(ФИО.Имя, """") КАК Имя,
        |    ЕСТЬNULL(ФИО.Отчество, """") КАК Отчество,
        |    ЕСТЬNULL(Паспорта.Серия, """") КАК Серия,
        |    ЕСТЬNULL(Паспорта.Номер, """") КАК Номер,
        |    Зарплата.НомерЛицевогоСчета КАК НомерСчета,
        |    СУММА(Зарплата.КВыплате) КАК Сумма
        |ИЗ
        |    Документ.ВедомостьНаВыплатуЗарплатыВБанк.Зарплата КАК Зарплата
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизическихЛиц.СрезПоследних(
        |                &ДатаФормирования,
        |                ФизическоеЛицо В
        |                    (ВЫБРАТЬ РАЗЛИЧНЫЕ
        |                        ВТ_ФизЛица.ФизическоеЛицо КАК ФизическоеЛицо
        |                    ИЗ
        |                        ВТ_ФизЛица КАК ВТ_ФизЛица)) КАК ФИО
        |        ПО Зарплата.ФизическоеЛицо = ФИО.ФизическоеЛицо
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыФизическихЛиц.СрезПоследних(
        |                &ДатаФормирования,
        |                Физлицо В
        |                    (ВЫБРАТЬ
        |                        ВТ_ФизЛица.ФизическоеЛицо КАК ФизическоеЛицо
        |                    ИЗ
        |                        ВТ_ФизЛица КАК ВТ_ФизЛица)) КАК Паспорта
        |        ПО Зарплата.ФизическоеЛицо = Паспорта.Физлицо
        |ГДЕ
        |    Зарплата.Ссылка В(&МассивВедомостей)
        |
        |СГРУППИРОВАТЬ ПО
        |    Зарплата.НомерЛицевогоСчета,
        |    Зарплата.ФизическоеЛицо.Наименование,
        |    ЕСТЬNULL(ФИО.Фамилия, """"),
        |    ЕСТЬNULL(ФИО.Имя, """"),
        |    ЕСТЬNULL(ФИО.Отчество, """"),
        |    ЕСТЬNULL(Паспорта.Серия, """"),
        |    ЕСТЬNULL(Паспорта.Номер, """")
        |
        |ИМЕЮЩИЕ
        |    СУММА(Зарплата.КВыплате) > 0
        |
        |УПОРЯДОЧИТЬ ПО
        |    ФИО";
    Запрос.УстановитьПараметр("ДатаФормирования", НачалоДня(ДатаФормирования));
    Запрос.УстановитьПараметр("МассивВедомостей", МассивВедомостей);
    
    Т = Запрос.Выполнить().Выгрузить();
9 SleepyHead
 
гуру
30.01.18
14:50
(7) Запрос обобщает суммы по всем строкам ведомостей и физлицам.
10 Джо-джо
 
30.01.18
14:52
(7) В ЗУПе это уже есть
11 bvn-2005
 
30.01.18
14:54
"В ЗУПе это уже есть"
Есть что? Выгрузка в файл совершенно определенной структуры под требования конкретного банка? Подскажи, где искать...
12 SleepyHead
 
гуру
30.01.18
14:59
(11) В ЗУп 3.1 есть обмен, которым пользуется сбер (формат XML). Уточни в своем банке, поддерживают ли они этот формат.

В некоторых банках напрямую не поддерживают, но вот например в росбанке дают конвертер, который их XML делает формат, который жрет росбанк.
13 bvn-2005
 
30.01.18
15:04
Про сбер в курсе. Здесь надо Эксель по их форме.
14 bvn-2005
 
30.01.18
15:07
В ред. 2.5 подобная обработка вполне себе работала несколько лет. Да и в ред. 3 начала было, пока не наткнулись на мужика, уволенного после получения аванса...
15 Джо-джо
 
30.01.18
15:07
(11) Да, есть выгрузка определённой структуры, если не устраивает, то поменяй структуру
16 bvn-2005
 
30.01.18
15:22
"пример выборки данных из массива ведомостей."
Что-то сложновато для моей проблемы...
Думаю так:
"ВЫБРАТЬ
|    ВедомостьНаВыплатуЗарплатыВБанк.Ссылка КАК Ссылка,
|    ВедомостьНаВыплатуЗарплатыВБанк.Номер КАК Номер,
|    ВедомостьНаВыплатуЗарплатыВБанк.Дата КАК Дата,
|    ВедомостьНаВыплатуЗарплатыВБанк.Зарплата.(
|        Ссылка КАК Ссылка,
|        Сотрудник КАК Сотрудник,
|        ФизическоеЛицо КАК ФизическоеЛицо,
|        СУММА(КВыплате) КАК КВыплате,
|        НомерЛицевогоСчета КАК НомерЛицевогоСчета
|    ) КАК Зарплата
|ИЗ
|    Документ.ВедомостьНаВыплатуЗарплатыВБанк КАК ВедомостьНаВыплатуЗарплатыВБанк
|ГДЕ
|    ВедомостьНаВыплатуЗарплатыВБанк.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
|    ВедомостьНаВыплатуЗарплатыВБанк.Зарплата.(Ссылка,
|    Сотрудник,
|    ФизическоеЛицо,
|    НомерЛицевогоСчета)"

Надо же всего лишь свернуть табличную часть одного конкретного документа по сотрудникам...
???
17 SleepyHead
 
гуру
30.01.18
17:44
(16) А потом всего лишь вытащить оттуда ФИО, да? вот запрос и вытаскивает так, чтобы потом не пришлось тащить ФИО из каждого физлица путем чтения всего объеккта.
18 bvn-2005
 
12.02.18
15:57
"Вот пример выборки данных из массива ведомостей."
Наконец-то дошли руки попробовать...Этот запрос замечательно работает за одним исключением: задваивает людей, у которых было несколько документов, удостоверяющих личность. Никак не пойму почему, вроде бы там прописано РегистрСведений.ДокументыФизическихЛиц.СрезПоследних(
должен и вытаскиваться последний док...?
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан