Выгрузка документа "Зарплата к выплате организаций" в текстовый файл (1С 8.1)


Данная обработка предназначена для выгрузки документа "Зарплата к выплате организаций" в текстовый файл для последующей пересылки по эл.почте в банк и др. инстанции..

Выкладываю эту обработку с тем поводом, чтобы мне подсказали как оптимизировать запрос к регСвед.КонтактнаяИнформация, который используется в данной обработке.

Проблема в том, что львиная доля времени (около 85%) используется при обращении к этому регСвед.КонтактнаяИнформация и получении сведений об адресеЮридическом (прописки) и адресеФактическом (проживании). Все мои попытки объединять, вкладывать и др. действия с запросом и запросами ни к чему не привели и с т.з. оптимизации оставляли желать лучшего. Подскажите.

Воо-о-оот…

Спасибо «СергейКа» за советы.

Вторая версия программы работает на порядок быстрее.

Третья версия программы работает по скорости аналогично второй версии, но всё в одном запросе.

23 Comments

  1. didkovskij

    Куда ещё проще то 🙂

    Reply
  2. Шёпот теней

    (1) Проще некуда… согласен… но слишком долго и львиная доля уходит на получение адресов… вот и хочется узнать это я такой «тупой» или рег.Свед.КонтактнаяИнформация такой «долгий»…

    воооот…

    Reply
  3. СергейКа

    Мда, не удивительно что долго…

    Запросы в циклах, да еще неоднократно…

    Reply
  4. СергейКа

    Гм, а то что выборка из сотрудников организаций по физлицу — вообще ни в какие ворота … У нас по одному физлицу может быть до 5-6 сотрудников и(изредка больше). Представь себе, что эта выборка выведет?

    А вообще, всю таблицу заполнить одним запросом — без особых проблем. Тебе его выложить?

    Reply
  5. Шёпот теней

    (4) Спасибо! Буду рад помощи, особенно в части «заполнить одним запросом»… все мои попытки не увенчались успехом…

    воот…

    Reply
  6. СергейКа

    Куда? В комментарий многовато кажется будет 🙂

    Reply
  7. Шёпот теней

    (6) почта: a-l-e-x-1964@yandex.ru

    Reply
  8. СергейКа

    Уточни плиз, — в адресе убрать или адрес полностью такой? 🙂

    Reply
  9. Шёпот теней

    (8) a-l-e-x-1964@yandex.ru

    как есть вместе с «-»

    воот…

    Reply
  10. СергейКа

    Короче отправил и так и так :)))

    В письме файл типовой консоли запросов Выплаты.sel.

    Несколько малозначащих полей я не стал добавлять (типа код родителя группы), но их не сложно и добавить, заодно разберешься с запросом.

    В запрос передается только массив документов выплат. Выходная таблица практически идентична твоей.

    Reply
  11. Шёпот теней

    (10) Спасибо огромное… Получил…

    Reply
  12. СергейКа

    (11)Хорошо.

    На самом деле и этот запрос можно еще оптимизировать хорошо подумав 🙂

    Предлагаю сделать это указав на следующие моменты:

    1. Массив документов используется в отборах несколько раз. В итоге идет многократное обращение ко всем объектам конфигурации (док выплат). Что несколько замедляет запрос.

    2. Несколько раз используется ЛЕВОЕ соединение к РаботникиОрганизаций.Сотрудники.ФизЛицо . Это тоже не есть гуд, хотя работает.

    Удачи в оптимизации.

    Reply
  13. Шёпот теней

    (10) Спасибо ещё раз… восхищён…

    далее:

    1. проблема: есть док.ЗПкВыплатеОрг в табличной части есть ФизЛицо. если в спр.Сотрудники есть несколько таких (а у нас встречается и до 5-7) то и запрос выводит столько же… …и у меня такое же было и я не смог от этого избавиться… ( это как раз к (4) сообщению)…

    2. … и самое главное… это я «тупой! и мне надо тренироваться с запросами…

    воо-о-оот…

    Reply
  14. СергейКа

    (13) Бр-р-р…

    1) В присланном мной запросе этой проблемы нет. Если внимательно всмотреться, то выборка идет из рег Работники организаций, где выбирается ОДНА запись по физлицу с максимальной датой на дату периода регистрации документа. Таблица «МаксДаты». Кстати, правильнее будет поправить условие связи в данной таблице с

    РаботникиОрганизаций.Период <= ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Дата

    на

    КОНЕЦПЕРИОДА(РаботникиОрганизаций.Период, МЕСЯЦ) <= ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.Дата

    2) А кто сказал что ты «тупой»??? К такому построению запросов я пришел только через несколько месяцев практики и всяких сверок производительности. Зато теперь могу строить их за несколько минут 🙂

    Reply
  15. СергейКа

    (13) и на будущее: получать должности и подразделения из справочника Сотрудники нельзя. Только из регистра.

    Reply
  16. Шёпот теней

    (14) (15) Спасибо… учтём и будем тренироваться…

    Reply
  17. СергейКа

    к 14 поправочка, правильно :

    РаботникиОрганизаций.Период <= КОНЕЦПЕРИОДА(ЗарплатаКВыплатеОрганизацийЗарплата.Ссылка.ПериодРегистрации, МЕСЯЦ)

    Reply
  18. Шёпот теней

    Вторая версия работает на порядок быстрее — спасибо «СергейКа»…

    хотя и дальше можно оптимизировать… но ни как не удаётся избавиться от проблемы на ФизЛицо. если в спр.Сотрудники есть несколько таких (а у нас встречается и до 5-7) то и запрос выводит столько же… ( это как раз к (4) сообщению)…

    но уже хорошо … воо-о-ооот…

    Reply
  19. СергейКа

    А файл при вложении не перепутал? Почти полностью идентичен первому варианту кроме названия.

    Не пойму как ты умудрился сделать «проблемы на ФизЛицо. если в спр.Сотрудники есть несколько таких».

    Reply
  20. Шёпот теней

    (19) нет не перепутал…

    …у меня и работает гОООраздо быстрее и это меня радует…

    а, все твои советы обязательно учту…

    … по поводу нескольких строк по спр.Сотруднику не знаю… так получается… и в твоём запросе то же… либо у меня что-то не так…

    вооот….

    Reply
  21. nefto

    Огромное спасибо за пример!!!!

    Reply
  22. nefto

    А как есчо добавить строчку с номером лицевого счета сотрудника? кто может полсказать?

    Reply
  23. Шёпот теней

    (22) под рукой нет ЗП или УПП если для вас ЭТО принципиально напишите мне в аську… номер аськи в «личныхданных»…

    удачиВооот…

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *