Имя: Пароль:
1C
1С v8
СКД: 2 регистра, две таблицы, одни параметры
0 dsdred
 
20.07.12
08:22
Стоит задача сделать отчет именно в СКД
по 2 однотипным регистрам сведений ЦенаНоменклатуры и ЦенаНоменклатуыПоставщиков вывести 2 таблицы
вывод осуществляется по заданым пользователем параметрам Номенклатура, артикул ну и тому подобное.

Без СКД понимаю как сделать с ней неврубаюсь, направте в нужное русло пожалуйста.
1 LAAry
 
20.07.12
08:37
В запросе выбираешь 2 таблицы без объединения/соединения. Выбираешь из них нужные поля. В Настройках структуры строишь 2 таблицы из разных полей с 2-я отборами: ЦенаНоменклатуры.Номенклатура = ВыборПользователя и ЦенаНоменклатуыПоставщиков .Номенклатура = ВыборПользователя.
2 dsdred
 
20.07.12
09:44
(1)
Сложность в том для меня, что параметры могут быть пустыми
Если параметр пустой то его неучитывать в выборе данных
3 Jokerman
 
20.07.12
09:48
(2) параметры вынести в отбор СКД, а у отбора в СКД есть галка "использовать"
4 dsdred
 
20.07.12
09:51
(3)
Я правельно понимаю, что после этих действий у пользователя будет возможность ввести данные параметры, но если он их не введет то запрос отработает так как будто они неучаствуют в отборе вовсе?
5 Jokerman
 
20.07.12
10:03
(4) нужно будет отреагировать на события изменения, если значение пустое, то программно убирать галку
6 Jokerman
 
20.07.12
10:03
Процедура УстановитьОтбор(ИмяПоля,Значение)
   
   ПолеОтбора = Новый ПолеКомпоновкиДанных(ИмяПоля);
   Для каждого Элемент Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
       Если Элемент.ЛевоеЗначение = ПолеОтбора Тогда
           ЭлементОтбора = Элемент;
           Прервать;
       КонецЕсли;
   КонецЦикла;
   Если ЭлементОтбора = Неопределено Тогда
       ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
   КонецЕсли;
   ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
   ЭлементОтбора.ЛевоеЗначение = ПолеОтбора;
   ЭлементОтбора.ПравоеЗначение = Значение;
   ЭлементОтбора.Использование = НЕ Значение.Пустая();
   
КонецПроцедуры
7 Администратор 1С
 
20.07.12
12:40
ВЫБРАТЬ
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура,
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена,
   ЦеныНоменклатурыСрезПоследних.Цена КАК Ценапоставщика
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, {(Номенклатура) КАК Товар}) КАК ЦеныНоменклатурыСрезПоследних
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, {(Номенклатура) КАК Товар}) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
       ПО ЦеныНоменклатурыСрезПоследних.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
{ГДЕ
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Товар}
8 Администратор 1С
 
20.07.12
12:40
товар добавить в отбор СКД
9 dsdred
 
23.07.12
15:09
Сделал все гораздо проще))
3 запроса всех данных
1 по номенклатуре и 2 по регистрам

Связь через номенклатуру и отбор через нее же.
Вывод таблиц сформированых по нужным данным.

Собственно все просто получилось.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn