7.7 Проводка документа

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем bvv79, 15 янв 2009.

  1. TopicStarter Overlay
    bvv79
    Offline

    bvv79

    Регистрация:
    31 мар 2008
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    ТиС 7.7:

    имеется некий документ в в табличной части которого строки на списания товара. при нажатии на кнопку "пробить чек" проводятся непроведенные строки.

    можно ли сделать так, чтоб при повторном открытии документа, например для добавления новых строк товара, ранее проведенные строки уже были проведены, или все же без повторной проводки всех строк перед добавлением новых не обойтись?

    ибо при указании новой строки товара, должен тут же выдаваться остаток этого товара на складе, а при простом открытии, ранее введенные строки оказываются неучтенными.
  2. bob
    Offline

    bob Опытный в 1С

    Регистрация:
    7 май 2008
    Сообщения:
    386
    Симпатии:
    0
    Баллы:
    26
    нифигасе это как? Проводятся документы, а не строки в них... или мож я от жизни отстал ? :))
  3. TopicStarter Overlay
    bvv79
    Offline

    bvv79

    Регистрация:
    31 мар 2008
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    вот собсно техзадание, интересует предпоследний абзац. как сделать так, чтоб при повторном открытии документа, проведеннные строки уже были учтены и остаток по регистру давал реальную информацию?

    Пример N3 экзаменационного задания

    Необходимо разработать конфигурацию, которая позволяет вести серийный учет медикаментов в аптеке, приходуя товар в отделы документами ”ПрихНакл” и проводя продажи документом ”Чеки”:
    Справочник ”Медикаменты” с дополнительным периодическим реквизитом ”РозничнаяЦена”, значение которого должно изменяться только документами;
    Справочник ”Серии”, подчиненный справочнику ”Медикаменты”, имеет дополнительный реквизит ”ПредельнаяДатаРеализации”. В форме списка справочника ”Серии” этот реквизит должен присутствовать и при просмотре записи справочника должны быть отсортированы по нему;
    справочник ”Отделы”;
    Документ ”ПриходнаяНакладная”, который приходует медикаменты от поставщика в один из отделов аптеки, рассчитывает и запоминает новые розничные цены;
    Документ ”Чеки”, который служит для отражения в системе учета факта продажи медикаментов и списывает из отдела аптеки конкретные серии медикаментов.

    Партионный и многовалютный учет не ведется, НДС и другие виды налогов в документах не указываются и не рассчитываются.

    Структура регистра остатков ”ОстаткиСерий” должна обеспечивать ведение количественного и стоимостного учета (по себестоимости) серий медикаментов в разрезе отделов, а оборотного регистра ”Продажи” – количества и стоимости проданных медикаментов в розничных ценах.

    В шапке документа ”ПрихНакл” присутствуют реквизиты: ”Отдел” (типа справочник ”Отделы”) - для того, чтобы указать, в какой отдел аптеки поступили медикаменты, и ”ПроцентНаценки”, значение которого используется для расчета розничных цен. В табличной части документа необходимо иметь возможность вводить для выбранной ”Серии” закупочную ”Цену” и ”Количество” поступивших медикаментов. ”Сумма” в строке и ”РозничнаяЦена” должны рассчитываться автоматически. Алгоритм проведения документа обеспечивает отражение факта поступления конкретных серий медикаментов в указанный отдел и сохранения в периодическом реквизите соответствующего элемента справочника ”Медикаменты” новой розничной цены.

    Документ ”Чеки” вводится один раз в начале смены в каждом отделе, (отдел выбирается в шапке документа) запоминается после ввода первой строки и остается активным до конца смены. Чеки нумеруются, начиная с ”1”, номер чека высвечивается в служебной графе табличной части ”№чека”, которая недоступна для ввода. Ввод нового чека осуществляется добавлением новых строк в документ и отработки процедуры ”ПробитьЧек” (одноименная кнопка в форме). При выборе медикамента в графу ”Цена” должно заноситься значение из реквизита ”РозничнаяЦена” справочника ”Медикаменты” на дату документа. После выбора медикамента автоматически должна запуститься процедура анализа остатков серий. При этом, если в отделе осталась только одна серия, ее наименование появляется в графе ”Серия”, если же осталось несколько серий, то должен быть сформирован список значений для выбора, в котором высвечивается номер серии, предельная дата реализации и количество (остаток) в отделе. После выбора серии в графе ”Количество” вводится необходимое значение, а графа ”Сумма” пересчитывается.

    Процедура пробития чека должна сформировать движения по списанию выбранных серий медикаментов, контролируя наличие необходимого их количества в отделе с учетом ранее пробитых чеков, введенных в этом документе. Т.е. необходимо реализовать режим допроведения документа (уже проведенные строки не должны проводиться повторно!) с поддержкой в актуальном состоянии временного расчета регистра с учетом уже записанных при пробитии предыдущих чеков движений. В случае успешного списания серий медикаментов, процедура пробития чека в конце своей работы должна изменить пустое значение в графе ”№чека” на следующий по порядку номер.

    В любой момент по кнопке ”Продажи за смену” в форме документа ”Чеки” необходимо иметь возможность сформировать отчет, в котором будет выведен список медикаментов, проданных в отделе за смену (каждый медикамент встречается в отчете только один раз!)
  4. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Отключаешь автоматическое проведение документа в конфигураторе. а потом допроводишь как надо (читай ЖКК)
  5. TopicStarter Overlay
    bvv79
    Offline

    bvv79

    Регистрация:
    31 мар 2008
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    ага, оно самое, но теперь другая проблема. при проведении строк, те, где забито больше товара, чем есть на складе, должны удаляться, но они удаляются через одну.

    например идут 3 строки подряд с каждой записано товара больше чем есть, так вот вторая строка почему то не будет удалена.

    проведение осуществляется программно, т.е. доведение при открытом документе.
  6. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    баг где-то в коде, юзай отладчик.
  7. TopicStarter Overlay
    bvv79
    Offline

    bvv79

    Регистрация:
    31 мар 2008
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    юзаю, условие выполняется, оператор удаления строки проходит, а по факту через одну удаляются.
    типа вроде удаляется 1-я строка, идет подвижка табличной части, 2-я строка становится 1-й, потом цикл завершается и счетчик указывает на вторую строку, а на самом деле это 3-я.
  8. bob
    Offline

    bob Опытный в 1С

    Регистрация:
    7 май 2008
    Сообщения:
    386
    Симпатии:
    0
    Баллы:
    26
    перебор строк начинай с последней строки, а не с первой, тогда сдвигаться не будет и.
  9. TopicStarter Overlay
    bvv79
    Offline

    bvv79

    Регистрация:
    31 мар 2008
    Сообщения:
    32
    Симпатии:
    0
    Баллы:
    1
    не зная механизма, не решить проблемы и почему в документации 1с такая ситуация не оговаривается. по моему мнению механизм обработки строк сделал программистами 1с непрофессионально, строка сдвигается еще до оператора КонецЦикла. пришлось втыкать безусловный переход на начало условия, а по мне ипользовать логику условий на безусловных переходах - это на уровне бейсика.

    пс. боб, специально отсортировал список по возрастанию и написал
    код для перебора строк с конца на начало, а не работает такое в 1С.
  10. bob
    Offline

    bob Опытный в 1С

    Регистрация:
    7 май 2008
    Сообщения:
    386
    Симпатии:
    0
    Баллы:
    26
    не верю, давай сюда код
  11. WaRDeR
    Offline

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

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Да вроде размусолено это было тысячу раз....
    Когда нужно делать перебор данных с их изменением (это не только строк документа касается), то нужно использовать цикл с проверкой на количество элементов, а в цикле использовать методы типа "ПолучитьСтрокуПоНомеру"

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