Материалы курса «Подготовка к Аттестации по Платформе 8.2» — Раздел 1, задача 1.14 «Ячейки»

Это первая задача раздела «Оперативный учет» — задача 1.14 «Ячейки»

  • Изучите материалы задачи.
  • Вопросы, возникшие в ходе изучения этих материалов, задавайте в комментариях на текущей странице. Ответы преподавателя и комментарии других участников будут Вам доступны, только если Вы залогинены и у Вас есть доступ в Мастер-группу.
  • Общие вопросы по курсу (в т.ч. организационные) задавайте на стартовой странице.

Комментарий от Павла:

Это первая основная задача, в сквозной нумерации видеорешений ее номер 9 (с 1 по 8 Вы получили ранее).
Что с ней делать? Решать!

Я не могу, и не собираюсь, заставлять Вас решать задачи, но послушайте несколько аргументов в пользу того что самостоятельно заниматься нужно:
1. Вы получаете опыт, и в анализе текста задачи, и в использовании объектов.
2. Вы понимаете свои «слабые места».
3. Вы задаете мне вопросы! Анализируя вопросы я понимаю куда следует «дожать» для более классного результата. Ваши вопросы найдут отражение в следующих задачах и видеорешениях.
4. В конце концов скорость машинописи возрастает ;)

К сдаче аттестационного экзамена готовитесь именно ВЫ! Я только помогаю. Это ВАША работа!

К сожалению, у Вас недостаточно прав для дальнейшего просмотра.

Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.

Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.

Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.

Комментарии / обсуждение (194):

  1. Илья

    Добрый день!

    Нужно ли БлокироватьДляИзменения перед записью пустого набора записей, которую мы выполняем, чтобы исключить из остатков движения самого документа?

      • Илья

        Вопрос возник после прочтения Вашей статьи о методике оперативного проведения. Кусочек кода из нее:

        //16
        Если Режим = РежимПроведенияДокумента.Оперативный Тогда
        Движения.СтоимостьТоваров.Очистить();
        //17
        Движения.СтоимостьТоваров.БлокироватьДляИзменения = Истина;
        движения.СтоимостьТоваров.Записать();
        КонецЕсли;

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

        Приведенная Вами статья, похоже, прояснила ответ. Если разделение итогов включено — ставим данный маркер. Если выключено — смысла ставить его нет, т.к. при записи все равно будет наложена блокировка.

        Таким образом, на экзамене включаем разделение итогов (в каркасной не включено) и при записи пустого набора установка данного маркера будет не лишней. Я ничего не напутал?

        Кстати, в справке по данному свойству ни слова о разделении итогов, что только запутывает.

        • GROOVY

          «Таким образом, на экзамене включаем разделение итогов (в каркасной не включено) и при записи пустого набора установка данного маркера будет не лишней. Я ничего не напутал?» — наоборот, так и надо делать.

          О справке — это не ко мне.

  2. 87konstantin@mail.ru

    Здравствуйте, Павел. Скажите какой вариант указания параметров более эффективный:
    1) Запрос.УстановитьПараметр(«Момент»,МоментВремени());

    2)Запрос.УстановитьПараметр(«Момент», ?(Режим = РежимПроведенияДокумента.Оперативный,Неопределено,МоментВремени()));

    • GROOVY

      Если режим проведения будет оперативный, то без разницы, система все равно возьмет основные итоги.

  3. semenov

    Здравствуйте. Почему, в запросе где считаем отриц. остатки, при неоперативном проведении устанавливается просто момент времени как параметр без включения границы?

    • GROOVY

      Возможно опечатка. Приведите код модуля.

  4. CeHbKA

    Павел, здравствуйте!
    2 вопроса по задаче 1.14

    1 — Контроль остатков по новой методике (когда сначала записываем потом читаем) в задачах типа этой можно не реализовывать?
    По сути, у Вас в решении контроль остатков сделан по старой методике (группируем ТЧ и присоединяем остатки). Я сначала тоже так сделал, но потом подумал, что контроль остатков по новой методике нужно применять во всех задачах ОУ и добавил ещё один рег.накопления (Номенклатура — измерение, Количество — ресурс) и сначала делаю контроль остатков по новой методике, лишь потом перехожу к списанию по ячейкам (регистр накопления аналогичен вашему).
    Итого получилось два регистра накопления.
    Такое решение считается ошибкой?

    2 — Зачем в запросе при выводе печ.формы документа Вы сначала группируете ТЧ этого документа, а потом присоединяете движения? Почему нельзя просто вывести движения документа, ведь там уже все рассчитано?

    • GROOVY

      1. Думаю в этой задаче это будет излишним. Однако, если Вы считаете это правильным, при сдаче укажите явно причину по которой создали регистр.
      2. Цену нужно получить.

  5. Zhuravlik

    Доброго дня) Наткнулся на ситуевину, помогите решить? Оперативный документ введен и проведен задним числом — 15.03.2014, есть движения по регистру. Я его провожу на 17.03.2014, сегодня 20.03.2014.
    При этом для установки параметра ВТ для запроса к остаткам использую вот такой код:

    МоментИтогов = Новый Граница(МоментВремени(), ВидГраницы.Исключая);

    Однако запрос получает остаток по этому документу. В отладке вижу МоментВремени() = 17.03.2014, а не 15.03.2014. Можно ли получить в этом случае адекватные данные не перезаписывая движения документа (не очищая)?

      • Zhuravlik

        Я эту статью наизусть знаю, там ответа на мой вопрос нет. Вы там иллюстрируете работу с оперативными документами, и записываете очищенный набор движений при оперативном проведении.
        А у меня возникла ситуация, из которой следует что так очищать нужно каждый раз независимо от того в каком режиме документ проводим.
        Тут проведение неоперативное, я не понимаю почему дата документа в момент проведения новая, а не старая, и на какой момент времени в таком случае получать итоги? Через доп. параметры передавать в обработку проведения флаг, что документ неоперативно перепроведен на большую дату? У вас в курсе ни одной задачи нет по опер. учету где эта проблема обсуждается.
        Кроме того, документы где оперативное проведение запрещено ведут себя точно также.

        • GROOVY

          Отвечаю на вопрос еще раз:
          «Можно ли получить в этом случае адекватные данные не перезаписывая движения документа (не очищая)?» — НЕТ.

          Оперативное и не оперативное проведение на логику чтения остатков при проведении не влияет.

          МоментВремени(), ТекущаяДата(), «Сегодня» и точка оперативного проведения могут быть абсолютно разными. «Сегодня» может быть 27.03, ТекущаяДата() 29.03, МоментВремени() 30.03, а точка оперативного проведения 01.04. При этом документ может проводить оперативно.

          «У вас в курсе ни одной задачи нет по опер. учету где эта проблема обсуждается.» — какая проблема?

          • Zhuravlik

            Есть проведенный документ. Дата документа — 15.03.2014. Идем в отладчик, точка останова в обработке проведения. Открываем документ, меняем дату на 17.03.2014, проводим документ. В точке останова дата — 17.03.2014, а не 15.03.2014.
            Таким образом если остатки нужно получить на дату документа, без его движений, то получение границы как «МоментИтогов = Новый Граница(МоментВремени(), ВидГраницы.Исключая)» — не катит. Не катит потому что МоментВремени() будет равен новой дате, и остатки возьмутся все-равно включая движения документа.
            Если считать, что любой документ можно перепровести на любую дату, это значит что при проведении ВСЕГДА нужно очищать движения, и записывать пустой набор перед получением остатков. Или иметь какой-то флаг, из которого узнавать перепроведен ли документ будущей датой. Эта проблема.
            Вы движения очищаете с *перезаписью* только когда режим документа оперативный. В противном случае берете остатки на границу документа. Мне непонятно, почему не очищать их с перезаписью всегда.

            • GROOVY

              Можно их очищать всегда, можно передавать в обработку проведения признак изменения даты/времени документа, но у нас есть в условиях сертификации «Данные задним числом не вводятся, а могут быть неоперативно перепроведены», расцениваю эту фразу как раз как признак того что дата документа в сертификационных задачах не меняется.
              В реальной жизни я бы посоветовал всегда очищать старые движения, если они присутствуют, при перепроведении документа.

  6. Zhuravlik

    Павел, здравствуйте, подскажите про условие в задачах: «Считается, что документы задним числом не вводятся, но старые документы могут неоперативно перепроводиться.»
    Значит ли это, что необходимо предусмотреть проверку остатков только для оперативного режима проведения?
    Вообще, как относится к этому в задачах? Вы в уроках делаете контроль остатков для обоих режимов, что не совсем верно насколько я понимаю суть оперативного проведения, но видимо допустимо.
    Например, для списания себестоимости так и так нужно остатки получать, там без этого контроля никуда — это понятно.
    Но если нужно просто отследить отрицательный остаток, следует ли делать это в оперативном режиме ТОЛЬКО?
    Просто, если нельзя, то не допонимаю смысл условия.

    • GROOVY

      Если документы могут неоперативно перепроводиться, значит там могут внести изменения, и в табличную часть и дату поменять. Не делать контроль при неоперативном проведении — это как-то не правильно.

      • Zhuravlik

        Вот что 1С говорит по этому поводу:
        http://its.1c.ru/db/metod81#content:2746:1
        «Однако, если документ вводится задним числом, то есть в момент его ввода известно, что такое событие уже произошло в жизни предприятия, например, конкретный товар уже отгружен клиенту, необходимость в таких проверках отпадает и нужно просто отразить в учете произошедшее событие. В этом случае проведение документа только фиксирует событие, а не участвует в его формировании.»
        —
        Но раз вы считаете свой подход верным, и его принимают на экзамене, то фразу про неоперативное проведение в тексте задачи буду считать просто попыткой сбить с толку.

  7. magefred

    Подскажите какие настройки конфигуратора у вас в видео примере?
    например:
    1. Запрос без знака «|» и «&Ссылка» — голубым цветом
    2. А при вводе процедур и прочих операторов у вас интересное контекстное меню, явно нестандартное

    если это шаблоны выложите пожалуйста или на почту magefred@live.ru

  8. Errorpro

    Добрый вечер всем. Павел, у меня возникло несколько вопросов:
    1. Можно ли отключать оперативный режим проведения у документов, если в задаче это явно не сказано. Как в вышеописанной задаче.
    Где-то читал что можно отключать оперативное проведение в любой задаче, чтобы не уделять внимание на режим проведения.
    2. Я привык устанавливать блокировку используя выборку из запроса, который выбирает данные из ТЧ и группирует их, и использую МВТ для дальнейшей работы с результатом запроса. Т.е. в каждой задаче я создаю МВТ, это не лучше нежели устанавливать блокировку используя ТЧ как ИсточникДанных для блокировки? Или наоборот, создавать МВТ напрасно не нужно?

    • GROOVY

      Добрый.

      1. Лично для меня оперативное проведение документов довольно мутная штука, я не могу придумать ни одной задачи где удалось бы в реальных условиях, воспользоваться преимуществами этого режима. Но в сертификационных задачах нужно его оставить включенным для документов оперативного учета (в большинстве случаев). Ели найдете где читали — поделитесь ссылкой.
      2. С точки зрения сертификации — все равно. Чаще всего данные выбираемые запросом так или иначе понадобятся нам неоднократно, так что лучше запросом.

      • Zhuravlik

        http://its.1c.ru/db/metod81#content:2746:1, последний абзац: «Следует заметить, что, как и сам механизм проведения, оперативное проведение является только предлагаемой платформой методологией. Разработчик прикладного решения может использовать ее, или нет для каждого вида документов по своему усмотрению. Однако, использование стандартной методологии в прикладных решениях для тех задач, для которых она предназначена, позволяет, с одной стороны, решить задачу достаточно быстро, а с другой стороны, делает создаваемое решение понятным для любого разработчика, которому будет необходимо в нем разобраться.»

  9. vpetunin

    Здравствуйте, Павел. Задача 1.14 из сборника несколько отличается от той которая решается у вас, в части вида печатной формы: заполнение поля Стеллаж в виде «Ст. №2» и колонки Ячейка как «Яч. 2/18». Каким образом через СКД правильно реализовать вывод печатной формы именно с таки представлениями а не как решено у вас в задаче в виде Стеллаж 2 и Ряд 18. Спасибо.

    • GROOVY

      Строго придерживаться вида отчетов не нужно.

  10. soft-1c@mail.ru

    Здравствуйте, Павел.
    Во всех задачах по опер учету, когда пишете условие на проверку остатка, присваиваете отказу истину и потом делаете еще одно условие на проверку истины в отказе и продолжаете итерацию. Почему вы сразу в первом условии не продолжаете? Вдруг за лишнее условие в цикле препод балл снизит? :)

    • GROOVY

      Странный вопрос. Флаг «Отказ» он на весь контекст процедуры, а не только на условие. На кодинг внимание обращают и докапываются, только в том случае если что-то не так с решением.

  11. Ambit

    В вводных видео вы говорили, что в задачах, где присутствует понятие «валюта» в документах при выборе или изменении валюты и при открытии самого документа, нужно показывать пользователю текущий курс валюты, чтобы при перепроведении документа в случае, если курс изменился, пользователь видел, что изменятся и результаты проведения. В задачах с учетом ед. измерения нужно делать так же? Продается, например, 1 пачка (в пачке 10 шт.). В табличную часть документа вводить еще одну колонку с количеством в штуках?

    • GROOVY

      Я отвечу двумя фразами:
      1. Да, документ должен содержать все данные которые необходимы для его проведения, иначе, при перепроведении, концов не найдешь.
      2. На сертификации есть два очень важных критерия: правильность решения; время решения. Не тратьте время на идеальность.

  12. vava32

    Добрый день!
    По задаче 1,14 ячейки возникли вопросы.
    1.Будет ли потеря оценки при использовании конструктора движений
    без оптимизации(с дублированием номенклатуры в строках ТЧ)?
    Я помню реакцию преподавателя в такой ситуации на моей неудачной сдаче.

    2.Как может быть оценено отсутствие автоматического создания артикула?
    Фактически условие(через код как артикул) выполнено,если нужно проверить
    умение на форме создавать колонку с данными, не являющими реквизитами ТЧ.
    Может ли здесь ожидаться решение с регистром сведений?

    3.Годится ли решение через конструктор печати при создании
    печатной формы?

    • GROOVY

      1. Дубли строк — плохо. Да и не понятно как Вы решаете задачу, если там при проведении дубли появляются.
      2. Артикул = Код в справочнике. Задача вывести код справочника в форме документа, не добавляя реквизит табличной части документа.
      3. Почему нет?

      • vava32

        Вопрос 1 относится к ситуации проведения документа «Поступление товара» и комментарию в видео после сформированных конструктором движений, «что можно сгруппировать табличную часть, но смысла большого я в этом не вижу».

        • GROOVY

          Поступление можно лепить конструктором. На сертификации. В реальных задачах я все же рекомендую по максимуму оптимально делать записи в регистрах.

  13. fominos

    Нужно ли индексировать измерение «Номенклатура» регистра «ОстаткиТоваров» на уровне конфигурации? Каковы плюсы и минусы индексации измерений регистров накопления?

    • GROOVY

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

  14. Wesley

    Добрый день! Если в задаче не оговорено прямо что нужно контролировать остатки с сообщать пользователю о нехватке, то нужно ли это реализовывать? Будет ли снижена оценка при отсутсвии данного механизма?

    • GROOVY

      Думаю, что 3 строки кода контроля остатков не сильно увеличат время решения, зато Вы точно будете знать, что за это Вам оценку не снизят.

  15. dimqa

    Почему в задачах по оперативному учету мы используем блокировки, а в похожих задачах по бух учету — нет. (Для расчетных задач более менее понятно, там 1-2 операции за месяц и особо не пересекаются)

    • GROOVY

      И в бухучете нужно ставить блокировки. Не во всех видео я их устанавливаю, так как действие однотипное. Об этом в описании курса указано.

  16. hame1e00n

    Зачем для команды печати формы ставим флажок «Изменяет данные»? Ведь насколько я понял установка этого флажка приводит к установке модифицированности формы при использовании данного элемента управления? Или тут какой-то другой смысл?

    • GROOVY

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

      • Александр

        Прежде всего описание данного свойства из справки:
        «Если выполняется команда, для которой свойство установлено в Истина, то после ее выполнения форма перечитывает данные.»

        На платформе 8.3.5.1146 проводил проверку с этой галкой. В независимости от значения флажка, измененный документ будет записан и проведен (если до этого был проведен).

        Различие проявляются в том, что если мы установим данный флажок и несколько раз подряд вызовем процедуру печати, то каждый раз после завершения команды добавляется +1 серверный вызов. Т.е. форма будет перечитывается.

        Насчет модифицированности — это скорее к элементам управления формы и их флагу «изменяет данные».

  17. Elya

    Павел здравствуйте!
    При написании кода вы пишите Режим= реж… и тут же выскакивает окошко с подсказкой всех функций, которые может принимать данная переменная. Это что?

    • Elya

      По умолчанию этого же нет в конфигурации.

    • GROOVY

      Здравствуйте. Это дополнение «Снегопат». Гугл поможет с подробностями.

  18. Elya

    Павел спасибо за ответы. Следующий вопрос:
    Задача 1.6 в условии д.б.реализована продажа товара, отсутствующего на складе(то есть с отрицательными остатками), если стоит разрешение в учетной политике. Получается при проведении документа Приходная Накладная нужно еще проверять, существует ли документ списания этого товара? Или как то это осуществить по другому?

    • Elya

      И что означает предложение «Документы задним числом вводить нельзя, но можо открыть существующий документ и перепровести его»

    • GROOVY

      Не припомню что мы задачу 1.6 разбирали…

      При проведении приходной нужно смотреть отрицательные остатки и пересписывать их с правильной себестоимостью.

  19. Elya

    Какой алгоритм, если еще вдобавок к париям FIFO, LIFO, добавляется партия по СРЕДНЕЙ? Это относится к задаче 1.5.

    • Elya

      Нужно при изменении партии на среднюю, поставить в расход партии оставшиеся, и поставить их же на приход без указании партии?

    • GROOVY

      Есть 2 варианта решения.
      1. Два независимых регистра, один с партиями, второй без (мне не нравится такой вариант)
      2. Измерение «Партия» в регистре можно сделать не обязательным к заполнению и при учете «по среднему» не заполнять его. При переходе с партионного учета на не партионный производить списание всех партий на пустую, либо же наоборот с пустой на первую.

      • dimqa

        Всё таки не понятно как перейти с «по среднему» к FIFO/LIFO ведь когда мы перейдем на среднюю, мы спишем все партии и они пропадут

  20. maltsev_80

    Добрый день, Павел!
    Не знаю куда написать еще,
    добрался до задачи 1.19, после разбора задачи возникли вопросы.
    1. Есть ли она на экзамене?
    2. Есть ли оптимальное решение?
    Спасибо!

    • GROOVY

      1. В сентябре 2012 была. Сейчас не могу сказать.
      2. Любой код можно оптимизировать хотя бы на строку. У нас цель в 3 часа решить 3 задачи с результатам выше «удовлетворительно».

  21. Elya

    В печатной форме как добиться вывода ячейки вида «Яч.2/18»?

    • GROOVY

      Это где у нас такое? И что конкретно Вы хотите вывести?

      • Elya

        В задаче 1.14 как раз в ячейках требуется вывести рисунок прилагаю

          • Elya

            В билетнике вместо номера стеллажа в первой строке вашей таблицы вашей таблицы записывается «Ст.№10» , номера ячейки «Яч.10/3».

            • GROOVY

              Если важно оформление (а оно не важно), то выводите данные не СКД, а через макет, там оформление можно задать любое.

  22. SergeyKiyaev

    Добрый день. Задачу я сделал. Но ни как не могу понять почему у меня движения по регистру Товары формируются при проведении со второго раза. Первый раз провожу — ничего, опять провожу — есть движения.

    • GROOVY

      Видимо что-то перемудрили с удалением движений. Какие настройки у документа? Удалять автоматически? Записывать модифицированные?

  23. ilya_i

    Вопросы по Вашему решению.
    1. Как быть с тем что для формирования движений документа Вы использовали данные из регистра. Не снизят ли бал?
    2. Если все-таки создать у документа еще одну табличную часть где зафиксировать из каких ячеек списался товар, не будет ли это ошибкой?
    3. Не проще ли было наложить блокировки в запросе. Если это было бы ошибкой, то насколько критична такая ошибка?

    • GROOVY

      1. А от куда их еще брать?
      2. Набор записей принадлежащий документу чем не устраивает?
      3. «Для ИЗМЕНЕНИЯ» ? Это будут не упр блокировки. Но при использовании этого способа (по слухам от коллег) балл не снижают. Главное блокировать. Ну и учтите что свойства конфигурации и объктов должны поддерживать такие блокировки.

      • ShulgOlya

        Насчет первого пункта: возможно имелось ввиду, что данные брались из 
        физической таблицы регистра — правильно ли это? Может быть лучше будет 
        использовать таблицу оборотов? 

        • GROOVY

          Если взять таблицу оборотов, то ее придется «развернуть» до записи. Как следствие система произведет выбор данных из все той же реальной таблицы регистра.

  24. Мария

    А когда будет видеорешение  по 9 ой задаче?

    • GROOVY

      Я передам видео для кодирования завтра. Завтра — послезавтра будет опубликовано.

  25. ilya_i

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

    • GROOVY

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

      • Андрей Буравов

        Такое требование распространяется на все задачи, но вы в первых задачах к этому курсу опускали «Цену» в табличной части. Значит если в самой задаче явно где то показано поле «Цена» — то его нужно добавлять, а если нет, то можно сделать только «Количество» и «Сумму»?

        • GROOVY

          Я отвечал на комментарий «свернуть прямо в табличной части». наличие или отсутствие реквизита «Цена» в табличной части никак не повлияет на требование к учету дублей строк.

  26. Александр Кононов

    Вариант решения
    Создаем :
    -Независимый Регистр сведений :Измерения -стеллаж,ячейка ,Значение-номенклатура;
    -Справочник ХарактеристикиНоменклатуры подчиненный Справочнику
    Номенклатура.
    — План Видов Характеристик ,значения свойств -стеллаж,ячейка.
    -Регистр накопления: Измерения: Номенклатура,Характеристика Номенклатуры,показатель -количество;
    Вопрос :
    1.)возможно ли программное создание Характеристики Номенклатуры.
    2.)если да — то в обработке какого события-или это не принципиально.
    3.)где осуществлять контроль существует ли Характеристика для номенклатуры,есть нюансы  в приходе и расходе.
    4.) Сумму (стеллаж+ячейка) — записывать в справочнике (Характеристики Номенклатуры) или получать запросом
      Эффект вместо 3 измерений -2
    Остальное все Вы рассказали.

  27. skyther

    сделал на одном регистре с измерениями: номенклатура (справочник), ряд, ячейка (числа). Процедура проведения: http://irc1c.ru/1297/ Печать сформировал конструктором и немного подправил.
    вопросы:
    стоит ли для блокировки создавать отдельный запрос по тч? (у вас в видео так сделано) или можно просто указать таб часть? как на это посмотрят?
    в регистре ОстаткиНоменклатуры выставил галки нидексации у всех измерений (не вполне понимаю какой должен быть порядок) это нормально для примитивных типов?

    • GROOVY

      Можно указать и таб часть. Но у меня в задаче уже получена сгруппированная таб часть запросом, грех не воспользоваться.
      Индексация измерений которую Вы указали повлияет на скорость извлечения данных из реальной таблицы регистра (движений), в задачах нет в этом необходимости.

      • skyther

        т.е. ещё один запрос выполнится быстрее,  чем блокировка по не свернутой тч?
        ещё в задаче ничего не было сказано про цены, так что у меня они задаются в расходной накладной. это нормально?

        • GROOVY

          зависит от количества одинаковых товаров в ТЧ.

          У меня цены так же задаются в документе.

  28. Zulfiya

    можете мне помочь, я неуверена где в моем проведении надо вставлять блокировки и для чего его туда надо всатвлять
        Движения.ОстатокТовара.Записывать = Истина;
        Движения.ОстатокТовара.Очистить();
        Запрос =Новый Запрос;
        Порядок = ?(СпособОтгрузки = Перечисления.СпособОтгрузки.Доставка, «УБЫВ», «ВОЗР»);
        Запрос.Текст = «ВЫБРАТЬ
                       |    РасходнаяТовары.Номенклатура,
                       |    СУММА(РасходнаяТовары.Количество) КАК Количество
                       |ПОМЕСТИТЬ ДокТЧ
                       |ИЗ
                       |    Документ.Расходная.Товары КАК РасходнаяТовары
                       |ГДЕ
                       |    РасходнаяТовары.Ссылка = &Ссылка
                       |
                       |СГРУППИРОВАТЬ ПО
                       |    РасходнаяТовары.Номенклатура
                       |;
                       |
                       |////////////////////////////////////////////////////////////////////////////////
                       |ВЫБРАТЬ
                       |    ДокТЧ.Номенклатура КАК Номенклатура,
                       |    ОстатокТовараОстатки.Ячейка,
                       |    ОстатокТовараОстатки.Стелаж,
                       |    ЕСТЬNULL(ОстатокТовараОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток,
                       |    ОстатокТовараОстатки.Ячейка + ОстатокТовараОстатки.Стелаж КАК Расстояние,
                       |    ДокТЧ.Количество КАК Количество,
                       |    ДокТЧ.Номенклатура.Представление
                       |ИЗ
                       |    ДокТЧ КАК ДокТЧ
                       |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстатокТовара.Остатки(
                       |                &Дата,
                       |                Номенклатура В
                       |                    (ВЫБРАТЬ
                       |                        ДокТЧ.Номенклатура КАК Номнклатура
                       |                    ИЗ
                       |                        ДокТЧ)) КАК ОстатокТовараОстатки
                       |        ПО (ОстатокТовараОстатки.Номенклатура = ДокТЧ.Номенклатура)
                       |
                       |УПОРЯДОЧИТЬ ПО
                       |    Расстояние » + Порядок + »
                       |ИТОГИ
                       |    СУММА(КоличествоОстаток),
                       |    МАКСИМУМ(Количество)
                       |ПО
                       |    Номенклатура»;
        Запрос.УстановитьПараметр(«Дата»,МоментВремени());
        Запрос.УстановитьПараметр(«Ссылка»,Ссылка);
        Результат = Запрос.Выполнить();
        Если Результат.Пустой() тогда
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = «на складе нет выбранного товара»;
            Сообщение.Сообщить();
            Отказ = Истина;
            Возврат;
        КонецЕсли;
        ВыборкаГрупп = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыборкаГрупп.Следующий() цикл
            НеХватает = ВыборкаГрупп.КоличествоОстаток — ВыборкаГрупп.Количество;
            Если НеХватает < 0 тогда
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = «Мало товара » + ВыборкаГрупп.НоменклатураПредставление + » не хватает: » + (-НеХватает);
                Сообщение.Сообщить();                                                                         
                Отказ = Истина;
            Иначе
                Количество = ВыборкаГрупп.Количество;
                Выборка = ВыборкаГрупп.Выбрать();
                Пока Выборка.Следующий()цикл
                    Списать = Мин(Количество,Выборка.КоличествоОстаток);
                    Движение = Движения.ОстатокТовара.Добавить();
                    Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                    Движение.Период = Дата;
                    Движение.Ячейка = Выборка.Ячейка;
                    Движение.Стелаж = Выборка.Стелаж;
                    Движение.Номенклатура = Выборка.Номенклатура;
                    Движение.Количество = Списать;
                    Если Количество = Списать тогда
                        прервать;
                    Иначе
                        Количество = Количество — Выборка.КоличествоОстаток;
                    КонецЕсли;
                КонецЦикла;
            КонецЕсли;
        КонецЦикла;

    • GROOVY

      Блокировку нужно вставлять до чтения данных из регистра.
      Блокировку нужно использовать для того чтобы не допустить «грязное чтение» данных другими сеансами.

  29. lipatov

    Добрый день!
    В каркасную конфу добавил :
    РегистрНакопления ОстаткиНаСкладе( изм: Номенклатура, Ряд(число), Стеллаж(число); ресурс: Количество и Сумма).
    документ Приходная(табчасть: номенклатура,  ряд, стеллаж, количество, сумма). При проведении проверял есть ли в этой ячейке товар на данный момент.
    Документ Расходная(реквизит — Доставка; табчасть — номенклатура, артикул(в форме по запросу получал код), количество, сумма).  При проведении использовал материал из видео по второй задаче. Создавал временную таблицу, затем соединял с РегистромНакопленияОстатки(&МоментВремени, Ном из временной таблицы) , добавил поле СуммаЯчеек равное сумме ряд и стеллаж, затем всё  собрал в итогах по номенклатуре, упорядочивал по полю СуммаЯчеек.
    Указал два параметра, затем формировал движения.
    Затем в форме Расходной добавил команду, которая формирует ПФ. В модуль команды добавил процедуру, в которой с помощью конструктора запроса с обработкой результата получил данные для записи (все поля брал прям из таблицы движения РегистрНакопления с параметром по регистратору).
     
     

  30. Zulfiya

    А в этой задаче нужноиспользовать блокировки? Или ихиспользование зависит от варианта рещения?

    • GROOVY

      В любой задаче надо использовать блокировки.

  31. Zulfiya

    нет в расходной вообще не будут отображаться поля стелаж и ячейка, только количество, а стелаж и ячейка проставятся после проведния.

  32. Zulfiya

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

    • GROOVY

      Нет. Они подбираются при проведении документа. Системой, а не пользователем.

  33. arnoldlayne

    Печатная форма — это отдельный отчет с параметром Ссылка.РасходнаяНакладная? 

    • GROOVY

      Не принципиально. Я делал с использованием команды документа.

  34. zse63

    На мой взгляд нужен справочник  ЯчейкаСклада(реквизиты Стелаж, Ячейка).
    Контроль правильности заполнения склада возлагаем на кладовщика.
    Регистров — 2:
    1)Регистр остатков Размещение товаров (Измерения — ЯчейкаСклада, Номенклатура, Ресурсы -Количество) . Нужен для проверки — хватает или нет номенклатуры и определения приоритета при списании номенклатуры из ячеек.
    2) регистр ПродажиЯчеек(оборотный) (Измерения — Номенклатура, ЯчейкаСклада, Ресурсы — Количество и Сумма). Этот регистр будет нужен, чтобы печатать форму в любое удобное время.

  35. melis

    Всем доброго времени суток.

    Для решения задачи созданы справосники Номенклатура (Реквизит Артикул), Стелажи (код справоника числовой), Ячейки (код числовой). Предполагается для простоты, что все стелажи содержат одинаковое число ячеек. Создано перечисление СпособыОтгрузки (Доставка, Самовывоз). Создан РегистрНакопления остаточный ОстаткиСклада (Измерения: Номенклатура, Стелаж, Ячейка — типы соответствующие; Ресурсы: Количество и Сумма).
    Документ ПоступлениеНаСклад имеет табличную часть с реквизитами: Номенклатура, Стелаж, Ячейка, Количество, Сумма — создает движения прихода в РН.ОстаткиСклада. Документ РеализацияТоваров — по структуре реквизитов копия поступления, но добавлен реквизит документа СпособОтгрузки (тип ПеречислениеСсылка.СпособыОтгрузки)… примерно так.

    • Андрей

      А зачем в Справочнике «Номенклатура» нужен реквизит «Артикул»? Чем Вам код не подходит? Какой смысл создавать доп реквизит?

      И затем: Если создавать явно справочники Стеллаж и Ячейка, то у Вас получается изначально сильно избыточная структура (да ещё и необходимость отслеживать, что не вылазите за границу созданных стеллажей и ячеек как элементов справочников).

      >Создан РегистрНакопления остаточный ОстаткиСклада
      >(Измерения: Номенклатура, Стеллаж, Ячейка – типы соответствующие; Ресурсы: Количество и Сумма).

      А как Вы в этой структуре различаете, что у нас «неделю назад» данная ячейка была занята таким-то количеством товара, а уже «вчера» иным товаром и иным количеством? Вы что итоги по ячейкам пересчитываете на каждый момент времени постоянно (для актуализации итогов)?

      • melis

        Можно, конечно, и кодом для упрощения обойтись, НО сработала привычка (долгая работа с ТиС… не более того… Часто Артикул разныхпоставщиков (да и одного и того же) отличаются из-за различный партий производящий предприятий.
        Ячейку — рассматривала как ряд на стелаже. Задание было понято, что одну ячейку можно сложить и разный товар… главное списать не более чем было положено в ячейку (ряд) на стелаже.

        • melis

          И идея двух справлчников (Стелажи и Ячейки) — просто чтобы получить сумму их кодов при отгрузке с доставкой и без.

          • Андрей

            Я о там, что может вместо двух справочников использовать один регистр сведений (с измерениями Стеллаж и Ячейка. Просто какой смысл заморачиваться с объектными данными (элементами двух справочников) если тоже самое можно
            получить одной необъектной записью регистра сведений?

            Т.е. делаете запрос (срез последних на заданный МоментВремени) в данному регистру сведений и получаете нужное сочетания Стеллаж и Ячейка (измерения) для заданного товара (ресурс). Согласны?

            • melis

              Согласна, что лучше использовать одно измерение для ячейки, чем два…

              а вот справочник или регСведений это будет — на выбор… как нравится…

              про срез послдних — смысла не вижу… нам нужна сумма номпера ряда и стелажа ячейки — это просто сортировка прямая или обратная от призанака  споссоба отгрузки

      • GROOVY

        Думаю, что нет.
        Вы беспокоитесь по поводу видеорешения? Не беспокойтесь, на днях будет. Но я рекомендую примкнуть к дискуссии, это мегаполезно.

        • briz

          Подозрительная тишина в какой то момент воцарилась. Может я что то упустил?Дискуссия только в этой ветке идет? Посмотрел  решение первых 2 задач, после этого вроде никаких вопросов не должно быть по решению данной задачи, единственное,  отчет из документа как то вызывать надо и параметры инициализировать, но и это решилось

          • GROOVY

            И какой вариант формирования отчета Вы выбираете? Я вот рекомендую с помощью СКД делать.

            • briz

              Я сделал на скд так:
              команда печать:
              &НаКлиенте
              Процедура Печать(Команда)
                  ПараметрыФормы    =    Новый Структура;
                  ПараметрыФормы.Вставить(«Регистратор»,Объект.Ссылка);
                  ПараметрыФормы.Вставить(«СформироватьПриОткрытии»,Истина);
                  ОткрытьФорму(«Отчет.Отчет1.Форма.ФормаОтчета»,ПараметрыФормы);
              КонецПроцедуры
              форма отчет:
              &НаСервере
              Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
                  
                  //Вставить содержимое обработчика

                  Если Параметры.Свойство(«Регистратор») Тогда
                      Отчет.Регистратор    =    Параметры.Регистратор;
                  КонецЕсли;
                  
              КонецПроцедуры
              модуль отчет:
              Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
                  // Вставить содержимое обработчика.
                  пРегистратор = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(«Регистратор»);
                  п_польз_Регистратор    =    КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(пРегистратор.ИдентификаторПользовательскойНастройки);
                  Если п_польз_Регистратор <> Неопределено и ЗначениеЗаполнено(Регистратор) Тогда
                      п_польз_Регистратор.Использование    =Истина;
                      п_польз_Регистратор.Значение    =    Регистратор;
                  КонецЕсли;
              КонецПроцедуры

  36. Игорь Грыша

    1. Нужно ли вообще использовать склад? Вроде в тексте задачи ничего про складской учет не сказано. А я смотрю все почемуто его используют.
    2. Нужно ли создавать для хранения ряда/стеллажа справочник Ячейки(для упрощения заполнения поступления товаров, как в Вашем примере с ед. измерения), или можно просто задавать числа в табличной части документа поступления товаров

    • GROOVY

      1. Я тоже не вижу в задаче многоскладского учета.
      2. А как Вам удобнее. Я бы делал просто числами.

      • skyther

        а как на аттестации посмотрят на решение с числами, а не справочником?

        • GROOVY

          Нормально посмотрят. Что за миф такой что примитивные типы не могут быть в измерениях регистров?! Главное чтобы не составной включающий примитивный, тогда все плохо с индексацией.

      • Игорь Грыша

        Ок, хорошо. Тогда еще вопрос. Зачем тогда в Вашем видеоуроке Вы делали подбор единицы измерения и заполнение реквизита коэффициент, если можно упростить и просто вводить число в поле «коэффициент»? Или есть какаято черта этого упращения?

        • GROOVY

          В каком видео можно было сделать примитивным тип измерения?

  37. Vadim Kashirny

    Сделал так:
    1. Создал справочник «Ячейки» с реквизитами «Номер стеллажа», «Номер ряда», «Сумма ячейки». При записи вычисляется сумма ячейки и формируется наименование  (типа «Ячейка 2/18»).
    2. В регистре накопления «Остатки товаров» измерения:
       — Номенклатура
       — Ячейка 
    Ресурсы:
       — Количество
    Реквизиты:
       — Цена
    3. При оприходовании явно указывается ячейка.
    4. Списание происходит перебором выборки с обходом по группировкам
    5. Печатная форма формируется  на основании физической таблицы регистра, где регистратор = Ссылка.

    • Андрей

      Вопрос был, но без ответа. Если (для ускорения, упрощения, чтобы не делать чего не просят в задаче) не делать форму документа «Продажи товаров»,  а в ней не делать подстановку коэффициента единицы измерения при выборе пользователем единицы измерения, то будет ли за это снижен балл на экзамене?

      • GROOVY

        Не выдумывайте себе заданий. Не просят — не надо делать.

  38. melis

    Делать, конечно, буду… НО регистрация плейера пришла только 18 числа + было время потрачено на запуск его с изображением, поэтому не успела просмотреть все 8 разборов, тем более прорешать…

    • A.Boyko

      Достаточно просмотреть 2 первых серии. Я после 4 свернул просмотр и сел решать, пока в голове что-то держится об оперативном учете — лучше закреплять практикой. имхо, конечно.

      • melis

        помимо просмотра, хотелось бы эти задачи самостоятельно прорешать… ;)

  39. Nikolay

    Здравствуйте, Павел. Исходя из Ваших замечаний, что не нужно ничего усложнять самому, вывод печатной формы реализовал с помощью конструктора выходной формы и макета типа «Табличный Документ». Сформированный конструктором код перенес в ОбработкуПроведения, т.к. логика даных процедур очень похожа (два одинаковых цикла). Но мучает вопрос, может я слишком сильно всё упростил и печатную форму нужно было делать на СКД? :)

    • GROOVY

      Можно и СКД. Там пара строк кода будет. Я в видеорешении покажу.

  40. Андрей

    Добрый день! Очень плохо, если в регистре «ОстаткиНоменклатуры» измерения «Стеллаж» и «Ячейка» будут иметь числовой тип?

    • GROOVY

      Добрый!

      Нет не плохо. Главное не составной с примитивным чтобы.

  41. DenisG

    Если я правильно понял задачу, сутью ее являлось «правильное» проведение документа реализация по регистру «остатки товаров», а печатная форма должны была лишь отразить проведение документа по этому регистру. Для решения задачи я создал регистр остатков с измерениями Номенклатура (ссылочный тип), склад (ссылочный тип), стелаж (числовой тип), ячейка (числовой тип) и ресурс (числовой тип). В обработку проведения документа реализации прописал следующий код .
                    Движения.ОстаткиТоваров.Записывать = Истина;
                    Движения.ОстаткиТоваров.Очистить();
                    Движения.ОстаткиТоваров.Записать();
     
                   
                    Запрос = Новый Запрос(«ВЫБРАТЬ
                                          |       РеализацияТоваровТовар.Номенклатура КАК Номенклатура,
                                          |       СУММА(РеализацияТоваровТовар.Количество) КАК Количество,
                                          |       РеализацияТоваровТовар.Ссылка.Склад
                                          |ПОМЕСТИТЬ ВТ
                                          |ИЗ
                                          |       Документ.РеализацияТоваров.Товар КАК РеализацияТоваровТовар
                                          |ГДЕ
                                          |       РеализацияТоваровТовар.Ссылка = &Ссылка
                                          |
                                          |СГРУППИРОВАТЬ ПО
                                          |       РеализацияТоваровТовар.Номенклатура,
                                          |       РеализацияТоваровТовар.Ссылка.Склад
                                          |
                                          |ИНДЕКСИРОВАТЬ ПО
                                          |       Номенклатура
                                          |;
                                          |
                                          |////////////////////////////////////////////////////////////////////////////////
                                          |ВЫБРАТЬ
                                          |       ОстаткиТоваровОстатки.Номенклатура КАК Номенклатура,
                                          |       ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток,
                                          |       ОстаткиТоваровОстатки.Стелаж,
                                          |       ОстаткиТоваровОстатки.Ячейка,
                                          |       ВТ.Количество КАК Количество,
                                          |       ОстаткиТоваровОстатки.Стелаж + ОстаткиТоваровОстатки.Ячейка КАК ДляУпордочивания
                                          |ИЗ
                                          |       РегистрНакопления.ОстаткиТоваров.Остатки(
                                          |                                      &МоментВремени,
                                          |                                      (Номенклатура, Склад) В
                                          |                                                      (ВЫБРАТЬ
                                          |                                                                      ВТ.Номенклатура,
                                          |                                                                      ВТ.Склад
                                          |                                                      ИЗ
                                          |                                                                      ВТ КАК ВТ)) КАК ОстаткиТоваровОстатки
                                          |                       ЛЕВОЕ СОЕДИНЕНИЕ ВТ КАК ВТ
                                          |                       ПО ОстаткиТоваровОстатки.Номенклатура = ВТ.Номенклатура
                                          | ДЛЯ ИЗМЕНЕНИЯ
                                           | РегистрНакопления.ОстаткиТоваров.Остатки
                                          |УПОРЯДОЧИТЬ ПО
                                          |       ДляУпордочивания //ПризнакСортировки
                                          |ИТОГИ
                                          |       СУММА(КоличествоОстаток),
                                          |       МАКСИМУМ(Количество)
                                          |ПО
                                          |       Номенклатура»);
                   
                   
                                                                                                    Запрос.УстановитьПараметр(«МоментВремени», МоментВремени());
                                                                                                    Запрос.УстановитьПараметр(«Ссылка», Ссылка);
                                                                                   
                                                                                                   
                    Если Доставка Тогда
                                   Запрос.Текст = СтрЗаменить(Запрос.Текст,
                                                   «//ПризнакСортировки»,
                                                   «УБЫВ»);
                    КонецЕсли;
     
                    Результат = Запрос.Выполнить();
     
                    ВыборкаНоменклатура = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
     
                    Пока ВыборкаНоменклатура.Следующий() Цикл
                                  
                                   Если ВыборкаНоменклатура.Количество > ВыборкаНоменклатура.КоличествоОстаток Тогда
                                                   Отказ = истина;
                                                   Сообщение = Новый СообщениеПользователю;
                                                   Сообщение.Текст = «мало товара » + ВыборкаНоменклатура.Номенклатура;
                                                   Сообщение.Сообщить();
                                   КонецЕсли;
     
                                   Если Отказ Тогда
                                                   Продолжить;
                                   КонецЕсли;
                                  
                                   ОсталосьСписать = ВыборкаНоменклатура.Количество;
                                   ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();
                                  
                                   Пока ВыборкаДетальныеЗаписи.Следующий() И ОсталосьСписать <> 0 Цикл
                                                  
                                                   Списать = МИН(ОсталосьСписать, ВыборкаДетальныеЗаписи.КоличествоОстаток);
                                                  
                                                   Движение = Движения.ОстаткиТоваров.ДобавитьРасход();
                                                   Движение.Период = Дата;
                                                   Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
                                                   Движение.Склад = Склад;
                                                   Движение.Количество = Списать;
                                                   Движение.Стелаж = ВыборкаДетальныеЗаписи.Стелаж; 
                                                   Движение.Ячейка = ВыборкаДетальныеЗаписи.Ячейка;
                                                  
                                                   ОсталосьСписать = ОсталосьСписать — Списать;
                                   КонецЦикла;
                                  
                    КонецЦикла;
     
     
    Для блокировки регистра воспользовался запросом (не знаю на сколько это правильно), также не «обыгрывал» оперативное и неоперативное проведение (не понимаю для чего это делать для этой задачи)

    • Андрей

      Из формулировки задачи непонятно ведется учет разрезе складов-стеллажей-ячеек, или только в разрезе стеллажей-ячеек. Надо вводить измерение склад в регистр остатков, или можно обойтись без него? Как научиться правильно понимать такие формулировки?

      • GROOVY

        Правило: Чем проще — тем лучше.

        Хотя в этой задаче все условия явно означены.

  42. VadimKashirny

    Не ясно как быть, если в ячейке уже есть номенклатура? или такая ситуация не рассматривается?

  43. Андрей

    Для решения этой задачи решил задействовать:
    Регистр накопления «Остатки»  — для ведения учёта «свободности от товара» в той или иной заданной ячейки на указанном стеллаже на конкретном Складе;
    Регистр сведений с «подчинением регистратору» с периодичностью «По позиции регистратора» для ведения учёта где (на каком Складе, каком стеллаже, в какой ячейке) и какое количество того или иного Товара у нас храниться на указанный МоментВремени.

    Вопрос — а в данной задече нужно заморачиваться с оперативным и неоперативным проведением? Вести ли учёт границ последовательности?

    P.S. А можно ли прислать dt-файл с решением, чтобы получить более полную оценку по ошибкам и недочётам в решении?

    • GROOVY

      Оперативное проведение нужно использовать.

      Если после видеоразбора задания останутся вопросы и мы не сможем их решить в формате мастер-группы то я сам попрошу Вас прислать базу. Но в целом давайте будем стараться решать вопросы в комментариях, так чтобы переписка была хорошим подспорьем и для остальных слушателей курса.

  44. Андрей

    Уточните пожалуйста: «Каждой номенклатурной позиции присваивается уникальный артикул.» означает, что каждый товар имеет ещё и серию (то есть каждый товар может приниматься и продаваться в разрезе артикула/серии) ? Или тут речь идёт о кодификации товара в целом и каждый товар имеет только один единственный артикул?

    • GROOVY

      1 товар = 1 артикул (он же код)

      В задаче просто нужно продемонстрировать умение клепать управляемые формы.

  45. Андрей

    Не понятна фраза — «Критерием удобства отгрузки (расстояние) служит сумма номера ряда и номера стеллажа»

    Так что тогда ближе:
     — портсигар  стеллаж 11 ячейка 1;
    — кинокамера стеллаж 2  ячейка 12;

    Если мы суммируем как сказано в условии, то портсигар ближе (расстояние 12 против 14). Но если мы суммируем с «весами», то кинокамера ближе (расстояние 2*100 + 12 = 212 против 11*100 + 1=1101).

    • GROOVY

      11+1 = 12
      2+12 = 14

      итого портсигар лежит ближе чем кинокамера.

      • Александр Кононов

        6+6=12
        8+6 =14
        этот вариант надо рассматривать

          • Александр Кононов

            Как я понимаю,это поле в запросе является полем сортировки .Что делать при равенстве сумм

  46. A.Boyko

    Задание выполнил, но неудовлетворен выбранным вариантом вывода на печать. Обсудить можно сейчас, или дождаться Ваше видео-разбора .

      • A.Boyko

        При проведении документа «Реализация товаров» происходит распределение количества по ячейкам (Ряд и Стеллаж у меня — измерения в регистре ОстаткиТоваров). Соответственно при формировании печатной формы делаю левое соединение к табличной части документа оборотов регистра «ОстаткиТоваров»:
         
        ВЫБРАТЬ
        ДокТЧ.Номенклатура КАК Номенклатура,
        ОстаткиНоменклатурыОбороты.КоличествоРасход КАК Количество,
        ОстаткиНоменклатурыОбороты.Ряд,
        ОстаткиНоменклатурыОбороты.Стеллаж,
        ДокТЧ.Цена,
        ОстаткиНоменклатурыОбороты.КоличествоРасход * ДокТЧ.Цена КАК Сумма
        ИЗ
        ДокТЧ КАК ДокТЧ
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиНоменклатуры.Обороты(&МоментВремени, &МоментВремени, Регистратор, ) КАК ОстаткиНоменклатурыОбороты
        ПО ДокТЧ.Номенклатура = ОстаткиНоменклатурыОбороты.Номенклатура
        И (ОстаткиНоменклатурыОбороты.Регистратор В (&Ссылка))
         Мне кажется, что данное получение виртуальной таблицы регистра это не совсем удачный вариант с точки зрения производительности. Или указание Момента времени печатаемого документа в качестве границ периода гарантирует получение ВТ с движениями только этого документа?

        • GROOVY

          Здесь быстрее движения выбрать с отбором по регистратору, чем обороты разворачивать.

  47. A.Boyko

    Не совсем понятна логика задания: » отдельную ячейку, которая однозначно определяется своим рядом и стеллажом», а в печатной форме отражены графы «Стеллаж» и «Ячейка», а ряда нет. Т.е. подразумевается, что «Яч. 2/18» это 2-й стеллаж, 18-й ряд?

    • GROOVY

      Это перепечатка из сборника. Да подразумевается именно так.

  48. Рустам

    «помещается в отдельную ячейку, которая однозначно определяется своим рядом и стеллажом», пользователь сам определяет стеллаж и ячейку?

    • GROOVY

      Да. Автоматизировать складскую логистику не нужно.

  49. aleady

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

Комментарии закрыты