INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Васильев Дмитрий | Заместитель начальника ИТ отдела | ООО Саянскгазобетон

«Практика разработки и внедрения "Карты склада" на крупном предприятии по производству автоклавного газобетона»

В докладе будут рассмотрены проблемы склада с которыми столкнулись после запуска предприятия. Рассмотрим как за полгода работы предприятия можно навести беспорядок на складе и учете, и каким образом навести порядок после внедрения графической карты склада в системе 1С. Что такое карта склада и зоны хранения продукции. Будут подробно рассмотрены уже работающие методы маркировки на выпуске готовой продукции и реализации конечному покупателю с использованием терминалов сбора данных. Также расскажу как мы организовали рабочие места автопогрузчиков и кладовщиков для работы в 1С с помощью мобильных устройств.

1. P1rate 24.12.16 16:06 Сейчас в теме

Null в ВыборкаДетальныеЗаписи.Следующий() Цикл

Добрый день. Есть запрос, получаю итог по стоимости в ТЧ "Состав". В консоли запросов данные выводит корректно, но в цикле выборки ВыборкаДетальныеЗаписи.СтоимостьСостава получает NULL. Что я делаю не так, подскажите плз.

Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	Номенклатура.Ссылка,
		|	Сумма(Номенклатура.Состав.Стоимость) КАК СтоимостьСостава
		|ИЗ
		|	Справочник.Номенклатура КАК Номенклатура";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

		НоменклатураОбъект = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
		Сообщить(ВыборкаДетальныеЗаписи.СтоимостьСостава);
			
		
	КонецЦикла;
Показать


p.s. извиняюсь за дублирование темы, проблема с интернетом.
Ответы
Сортировка: Древо
3. alxarz 29 25.12.16 11:15 Сейчас в теме
(1) выборку нужно делать по тем полям которые суммируете, как указали в (2)
5. Anikrion 8 25.12.16 22:52 Сейчас в теме
Если нужна в том числе пустая, то соединение я бы делал явно, номенклатура и к ней левым соединением состав, и тогда isnull. И с явной группировкой. Использование в (1) суммы без группировки может приводить к своеобразным эффектам за счёт неявности группировки и соединения. А если такой запрос ещё и в скд или в по строитель... То может быть ещё веселее
6. Xershi 387 25.12.16 23:34 Сейчас в теме
(1) этот запрос как вам уже и написали не явно использует левое соединение. Когда нет записей он и вернет нул.
Правильно было бы написать запрос через левое соединение, но можно и так оставить, главное как вам уже написали применить есть нул!
"ВЫБРАТЬ 
|	Номенклатура.Ссылка, 
|	ЕСТЬNULL(Сумма(Номенклатура.Состав.Стоимость), 0) КАК СтоимостьСостава 
|ИЗ 
|	Справочник.Номенклатура КАК Номенклатура"; 


Только правильнее писать так как я вам привел!
Аргументы не буду приводить, думаю со временем и сами поймете почему так правильнее!
2. Anikrion 8 25.12.16 01:52 Сейчас в теме
Я бы в таком случае писал

ВЫБРАТЬ НоменклатураСостав.Ссылка,
СУММА(НоменклатураСостав.Стоимость)
ИЗ Справочник.Номенклатура.Состав как НоменклатураСостав
СГРУППИРОВАТЬ ПО НоменклатураСостав.Ссылка

Обращаясь при этом сразу к табличной части и ее группируя по номенклатуре.
4. jobtorn 25.12.16 20:13 Сейчас в теме
(2) приведет к тому, что номенклатуры с пустым составом не будут выведены.
Чтобы избавиться от NULL, а это частая ситуация с соединениям (здесь оно происходит неявно), можно использовать функцию ЕСТЬNULL() прямо в запросе.
Запрос.Текст = 
"ВЫБРАТЬ 
|	Номенклатура.Ссылка, 
|	Сумма(ЕСТЬNULL(Номенклатура.Состав.Стоимость, 0)) КАК СтоимостьСостава 
|ИЗ 
|	Справочник.Номенклатура КАК Номенклатура...."; 


Если строка состава не была найдена, то стоимость = NULL и функция ЕСТЬNULL это заметит и вернет значение по умолчанию, в данном случае это 0
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Одесса (Украина)
зарплата от 40 000 руб.
Полный день

Программист 1С
Санкт-Петербург
Полный день

Аналитик 1С
Москва
зарплата от 80 000 руб. до 120 000 руб.
Полный день

1С Developer
Одесса (Украина)
зарплата от 60 000 руб. до 120 000 руб.
Полный день

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 70 000 руб. до 90 000 руб.
Полный день