Материалы курса “Подготовка к Аттестации по Платформе 8.2” – Раздел 1, задача 1.14 “Ячейки”
Это первая задача раздела “Оперативный учет” – задача 1.14 “Ячейки”
- Изучите материалы задачи.
- Вопросы, возникшие в ходе изучения этих материалов, задавайте в комментариях на текущей странице. Ответы преподавателя и комментарии других участников будут Вам доступны, только если Вы залогинены и у Вас есть доступ в Мастер-группу.
- Общие вопросы по курсу (в т.ч. организационные) задавайте на стартовой странице.
Комментарий от Павла:
Это первая основная задача, в сквозной нумерации видеорешений ее номер 9 (с 1 по 8 Вы получили ранее).
Что с ней делать? Решать!
Я не могу, и не собираюсь, заставлять Вас решать задачи, но послушайте несколько аргументов в пользу того что самостоятельно заниматься нужно:
1. Вы получаете опыт, и в анализе текста задачи, и в использовании объектов.
2. Вы понимаете свои “слабые места”.
3. Вы задаете мне вопросы! Анализируя вопросы я понимаю куда следует “дожать” для более классного результата. Ваши вопросы найдут отражение в следующих задачах и видеорешениях.
4. В конце концов скорость машинописи возрастает ;)
К сдаче аттестационного экзамена готовитесь именно ВЫ! Я только помогаю. Это ВАША работа!
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (194):
Комментарии закрыты
Здравствуйте!
В разделе стартовых задач, в задаче о курсах валюи, была настоятельная рекомендация все данные, на основе которых производятся движения документа, сохранять в самом документе, чтобы при перепроведении не менялся результат документа при изменении внешних данных. В данной задаче мы этого правила не придерживаемся – в расходной накладной данные об автоматически подобранных номерах стеллажа и ряда в документе не сохраняются.
Почему в данной задаче иной подход, в чем принципиальное различие?
Методическая ценность решения была задумана в демонстрации работы с автоподбором данных о рядах и стеллажах. Работа с историей не задумывалась.
Если отойти от вопросов именно аттестации, то в этом решении нужно реализовать автободбор в форме, с блокированием товаров для еще не записанного документа. Механизм отклонения автоподбора или переподбор. И, конечно, сохранение информации о подобранных позициях.
Павел, добрый день!
Есть два вопроса:
1) В условии задачи явно не сказано о необходимости контроля остатков. По вашей рекомендации: если не сказано – делать не нужно. Но в данном случае все таки делаем. Получается, контроль остатков всегда нужно реализовывать, где есть продажа товара?
2) По контролю остатков в данной задаче. Необходима ли реализация этого контроля по методике: сначала проводим по регистру Остатки, затем смотрим ушли ли в минус, учитывая движения текущего документа? В видео с решением данная методика не используется. Будут ли сниматься балы, если контролировать остатки, как продемонстрировано в вашем решении?
Приветствую.
1. Я бы делал всегда. Это не так уж и долго. Если уйдете в минус, то как тогда будут работать остальные алгоритмы?
2. Везде где можно применить методику оперативного проведения это делать надо.
Доброго времени, Павел.
Подскажите, пожалуйста, смотрю не всегда в уроках отчет/печ форма идентична той которая поставлена в задаче, насколько это критично при экзамене, снимают ли баллы? Спасибо.
Если совсем не соответствует, то снимают, кроме того, в задачах иногда указывают, с помощью какого механизма нужно создавать печатные формы.
Добрый день. Возможно уже спрашивали, интересует возможно ли признак услуги использовать как реквизит с типом булево или обязательно использовать перечисление? И еще момент, в запросе обращение типа “ДокТЧ.Номенклатура.Услуга” не вызывает ли вопросов. Спасибо.
Мне кажется не принципиально булево будет признаком услуги или перечисление.
А вот обращение через две точки – это неявное левое соединение, и тут надо быть аккуратней.
Так можно использовать ДокТЧ.Номенклатура.Услуга или должна быть другая конструкция?
Я еще раз повторю, подобная конструкция приведет к неявному левому соединению. Как в выборке полей, так и в условиях и в соединениях. Если Вы не будете использовать эту конструкцию как вы опишите то что Вы хотите?
Параметр = Новый ПараметрКомпоновкиДанных(“Документ”);
ПараметрЗначение = КомпоновщикНастроекКомпоновкиДанных.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Параметр);
ПараметрЗначение.Использование = Истина;
ПараметрЗначение.Значение = Документ;
При первом запуске все работает. Если потом изменить запрос, то происходит {Документ.РасходнаяНакладная.МодульМенеджера(10)}: Значение не является значением объектного типа (Использование)
ПараметрЗначение.Использование = Истина;
Отладчик говорит что параметр не найден. Просмотр схемы компоновки данных через отладчик так же говорит что данного параметра не существует. У кого были глюки, как бороться?
Помню нужно было инициализировать конструктор настроек. Синтаксис на память не воспроизведу. Метод вроде так и называется Инициализировать()
Павел, здравствуйте. Правильно ли (методически) для формирования печатной формы добавить в регистр накопления “ОстаткиТоваров” реквизит “Цена”? В этом случае достаточно после проведения документа прочитать движения из этого регистра с отбором по регистратору.
Ни в коем случае.
А почему бы кстати и нет?
(у нас же экзаменационная задача решается, которая с практикой не пересекается)
И что с ценой делать будете? Читать при списании? Перебирая реальны движения?
На мой взгляд за это спишут 3 балла.
Цель экзамена проверить понимание правильного использования механизмов платформы.
Зачем её читать? Цена это РЕКВИЗИТ (НЕ путать с измерением) Просто при проведении расходной накладной заполнять ещё одно поле регистра “Цена” и всё остальное оставить как есть.
Основная фишка, то что Вы сейчас при формировании отчёта читаете РЕАЛЬНЫЕ ЗАПИСИ регистра и затем, чтобы получить цену, соединяетесь ещё и с табличной частью документа. А если же цена будет лежать в реквизите регистра, то достаточно просто выбрать записи из регистра накопления с отбором по регистратору и всё, сразу можно будет формировать отчёт. Не нужно будет соединяться с таб. частью документа.
Не понимаю в чём Вы тут углядели списание 3-ёх балов?
(тут вопрос скорее в производительности/читабельности кода/и размере БД)
В Вашем примере также будет чтение РЕАЛЬНЫХ ЗАПИСЕЙ регистра + База будет на поле больше, которое будет использоваться на половину (приходная туда ничего не пишет).
Про 3 балла – это я погорячился :)
Можно ли в реализацию добавить ещё одну табличную часть которую заполнять товаром, количеством и ячейками в момент проведения. И из неё уже печатать?
Зачем?
По поводу печати. Может проще сделать через конструктор печати(доработав немного), а не СКД?
Вроде тоже не так сложно и более наглядно. С СКД там надо много запоминать, тем более на
экзамене не понятно, где подсмотреть.
Можно, это был просто пример.
Здравствуйте. при решении задачи возникла проблема о которой уже спрашивали:
”
Сделал как у вас и при нажатии на кнопку «Печать» и печатная форма формируется. Но если в СКД немного изменить настройки( скажем «Расположение полей группировок» сделать отдельно ), то вылетает ошибка — {Документ.РасходнаяНакладная.МодульМенеджера(29)}: Значение не является значением объектного типа (Значение) ПарамДокСтрока.Значение = Документ; Как я понял не срабатывает эта строка кода — ПарамДокСтрока = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра( ПарамДок ); Возвращается неопределено, т.е. параметр не находится.
”
Вами было рекомендовано обновить платформу. Обновила до 8.3.7 – ошибка повторяется. И все, не могу с ней ничего сделать.
Приветствую.
Тонкости СКД разбираются в бесплатном курсе по СКД http://курсы-по-1с.рф/free/ Конкретно по вопросу не подскажу, возможно настройки при инициализации слетают, или наоборот.
Павел, здравствуйте. Возникли вопросы по коду ОбработкиПроведения документа “ПродажаТоваров” (ниже код, затем вопросы):
Движения.ОстаткиТоваров.Записывать = Истина;
// (1) Движения.ОстаткиТоваров.Записать();
Запрос = Новый Запрос;
Запрос.Текст = “ВЫБРАТЬ
| ПродажаТоваровСписокТоваров.Номенклатура КАК Номенклатура,
| СУММА(ПродажаТоваровСписокТоваров.Количество) КАК Количество
|ПОМЕСТИТЬ ДокТЧ
|ИЗ
//… получение остатков
“;
Если НЕ ВидОтгрузки Тогда
Запрос.Текст = СтрЗаменить(Запрос.Текст, “Ячейка УБЫВ”, “Ячейка ВОЗР”);
КонецЕсли;
Запрос.УстановитьПараметр(“Ссылка”, Ссылка);
Если Режим = РежимПроведенияДокумента.Оперативный Тогда
// (2) Движения.СтоимостьТоваров.БлокироватьДляИзменения = Истина;
Движения.ОстаткиТоваров.Записать();
Запрос.УстановитьПараметр(“МоментВремени”, ‘00010101’);
Иначе
Запрос.УстановитьПараметр(“МоментВремени”, МоментВремени());
КонецЕсли;
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить(“РегистрНакопления.ОстаткиТоваров”);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировки.ИсточникДанных = СписокТоваров;
ЭлементБлокировки.ИспользоватьИзИсточникаДанных(“Номенклатура”, “Номенклатура”);
Блокировка.Заблокировать();
РезультатЗапроса = Запрос.Выполнить();
//… обход записей…
• (1 вопрос по коду выше) Правильно ли добавить эту строчку на случай чтения движений при открытии формы / запуска в режиме не управляемых форм ? Значение параметра “Удаление движений” установлено “Удалять автоматически при отмене проведения”.
• (2 вопрос по коду выше) Правильно ли добавить эту строчку чтобы заблокировать от чтения из регистра удаляемых данных на случай отмены транзакции (http://1c.chistov.pro/2013/07/blog-post_25.html) ?
• (3) Можно ли в данном случае с учетом добавленных из вопросов (1) и (2) строк устанавливать значение параметра запроса МоментВремени всегда так “Запрос.УстановитьПараметр(МоментВремени”, МоментВремени())” (вне зависимости от режима проведения)? Если я правильно понимаю, то в случае не оперативного режима проведения “МоментВремени()”” не будет включать границу – в остатки движения документа не попадут; если режим оперативный – “МоментВремени()” будет включать границу проведения, но движения документы уже очищены в базе (соответственно, в остатки не попадут).
1. Да.
2. Да.
3. Нет. Момент времени не получит данные которые были сформированы в регистре в начале этого проведения.
Спасибо.
Здравствуйте. По билету 3. Подскажите, пожалуйста.
Есть регистр остатков Партии (Номенклатура, Партия, Количество, Себестоимость). Списание себестоимости может быть по ФИФО или По среднему. Если списать по среднему, то в Себестоимость может записаться отрицательное число:
Приход: Партия 1 Товар кол-во = 5 себест = 2000
Партия 2 Товар кол-во = 5 себест = 3000
Расход: ???? Товар кол-во = 5 себест = 2500
Если в ??? попадет Партия 1, то в остатках будет – 500 по этой партии.
Как лучше делать списание?
Если списание идет “По-среднему”, то разделения остатков по партиям быть не должно.
Павел, здравствуйте!
И все же еще раз спрашиваю по методике оперативного проведения. Вроде бы и ответ дали ранее, но информация в разных местах противоречивая. Хотелось бы услышать однозначный ответ.
В задаче 1.14 нужно контролировать остаток номенклатуры. Задач данного типа (списание по партиям/средней) достаточно много.
В статье по методике оперативного проведения на инфостарте Вы так же разбираете классическое списание по партиям. НО в статье для контроля остатков используете новую методику и регистр “ОстаткиТоваров”; для списания по партиями используете другой РН “СтоимостьТоваров”. В комментариях к статье Вы однозначно пишете, что использование двух регистров (“ОстаткиТоваров” получается своего рода вспомогательным/служебным регистром лишь для контроля остатков) ОБЯЗАТЕЛЬНО, иначе снижают балл.
В видео с решением задач 1.5, 1.14 контроль остатков у Вас идет непосредственно в цикле списания по партиям, что кажется вполне логичным. Соответственно, в видео 1 регистр. Но это не стыкуется с описанным выше.
В подавляющем большинстве решений на Вашем форуме задач подобного типа, форумчане используют один регистр.
Павел, прошу Вас еще раз, по возможности подробнее, объяснить когда нужно использовать 2 регистра, а когда достаточно одного?
Приветствую!
Для методики оперативного проведения нужно 2 регистра. Сначала проверяем остатки. Партии исписываем после контроля. Всегда.
Павел, спасибо за оперативный ответ.
Саму методику оперативного проведения я представляю, и про 2 регистра в ней.
Наверное, я не совсем правильно выразился.
Я не зря упомянул задачу 1.5 из сборника: FIFO/LIFO, складского учета нет. Большинство решений на 1 регистре (=без новой методики). У вас в статье эта задача решена с применением новой методики (2 регистра).
Классическая задача: FIFO/LIFO/средняя, складской учет может вестись, а может и нет.
В каком случае применение новой методики возможно (2 регистра), а в какой нет (достаточно 1 регистра)?
В требованиях к аттестации есть такие слова “продемонстрировать использование методики оперативного проведения”. Думаю что на аттестации нужно делать 2 регистра.
Благодарю, Павел.
Получается, что иногда даже в случаях, когда нецелесообразно применять методику оперативного проведения, придется все равно ее показывать.
Например, FIFO/LIFO + складской. Создаем в базе своего рода “избыточный” регистр “ОстаткиНоменклатуры” лишь для того, чтобы проверить остатки через новую методику + основной регистр “СтоимостьТоваров”, где списываем по партиям по нужному методу.
Правильно я понял?
Извините еще раз за назойливость – на экзамене не хотелось бы облажаться с такой мелочью.
Совершенно верно.
Добрый день!
Хотел уточнить, по задаче 1.14 (Ячейки) при формировании печатной формы, для чего используется КомпоновщикНастроекКомпоновкиДанных, нельзя ли настройки получить сразу из схемы компоновки:
НастройкиКомпоновки = Макет.НастройкиПоУмолчанию;
И далее, для чего используется поиск значения параметра “Документ”, нельзя ли его установить непосредственно в макете (СхемеКомпоновкиДанных):
Макет.Параметры.Документ.Значение = Документ;
Я использовал этот вариант, вроде работает так же.
Когда записывал задачу, при инициализации слетали настройки по умолчанию. На текущих платформах не проверял, вполне возможно, что теперь все ОК.
Понятно, спасибо.
Добрый день. Задача 1.14.
1) В документе “Поступление товара” не нужно ли делать элементарную проверку на то, что ряд и стеллаж уже заняты, чтобы пользователь не смог положить другой новый товар в уже занятую ячейку?
2) Сделал как у вас и при нажатии на кнопку “Печать” и печатная форма формируется. Но если в СКД немного изменить настройки( скажем “Расположение полей группировок” сделать отдельно ), то вылетает ошибка –
{Документ.РасходнаяНакладная.МодульМенеджера(29)}: Значение не является значением объектного типа (Значение)
ПарамДокСтрока.Значение = Документ;
Как я понял не срабатывает эта строка кода –
ПарамДокСтрока = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра( ПарамДок );
Возвращается неопределено, т.е. параметр не находится.
Работать начинает только после переопределения параметра в СКД.
Объясните пожалуйста почему так.
Приветствую.
1. Нет, такого условия в задаче нет.
2. Видимо что-то слетает в настройках, попробуйте обновить платформу.
Добрый день.
При решении задачи Вы используете метод глобального контекста Предупреждение. Насколько мне известно, фирма 1С не рекомендует пользоваться синтаксисом, имитирующим открытие модальных окон. Подскажите, могут ли сниматься за это баллы? И лучше использовать аналоги методов (ПоказатьВопрос, ПоказатьПредупреждение и т.д.)?
Насколько мне известно, модальные окна не рекомендуются при разработке приложения для вебклиента. В требованиях к сертификации таких ограничений нет. Но я конечно рекомендовал бы, при возможности, использовать немодальные методы.
На 22 минуте 20 секунде видео, автор, после написания “Блокировка =”, вызывает окно “Выбор используемого шаблона”. Как он это сделал? Какие горячие клавиши применил?
Это шаблоны автозамены http://fs.kursypo1c.ru/free/chistov.pro.st
Добрый день! В данной задаче при формировании отчета (печатной формы документа) вы используете реальную таблицу регистра накопления. Не является ли это серьезной ошибкой? Насколько я понимаю, по регламенту за обращение к реальной таблице регистра снимаются баллы. Как быть на экзамене?
От куда Вы хотите получить данные для печатной формы?
я вижу два варианта. Первый – формировать печатную форму сразу же при проведении документа, т.е. документ провели – форму печатную увидели и распечатали. А второй вариант из виртуальной таблицы оборотов регистра накопления с периодичностью – регистратор. Но вот не знаю, какой из этих всех вариантов является более правильным.
1. А уже проведенный распечатывать нельзя? И проводить без печати видимо тоже?
2. И чем это будет отличатся от обращения к таблице движений?
1. Да(. Да(
2. Фактически ничем, так как развернули записи до регистратора, но формально мы обращаемся к виртуальной таблице оборотов.
Я понял вашу мысль… Спасибо!