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

Это первая задача раздела “Оперативный учет” – задача 1.14 “Ячейки”

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

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

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

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

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

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

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

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

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

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

  1. spv

    Здравствуйте!

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

    • GROOVY

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

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

  2. kamalion

    Павел, добрый день!
    Есть два вопроса:
    1) В условии задачи явно не сказано о необходимости контроля остатков. По вашей рекомендации: если не сказано – делать не нужно. Но в данном случае все таки делаем. Получается, контроль остатков всегда нужно реализовывать, где есть продажа товара?
    2) По контролю остатков в данной задаче. Необходима ли реализация этого контроля по методике: сначала проводим по регистру Остатки, затем смотрим ушли ли в минус, учитывая движения текущего документа? В видео с решением данная методика не используется. Будут ли сниматься балы, если контролировать остатки, как продемонстрировано в вашем решении?

    • GROOVY

      Приветствую.

      1. Я бы делал всегда. Это не так уж и долго. Если уйдете в минус, то как тогда будут работать остальные алгоритмы?
      2. Везде где можно применить методику оперативного проведения это делать надо.

  3. Kaa_

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

    • GROOVY

      Если совсем не соответствует, то снимают, кроме того, в задачах иногда указывают, с помощью какого механизма нужно создавать печатные формы.

  4. javer

    Добрый день. Возможно уже спрашивали, интересует возможно ли признак услуги использовать как реквизит с типом булево или обязательно использовать перечисление? И еще момент, в запросе обращение типа “ДокТЧ.Номенклатура.Услуга” не вызывает ли вопросов. Спасибо.

    • GROOVY

      Мне кажется не принципиально булево будет признаком услуги или перечисление.
      А вот обращение через две точки – это неявное левое соединение, и тут надо быть аккуратней.

      • GermanovVitaliy

        Так можно использовать ДокТЧ.Номенклатура.Услуга или должна быть другая конструкция?

        • GROOVY

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

  5. GermanovVitaliy

    Параметр = Новый ПараметрКомпоновкиДанных(“Документ”);
    ПараметрЗначение = КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Параметр);
    ПараметрЗначение.Использование = Истина;
    ПараметрЗначение.Значение = Документ;

    При первом запуске все работает. Если потом изменить запрос, то происходит {Документ.РасходнаяНакладная.МодульМенеджера(10)}: Значение не является значением объектного типа (Использование)
    ПараметрЗначение.Использование = Истина;
    Отладчик говорит что параметр не найден. Просмотр схемы компоновки данных через отладчик так же говорит что данного параметра не существует. У кого были глюки, как бороться?

    • GROOVY

      Помню нужно было инициализировать конструктор настроек. Синтаксис на память не воспроизведу. Метод вроде так и называется Инициализировать()

  6. CSiER

    Павел, здравствуйте. Правильно ли (методически) для формирования печатной формы добавить в регистр накопления “ОстаткиТоваров” реквизит “Цена”? В этом случае достаточно после проведения документа прочитать движения из этого регистра с отбором по регистратору.

      • Дмитрий Медведев

        А почему бы кстати и нет?
        (у нас же экзаменационная задача решается, которая с практикой не пересекается)

        • GROOVY

          И что с ценой делать будете? Читать при списании? Перебирая реальны движения?
          На мой взгляд за это спишут 3 балла.
          Цель экзамена проверить понимание правильного использования механизмов платформы.

          • Дмитрий Медведев

            Зачем её читать? Цена это РЕКВИЗИТ (НЕ путать с измерением) Просто при проведении расходной накладной заполнять ещё одно поле регистра “Цена” и всё остальное оставить как есть.

            Основная фишка, то что Вы сейчас при формировании отчёта читаете РЕАЛЬНЫЕ ЗАПИСИ регистра и затем, чтобы получить цену, соединяетесь ещё и с табличной частью документа. А если же цена будет лежать в реквизите регистра, то достаточно просто выбрать записи из регистра накопления с отбором по регистратору и всё, сразу можно будет формировать отчёт. Не нужно будет соединяться с таб. частью документа.

            Не понимаю в чём Вы тут углядели списание 3-ёх балов?
            (тут вопрос скорее в производительности/читабельности кода/и размере БД)

            • GROOVY

              В Вашем примере также будет чтение РЕАЛЬНЫХ ЗАПИСЕЙ регистра + База будет на поле больше, которое будет использоваться на половину (приходная туда ничего не пишет).
              Про 3 балла – это я погорячился :)

  7. mvmaster

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

  8. rocknrollerman

    По поводу печати. Может проще сделать через конструктор печати(доработав немного), а не СКД?
    Вроде тоже не так сложно и более наглядно. С СКД там надо много запоминать, тем более на
    экзамене не понятно, где подсмотреть.

  9. Ирина Борисова

    Здравствуйте. при решении задачи возникла проблема о которой уже спрашивали:

    Сделал как у вас и при нажатии на кнопку «Печать» и печатная форма формируется. Но если в СКД немного изменить настройки( скажем «Расположение полей группировок» сделать отдельно ), то вылетает ошибка — {Документ.РасходнаяНакладная.МодульМенеджера(29)}: Значение не является значением объектного типа (Значение) ПарамДокСтрока.Значение = Документ; Как я понял не срабатывает эта строка кода — ПарамДокСтрока = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра( ПарамДок ); Возвращается неопределено, т.е. параметр не находится.

    Вами было рекомендовано обновить платформу. Обновила до 8.3.7 – ошибка повторяется. И все, не могу с ней ничего сделать.

    • GROOVY

      Приветствую.
      Тонкости СКД разбираются в бесплатном курсе по СКД http://курсы-по-1с.рф/free/ Конкретно по вопросу не подскажу, возможно настройки при инициализации слетают, или наоборот.

  10. CSiER

    Павел, здравствуйте. Возникли вопросы по коду ОбработкиПроведения документа “ПродажаТоваров” (ниже код, затем вопросы):

    Движения.ОстаткиТоваров.Записывать = Истина;
    // (1) Движения.ОстаткиТоваров.Записать();
    Запрос = Новый Запрос;
    Запрос.Текст = “ВЫБРАТЬ
    | ПродажаТоваровСписокТоваров.Номенклатура КАК Номенклатура,
    | СУММА(ПродажаТоваровСписокТоваров.Количество) КАК Количество
    |ПОМЕСТИТЬ ДокТЧ
    |ИЗ
    //… получение остатков
    “;

    Если НЕ ВидОтгрузки Тогда
    Запрос.Текст = СтрЗаменить(Запрос.Текст, “Ячейка УБЫВ”, “Ячейка ВОЗР”);
    КонецЕсли;

    Запрос.УстановитьПараметр(“Ссылка”, Ссылка);

    Если Режим = РежимПроведенияДокумента.Оперативный Тогда
    // (2) Движения.СтоимостьТоваров.БлокироватьДляИзменения = Истина;
    Движения.ОстаткиТоваров.Записать();
    Запрос.УстановитьПараметр(“МоментВремени”, ‘00010101’);
    Иначе
    Запрос.УстановитьПараметр(“МоментВремени”, МоментВремени());
    КонецЕсли;

    Блокировка = Новый БлокировкаДанных;
    ЭлементБлокировки = Блокировка.Добавить(“РегистрНакопления.ОстаткиТоваров”);
    ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
    ЭлементБлокировки.ИсточникДанных = СписокТоваров;
    ЭлементБлокировки.ИспользоватьИзИсточникаДанных(“Номенклатура”, “Номенклатура”);
    Блокировка.Заблокировать();

    РезультатЗапроса = Запрос.Выполнить();
    //… обход записей…

    • (1 вопрос по коду выше) Правильно ли добавить эту строчку на случай чтения движений при открытии формы / запуска в режиме не управляемых форм ? Значение параметра “Удаление движений” установлено “Удалять автоматически при отмене проведения”.
    • (2 вопрос по коду выше) Правильно ли добавить эту строчку чтобы заблокировать от чтения из регистра удаляемых данных на случай отмены транзакции (http://1c.chistov.pro/2013/07/blog-post_25.html) ?
    • (3) Можно ли в данном случае с учетом добавленных из вопросов (1) и (2) строк устанавливать значение параметра запроса МоментВремени всегда так “Запрос.УстановитьПараметр(МоментВремени”, МоментВремени())” (вне зависимости от режима проведения)? Если я правильно понимаю, то в случае не оперативного режима проведения “МоментВремени()”” не будет включать границу – в остатки движения документа не попадут; если режим оперативный – “МоментВремени()” будет включать границу проведения, но движения документы уже очищены в базе (соответственно, в остатки не попадут).

    • GROOVY

      1. Да.
      2. Да.
      3. Нет. Момент времени не получит данные которые были сформированы в регистре в начале этого проведения.

  11. hej_jude

    Здравствуйте. По билету 3. Подскажите, пожалуйста.
    Есть регистр остатков Партии (Номенклатура, Партия, Количество, Себестоимость). Списание себестоимости может быть по ФИФО или По среднему. Если списать по среднему, то в Себестоимость может записаться отрицательное число:
    Приход: Партия 1 Товар кол-во = 5 себест = 2000
    Партия 2 Товар кол-во = 5 себест = 3000

    Расход: ???? Товар кол-во = 5 себест = 2500

    Если в ??? попадет Партия 1, то в остатках будет – 500 по этой партии.
    Как лучше делать списание?

    • GROOVY

      Если списание идет “По-среднему”, то разделения остатков по партиям быть не должно.

  12. Aluvika

    Павел, здравствуйте!

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

    В задаче 1.14 нужно контролировать остаток номенклатуры. Задач данного типа (списание по партиям/средней) достаточно много.
    В статье по методике оперативного проведения на инфостарте Вы так же разбираете классическое списание по партиям. НО в статье для контроля остатков используете новую методику и регистр “ОстаткиТоваров”; для списания по партиями используете другой РН “СтоимостьТоваров”. В комментариях к статье Вы однозначно пишете, что использование двух регистров (“ОстаткиТоваров” получается своего рода вспомогательным/служебным регистром лишь для контроля остатков) ОБЯЗАТЕЛЬНО, иначе снижают балл.
    В видео с решением задач 1.5, 1.14 контроль остатков у Вас идет непосредственно в цикле списания по партиям, что кажется вполне логичным. Соответственно, в видео 1 регистр. Но это не стыкуется с описанным выше.

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

    Павел, прошу Вас еще раз, по возможности подробнее, объяснить когда нужно использовать 2 регистра, а когда достаточно одного?

    • GROOVY

      Приветствую!

      Для методики оперативного проведения нужно 2 регистра. Сначала проверяем остатки. Партии исписываем после контроля. Всегда.

      • Aluvika

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

        Я не зря упомянул задачу 1.5 из сборника: FIFO/LIFO, складского учета нет. Большинство решений на 1 регистре (=без новой методики). У вас в статье эта задача решена с применением новой методики (2 регистра).

        Классическая задача: FIFO/LIFO/средняя, складской учет может вестись, а может и нет.
        В каком случае применение новой методики возможно (2 регистра), а в какой нет (достаточно 1 регистра)?

        • GROOVY

          В требованиях к аттестации есть такие слова “продемонстрировать использование методики оперативного проведения”. Думаю что на аттестации нужно делать 2 регистра.

          • Aluvika

            Благодарю, Павел.
            Получается, что иногда даже в случаях, когда нецелесообразно применять методику оперативного проведения, придется все равно ее показывать.
            Например, FIFO/LIFO + складской. Создаем в базе своего рода “избыточный” регистр “ОстаткиНоменклатуры” лишь для того, чтобы проверить остатки через новую методику + основной регистр “СтоимостьТоваров”, где списываем по партиям по нужному методу.

            Правильно я понял?
            Извините еще раз за назойливость – на экзамене не хотелось бы облажаться с такой мелочью.

  13. vmalov

    Добрый день!
    Хотел уточнить, по задаче 1.14 (Ячейки) при формировании печатной формы, для чего используется КомпоновщикНастроекКомпоновкиДанных, нельзя ли настройки получить сразу из схемы компоновки:

    НастройкиКомпоновки = Макет.НастройкиПоУмолчанию;

    И далее, для чего используется поиск значения параметра “Документ”, нельзя ли его установить непосредственно в макете (СхемеКомпоновкиДанных):

    Макет.Параметры.Документ.Значение = Документ;

    Я использовал этот вариант, вроде работает так же.

    • GROOVY

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

  14. Sashokk

    Добрый день. Задача 1.14.
    1) В документе “Поступление товара” не нужно ли делать элементарную проверку на то, что ряд и стеллаж уже заняты, чтобы пользователь не смог положить другой новый товар в уже занятую ячейку?

    2) Сделал как у вас и при нажатии на кнопку “Печать” и печатная форма формируется. Но если в СКД немного изменить настройки( скажем “Расположение полей группировок” сделать отдельно ), то вылетает ошибка –
    {Документ.РасходнаяНакладная.МодульМенеджера(29)}: Значение не является значением объектного типа (Значение)
    ПарамДокСтрока.Значение = Документ;
    Как я понял не срабатывает эта строка кода –
    ПарамДокСтрока = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра( ПарамДок );
    Возвращается неопределено, т.е. параметр не находится.

    Работать начинает только после переопределения параметра в СКД.
    Объясните пожалуйста почему так.

    • GROOVY

      Приветствую.

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

  15. Andrefan

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

    • GROOVY

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

  16. obvin

    На 22 минуте 20 секунде видео, автор, после написания “Блокировка =”, вызывает окно “Выбор используемого шаблона”. Как он это сделал? Какие горячие клавиши применил?

  17. koupny

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

    • GROOVY

      От куда Вы хотите получить данные для печатной формы?

      • Сергей

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

        • GROOVY

          1. А уже проведенный распечатывать нельзя? И проводить без печати видимо тоже?
          2. И чем это будет отличатся от обращения к таблице движений?

          • Сергей

            1. Да(. Да(
            2. Фактически ничем, так как развернули записи до регистратора, но формально мы обращаемся к виртуальной таблице оборотов.

            Я понял вашу мысль… Спасибо!

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