Можно убрать копейки , используя метод последнего списания как было реализовано в ВыборкаНоменклатура. Ведь у нас есть данные по расчиианной себестоимости и количества для верхней группировки.
по поводу документа Выбытие: я бы вообще разбила запрос на 3 запроса. В первом получаем просроченное оборудование из ОстаткиНоменклатуры (и в нем же помещаем их во врем. табл. для использования во втором запросе), по результатам первого запроса (если не пустой) делаем блокировку регистра Себестоимость (только по выбранной номенклатуре), движения по РН ОстаткиНом и второй запрос - в нем уже соединяем врем.таблицу из первого запроса с РН Себестоимость и делаем движения по этому регистру. Ну и третий запрос - РН ОборудованиеВЭксплуатации.
По поводу отдельного запроса для каждого регистра. Смотреть, как в УТ 10 так себе затея. Там легаси код, который не соответствует актуальным методическим рекомендациям от самой 1С, указанных на ИТС. Вот в УТ 11 там для каждого регистра отдельный запрос (в итоге выполняется пакет запросов). Естественно, предварительно таблица товаров помещается во временную, чтобы для каждого запроса не выполнять обращение к БД. Я за этот подход. Код действительно становится более читабельным, да и вносить изменения гораздо проще. Например, если что-то поменялось при проведении по одному регистру, то гораздо проще поправить соответствующий запрос, чем вносить изменения в "монстра", который получает за раз данные для всех (нескольких) регистров (хотя, чисто для экзамена, думаю, допускается и write only код). А вот по поводу копеек не вижу ни чего страшного в таком округлении. Сам такое практикую, но более того (в конце концов, кто я такой) в типовых конфигурациях именно так и делают. Да и своим скудным мозгом я даже не могу придумать другого алгоритма. Если умные люди скажут, как правильно, буду признателен и использовать их подход.
В УТ 11 методика уникальная, конечно. Нам тут такое делать не надо. Тоже пока не могу придумать другого алгоритма. Будет интересно узнать о существовании более красивого решения.
Илья, спасибо за очень качественные стримы. Очень полезно и интересно. Ты сказал, что задачи по БУ будут в мае, а когда планируются расчетные задачи и задачи по упр. формам и бизнес процессам, если они будут вообще?
План такой: 1) ОУ; 2) БУ; 3) СПР; 4) Упр.формы; 5) Бизнес-процессы. Закрываем одно - делаем другое. В каждом разделе по 16 задач. Когда это будет конкретно по датам, никто не знает. Но я стараюсь не затягивать.
Илья, большое спасибо. Вопрос: в задачах с двумя регистрами остатки и себестоимость, в регистре остатков (ОстаткиНоменклатуры) нет сумм и контроль остатков можем делать только по данному регистру, все данные для проведения по этому регистру у нас в документе есть. И это новая методика проведения. Как это было в вашем занятии номер 6 (Расчет себестоимости по компании в целом), там аналогично контролировали остатки по регистру ОстаткиНоменклатуры по новой методике, а себестоимость списывали по компании в целом ниже по старой методике. Так же существует третий подход, когда себестоимость рассчитывается обработкой по требованию, а не в модуле проведения. На ваш взгляд какой подход нужно использовать?
Валерий, в регистре ОстаткиНоменклатуры у нас есть поле "СрокГодности", которое приходится вычислять, в документе его нет. Поэтому новая методика здесь не подойдет. Обработкой себестоимость рассчитывать не стоит, потому что в постановке задачи нет ни единого намека на то, что это нужно делать.
58:12 конкретно в \том случае переменная Движение и так хранить последнюю записть регистра Себестоимость. Поэтому можно изменять прямо её без обращения к регистру.
А если не рассчитывать погрешность, а по аналогии со списанием последней себестоимости? С момента: СебестоимостьИтого = 0; и далее ВыборкаДетальныеЗаписи: СебестоимостьИтого=Себестоимость; После каждого Движения уменьшаем СебестоимостьИтого и в последнем движении Если КоличествоКСписанию=Количество списываем остаток СебестоимостьИтого? (может чего накосячил с логикой, извините, но смысл я думаю понятен, скорее всего и округление не понадобиться)
Думаю, что нужно было иначе спроектировать регистры и обойтись только двумя. По сути - это завуалированная задача с приходом, перемещением и списанием, следовательно и со структурой регистров остатков и партий. Нужно было сделать один регистр "СтоимостиНоменклатуры" с измерением Номенклатура и ресурсами кол-во и сумма, а для учета остатка номенклатуры сделать еще ОДИН регистр "ОстаткиНоменклатуры" с измерениями Номенклатура, СтатусНоменклатуры, Срок хранения, СрокЭксплуатации и с ресурсом кол-во. СтатусНоменклатуры - это можно сделать перечисление с вариантами "Не введен в эксплуатацию" и "Введен в эксплуатацию". При вводе в эксплуатацию делать "+/-" по регистру "ОстаткиНоменклатуры" , а по регистру "СтоимостиНоменклатуры" делать движение только про приходовании номенклатуры от поставщика и при списании с истекшими сроками.
Илья привет, вопрос такой ты получаешь последнее движение через Количество() - 1, у тебя ведь в движение.Стоимость и так последняя запись. Это не то что предъява, просто охото разобраться можно ли так сделать Если НЕ Погрешность = 0 Тогда движение.Стоимость = движение.Стоимость + Погрешность КонецЕсли
Воробей, так лучше не будет так как в дальнейшем может меняться код другими людьми и в движении может быть уже другой регистр, тоесть такое упрощение может приводить к неочевидным ошибкам.
Кстати я тут подумал, а почему бы не оставить было бы себестоимость в первом регистре и вычислять себестоимость сразу 2-умя способами? ведь для этого всё есть или экзаменатор не поймёт и скажется зачем нагружаете систему)))
Главный вывод, не нужно у экзаменаторов ничего спрашивать и если попадется такой билет, в пояснительной записке написать, сделал так как посчитал правильным. Решение описанное в 24 уроке правильное.
Подожди, у нас с регистром "СебестоимостьТоваров" вообще проблем нет - списываем себестоимость с обычным условием последнего списания. У нас спорная ситуация при расчете себестоимости, которую мы приходуем в регистр "ОборудованиеВЭксплуатации", а ты этот регистр в коде вообще не заполняешь.
@@IlyaLeontyev Зачем вообще приходовать себестоимость в регистр оборудование в эксплуатации? В билете про это нет ни слова, что ввод в эксплуатацию куда то там двигает себестоимость. Конечно в управленческом то учете оно правильно списывать себестоимость при вводе в эксплуатацию, но в задаче этого нет. Можно сделать, что себестоимость списывает только выбытие оборудования и не городить огород. Для отчета тут конечно усложняется чуть ситуация, но ...
Интересные замечания у слушателей. Скорее хочу послушать следующее занятие с работой над ошибками!
Илья, спасибо за занятие!😊
Как всегда спасибочки, все супер!
Можно убрать копейки , используя метод последнего списания как было реализовано в ВыборкаНоменклатура. Ведь у нас есть данные по расчиианной себестоимости и количества для верхней группировки.
А я сделал связь по контрагенту в прошлом занятии, видел что ты не сделал, но подумал оставлю у себя, точно не будет лишним
по поводу документа Выбытие: я бы вообще разбила запрос на 3 запроса. В первом получаем просроченное оборудование из ОстаткиНоменклатуры (и в нем же помещаем их во врем. табл. для использования во втором запросе), по результатам первого запроса (если не пустой) делаем блокировку регистра Себестоимость (только по выбранной номенклатуре), движения по РН ОстаткиНом и второй запрос - в нем уже соединяем врем.таблицу из первого запроса с РН Себестоимость и делаем движения по этому регистру. Ну и третий запрос - РН ОборудованиеВЭксплуатации.
По поводу отдельного запроса для каждого регистра. Смотреть, как в УТ 10 так себе затея. Там легаси код, который не соответствует актуальным методическим рекомендациям от самой 1С, указанных на ИТС. Вот в УТ 11 там для каждого регистра отдельный запрос (в итоге выполняется пакет запросов). Естественно, предварительно таблица товаров помещается во временную, чтобы для каждого запроса не выполнять обращение к БД. Я за этот подход. Код действительно становится более читабельным, да и вносить изменения гораздо проще. Например, если что-то поменялось при проведении по одному регистру, то гораздо проще поправить соответствующий запрос, чем вносить изменения в "монстра", который получает за раз данные для всех (нескольких) регистров (хотя, чисто для экзамена, думаю, допускается и write only код). А вот по поводу копеек не вижу ни чего страшного в таком округлении. Сам такое практикую, но более того (в конце концов, кто я такой) в типовых конфигурациях именно так и делают. Да и своим скудным мозгом я даже не могу придумать другого алгоритма. Если умные люди скажут, как правильно, буду признателен и использовать их подход.
В УТ 11 методика уникальная, конечно. Нам тут такое делать не надо.
Тоже пока не могу придумать другого алгоритма. Будет интересно узнать о существовании более красивого решения.
Класс, решению проблем округления копеек, я сам бы никогда не догадался бы
спасибо за видео,
Илья, спасибо за очень качественные стримы. Очень полезно и интересно. Ты сказал, что задачи по БУ будут в мае, а когда планируются расчетные задачи и задачи по упр. формам и бизнес процессам, если они будут вообще?
План такой:
1) ОУ;
2) БУ;
3) СПР;
4) Упр.формы;
5) Бизнес-процессы.
Закрываем одно - делаем другое. В каждом разделе по 16 задач.
Когда это будет конкретно по датам, никто не знает. Но я стараюсь не затягивать.
@@IlyaLeontyev Илья, спасибо. Ты лучший стример по 1С
Спасибо!
Илья, большое спасибо. Вопрос: в задачах с двумя регистрами остатки и себестоимость, в регистре остатков (ОстаткиНоменклатуры) нет сумм и контроль остатков можем делать только по данному регистру, все данные для проведения по этому регистру у нас в документе есть. И это новая методика проведения. Как это было в вашем занятии номер 6 (Расчет себестоимости по компании в целом), там аналогично контролировали остатки по регистру ОстаткиНоменклатуры по новой методике, а себестоимость списывали по компании в целом ниже по старой методике. Так же существует третий подход, когда себестоимость рассчитывается обработкой по требованию, а не в модуле проведения. На ваш взгляд какой подход нужно использовать?
Валерий, в регистре ОстаткиНоменклатуры у нас есть поле "СрокГодности", которое приходится вычислять, в документе его нет.
Поэтому новая методика здесь не подойдет.
Обработкой себестоимость рассчитывать не стоит, потому что в постановке задачи нет ни единого намека на то, что это нужно делать.
47:07 Отвернулся)
58:12 конкретно в \том случае переменная Движение и так хранить последнюю записть регистра Себестоимость. Поэтому можно изменять прямо её без обращения к регистру.
А если не рассчитывать погрешность, а по аналогии со списанием последней себестоимости? С момента: СебестоимостьИтого = 0; и далее ВыборкаДетальныеЗаписи: СебестоимостьИтого=Себестоимость; После каждого Движения уменьшаем СебестоимостьИтого и в последнем движении Если КоличествоКСписанию=Количество списываем остаток СебестоимостьИтого? (может чего накосячил с логикой, извините, но смысл я думаю понятен, скорее всего и округление не понадобиться)
46.36 товары с истекшим сроком годности нельзя включать в расчет себестоимости. По существу, если истек срок годности, то это испорченный товар.
Думаю, что нужно было иначе спроектировать регистры и обойтись только двумя. По сути - это завуалированная задача с приходом, перемещением и списанием, следовательно и со структурой регистров остатков и партий.
Нужно было сделать один регистр "СтоимостиНоменклатуры" с измерением Номенклатура и ресурсами кол-во и сумма, а для учета остатка номенклатуры сделать еще ОДИН регистр "ОстаткиНоменклатуры" с измерениями Номенклатура, СтатусНоменклатуры, Срок хранения, СрокЭксплуатации и с ресурсом кол-во. СтатусНоменклатуры - это можно сделать перечисление с вариантами "Не введен в эксплуатацию" и "Введен в эксплуатацию". При вводе в эксплуатацию делать "+/-" по регистру "ОстаткиНоменклатуры" , а по регистру "СтоимостиНоменклатуры" делать движение только про приходовании номенклатуры от поставщика и при списании с истекшими сроками.
Илья привет, вопрос такой ты получаешь последнее движение через Количество() - 1, у тебя ведь в движение.Стоимость и так последняя запись. Это не то что предъява, просто охото разобраться можно ли так сделать Если НЕ Погрешность = 0 Тогда движение.Стоимость = движение.Стоимость + Погрешность КонецЕсли
Привет! Спасибо за замечание.
Так, пожалуй, действительно будет лучше )
Воробей, так лучше не будет так как в дальнейшем может меняться код другими людьми и в движении может быть уже другой регистр, тоесть такое упрощение может приводить к неочевидным ошибкам.
Кстати я тут подумал, а почему бы не оставить было бы себестоимость в первом регистре и вычислять себестоимость сразу 2-умя способами? ведь для этого всё есть или экзаменатор не поймёт и скажется зачем нагружаете систему)))
Главный вывод, не нужно у экзаменаторов ничего спрашивать и если попадется такой билет, в пояснительной записке написать, сделал так как посчитал правильным. Решение описанное в 24 уроке правильное.
братух, напиши какие у тебя наушники и веб камера? и мокрофон??
Наушники - Sennheiser PXC 550.
Микрофон - Maono AU-PM422.
@@IlyaLeontyev а вебка?
@@VashDrug007 Canon M50 + объектив Sigma AF 16mm f/1.4 )
Плотно. Настолько плотно что по одному регистру я списал 17 а по двум другим по 13, придется еще раз смотреть, ну повторение мать учения.
Сегодня решал, так реализовал:
Если НЕ Отказ Тогда
ОсталосьСписать = ВыборкаНоменклатура.Количество;
СебестоимостьЗаЕд = ВыборкаНоменклатура.СебестоимостьОстаток /
ВыборкаНоменклатура.СебестоимостьКоличествоОстаток;
ИтогСебестоимость = СебестоимостьЗаЕд * ВыборкаНоменклатура.Количество;
ВыборкаДетальныеЗаписи = ВыборкаНоменклатура.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() И ОсталосьСписать > 0 Цикл
// регистр ОстаткиНоменклатуры Расход
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.СрокГодности = ВыборкаДетальныеЗаписи.СрокГодности;
СписываемоеКоличество = Мин(ОсталосьСписать, ВыборкаДетальныеЗаписи.КоличествоОстаток);
Движение.Количество = СписываемоеКоличество;
СписатьСебестоимость = Мин(ИтогСебестоимость, Окр(СебестоимостьЗаЕд * СписываемоеКоличество,2));
// регистр СебестоимостьТоваров Расход
Движение = Движения.СебестоимостьТоваров.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Количество = СписываемоеКоличество;
СуммаСписания = ?(Движение.Количество = ОсталосьСписать,
ИтогСебестоимость, СписатьСебестоимость);
Движение.Себестоимость = СуммаСписания;
ИтогСебестоимость = ИтогСебестоимость - Движение.Себестоимость;
ОсталосьСписать = ОсталосьСписать - Движение.Количество;
КонецЦикла;
КонецЕсли;
Проверил по-моему копейки не остаются, Илья или может еще кто, буду признателен, будет время гляньте или я "напарил" и проблему копеек не решил???(фрагмент кода ввод в эксплуатацию)
Подожди, у нас с регистром "СебестоимостьТоваров" вообще проблем нет - списываем себестоимость с обычным условием последнего списания.
У нас спорная ситуация при расчете себестоимости, которую мы приходуем в регистр "ОборудованиеВЭксплуатации", а ты этот регистр в коде вообще не заполняешь.
@@IlyaLeontyev спасибо, чета походу напарил )))
@@IlyaLeontyev Зачем вообще приходовать себестоимость в регистр оборудование в эксплуатации? В билете про это нет ни слова, что ввод в эксплуатацию куда то там двигает себестоимость. Конечно в управленческом то учете оно правильно списывать себестоимость при вводе в эксплуатацию, но в задаче этого нет. Можно сделать, что себестоимость списывает только выбытие оборудования и не городить огород. Для отчета тут конечно усложняется чуть ситуация, но ...
Самый лучший расчет себестоимости без учетов сроков годности, что я видел =)
10:50