|   |   | 
| 
 | Странное решение ↓ (Волшебник 12.07.2025 08:22) | ☑ | ||
|---|---|---|---|---|
| 0
    
        Vartigon 11.07.25✎ 18:10 | 
        Доброго времени суток.
 Столкнулся с одной проблемой. Хотел сделать так: Себестоимость = ВыборкаНоменклатура.Количество / ВыборкаНоменклатура.СуммаОстаток; Но не смог!!! Пришлось делать так: ВыбКол = ВыборкаНоменклатура.Количество; ВыбСум = ВыборкаНоменклатура.СуммаОстаток; Себестоимость = ВыбКол / ВыбСум; Почему не получился первый вариант? | |||
| 1
    
        Волшебник 11.07.25✎ 18:12 | 
        Нам надо угадать текст ошибки? Это викторина?     | |||
| 2
    
        Волшебник 11.07.25✎ 18:13 | 
        Кстати, числитель и знаменатель поменяйте местами     | |||
| 3
    
        Волшебник 11.07.25✎ 18:14 | 
        (0) наверняка в запросе не обрабатываются значения NULL     | |||
| 4
    
        Vartigon 11.07.25✎ 18:17 | 
        Да, я примерно написал. Часть кода:
 Пока ВыборкаНоменклатура.Следующий() Цикл Если ВыборкаНоменклатура.КоличествоОстаток <> 0 Тогда Если ВыборкаНоменклатура.Количество = ВыборкаНоменклатура.КоличествоОстаток Тогда Себестоимость = ВыборкаНоменклатура.СуммаОстаток; Иначе СумОс = ВыборкаНоменклатура.СуммаОстаток; КолОс = ВыборкаНоменклатура.КоличествоОстаток; Себестоимость = СумОс / КолОс; КонецЕсли; Иначе Себестоимость = 0; КонецЕсли; Выборка = ВыборкаНоменклатура.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Склад <> Склад Тогда Продолжить; КонецЕсли; Если Выборка.Количество > Выборка.КоличествоОстаток Тогда Сообщить("Недостаточно товара"); Отказ = Истина; Продолжить; КонецЕсли; | |||
| 5
    
        Ильф 11.07.25✎ 18:19 | 
        ага, а ВыбКол и ВыбСум  - это реквизиты числового типа     | |||
| 6
    
        Бычье сердце 11.07.25✎ 18:20 | 
        Сообщить("Недостаточно товара");
 Весьма неожиданно, сударь | |||
| 7
    
        Vartigon 11.07.25✎ 18:21 | 
        "ага, а ВыбКол и ВыбСум  - это реквизиты числового типа"
 Получается, что числового. Почему "Себестоимость" не хочет быть числом сразу? Только через костыль получается числовое значение | |||
| 8
    
        Vartigon 11.07.25✎ 18:22 | 
        "Сообщить("Недостаточно товара");
 Весьма неожиданно, сударь" Это задачка из спеца по бухгалтерии. Упростил) | |||
| 9
    
        Бычье сердце 11.07.25✎ 18:25 | 
        Покажите, что показывает в отладке в точке:
 1. ВыборкаНоменклатура.Количество 2. ВыборкаНоменклатура.СуммаОстаток 3. ВыборкаНоменклатура.Количество / ВыборкаНоменклатура.СуммаОстаток 4. Себестоимость Прям в табло выведите этот список и сюда выложите | |||
| 10
    
        Злоп 11.07.25✎ 18:26 | 
        "Но не смог".
 Автор "угадал все буквы, но не смог прочитать слово Ну и про "паровозик, который смог" надо знать... | |||
| 12
    
        Vartigon 11.07.25✎ 18:39 | ||||
| 13
    
        Волшебник 11.07.25✎ 18:44 | 
        (7) Потому что см (3)
 В запросе надо использовать функцию ЕСТЬNULL(поле, 0) | |||
| 14
    
        Vartigon 11.07.25✎ 18:49 | 
        (13) Вроде я так и сделал: https://iimg.su/i/ppw9f1     | |||
| 15
    
        Волшебник 11.07.25✎ 18:54 | 
        (14) Покажите текст запроса целиком     | |||
| 16
    
        Волшебник 11.07.25✎ 18:55 | 
        И покажите текст ошибки, наконец.     | |||
| 17
    
        Vartigon 11.07.25✎ 18:57 | 
        (16) Запрос = Новый Запрос;
 Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Проект КАК Проект, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Цена) КАК Цена, | РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад КАК Склад |ПОМЕСТИТЬ врТаблица |ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры |ГДЕ | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Проект, | РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Проект, | Склад |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | врТаблица.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕ(врТаблица.Номенклатура) КАК НоменклатураП, | УправленческийОстатки.Субконто2 КАК Склад, | врТаблица.Проект КАК Проект, | врТаблица.Количество КАК Количество, | врТаблица.Цена КАК Цена, | ЕСТЬNULL(УправленческийОстатки.СуммаОстатокДт, 0) КАК СуммаОстаток, | ЕСТЬNULL(УправленческийОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстаток |ИЗ | врТаблица КАК врТаблица | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки( | &Период, | Счет = &Счет, | , | Субконто1 В | (ВЫБРАТЬ | врТаблица.Номенклатура КАК Номенклатура | ИЗ | врТаблица КАК врТаблица) | И Субконто2 = &Склад) КАК УправленческийОстатки | ПО врТаблица.Номенклатура = УправленческийОстатки.Субконто1 |ИТОГИ | СУММА(Количество), | СУММА(СуммаОстаток), | СУММА(КоличествоОстаток) |ПО | Номенклатура"; Запрос.УстановитьПараметр("Период", МоментВремени()); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Управленческий.Товары); | |||
| 18
    
        Vartigon 11.07.25✎ 18:59 | 
        (16) Я выгрузил скан ошибки. Себестоимость - неопределённо.     | |||
| 19
    
        Волшебник 11.07.25✎ 19:00 | 
        В последнем запрос не нужны ИТОГИ     | |||
| 20
    
        Волшебник 11.07.25✎ 19:01 | 
        Пока Вы будете скрывать куски кода, Вы будете мучаться.
 Например, нет куска кода, который выполняет запрос и начинает выборки | |||
| 21
    
        Vartigon 11.07.25✎ 19:02 | 
        (20) Весь код:
 ПВХ = ПланыВидовХарактеристик.ВидыСубконто; ВидыСубконто = Новый Массив; ВидыСубконто.Добавить(ПВХ.Номенклатура); ВидыСубконто.Добавить(ПВХ.Склады); Движения.Управленческий.Записывать = Истина; Движения.Управленческий.Записать(); Блокировка = Новый БлокировкаДанных; ЭлементБлокировки = Блокировка.Добавить("РегистрБухгалтерии.Управленческий"); ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный; ЭлементБлокировки.УстановитьЗначение("Счет", ПланыСчетов.Управленческий.Товары); ЭлементБлокировки.УстановитьЗначение("Субконто2", Склад); ЭлементБлокировки.ИсточникДанных = СписокНоменклатуры; ЭлементБлокировки.ИспользоватьИзИсточникаДанных("Субконто1", "Номенклатура"); Блокировка.Заблокировать(); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Проект КАК Проект, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество, | СУММА(РасходнаяНакладнаяСписокНоменклатуры.Цена) КАК Цена, | РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад КАК Склад |ПОМЕСТИТЬ врТаблица |ИЗ | Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры |ГДЕ | РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | РасходнаяНакладнаяСписокНоменклатуры.Номенклатура, | РасходнаяНакладнаяСписокНоменклатуры.Проект, | РасходнаяНакладнаяСписокНоменклатуры.Ссылка.Склад | |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Проект, | Склад |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | врТаблица.Номенклатура КАК Номенклатура, | ПРЕДСТАВЛЕНИЕ(врТаблица.Номенклатура) КАК НоменклатураП, | УправленческийОстатки.Субконто2 КАК Склад, | врТаблица.Проект КАК Проект, | врТаблица.Количество КАК Количество, | врТаблица.Цена КАК Цена, | ЕСТЬNULL(УправленческийОстатки.СуммаОстатокДт, 0) КАК СуммаОстаток, | ЕСТЬNULL(УправленческийОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстаток |ИЗ | врТаблица КАК врТаблица | ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Управленческий.Остатки( | &Период, | Счет = &Счет, | , | Субконто1 В | (ВЫБРАТЬ | врТаблица.Номенклатура КАК Номенклатура | ИЗ | врТаблица КАК врТаблица) | И Субконто2 = &Склад) КАК УправленческийОстатки | ПО врТаблица.Номенклатура = УправленческийОстатки.Субконто1 |ИТОГИ | СУММА(Количество), | СУММА(СуммаОстаток), | СУММА(КоличествоОстаток) |ПО | Номенклатура"; Запрос.УстановитьПараметр("Период", МоментВремени()); Запрос.УстановитьПараметр("Склад", Склад); Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.УстановитьПараметр("Счет", ПланыСчетов.Управленческий.Товары); РезультатЗапроса = Запрос.Выполнить(); ВыборкаНоменклатура = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаНоменклатура.Следующий() Цикл Если ВыборкаНоменклатура.КоличествоОстаток <> 0 Тогда Если ВыборкаНоменклатура.Количество = ВыборкаНоменклатура.КоличествоОстаток Тогда Себестоимость = ВыборкаНоменклатура.СуммаОстаток; Иначе //СумОс = ВыборкаНоменклатура.СуммаОстаток; //КолОс = ВыборкаНоменклатура.КоличествоОстаток; Себестоимость = ВыборкаНоменклатура.СуммаОстаток / ВыборкаНоменклатура.КоличествоОстаток; КонецЕсли; Иначе Себестоимость = 0; КонецЕсли; Выборка = ВыборкаНоменклатура.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.Склад <> Склад Тогда Продолжить; КонецЕсли; Если Выборка.Количество > Выборка.КоличествоОстаток Тогда Сообщить("Недостаточно товара"); Отказ = Истина; Продолжить; КонецЕсли; Если Не Отказ Тогда Движение = Движения.Управленческий.Добавить(); Движение.СчетДт = ПланыСчетов.Управленческий.ПрибылиУбытки; Движение.СчетКт = ПланыСчетов.Управленческий.Товары; Движение.Период = Дата; Движение.Сумма = Выборка.Количество * Себестоимость; Движение.КоличествоКт = Выборка.Количество; Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Проекты] = Выборка.Проект; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Склады] = Склад; Движение = Движения.Управленческий.Добавить(); Движение.СчетДт = ПланыСчетов.Управленческий.Дебиторка; Движение.СчетКт = ПланыСчетов.Управленческий.ПрибылиУбытки; Движение.Период = Дата; Движение.Сумма = Выборка.Количество * Выборка.Цена; Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Номенклатура] = Выборка.Номенклатура; Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Проекты] = Выборка.Проект; КонецЕсли; КонецЦикла; КонецЦикла; | |||
| 22
    
        Волшебник 11.07.25✎ 19:10 | 
        в последнем запросе не нужны ИТОГИ     | |||
| 23
    
        Волшебник 11.07.25✎ 19:18 | 
        Кстати, при таком режиме проверки остатков в запросе должно быть ключевое слово ДЛЯ ИЗМЕНЕНИЯ     | |||
| 24
    
        Волшебник 11.07.25✎ 19:27 | 
        Есть другой способ контроля отрицательных остатков.
 Сначала сделать движения по регистру, потом в рамках той же транзакции проверить на наличие минусов обычным запросом. | |||
| 25
    
        Vartigon 11.07.25✎ 19:32 | 
        (24) Спасибо. Буду знать)     | |||
| 26
    
        Злоп 11.07.25✎ 20:05 | 
        (25) милять. Это знаю даже я, старый тупой клюшечник.
 Как низко PAL SECAM | |||
| 27
    
        Волшебник 11.07.25✎ 20:08 | 
        (26) Зацените, с чего всё началось. Но потом мы смогли вытащить контекст из этого партизана.     | |||
| 28
    
        Волшебник 11.07.25✎ 20:10 | 
        (0) С вероятностью 90%, судя по развитию контекста ветки, я думаю, что программирование это не Ваше.
 Лучше идите в курьеры. Говорят, там сейчас высокие зарплаты, если умеете управлять электровелосипедом. | |||
| 29
    
        Волшебник 11.07.25✎ 23:24 | 
        У программистов должна быть жилка: "сформулировать свою проблему".
 Перед этим конечно надо немного осознать, но без осознания можно же собрать информацию, хотя бы текст ошибки. Потом ещё раз осознать и собрать информацию о контексте. И тут уже в тексте ошибки будет номер строки. Ну это же БАЗА! Это базовое мышление "причина-следствие". Если у Вас такого нет, значит Вы вообще не человек. Значит Вы созданы по промту, по запросу, нихуя ничего не понимаете. И Вы должны об этом заявить Вашему создателю: какого хуя он меня создал без базовых знаний?! Ну типа того. | |||
| 30
    
        Волшебник 11.07.25✎ 23:23 | 
        Люди вырастают с врождённым чувством "причины и следствия", потому что у них есть тело. Они своё тело изучают в первые годы жизни, когда крутят погремушки, пытаются говорить и ходить, падают... Это же гравитация! Так формируется базовое мышление типа "причина-следствие"     | |||
| 31
    
        Djelf 12.07.25✎ 00:01 | 
        (30) А потом начинаются эксперементы с гравитацией, и изучением последствий, в стиле я же всего 0.25 выпил, а синяки то откуда?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |