Комментарии
Избранное
Подписка
Сортировка:
Древо
Посмотрел первую часть, очень понравилось. Мастер-классы эти будут очень полезны всем. А тем, кому за свой счет курсы дороги, вообще необходимы. Все очень доходчиво с акцентом на основных моментах. Спасибо большое.
А сертификаты многим вообще не нужны..
А сертификаты многим вообще не нужны..
хорошие мастер-классы. смотрю сейчас решение опер. задач - очень наглядно. правда не совсем понятен один момент. смотрим текст запроса, используемый в обработке проведения Приходной для формирования движений по регистру остаткиНоменклатуры. все гут. затем автор говорит, что данный же запрос можно использовать для регистра ЦеныПоставщиков, что вызывает сомнения, т.к. поле "Поставщик" мы сможем вытащить из шапки док-та Приходная, а вот поле "Цена" никак нет, ведь табл. часть группируется и что в этом случае делать - суммировать цену или выбирать максимальную?
Все зависит от задачи. По хорошему, так как записи в регистре "ЦеныПоставщиков" подчинены регистратору, то физически документ "Приходная" не проведется с дублями строк. => надо запретить создавать дубли и как следствие не придутся ничего группировать при формировании запроса.
а не лучше ли в обработке проведения одним циклом обойти все
Выборка = Запрос.выполнить ().выбрать();
Пока Выборка.следующий () Цикл
Если Выборка.Количество > Выборка.КоличествоОстаток ТОгда
Сообщить ("На складе " + Склад + " недостаточно номенклатуры " + Выборка.Номенклатура + " для списания!");
Отказ = True;
Продолжить;
endif;
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Регистратор = Ссылка;
Движение.Склад = Склад;
Движение.Количество = Выборка.Количество;
Движение.Сумма = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СуммаОстаток;
Движение.Период = Дата;
enddo;
если Отказ тогда
Возврат;
КонецЕсли;
"или я не прав где то?
Выборка = Запрос.выполнить ().выбрать();
Пока Выборка.следующий () Цикл
Если Выборка.Количество > Выборка.КоличествоОстаток ТОгда
Сообщить ("На складе " + Склад + " недостаточно номенклатуры " + Выборка.Номенклатура + " для списания!");
Отказ = True;
Продолжить;
endif;
Движение = Движения.ОстаткиНоменклатуры.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Номенклатура = Выборка.Номенклатура;
Движение.Регистратор = Ссылка;
Движение.Склад = Склад;
Движение.Количество = Выборка.Количество;
Движение.Сумма = Выборка.Количество / Выборка.КоличествоОстаток * Выборка.СуммаОстаток;
Движение.Период = Дата;
enddo;
если Отказ тогда
Возврат;
КонецЕсли;
"или я не прав где то?
(12) Так а зачем их формировать, если транзакция все равно отмениться? Может я не понимаю предмет нашего спора?
Я в цикле делаю полную проверку остатков, но прекращаю формировать движения если хотя бы одного товара не хватает. В (10) движения формируются ВСЕ кроме тех товаров по которым не хватает остатка, а потом они все и отменяются в транзакции, на мой взгляд это не оптимально, сначала формировать движения, а потом отменять их.
Я в цикле делаю полную проверку остатков, но прекращаю формировать движения если хотя бы одного товара не хватает. В (10) движения формируются ВСЕ кроме тех товаров по которым не хватает остатка, а потом они все и отменяются в транзакции, на мой взгляд это не оптимально, сначала формировать движения, а потом отменять их.
В видео лекции проведение реализовано двумя циклами (один - проверяет остатки, а второй формирует движения по регистрам ), а у меня - одним. Т.к. ситуация с недостатком товаров на складе всречаестя редко, особенно если реализовать программное заполнение, то считаю свои вариант оптимальней, по крайней мере хочу выяснить так ли это...
Павел, когда идте расчет процента скидки, попробуйте сделать его когда объем продаж больше 10 000, судя по вашему запросу скидка будет НУЛЛ, мне кажеться там ошибка.
Предлягаю свой вариант запроса
ВЫБРАТЬ
ЕСТЬNULL ( МАКСИМУМ (ШкалаСкидокСрезПоследних.Процент), 0) КАК Процент
ИЗ
РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, , Контрагент = &Контрагент) КАК ПродажиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШкалаСкидок.СрезПоследних(&МоментВремени, ) КАК ШкалаСкидокСрезПоследних
ПО ПродажиОбороты.СуммаОборот > ШкалаСкидокСрезПоследних.ОбъемЗакупки
"
Предлягаю свой вариант запроса
ВЫБРАТЬ
ЕСТЬNULL ( МАКСИМУМ (ШкалаСкидокСрезПоследних.Процент), 0) КАК Процент
ИЗ
РегистрНакопления.Продажи.Обороты(&Дата1, &Дата2, , Контрагент = &Контрагент) КАК ПродажиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШкалаСкидок.СрезПоследних(&МоментВремени, ) КАК ШкалаСкидокСрезПоследних
ПО ПродажиОбороты.СуммаОборот > ШкалаСкидокСрезПоследних.ОбъемЗакупки
"
Кроме того, скидка определяется при открытии на дату (или момент) документа, Если теперь пользователь изменит дату на заднее число - то текущая скидка перестанет быть актуальной (в лекции пересчета нет), что тоже ошибочно.
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
Вакансии
Технический лидер, архитектор 1С, руководитель проектов
Санкт-Петербург
зарплата от 150 000 руб.
Полный день
Санкт-Петербург
зарплата от 150 000 руб.
Полный день