![]() |
![]() |
![]() |
|
Странное решение who respawn, Злопчинский, Timon1405, kubik_live, Гость из Мариуполя, Garykom, Бычье сердце, Djelf, H A D G E H O G s, WB789, PR, Волшебник, Mankubus, Caesar, Fregat, trad, VladZ, Кирпич, Шурик71, Ногаминебить, zablic2010, laeg, Dimma, GRM11, craxx, maxab72, ldo6, Metman, AndreyZhukov, vis, denk32, vbus, Злоп, Олдж, bmitkin, Джордж1, ГдеСобакаЗарыта, zzz_zzz_zzz, Domovoi, igouranga, crasler, Amra, Vartigon, Sneer, whitedi, Irbis, d4rkmesa, Aleksey, p-soft, Sserj, _Batoo, Winnie Buh, lEvGl, Михаил_, DiMel_77, Franchiser, Asmody, Philix, youalex, ttk, Kongo2019, furchia, formista2000, nemo1966, Vostochnick, s_trikozin, Группа неравнодушных, Хряк, Ильф, Лодырь, Borometr, Builder
| ☑ | ||
---|---|---|---|---|
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
|
Люди вырастают с врождённым чувством "причины и следствия", потому что у них есть тело. Они своё тело изучают в первые годы жизни, когда крутят погремушки, пытаются говорить и ходить, падают... Это же гравитация! Так формируется базовое мышление типа "причина-следствие"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |