Материалы курса «Подготовка к Аттестации по Платформе 8.2» – Раздел 2, задача 2.14
Это первая задача раздела “Бухгалтерский учет” – задача 2.14
- Изучите материалы задачи.
- Вопросы, возникшие в ходе изучения этих материалов, задавайте в комментариях на текущей странице. Ответы преподавателя и комментарии других участников будут Вам доступны, только если Вы залогинены и у Вас есть доступ в Мастер-группу.
- Общие вопросы по курсу (в т.ч. организационные) задавайте на стартовой странице.
К сожалению, у Вас недостаточно прав для дальнейшего просмотра.
Если Вы приобрели курс, но еще не активировали токен — пожалуйста, активируйте доступ по инструкциям, высланным на Ваш email после покупки.
Если Вы не залогинены на сайте — залогиньтесь, вернитесь на эту страницу и обновите ее.
Если Вы залогинены, у Вас активирован токен доступа, но Вы все равно видите эту запись — напишите нам на e-mail поддержки.
Комментарии / обсуждение (113):
Комментарии закрыты
Добрый день!
Возникло два вопроса по этой задаче:
1. В Расходной я получил все данные для проведения одним запросом, в том числе и остаток каждой из позиций товара. После чего в цикле обхода выборки вначале сделал проверку на отриц. остатки. Будет ли основанием для снятия баллов такая реализация? Будет ли выигрывать по производительности ваше решение, когда вначале более легким запросом проверяем остатки, а затем вторым запросом – все остальное по сравнению с одним общим запросом?
2. Для контроля остатков я настроил регистр бухгалтерии на хранение остатков как по виду субконто Номенклатура, так и по виду субконто Инв. номер. Данная реализация является неоптимальной?
1. Так Вы блокируете сразу много таблиц. Что не очень хорошо при негативном сценарии проведения. Скорее всего спишут от 0,5 до 1 балла.
2. Тут не могу сказать. Так как в разных задачах стоимость то разделяется по инв номерам, то общая для номенклатуры.
В обновленной версии задачи, все таки не решена проблема с копейками. Этот вопрос задавался Сергеем Миловым от 27.05.2014 ” Все же есть проблема с копейкой. Как её решить? Для примера можно оприходовать 3 ложки. Первая ложка инв.ном. 1 цена 100 р., вторая ложка инв.ном. 2 цена 200 р., третья ложка инв. ном. 3 цена 400 р.. Итого 3 ложки на 700 р. Когда списываем сразу 3 ложки то по вашему решению себестоимость равна 233,33 р. Зависает одна копейка.”
Если списываем сразу 3 ложки, то отношение списываемого количества к оставшемуся дает нам единицу, а умножение суммового остатка на единицу дает нам полную себестоимость и число 233,33 в формуле мы никогда не увидим.
При условии, что будет списано 3 ложки сразу, то здесь вопросов нет, а у нас в задаче списывается по 1 шт. Вы можете зайти в базу, вбить требуемый пример, и увидите что у нас списывается 1,2 и 3 позиция по цене 233,33 в итоге списано на общую сумму 699,99.
Пришлите мне базу с примером, я посмотрю: pavel@chistov.pro
Отправил.
Приветствую,
подскажите пож-та,
1. Применима ли для регистров бух. учета новая методика проведения?
2. Как правильно задавать параметр &МоментВремени для виртуальной таблицы остатков: Дата, МоментВремени() или Новый Граница(МоментВремени(), ВидГраницы.Включая))?
Да, нет, может быть. Зависит от задачи. Чаще не применима.
Здравствуйте.
1.
Обязательно ли в документе операция писать вот такой код:
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Проводки = Движения.Управленческий;
Проводки.Записывать = Истина;
Если НЕ Проводки.Модифицированность() И НЕ ЭтоНовый() Тогда
Проводки.Прочитать();
КонецЕсли;
Для каждого Проводка Из Проводки Цикл
Проводка.Период = Дата;
Если НЕ ЭтоНовый() И ПометкаУдаления Ссылка.ПометкаУдаления Тогда
Проводка.Активность = НЕ ПометкаУдаления;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
????
2. Еще раз хотелось бы уточнить – если мы поставим блокировку по субконто, то заблокируются все записи, у которых есть такое субконто, например номенклатура. Поэтому делаем блокировку только по счету?
1. Понять бы, что это. Зачем…
2. Если по виду субконто – то да.
Приветствую!
1. Я пошел по другому пути, сначала получаю остатки(кол-во и сума) по счету в разрезе номенклатуры и инв номера, затем получаю итоги по номенклатуре и из них считаю среднюю себестоимость в одном цикле, как и контроль остатков. Пойдет такое на экзамене? Снизят балл сильно или нет?
2. Может быть глупый вопрос, простите, но, зачем нужно в отчете поле “Пустая Дата”? Я так понял, надо получить текущие обороты, а не в периоде, зачем?
1. Не эффективное получение данных. Не помню сколько за это снизят, смотрите в требованиях.
2. Дабы получить данные по закупкам, мы не знаем когда закупка произошла.
Если в отчете Продажи пользователь поставит период в который приходная накладная не попадает то значение Закупка не выводится. Параметр &БезОграничения не помогает.
Какое значение имеет параметр &БезОграничения? Какой тип значения?
В Вашем решении параметр &БезОграничения имеет тип Дата, пустое значение
Все правильно, должно попадать.
Добрый день.
Хотел уточнить один момент. В некоторых задачах, на первый взгляд, надо делать или субконто (задачи БУ) или измерения (ОУ) с примитивным типом данных. Например сроки годности номенклатуры. Является ли это приемлемым, т.к. не рекомендовано делать подобные типы данных для субконто? Есть ли какие-нибудь нюансы для подобных случаев? Или я просто делаю и все?
Для субконто примитивные типы не рекомендуются. На сертификации в том числе.
Тогда вопрос, как можно сделать разрез по срокам годности товаров в рамках бухгалтерского учета? При том, что в документе-партии может быть несколько одинаковых номенклатур, с разными сроками годности? Кроме варианта с примитивным типом субконто -срок (дата) годности на ум ничего не приходит.
Если в одной партии может быть 2 ложки с разным сроком годности, то в качестве срока годности номенклатуры, я посоветовал бы создавать доп справочник со сроками. Понимаю, что решение несколько раздутое получится.
При решении всегда помните, что еще время важный фактор на экзамене, если намного быстрее сделаете с примитивным типом и получите -0.2 балла, но сделаете, это будет намного лучше, если НЕ сделаете используя только ссылочные субконто.
Добрый день, Павел!
Насколько я понимаю, в обработке проведения Расходной накладной очищать движения (Движения.Очистить(); Движения.Записать();) нужно всегда, а не только при оперативном проведении, так как если в вашей базе поменять дату у расходной накладной с 04.07.2013 на более позднюю, например 05.07.2013, то документ не проведется, а сообщит о нехватке товара, что не верно.
Точно.
Добрый день. Не увидел, что у задачи есть еще один вариант решения, в итоге на экзамене ошибка “Аналитика, настроенная по счету БУ не позволяет корректно решить задачу (нужно использовать признаки учета субконто).” Замените видео и базу в архиве на верный вариант. Или, хотя бы, выделите другим шрифтом, что есть другой вариант решения, чтобы бросалось в глаза.
Добрый день!
В обработке проведения Расходной накладной в запросе где берутся РегистрБухгалтерии.РегистрБухгалтерии.Обороты() нужно добавить в условие где кроме “РегистрБухгалтерииОбороты.КоличествоОборот <= 0" вот это "ИЛИ РегистрБухгалтерииОбороты.КоличествоОборот ЕСТЬ NULL" иначе проверка на наличие товаров на счете "Товары" не совсем корректно отработает(если в таб части расходной накладной пытаемся списать товар по которому не было поступления) и уже в проводках расходной накладной будет давать ошибку вот тут "Проводка.Сумма = Выборка.СуммаОстаток/Выборка.КоличествоОстаток;" т.к. СуммаОстаток и КоличествоОстаток будут равны NULL.
Обратите внимание на новый вариант решения: http://курсы-по-1с.рф/dev-attestation/startpage/task-2_14/comment-page-1/#comment-22152
Добрый день.
Можно ли использовать в решении только одно субконто – инвентарный номер? Номенклатуру, где она нужна, получать как владельца инвентарного номера. Насколько правильно это делать на экзамене?
Нельзя. Как Вы блокировки установите на товар при расчете себестоимости?
Добрый день!!!
Скачал новое решение задачи 2.14
Сразу вопрос почему у док. Расходная запрещено оперативное проведение (вроде как по условию это не указано),а по коду видно что должно использоваться
Если все же мы включаем оперативное тогда при оперативном проведении движения не формируются
потому как уже один раз флаг Движения.РегистрБухгалтерии.Записывать = Истина;
Сбрасывается когда идет Движения.Записать()
я так понимаю перед тем как формировать движения (проводки)
его нужно опять выставить.
поправил у меня все заработало.
С Уважением !!!
Алексей
Конечно, блокировка нужна.
Добрый день,
вопрос по строке ЭлементБлокировки.УстановитьЗначение(“Период”, Новый Диапазон( , Дата));
1. что мы хотим этим сказать системе
2. почему не указано начало диапазона, например Дата
3. почему конец диапазона Дата, почему не МоментВремени(), например
Установкой блокировки по периоду мы позволяем работать с регистром после нашего документа, так как на его проведении это никак не скажется. Именно по этому начало диапазона не указано. Момент времени нельзя передать как значения в диапазон.
Добрый день,
получается, что тем самым мы разрешаем ввести Приходную с той же номенклатурой и инв. номером, Расходную не сможем ввести, т.к. при ее проведении пространство блокировок пересечется.
Если не устанавливать блокировку по периоду, то платформа сама установит ее, но вперед с начала месяца документа, и мы не сможем даже Приходную ввести.
Правильно я себе это представляю?
Если так, то для общего случая такая блокировка по периоду назад полезна, но по конкретной задаче, где оборудование с уникальным инв. номером приходит и уходит только 1 раз, выгода спорная.
Понимаете правильно.
Согласен с Вами, что выгода спорная. Кроме того, зачастую бессмысленная. Но в методичках от 1С показывают именно так.
При формировании отчета для получения данных о закупках во втором решении используется виртуальная таблица “Обороты” с условиями “Счет = Поставщики” и “КорСчет = Товары”. В результате получается следующая таблица:
Счет________ КорСчет КорСубконто1 КорСубконто2 СуммаОборот СуммаОборотДт СуммаОборотКт
Поставщики_ Товары_ Ложка________ Номер1_____ _______-100 ____________0 __________100
Поставщики_ Товары_ Ложка________ Номер2_____ _______-200 ____________0 __________200
Если же использовать ту же виртуальную таблицу, но с условиями “Счет = Товары” и “КорСчет = Поставщики”, то результат будет другим:
Счет____ Субконто1 Субконто2 КорСчет___ СуммаОборот СуммаОборотДт СуммаОборотКт
Товары_ Ложка____ _________ Поставщики ________500 __________500 ____________0
Товары_ Ложка____ Номер2__ Поставщики __________0 ____________0 ____________0
Товары_ Ложка____ Номер1__ Поставщики __________0 ____________0 ____________0
Я догадываюсь, что это получается из-за того, что у счета товары отключен суммовой учет у субконто “Инвентарный номер”, но не могу понять механизм работы. Почему система формирует разные результаты запросов?
Вас смущают цифры? Со структурой все верно. А разницу в цифрах надо искать, скорее всего разные условия выполнения запроса.
Добрый день!
Если во второй версии решения ничего не меняя выполнить запрос:
“ВЫБРАТЬ
РегистрБухгалтерииОстатки.Счет,
РегистрБухгалтерииОстатки.Субконто1,
РегистрБухгалтерииОстатки.Субконто2,
РегистрБухгалтерииОстатки.СуммаОстаток,
РегистрБухгалтерииОстатки.КоличествоОстаток
ИЗ
РегистрБухгалтерии.РегистрБухгалтерии.Остатки КАК РегистрБухгалтерииОстатки”,
то вернётся по счетам “Прибыли и убытки” и “Поставщики” будут остатки 2 и -2 соответственно. Насколько я понял из настройки плана счетов, количественный учёт ведётся только для счёта “товары”. Тогда почему есть количество для других счетов?
Возможно, забыли снять флаг “Балансовый” для ресурса “Количество”?
Не пойму зачем вы в запросах добавляете МассивСубконто. Будет ли ошибкой на экзамене, если я не укажу?
Параметр определяет какие субконто будут рассчитываться и в каком порядке они будут в результате запроса.
Добрый день. Хочу задать вопрос не по этой задаче. Вопрос про блокировку регистра бухгалтерии. Как заблокировать регистр по нескольким счетам, а не по одному.
Можно ли использовать дважды конструкцию “УстановитьЗначение”:
“ЭлементБлокировки.УстановитьЗначение(“Счет”, ПланыСчетов.Управленческий.Товары);
ЭлементБлокировки.УстановитьЗначение(“Счет”, ПланыСчетов.Управленческий.ПрибылиУбытки); “
Можно создать таблицу значений с колонкой “Счет” и использовать ее как источник данных.
В том то и проблема, что источник данных я использую для передачи значений субконто. Как быть в этой ситуации?
Вот я сделал вот такой вариант, правильный ли он?
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Движения.Управленческий.Записывать = Истина;
Движения.Управленческий.Очистить();
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировкиПрибылиУбытки = Блокировка.Добавить(“РегистрБухгалтерии.Управленческий”);
ЭлементБлокировкиПрибылиУбытки.ИсточникДанных = СписокПроектов;
ЭлементБлокировкиПрибылиУбытки.ИспользоватьИзИсточникаДанных(ПланыВидовХарактеристик.ВидыСубконто.Проекты, “Проект”);
ЭлементБлокировкиПрибылиУбытки.УстановитьЗначение(“Счет”, ПланыСчетов.Управленческий.ПрибылиУбытки);
ЭлементБлокировкиПрибылиУбытки.Режим = РежимБлокировкиДанных.Исключительный;
ЭлементБлокировкиТовары = Блокировка.Добавить(“РегистрБухгалтерии.Управленческий”);
ЭлементБлокировкиТовары.УстановитьЗначение(“Счет”, ПланыСчетов.Управленческий.Товары);
ЭлементБлокировкиТовары.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
Запрос = Новый Запрос;
Запрос.Текст =
“ВЫБРАТЬ РАЗЛИЧНЫЕ
| ЗатратыСписокПроектов.Проект,
| СУММА(ЗатратыСписокПроектов.Сумма) КАК Сумма
|ПОМЕСТИТЬ ВТ_Проекты
|ИЗ
| Документ.Затраты.СписокПроектов КАК ЗатратыСписокПроектов
|ГДЕ
| ЗатратыСписокПроектов.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| ЗатратыСписокПроектов.Проект
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ_Проекты.Проект КАК Проект,
| ВТ_Проекты.Сумма КАК Сумма,
| ЕСТЬNULL(УправленческийОборотыДтКт.СубконтоДт1, ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) КАК Номенклатура,
| ЕСТЬNULL(УправленческийОборотыДтКт.КоличествоОборотКт, 0) КАК Количество
|ИЗ
| ВТ_Проекты КАК ВТ_Проекты
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.ОборотыДтКт(
| &НачалоПериода,
| &КонецПериода,
| ,
| СчетДт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.ПрибылиУбытки),
| ,
| СчетКт = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары),
| ,
| СубконтоДт2 В
| (ВЫБРАТЬ
| ВТ_Проекты.Проект
| ИЗ
| ВТ_Проекты КАК ВТ_Проекты)) КАК УправленческийОборотыДтКт
| ПО ВТ_Проекты.Проект = УправленческийОборотыДтКт.СубконтоДт2
|ИТОГИ
| МАКСИМУМ(Сумма),
| СУММА(Количество)
|ПО
| Проект”;
Запрос.УстановитьПараметр(“КонецПериода”, КонецДня(Дата));
Запрос.УстановитьПараметр(“НачалоПериода”, НачалоДня(Дата));
Запрос.УстановитьПараметр(“Ссылка”, Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаПроект = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаПроект.Следующий() Цикл
ВыборкаДетальныеЗаписи = ВыборкаПроект.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Движение = Движения.Управленческий.Добавить();
Движение.Период = Дата;
Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Проекты] = ВыборкаДетальныеЗаписи.Проект;
Движение.СчетКт = ПланыСчетов.Управленческий.ОбщехозяйственныеЗатраты;
Движение.Сумма = ВыборкаДетальныеЗаписи.Количество * ВыборкаПроект.Сумма / ВыборкаПроект.Количество;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
Можно использовать несколько колонок в одной ТЗ, можно устанавливать блокировку последовательно, по счетам и по субконто.
Попалась эта задача на экзамене. Решал таким же способом.
Комментарий от 1С: БУ: Себестоимость учитывается не верно.
Подал апелляцию, в ответ прислали:
Согласно требованиям к сдаче аттестации “1С:Специалист”, опубликованным на сайте 1С, ошибочным является “В задачах получения итоговой информации по остаткам использование информации по оборотам или наоборот”. Данная ошибка оценивается в 2 балла. В предложенном решении использовались обороты для хранения информации об остатках, что является ошибкой.
Эту задачу мы перерешали: http://курсы-по-1с.рф/dev-attestation/startpage/task-2_14/comment-page-1/#comment-22152
1. Правильно ли я понимаю, что получение остатков В ЛЮБОМ случае должно происходить из таблиц остатков, даже если хранение остатков по этому субконто не имеет большого смысла?
Изначально задачу решил методом, схожим с вашим решением, но потом почитал комментарии и посмотрел переделанный вариант задачи.
Я сам долго думал над тем, как лучше обыграть этот момент, в итоге выбор в пользу оборотов был сделан исходя из того, чтобы не хранить ненужные данные. Получается, что если мы не можем четко указать период, за который мы хотим получить данные, то решаем через остатки. Или же все, что связано с остатками – через остатки, без исключений?
2. Можно ли прицепить аналитику по инв. номерам на счет покупателей? В дальнейшем работать с ним по аналогии решения.
3. Вопрос по оборотной табличке. Цитата из “Проф. разработки”:
“Если при обращении к виртуальной таблице параметр Периодичность установлен меньше месяца или используются поля, содержащие в своем название Кор,виртуальная таблица строится только на основании физических таблиц первичных движений”. Установка отбора в параметрах этой таблицы входит в эти “Кор” поля? Или имеется ввиду отбор ГДЕ по Кор полям или выбор Кор полей?
4. Можно ли пользоваться таблицей ОборотовДтКт? Или, исходя из той же книги “Проф Разработка”:
“При условии, что периодичность не меньше месяца (как и в виртуальной таблице оборотов) и в запросе не упоминается аналитика (физическая таблица оборотов между счетами не хранит информацию в разрезе субконто), используется физическая таблица итогов, в противном случае запрос выполняется к физическим таблицам первичных движений”.
Соотв. если помимо оборотов между счетами выбирать поля субконто или устанавливать отбор в параметрах виртуальной таблицы по субконто, то будем обращаться к движениям? Или же установка параметров вирт. таблицы не входит в условие?
1. А откуда Вы собираетесь получать остатки, если их у Вас нет?
2. Как Инв.номера с покупателями связаны?
3. ГДЕ с виртуальными таблицами вообще не связаны, так как отрабатываются пост фактум.
4. Я не против.
5. План запроса на конкретной версии платформы лучше всего смотреть профайлером запроса в MS SQL. В версии 8.3.5 входит в условие.
1. Изначально я их получал через оборот, как и в вашем первом варианте решения :)
Второй вариант решения я тоже видел. Там уже через остатки идет. Отсюда и вопрос: допускается ли в каких-то случаях решения через обороты или же первый вариант был просто ошибкой?
2. Например, чтобы понять из чего образовался оборот по покупателю => такие то товары по таким то номерам.
1. Первый вариант ошибочный.
2. Мне все же кажется, что инв номера с покупателями никак не связаны.
еще вопросы
1) зачем делать запрос по ТЧ для установки блокировки? почему нельзя использовать ТЧ объекта, в контексте которого работает обработка проведения?
и зачем при записи пустого набора выставляется флаг блокировки?
Движения.РегистрБухгалтерии.БлокироватьДляИзменения = Истина;
2) почему пространство блокировок ограничивается инвентарным номером? мы же читаем данные по всей номенклатуре ( для расчета стоимости выбытия)
Зачем делать запрос к ТЧ: она все равно нужна будет, почему бы ее запросом сразу не получить?
Зачем при записи пустого набора устанавливается флаг: http://1c.chistov.pro/2013/07/blog-post_25.html
Про инв.номер согласен, надо блокировать все по номенклатуре.
я все прочитал, но все равно непонятно. Вот инструкция из синтакс-помощника: “Имеет смысл использовать, если проверка итогов регистра выполняется после записи и заблокировать нужно именно те комбинации, по которым записываются записи.”
Мы записываем пустой набор, и что тогда заблокируется? Тем более, что ранее мы уже наложили блокировку “вручную”.
Запись пустого набора установит блокировку на те позиции, которые были в наборе записей до перепроведения документа, а кроме того отключит механизм разделения итогов до окончания транзакции проведения.
вот тут обсуждение про блокировки,
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=575698
цитируют Андрея Габец:
…”Поскольку классический алгоритм «сначала читаем, потом пишем» подразумевает предварительную запись «очищающего» пустого набора записей – то цена такой блокировке с пустыми комбинациями значений измерений – ноль.” …
Павел, проясните тему, А то Андрей Габец с Вами несогласен
А Павел Белоусов согласен: http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=573310#574265
Вот еще хорошая статья: http://infostart.ru/public/196565/
Ок. Спасибо.
Белоусов, вроде, круче чем Габец. По крайней мере задачи в сборнике он сочинял.
Хотя, я поискал, в типовых конфигурациях с управляемыми блокировками нигде не пишут пустой набор записей с флагом БлокироватьДляИзменения = Истина;
И к тому же о том, что блокируются старые данные из набора больше никто не подтверждает, кроме него.
В общем тема неоднозначная, конечно.
Павел, почему бы не добавить новый вариант решения задачи (2.14) в архив с решением? Я потратил время, разбираясь с вашим вариантом, а он оказывается неверный. Хоть бы предупредили на сайте.
Спасибо за критику. На сайте вроде как есть предупреждение, но все равно попрошу коллег добавить в архив новое решение.
Здравствуйте, Павел. У меня сразу несколько вопросов:
1) Вот ваш запрос на построение отчета:
ВЫБРАТЬ
РегистрБухгалтерииОбороты.Субконто1 КАК Субконто1,
РегистрБухгалтерииОбороты.СуммаОборотКт
ПОМЕСТИТЬ Продажи
ИЗ
РегистрБухгалтерии.РегистрБухгалтерии.Обороты(, , , Счет = &ПрибылиИУбытки, &ВидСубконтоИнвНомера, , , ) КАК РегистрБухгалтерииОбороты
ИНДЕКСИРОВАТЬ ПО
Субконто1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Продажи.Субконто1.Владелец КАК Номенклатура,
Продажи.Субконто1 КАК ИнвНомер,
РегистрБухгалтерииОбороты.СуммаОборотДт КАК ЗакупочнаяЦена,
РегистрБухгалтерииОбороты.СуммаОборотКт КАК Себестоимость,
Продажи.СуммаОборотКт КАК Продажа
ИЗ
Продажи КАК Продажи
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии.Обороты(
{(&ПустаяДата)},
{(&ПустаяДата)},
,
Счет = &Товары,
&ВидСубконтоИнвНомера,
Субконто1 В
(ВЫБРАТЬ
А.Субконто1
ИЗ
Продажи КАК А),
,
) КАК РегистрБухгалтерииОбороты
ПО Продажи.Субконто1 = РегистрБухгалтерииОбороты.Субконто1
Зачем нам понадобилось писать {(&ПустаяДата)},{(&ПустаяДата)}? Как я понимаю здесь вообще можно было обойтись без этого.
2) Когда решал задачу сам, то посмотрев на отчет я добавил 2 субконто к счету “ПрибылиУбытки” – Номенклатура, ИнвНомер. Здесь есть свои плюсы и минусы – минус очевиден добавляется лишний субконто,но плюс тоже в отчете вы получали товар через точку (по владельцу) тем самым используя неявное левое соединение, а в моем варианте этого не потребуется какой вариант более правильный?
3) Проводки связанные с товарами следующие: ПриходнаяНакладная ДтТовары->Поставщики на сумму закупаемого товара, в расходной накладной ДтПрибылиУбытки-> КтТовары на сумму себестоимости. Причем судя из условия себестоимость у нас рассчитывается как средняя ТОЛЬКО по товару Допустим пришел товар1 приходил на суммы 50 и 100 при списание товара сумма списания будет равна 75 и у нас на остатках повиснет -25, да в целом в разрезе номенклатуры не будет минусов но в разрезе ИнвНомеров будут. Как тут быть обращать ли на это внимание или нет?
4) Зачем в решении для счета Товары субконто ИнвНомер мы поставили признак только обороты и в следствии этого получали остатки по таблице оборотов, ведь обороты они хранятся на начало\Конец месяца и получать по ним остатки не очень эффективно. Да мы условились что у документы задним числом не проводятся, ведь в задаче явно это не сказано, но 1) В требованиях этот пункт точно есть. 2) Помимо задач с бух. учетом на экзамене будет еще задача и с опер. учетом и уж там то нам явно потребоваться может проведение задним числом. Конечно можно добавить агрегаты, но как я понял на экзамене это не обязательно. Может быть тогда не надо выдумывать “Велосипед” и провоцировать преподавателя снимать баллы, просто не ставить эту галочку?
Пришлите мне свою базу, с прокомментирую решение. Но не ранее 01.09.
Здравствуйте!
Как можно построить учет в случае, если нужно реализовать списание по разным вариантам в зависимости от учетной политики: ФИФО, ЛИФО или скользящему среднему? Как списывать партии и уводить остаток в ноль при списании по скользящему среднему?
При использовании “по среднему” не заполнять признак партии, так будет образована одна партия, которую как ни списывай, будет по среднему.
Все же есть проблема с копейкой. Как её решить?
Для примера можно оприходовать 3 ложки. Первая ложка инв.ном. 1 цена 100 р., вторая ложка инв.ном. 2 цена 200 р., третья ложка инв. ном. 3 цена 400 р.. Итого 3 ложки на 700 р. Когда списываем сразу 3 ложки то по вашему решению себестоимость равна 233,33 р. Зависает одна копейка.
При последней продаже копейки уйдут в ноль.
Добрый день. Павел, прокомментируйте пожалуйста задание 2.8 – последний абзац: “Дополнительные затраты на продажу вводятся в систему с помощью документа «Затраты». В табличной части этого документа указывается проект, и сумма, затраченная на затраты в рамках данного проекта. Документы вводятся по мере поступления затрат в течение дня. Считается, что все затраты должны быть отнесены в счет продаж текущего дня. Контролировать наличие продаж по данному проекту при проведении документа «Затраты» не нужно.”
Мне из условия непонятно, надо ли распределять затраты по продажам текущего дня (если да, то как? пропорционально сумме продаж как в 2.7?) или просто отнести на проект (без номенклатуры)?
Мне кажется, что достаточно просто отнести сумму к проекту.
Здравствуйте, Павел. Подскажите пожалуйста по задаче 2.5:
“Документ «Расходная накладная» формирует следующие проводки: Дт «Покупатели» – Кт «Прибыли и убытки» на сумму продажи, Дт «Покупатели» – Кт «Покупатели» на сумму зачтенного аванса”.
Если у меня на авансах 2000р, в накладной указана сумма 6000р, то ее проводки *по заданию* должны быть такими:
1) Дт Покупатели (суб1 Контрагент, суб2 договор) Кт ПрибылиУбытки 6000р
2) Дт Покупатели Кт Покупатели 2000р
Или их нужно (можно?) сделать так (чтобы отследить долг по отгрузке, как дебетовое сальдо счета покупатели с указанием договора):
1) Дт Покупатели (суб1 Контрагент, суб2 договор) Кт ПрибылиУбытки 4000р
2) Дт Покупатели (суб1 Контрагент, суб2 -) Кт ПрибылиУбытки 2000р
3) Дт Покупатели Кт Покупатели 2000р
Если у Вас аванс – это пустое субконто – то конечно второй вариант.
Здравствуйте, Павел.
4 февраля сдавал экзамен удаленно, попалась задача 2.14. Результат экзамена – не сдан. Сделал все так же, как у Вас в видеоуроке. Проверяющий написал такую ошибку: “В бухгалтерском учете для контроля остатков используется обращение к таблице оборотов, причем без указания первого параметра виртуальной таблицы (начального периода)”. Можно ли как-то апелляцию на это подать или бесполезно спорить с тем, что конкретно в требованиях прописано?
Здравствуйте.
Задача была перерешена 04.07.2013 http://xn—-1-bedvffifm4g.xn--p1ai/dev-attestation/startpage/task-2_14/comment-page-1/#comment-22152
Во втором варианте решения в Регистре бухгалтерии ресурс “Количество” установлен балансовым (в отличие от первого варианта), с какой целью?
Почему он не должен быть балансовым? В условиях задачи нет такого прямого или косвенного требования.
У меня тоже возник вопрос по этому флагу. Если посмотреть оперативные остатки по счету “Прибыли и убытки” в базе с решением, результат запроса содержит ненулевое значение в графе “Количество”. Хотя счет, по идее, не имеет количественного признака учета.
Балансовый – нужно снимать, если допускается корреспонденция двух счетов по которым установлено отличное свойство признака учета по счету, которое связано с ресурсом. К примеру допускаетя корреспонденция количественного и не количественного счетов, и при этом ресурс “Количество” связан с признаком учета.
Добрый день! Хочу задать вопрос. Когда мы сделали поступление товара мы сделали запись в СубконтоДт1 Номенклатуру и в СубконтоДт2 Номер этой номенклатуры..
Когда делаем реализацию.. мы только в субконто ДТ1 сделали запись с номером этой номенклатуры.. а почему нельзя сделать еще и запись с самой номенклатурой в СубконтоДт1(так же как в поступении))?
Постарайтесь задавать вопросы в контексте задачи.
Оборотное субконто. Можно делать, а зачем?
Добрый день!
По тексту “Каждой позиции закупаемого товара присваивается уникальный инвентарный номер”
я сделала вывод,что в закупке и продаже участвуют уникальные товары,отнесенные к типовой номенклатуре .Количественный учет не нужен,достаточен суммовой.
Для расчета себестоимости используем количество инвентарных номеров, сгруппированных по позиции номенклатуры.
Вот запрос в обработке проведения РН.
Запрос.Текст =
“ВЫБРАТЬ
| РасходнаяНакладнаяТовары.Товар,
| РасходнаяНакладнаяТовары.Сумма КАК СуммаПродажи
|ПОМЕСТИТЬ ДокТЧ
|ИЗ
| Документ.РасходнаяНакладная.Товары КАК РасходнаяНакладнаяТовары
|ГДЕ
| РасходнаяНакладнаяТовары.Ссылка = &Ссылка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.Товар.ТорговоеНаименование КАК НомПозиция,
| ДокТЧ.Товар КАК ИнвНомер,
| ЕСТЬNULL(РегистрБухгалтерииОстатки.СуммаОстаток, 0) КАК СуммаЗакупка
|ИЗ
| ДокТЧ КАК ДокТЧ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии.Остатки(
| &Момент,
| Счет = &СчетТовары,
| ,
| Субконто1 В
| (ВЫБРАТЬ
| ДокТЧ.Товар
| ИЗ
| ДокТЧ КАК ДокТЧ)) КАК РегистрБухгалтерииОстатки
| ПО ДокТЧ.Товар = РегистрБухгалтерииОстатки.Субконто1
|ИТОГИ
| СУММА(СуммаЗакупка)
|ПО
| НомПозиция
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| РегистрБухгалтерииОстатки.Субконто2 КАК НомПозиция,
| ВЫБОР
| КОГДА ДокТЧ.Товар = РегистрБухгалтерииОстатки.Субконто1
| ТОГДА ДокТЧ.Товар
| ИНАЧЕ РегистрБухгалтерииОстатки.Субконто1
| КОНЕЦ КАК ИнвНомер,
| ЕСТЬNULL(РегистрБухгалтерииОстатки.СуммаОстаток, 0) КАК СуммаЗакупка,
| ВЫБОР
| КОГДА ДокТЧ.Товар = РегистрБухгалтерииОстатки.Субконто1
| ТОГДА ДокТЧ.СуммаПродажи
| ИНАЧЕ 0
| КОНЕЦ КАК СуммаПродажи
|ИЗ
| ДокТЧ КАК ДокТЧ
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрБухгалтерии.РегистрБухгалтерии.Остатки(
| ,
| Счет = &СчетТовары,
| ,
| Субконто2 В
| (ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДокТЧ.Товар.ТорговоеНаименование
| ИЗ
| ДокТЧ КАК ДокТЧ)) КАК РегистрБухгалтерииОстатки
| ПО ДокТЧ.Товар.ТорговоеНаименование = РегистрБухгалтерииОстатки.Субконто2
|ИТОГИ
| КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ИнвНомер),
| СУММА(СуммаЗакупка)
|ПО
| НомПозиция
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДокТЧ.Товар
|ИЗ
| ДокТЧ КАК ДокТЧ”;
Контроль остатков ведется по наличию в выборке ненулевойсуммы закупки по Инв номеру(пакет 2).
НА первом уровне Цикла по выборке пакета 3
СредСебестЗакупки= ВыборкаНомПозиция.СуммаЗакупка/ВыборкаНомПозиция.ИнвНомер;
Отчет тоже простой.
Может это неплохой вариант?
Товары не уникальны, уникальна каждая партия закупаемого товара.
Павел, добрый день.
1. Хотел бы уточнить насчет параметра {(&ПустаяДата)} у таблицы оборотов по счету Товары в отчете, когда мы получаем обороты для закупочной цены и себестоимости.
Я так понимаю, что эта дата для того, чтобы получить закупочные цены за весь период учета по нужным нам инвентарным номерам, т.е. приходы могут не попасть в выбранный пользователями период, а закупочную цену узнать надо.
Но почему именно такой синтаксис? Фигурные скобки значат, что параметр необязательный, а почему нельзя его жестко установить?
2. Зачем в параметры виртуальных таблиц передаются измерение/массив измерений? Это обязательно или это влияет на скорость?
Спасибо.
1. Это параметр с никакой датой, если его явно не указать, то СКД построит запрос на КонецПериода, а нам это не надо.
2. Это очень сильно влияет на производительность, так как рассчитываются не все итоги и обороты, а только по указанным нами значениям.
1. Я спрашивал почему синтаксис – фигурные скобки, почему без них не работает?
2. Я имел ввиду поле – Субконто, где мы задаем виды субконто, а не условие. Ведь мы указываем счет и по идее виды субконто автоматом подтянутся.
1. В фигурных скобках указываются параметры СКД, а без скобок – параметры запроса.
2. Ограничение не виды субконто благотворно сказывается на производительности, в частности из-за того что накладывает ограничение на тип значения выбираемых значений субконто. Кроме того указав параметр Субконто, мы четко указываем какой вид субконто будет первым вторым и пт.
Добрый день.
А где правильнее ставить управляемую блокировку, перед первым запросом или между первым и вторым?
http://1c.chistov.pro/2013/07/blog-post_25.html
Добрый день Павел, в данной задаче используется метод получения остатков по оборотам, что в требованиях к экзамену считается ошибкой
Цитата из требований:
“В задачах получения итоговой информации по остаткам использование информации по оборотам или наоборот”, снимается за это 2 бала.
Пробывал в задаче вводить признак субконто “Суммовой” и отключать его для инвентарного номера. Все хороше, только в отчете при данной реализации не могу получить закупочную стоимость по инвентарнику (Только, если обратиться к реальной таблице регистра ДвиженияССубконто, что тоже является ошибкой).
Есть ли способ решить данную задачу не нарушая требования к экзамену? Всех коллег уже переспрашивал, четкого ясного решения по этой ситуации нет.
Очень интересно ваше мнение по поводу этого вопроса…
Заранее спасибо!
Понял что ДвиженияССубконто является виртуальной таблицей, поэтому вариант решения с признаком учета субконто “Суммовой” думаю подходит.
Ушел решать задачу. Завтра, 03.07.2013, до конца дня, выложу вариант и мысли. Спасибо за комментарий.
Освежил решение:
У счета Товары 2 субконто, Номенклатура и Инв.номер. По Инв.Номеру не ведется суммовой учет. Данные о закупках для отчета берем из корр оборотов Поствщики/Товары.
Для чего делать блокировку на поле Период?
ЭлементБлокировки.ИспользоватьИзИсточникаДанных(“Период”, Новый Диапазон(, Дата));
У меня из-за этого вылетает ошибка несоответствия типов, говорит, что параметр должен быть строкой. Что не так делаю?
Блокировка по периоду позволит писать движения позже проводимого документа.
С ошибкой не понятно, проверил, синтаксически все верно.
А зачем писать движения позже проводимого документа? Поясните, пожалуйста.
Если несколько пользователей работают одновременно, то не стоит всех ограничивать в проведении, если есть возможность дать кому-либо работать.
Не могу загрузить ни первый, ни второй фаил. Пишет “Не верный формат файла для загрузки информационной базы”.
Платформа 1С:Предприятие 8.2 (8.2.18.104)
Попробуйте загрузить в учебной версии 8.3, бесплатно ее можно скачать тут: http://1c-dn.com/downloads/1c_enterprise_platform_8_training_version/
Не грузиться, ошибка формата потока. Пробовал и в 8.2 и в 8.3. На какой вариант решения все-таки ориентироваться – на тот, что на видео или на этот вариант?
Загрузил на 8.3.4.317.
Конечно на более свежее решение.
Добрый день.
Павел, что делать с копейкой?
Или в документе нельзя указывать 2 номенклатурные позиции с разными Инв. номерами?
Номенклатура Инв номер Закупочная цена Себестоимость
Карандаш 001 10 000,58 15 000,46
Карандаш 002 20 000,33 15 000,46
Номенклатура СуммаОстаток КоличествоОстаток
Карандаш -0,01 0
Можно. Копейка, при списании последнего элемента, уйдет.
Павел, maltsev_80 привел пример, где копейка при списании зависает. Проблема в строке
Проводка.Сумма = Выборка.СуммаОстаток / Выборка.КоличествоОстаток;
В данном примере получается
Приход: 0,58 + 0,33 = 0,91
Расход: в одной Расходной обе позиции по себестоимости 0,455 = 0,91/2, т.к. Проводка.Сумма имеет точность 2, то имеем 0,46*2 = 0,92
Зависает -1 копейка.
Ну а как избежать проблемы зависания копеек, в видео уже разбиралось.
Здравствуйте Павел! Скажите пожалуйста, используемый вами метод получения остатков из таблицы оборотов, насколько считается корректным и какие в нем “подводные камни”?
Спасибо!
Поясните вопрос. Задача писалась год назад, я возможно не понимаю что Вы имеете в виду.
В задаче на счете товары используется два субконто: Товар и Инвентарный номер. Второе субконто оборотное (для расчета средней цены только по товарам), но так же необходимо получать остаток при списании в разрезе инвентарных номеров. Вы получили остаток вычислением из таблицы оборотов Приход – Расход.
Вопрос понятен.
Не понятно что ответить. Корректен. Подводных камней не замечаю. Если Вам кажется, что есть более корректный способ получения остатков в этой задаче, предложите – обсудим.
Сбивает нелогичность проводки. Зачем с кредита товары списывать себестоимоть если с него нужно списать сумму остаток, а уже по дебету счета прибыли и убытки дополнительными проводками отражать накладные расходы. Тогда бы получилась себестоимость…
Добрый день, Павел!
В документе “Расходная накладная” при добавлении строки ТЧ с номенклатурой и Инв.номером товара, не имеющегося в остатке получаю сообщение:
{Документ.РасходнаяНакладная.МодульОбъекта(97)}: Преобразование значения к типу Число не может быть выполнено
Проводка.Сумма = Выборка.СуммаОстаток / Выборка.КоличествоОСтаток;
Подскажите, пожалуйста, где ошибка.
С уважением,
Иван Фрицкун
В запросе поле “КоличествоОстаток” имеет тип NULL.
Спасибо, Павел!
Если в приведенном выше запросе поделить поле “СумТоваров” на “КолТоваров” то себестоимость посчитается правильно.
Посчитается правильно. А что в остатке храниться будет?
1й номер стоит 100
2й стоит 200
Списываем первый номер, себестоимость должна быть 150. -50 на субконто повиснет?!
Здравствуйте, Павел.
А можно не отключать остатки по субконто инвентарные номера?
Тогда одним запросом можно и проконтролировать остатки (проверив КолТоваров на = 0) и посчитать себестоимость:
Товары.Номенклатура КАК Номенклатура,
Товары.ИнвентарныйНомер КАК ИнвентарныйНомер,
Товары.Сумма
ПОМЕСТИТЬ ДокТЧ
ИЗ
Документ.РасходнаяНакладная.СписокНоменклатуры КАК Товары
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
ИнвентарныйНомер
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДокТЧ.Номенклатура,
ДокТЧ.ИнвентарныйНомер КАК ИнвентарныйНомер,
МАКСИМУМ(ДокТЧ.Сумма) КАК СуммаПродажи,
СУММА(ЕСТЬNULL(Остатки.СуммаОстаток, 0)) КАК СумТоваров,
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Остатки.Субконто2) КАК КолТоваров
ИЗ
ДокТЧ КАК ДокТЧ
ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки(
&МоментВремени,
Счет = ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Товары),
&ВидыСубконто,
Субконто1 В
(ВЫБРАТЬ
ДокТЧ.Номенклатура
ИЗ
ДокТЧ КАК ДокТЧ)) КАК Остатки
ПО ДокТЧ.Номенклатура = Остатки.Субконто1
СГРУППИРОВАТЬ ПО
ДокТЧ.Номенклатура,
ДокТЧ.ИнвентарныйНомер
Спасибо, Николай.
Себестоимость тогда будет считаться по инв.номерам, а нам надо по товару в среднем.