Курилка Помогите с алгоритмом - РЕШЕНО

Тема в разделе "Курилка", создана пользователем Ktyf, 22 окт 2015.

  1. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Если бы это было применимо ко всей очереди....... Но в рамках ВСЕЙ очереди надо идти с первого документа до последнего - и это логично, т.к. в 8 утра мне нужны уже взвешенные материалы. Но в рамках блока по 4 документа, порядок должен быть обратным, причем этот "блок" не должен "смещаться"
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    Код с нумерацией строк, о которой я говорил, привел другой оратор, насколько понял суть - должно помочь.
  3. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Да
    Да, спасибо! очень похоже!!!
  4. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Хотя нет, не понял.

    Точнее в чем проблема представляю, но не понимаю тот момент: а зачем после записи каждой записи перечитывать данные по регистраторам? Код Yuriy_Alexandrovich тоже ничего не даст в таком случае, поскольку после записи документа точно также собьется нумерация и на четверки разобьется уже по другому (точно также без первого документа).
  5. Yuriy_Alexandrovich
    Offline

    Yuriy_Alexandrovich Профессионал в 1С Команда форума

    Регистрация:
    15 сен 2011
    Сообщения:
    1.275
    Симпатии:
    76
    Баллы:
    54
    Фишка в том, что мы разом получили все четверки к обработке, и больше нам лезть в таблицу не нужно, просто собираем, пакуем и пишем в регистр о выполнении задания
  6. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Так я не понимаю при таком раскладе, а чем простая выборка из регистра (без предварительного разбития) тогда не устраивает.

    1) Получили записи по 4 регистраторам
    2) Отобразили их в табличной части
    3) начинаем взвешивать, при взвешивании записи проставляем признак Взвешено.
    4) Делаем это пока не закончились все строки табличной части
    5) после того как закончились все строки табличной части, запускаем новый запрос, выбираем следующие записи по следующим 4 документам
    и т.д.


    А сейчас я так понимаю проблема в том, что после п.3) сразу вызывается п.1)
  7. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Да, как я уже говорила, если у оператора сначала закончатся строки, а потом "вдруг" появятся снова - ну чисто психологически не очень комфортно.
  8. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ок.
    Заполните таблицу сразу, при открытии обработки отсортированными записями, и больше не перечитывайте данные в процессе взвешивания.
  9. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Как то так:
    upload_2015-10-23_11-53-36.png

    Вот таким порядком заполнить при открытии, и больше не перезаполнять в процессе.
    Ktyf нравится это.
  10. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    согласна полностью, у машины мозгов много на записи одного дня хватит с излишком. И можно при взвешивании чисто с данных формы убирать первую строку - и будет мине счастье.
    Вот только -Banghead- не въеду что вы делаете с моментом времени и количеством документов. Пошла учить мат.часть
  11. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    ваш вариант получилось перенести на мои условия, но вот понять что делает запрос - не могу. Если не сложно помогите прочитать.?
    Код:
    ВЫБРАТЬ
        ОчередьНаВзвешиваниеСпеций.Документ КАК Документ,
        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОчередьНаВзвешиваниеСпеций1.Документ) КАК НомерПоПорядку,
        ВЫРАЗИТЬ(КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОчередьНаВзвешиваниеСпеций1.Документ) / 4 + 0.5 - 1 / 4 КАК ЧИСЛО(15, 0)) КАК НомерГруппы,
     ИЗ
        РегистрСведений.ОчередьНаВзвешиваниеСпеций КАК ОчередьНаВзвешиваниеСпеций
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОчередьНаВзвешиваниеСпеций КАК ОчередьНаВзвешиваниеСпеций1
            ПО (ОчередьНаВзвешиваниеСпеций.Документ.МоментВремени >= ОчередьНаВзвешиваниеСпеций1.Документ.МоментВремени)
    ГДЕ
        ОчередьНаВзвешиваниеСпеций.Взвешено = ЛОЖЬ
        И ОчередьНаВзвешиваниеСпеций1.Взвешено = ЛОЖЬ
    
    СГРУППИРОВАТЬ ПО
        ОчередьНаВзвешиваниеСпеций.Документ,
       
    УПОРЯДОЧИТЬ ПО
        НомерГруппы,
        НомерПоПорядку УБЫВ
    Итак:
    Код:
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОчередьНаВзвешиваниеСпеций1.Документ) КАК НомерПоПорядку,
    Код:
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ОчередьНаВзвешиваниеСпеций1.Документ) КАК НомерПоПорядку,
    Здесь мы считаем количество документов более поздних по отношению к ОчередьНаВзвешиваниеСпеций.Документ?
  12. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Ну с математической точки зрения - да... :) С точки зрения прикладной - мы вычисляем номер по порядку.

    Эту строку нельзя рассматривать в отрыве от всего запроса.
    Вам надо разбить документы на группы по нескольку штук. Чтобы это сделать - мы для начала нумеруем строки. При чем делаем это исключительно на языке запросов. Чтобы пронумеровать строки, нужно сделать соединение таблицы к самой себе. Это такой способ.
    Почитайте например тут: http://kb.mista.ru/article.php?id=703
    Ktyf нравится это.
  13. TopicStarter Overlay
    Ktyf
    Offline

    Ktyf Опытный в 1С

    Регистрация:
    16 янв 2013
    Сообщения:
    457
    Симпатии:
    12
    Баллы:
    29
    Ну, не то что бы прям досконально, но разобралась!!! Фух! Всем большое спасибо!

Поделиться этой страницей