Имя: Пароль:
1C
1С v8
Вариант тестовой задачи при приеме на работу
,
0 Азазелло
 
15.08.12
13:52
Есть справочник ГруппыКонтрагентов. У него одна ТЧ "Контрагенты" с реквизитом "Контрагент", тип СправочникСсылка.Контрагенты
Написать запрос, который по переданному массиву Контрагентов вернет либо ссылку на ГруппуКонтрагентов, идентичную по составу, либо ничего не вернет.

Подойдет ли такая задача в качестве теста на уровень владения языком запросов?
83 Азазелло
 
15.08.12
15:50
(76) резюме скинуть ? )
84 Alex S D
 
15.08.12
15:55
(83) кидай, передам насяльнику)
85 ptiz
 
15.08.12
15:56
(82) А что не так?

Пойду тогда к (76), сертификат специалиста по платформе есть, возьмут без конкурса, и денег больше :)
86 Азазелло
 
15.08.12
16:00
(85) вернет тебе все ссылки на группы, в которых хотя бы один элемент принадлежит переданному массиву.
87 ptiz
 
15.08.12
16:03
(86) Нда... И эти люди прнимают задачи.
Проверь на реальных данных - увидишь.
88 Ksandr
 
15.08.12
16:04
(0) не понимаю в чем сложность посчитать недостающие и излишествующие элементы и выбрать где и тех и тех 0
89 Fragster
 
гуру
15.08.12
16:05
(87) а ничего, что элементов справочников групп может быть больше одного?
90 ptiz
 
15.08.12
16:06
(89) Я не против.
91 shamashs
 
15.08.12
16:07
Если на собеседовании тестовое задание больше 15 минут, уже не хочу в эту контору и не пойду, не уважают меня в этой конторе, вам лень поговорить с человеком или его уровень из беседы не можете получить?
92 Fragster
 
гуру
15.08.12
16:07
(90) а ведь и правда :)
93 Азазелло
 
15.08.12
16:08
(87) проверил. читай (86)
94 mikecool
 
15.08.12
16:09
ощущение, что ТС решил похвастать своими 22 см? или показалось?
95 Азазелло
 
15.08.12
16:09
+(93) немного не так. в которых Состав принадлежит подмножеству элементов, переданных в массиве. а нужна идентичность
96 Азазелло
 
15.08.12
16:10
(94) нет. хотел бы похвастаться, выложил бы решение и сказал бы: вау, смотрите, как я крут! я не скрываю, что потратил довольно много времени, и, может быть, решил не оптимально.
97 mikecool
 
15.08.12
16:12
(96) не хочу, у меня был вариант проверки попадания отгрузки под условия рекламной акции - сравнение по 3м множествам, единственно не было потоварного сравнения количества, только в "массе"
98 Азазелло
 
15.08.12
16:14
(98) мне просто было интересно мнение миста-сообщества, насколько данная задача может быть интересна и актуальна при приеме на собеседование. не более того. тем более, как оказалось, не все способны ее сходу решить.
99 ptiz
 
15.08.12
16:15
(95) Да, я ступил, признаю :(
100 Азазелло
 
15.08.12
16:17
традиционно, сотко

(99) поэтому мне данная задача и понравилась. она не настолько тривиальна, как кажется с первого взгляда
101 Ksandr
 
15.08.12
16:18
Примерно так я вижу решение:

Выбрать
 спр.ссылка
Поместить ВТ_Множество
из
 Контрагенты
ГДЕ
 Спр.Ссылка В (&Массив)
;

ВЫБРАТЬ
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Множество.Ссылка) КАК ОбщееКоличество
ПОМЕСТИТЬ ВТ_ОбщееКоличество
ИЗ
 ВТ_Множество
;

Выбрать
 Состав.Ссылка,
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) КАК Количество
ИЗ
 ГруппыКонтрагентов.Состав КАК Состав
 ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Множество
 ПО ВТ_Множество.Ссылка = Состав.Элемент
 ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОбщееКоличество
 ПО Истина
СГРУППИРОВАТЬ ПО
 Состав.Ссылка
ИМЕЮЩИЕ
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) = ВТ_ОбщееКоличество.ОбщееКоличество

не тестил
102 Азазелло
 
15.08.12
16:25
(101) да, оно и есть.
103 Ksandr
 
15.08.12
16:31
(102) Но, на собеседовании я бы потратил больше 14 минут (время между 88 и 101) из-за стресса коим собеседование является.

З.Ы. Давай еще головоломки :)
104 ssh2006
 
15.08.12
16:32
(101) вроде как если в ТЧ справочника будут все элементы из массива, но кроме них будут и еще элементы то условие на количество за счет внутреннего соединения выполнится, но идентичности не будет
105 Лоботряс
 
15.08.12
16:33
(101) один в один мое:))
106 Азазелло
 
15.08.12
16:34
(104) вот это отбросит такие ссылки
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) = ВТ_ОбщееКоличество.ОбщееКоличество
107 ssh2006
 
15.08.12
16:36
(106) там же внутреннее соединение и этих записей с лишними элементами вообще не будет
108 Азазелло
 
15.08.12
16:37
(107) ВТ_ОбщееКоличество.ОбщееКоличество посчитано ранее, по полному набору элементов в массиве.
109 ssh2006
 
15.08.12
16:38
(108) лишние элементы за счет внутреннего соединения с правильной таблицей не попадут в подсчет КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент)
110 Азазелло
 
15.08.12
16:39
(109) правильно. поэтому условие и не сработает, Группа в запрос не войдет )
111 Fragster
 
гуру
15.08.12
16:39
(108) если в группе есть все из массива и еще чуть-чуть, то (101) не сработает
112 ptiz
 
15.08.12
16:40
Тогда и моё, без временных таблиц:

ВЫБРАТЬ РАЗЛИЧНЫЕ
   ГруппыКонтрагентовКонтрагенты.Ссылка
ИЗ
   Справочник.ГруппыКонтрагентов.Контрагенты КАК ГруппыКонтрагентовКонтрагенты
ГДЕ
   (НЕ ГруппыКонтрагентовКонтрагенты.Ссылка В
               (ВЫБРАТЬ РАЗЛИЧНЫЕ
                   ГруппыКонтрагентовКонтрагенты.Ссылка
               ИЗ
                   Справочник.ГруппыКонтрагентов.Контрагенты КАК ГруппыКонтрагентовКонтрагенты
               ГДЕ
                   (НЕ ГруппыКонтрагентовКонтрагенты.Контрагент В (&МассивКонтрагентов))))

СГРУППИРОВАТЬ ПО
   ГруппыКонтрагентовКонтрагенты.Ссылка

ИМЕЮЩИЕ
   КОЛИЧЕСТВО(*) В
       (ВЫБРАТЬ
           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагенты.Ссылка)
       ИЗ
           Справочник.Контрагенты КАК Контрагенты
       ГДЕ
           Контрагенты.Ссылка В (&МассивКонтрагентов))
113 ssh2006
 
15.08.12
16:40
(111) про это я ему и говорю в (104)
114 Ksandr
 
15.08.12
16:42
(107) согласен, нужно так:

Выбрать
 спр.ссылка
Поместить ВТ_Множество
из
 Контрагенты
ГДЕ
 Спр.Ссылка В (&Массив)
;

ВЫБРАТЬ
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВТ_Множество.Ссылка) КАК ОбщееКоличество
ПОМЕСТИТЬ ВТ_ОбщееКоличество
ИЗ
 ВТ_Множество
;

Выбрать
 Состав.Ссылка,
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) КАК ОбщееКоличество,
 СУММА(ВЫБОР КОГДА ВТ_Множество.Ссылка IS NULL ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК Избыточные
ИЗ
 ГруппыКонтрагентов.Состав КАК Состав
 ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Множество
 ПО ВТ_Множество.Ссылка = Состав.Элемент
 ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ОбщееКоличество
 ПО Истина
СГРУППИРОВАТЬ ПО
 Состав.Ссылка
ИМЕЮЩИЕ
 КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Состав.Элемент) = ВТ_ОбщееКоличество.ОбщееКоличество
 И СУММА(ВЫБОР КОГДА ВТ_Множество.Ссылка IS NULL ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) = 0
115 Азазелло
 
15.08.12
16:42
(113), (111), да, сорри. затупил
116 Лоботряс
 
15.08.12
16:43
(113) но это уже противоречие условию задачи
117 Азазелло
 
15.08.12
16:44
(116) не, норм. нужна идентичность
118 Лоботряс
 
15.08.12
16:44
написано "идентичные по составу", не больше, не меньше...
119 ptiz
 
15.08.12
16:47
В (112) небольшой косяк может быть, если вдруг одного контрагента ввели несколькими строками в одной группе. Но это не существенно, просто группировку одну добавить.
120 Гретта
 
15.08.12
17:12
так кто к кому на собеседование едет?
про вакансию забыли? )))
121 Ksandr
 
15.08.12
17:12
(120) Вакансия? не, не слышал
122 rphosts
 
15.08.12
17:15
(0)ну так что уже решили?

Есть моменты: как насчёт дублей и насчёт нескольких вхождений одного и того-же контаргегента в "группу"?
123 rphosts
 
15.08.12
17:16
+(122) и ещё: порядок имеет значенние?
124 5 Элемент
 
15.08.12
17:20
ВЫБРАТЬ РАЗЛИЧНЫЕ
   КОЛИЧЕСТВО(1) КАК КоличествоКонтрагентов
ПОМЕСТИТЬ КоличествоКонтрагентовВСписке
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   Контрагенты.Ссылка В(&Ссылка)
;

ВЫБРАТЬ РАЗЛИЧНЫЕ
   Контрагенты.Ссылка КАК Ссылка
ПОМЕСТИТЬ Контрагенты
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   Контрагенты.Ссылка В(&Ссылка)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ГруппыКонтрагентовКонтрагенты.Ссылка
ПОМЕСТИТЬ Группы
ИЗ
   Справочник.ГруппыКонтрагентов.Контрагенты КАК ГруппыКонтрагентовКонтрагенты
ГДЕ
   ГруппыКонтрагентовКонтрагенты.Контрагент В(&Ссылка)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ГруппыКонтрагентовКонтрагенты.Ссылка,
   КОЛИЧЕСТВО(1) КАК КоличествоКонтрагентов
ИЗ
   Справочник.ГруппыКонтрагентов.Контрагенты КАК ГруппыКонтрагентовКонтрагенты
   ЛЕВОЕ СОЕДИНЕНИЕ КоличествоКонтрагентовВСписке КАК КоличествоКонтрагентовВСписке ПО ИСТИНА
ГДЕ
   ГруппыКонтрагентовКонтрагенты.Ссылка В
           (ВЫБРАТЬ
               Группы.Ссылка
           ИЗ
               Группы КАК Группы)

СГРУППИРОВАТЬ ПО
   ГруппыКонтрагентовКонтрагенты.Ссылка,
   КоличествоКонтрагентовВСписке.КоличествоКонтрагентов
ИМЕЮЩИЕ КОЛИЧЕСТВО(1) = КоличествоКонтрагентовВСписке.КоличествоКонтрагентов
125 Азазелло
 
15.08.12
17:26
(120) Вакансия на hh должна болтаться, ГК ПиР. Собственно, я же здесь не соискателей ищу )
126 Ksandr
 
15.08.12
17:29
(124)
почему не внутреннее вместо:
ГДЕ
   ГруппыКонтрагентовКонтрагенты.Ссылка В
           (ВЫБРАТЬ
               Группы.Ссылка
           ИЗ
               Группы КАК Группы)
127 acsent
 
15.08.12
17:31
так почему полноето не подойдет с проверкой на то что нет нуллей?
128 Азазелло
 
15.08.12
17:32
(124) o_0
ВЫБРАТЬ РАЗЛИЧНЫЕ
   КОЛИЧЕСТВО(1) КАК КоличествоКонтрагентов
ПОМЕСТИТЬ КоличествоКонтрагентовВСписке
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   Контрагенты.Ссылка В(&Ссылка)
129 Азазелло
 
15.08.12
17:32
(127) полное с группировкой по какому полю?
130 acsent
 
15.08.12
17:33
ЕСТЬNULL(Спр1.Ссылка, Спр2.Ссылка)
131 5 Элемент
 
15.08.12
17:35
(128) это после нескольких правок так получилось :)
Но суть задачи понятна и не сложно найти решение.
Такая задача проверяет не знание запросов, а логическое мышление.
132 acsent
 
15.08.12
17:36
Если подробно
СГРУППИРОВАТЬ ПО
 ЕСТЬNULL(СпрК.Родитель, СпрГ.Ссылка)
ИМЕЮЩИЕ
 МИНИМУМ(СпрК.Ссылка) НЕ ЕСТЬ NULL
 И МИНИМУМ(СпрГ.Контрагент) НЕ ЕСТЬ NULL
133 Азазелло
 
15.08.12
17:36
(13) при полном соединении дергаются составы из разных групп.
134 Азазелло
 
15.08.12
17:36
(133) к (130)
135 Азазелло
 
15.08.12
17:37
(132) СпрК.Родитель - не,не,не...
136 acsent
 
15.08.12
17:37
(133) а при левом не дергаются?
137 acsent
 
15.08.12
17:38
(134) если бы ты демобазу сделал, я бы тебе показал
138 5 Элемент
 
15.08.12
17:38
Чтобы определить владение языком запросов нужно задавать вопросы по синтаксису и алгоритму работы конструкций.
Например, знает ли кандидат что нужно использовать отборы в вирт таблицах, что желательно использовать все поля индекса и т.п.
139 acsent
 
15.08.12
17:39
(138) про поля индекса тут большинство отстатыщников не понимает
140 Азазелло
 
15.08.12
17:40
(138) +1. Спасибо за идею. Эти вещи воспринимаются уже как само собой разумеющиеся... Ни разу не пришло в голову задать такой вопрос
141 acsent
 
15.08.12
17:43
142 acsent
 
15.08.12
17:44
(135) не хотел бы я такого начальника иметь. Ты ему простой способ решения, а он - не,не,не. Как же он умный не догадался
143 rphosts
 
15.08.12
17:45
Азазелло, ответь на (122)-(123)
144 Азазелло
 
15.08.12
17:45
(142) сорри. просто в (0) Группа <> Родитель )
145 Азазелло
 
15.08.12
17:47
(143) да, уже решили. даже несколько вариантов ) дубли не рассматриваются (предполагается, что их нет). порядок значения не имеет.
146 acsent
 
15.08.12
17:50
извинясь. меня заглючило и я почему то решал задачу - найти папки контрагентов, для корорый есть группы нашего справочника
147 Ksandr
 
15.08.12
17:50
+ к (138)
ну и такие вещи если требования жестче
- срез последних на каждую дату в запросе.
- нарастающий итог,
- остаток на каждую дату периода
148 rphosts
 
15.08.12
17:50
(145) мне интереснее когда появится время самому решить а потом можно и с вашим сравнить, но нужны точные условия задачи
149 acsent
 
15.08.12
17:52
в изначальной задаче: найти группу по массиву вообще никаких соединений не нужно
150 Ksandr
 
15.08.12
17:53
(149) Пример в студию
151 Азазелло
 
15.08.12
17:53
(149) ага, мне тоже интересно )
152 Азазелло
 
15.08.12
17:55
(147) мне еще вот задача нравится: запросом получить сотрудников, у которых ДР будет в ближайшие 14 дней от переданной даты.
153 Азазелло
 
15.08.12
17:55
+(152) сама по себе не сложная, но хочется видеть изящное решение. ЗЫ. сам пока не решал )
154 acsent
 
15.08.12
17:56

ВЫБРАТЬ
   ГруппыКонтрагентовКонтрагенты.Ссылка,
   МИНИМУМ(ВЫБОР КОГДА ГруппыКонтрагентовКонтрагенты.Контрагент В (&Массив) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК Поле1
ИЗ
   Справочник.ГруппыКонтрагентов.Контрагенты КАК ГруппыКонтрагентовКонтрагенты

СГРУППИРОВАТЬ ПО
   ГруппыКонтрагентовКонтрагенты.Ссылка

ИМЕЮЩИЕ
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ГруппыКонтрагентовКонтрагенты.Контрагент) =
       (ВЫБРАТЬ
           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагенты.Ссылка)
       ИЗ
           Справочник.Контрагенты КАК Контрагенты
       ГДЕ
           Контрагенты.Ссылка В (&МассивКонтрагентов))
И МИНИМУМ(ВЫБОР КОГДА ГруппыКонтрагентовКонтрагенты.Контрагент В (&Массив) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) = 1
155 acsent
 
15.08.12
17:57
последнее условие можно в где перенести
156 Ksandr
 
15.08.12
17:58
(152) Рабочих или календарных?
157 acsent
 
15.08.12
17:58

ВЫБРАТЬ
   ГруппыКонтрагентовКонтрагенты.Ссылка
ИЗ
   Справочник.ГруппыКонтрагентов.Контрагенты КАК ГруппыКонтрагентовКонтрагенты
ГДЕ
   ГруппыКонтрагентовКонтрагенты.Контрагент В (&Массив)
СГРУППИРОВАТЬ ПО
   ГруппыКонтрагентовКонтрагенты.Ссылка

ИМЕЮЩИЕ
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ГруппыКонтрагентовКонтрагенты.Контрагент) =
       (ВЫБРАТЬ
           КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагенты.Ссылка)
       ИЗ
           Справочник.Контрагенты КАК Контрагенты
       ГДЕ
           Контрагенты.Ссылка В (&МассивКонтрагентов))
158 Ksandr
 
15.08.12
18:00
(152) Если календарных то:

ГДЕ
 Сотрудник.ДР МЕЖДУ &ТекущаяДата И ДОБАВИТЬКДАТЕ(&ТекущаяДата, День, 14)
159 Fragster
 
гуру
15.08.12
18:00
(152) это легкотня...
160 Fragster
 
гуру
15.08.12
18:01
(158) если что, др обычно не в этом году ;)
161 acsent
 
15.08.12
18:01
ДР обычно 20 - 50 лет назад от текущей даты
162 Fragster
 
гуру
15.08.12
18:02
правда ДатаВремя(Год(&ТекущаяДата),Месяц(ДР), День(Др)) поможет, да
163 Ksandr
 
15.08.12
18:05
(160) не учел.
В (162) правильный ответ
164 Лоботряс
 
15.08.12
18:07
(154) Не оптимальный запрос. Подзапрос в группировке. И почему Минимум а не Сумма?
165 acsent
 
15.08.12
18:10
(164) зачем там сумма?
166 acsent
 
15.08.12
18:10
а (157) не правильный
167 Злопчинский
 
15.08.12
18:13
скажем так: если бы мну на собеседовании в качестве критерия использовались такие/аналогичные задания (не имею ничего против) и если в результате я работаю в этой организации - то на любые вопросы не касающиеся кодинга, знания языка и платформы - вопрошающие посылались бы в далекое путешествие.
168 Лоботряс
 
15.08.12
18:13
вот за это
ВЫБОР КОГДА ГруппыКонтрагентовКонтрагенты.Контрагент В (&Массив) ТОГДА 1 ИНАЧЕ 0 КОНЕЦ
зачет. Я бы не догадался
(164)а посчитать сумму поля1 и сравнить имеющие с количеством контров в массиве и будет самый наверное лучший запрос
169 Лоботряс
 
15.08.12
18:14
(168) самый простейший
170 Азазелло
 
15.08.12
18:15
(167) ну так и ищется человек на сильно нетиповое решение.
171 PR
 
15.08.12
18:20
(0) С количеством различных элементов в принципе не жестоко, если ищете не новичка.
Если со сравнением на не NULL без использования количества, то жестко конечно :))
172 Лоботряс
 
15.08.12
18:21
А проверить на знание СКД хотите? Могу подбросить пару вариантов
173 Азазелло
 
15.08.12
18:22
(172) пока лишь если только себя самого проверить )) с скд начал работать не так давно
174 rphosts
 
15.08.12
18:24
(172) давай - будет чем заняться на выхах
175 Лоботряс
 
15.08.12
18:36
Ну простейший пример построения иерархии по произвольному полю с помощью СКД который в книжке описан. 146% этого никто не сделает быстро.
Или вывод в одной строке конечный остаток товара и его продажи по периодам(было недавно на mista).
176 Ksandr
 
15.08.12
18:44
(175) У Гилева и Насипова есть видеоурок на эту тему
177 Лоботряс
 
15.08.12
18:47
(176)Ну вот будешь хотя бы знать что соискатель смотрел Гилева и Насипова/читал книжку Хрусталевой.
178 rphosts
 
15.08.12
18:52
группировка по периоду?
179 Лоботряс
 
15.08.12
18:54
(178)да, но так чтобы конечный остаток был в одной, первой колонке, но не был в колонках с продажами.
180 rphosts
 
16.08.12
03:50
(179) могу предложить задачу чуть слжнее: в каждом периоды выводить нескольк показателей (например сумма и кол-во), разность по каждому показателю и % по сравнению с предыдущим периодом, также в последних столбцах разность и % относительно самого первго периода(по каждому из показателей).
181 Homer
 
16.08.12
08:14
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   СписаниеТоваровТовары.Номенклатура,
   СписаниеТоваровТовары.Ссылка
ПОМЕСТИТЬ мСП
ИЗ
   Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары
ГДЕ
   СписаниеТоваровТовары.Ссылка.Дата >= &Дата
   И СписаниеТоваровТовары.Номенклатура В(&Массив)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ мСП.Номенклатура) КАК Кол
ПОМЕСТИТЬ мКолИсходное
ИЗ
   мСП КАК мСП
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ мСП.Номенклатура) КАК Кол,
   мСП.Ссылка
ПОМЕСТИТЬ мКол
ИЗ
   мСП КАК мСП

СГРУППИРОВАТЬ ПО
   мСП.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   мКол.Ссылка КАК Ссылка
ИЗ
   мКол КАК мКол
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ мКолИсходное КАК мКолИсходное
       ПО мКол.Кол >= мКолИсходное.Кол
182 Homer
 
16.08.12
08:27
ВЫБРАТЬ
   СписаниеТоваровТовары.Номенклатура,
   СписаниеТоваровТовары.Ссылка
ПОМЕСТИТЬ мСП
ИЗ
   Документ.СписаниеТоваров.Товары КАК СписаниеТоваровТовары
ГДЕ
   СписаниеТоваровТовары.Ссылка.Дата >= &Дата
   И СписаниеТоваровТовары.Номенклатура В(&Массив)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Номенклатура.Ссылка) КАК Кол
ПОМЕСТИТЬ мКолИсходное
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Ссылка В(&Массив)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   КОЛИЧЕСТВО(РАЗЛИЧНЫЕ мСП.Номенклатура) КАК Кол,
   мСП.Ссылка
ПОМЕСТИТЬ мКол
ИЗ
   мСП КАК мСП

СГРУППИРОВАТЬ ПО
   мСП.Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   мКол.Ссылка КАК Ссылка
ИЗ
   мКол КАК мКол
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ мКолИсходное КАК мКолИсходное
       ПО мКол.Кол >= мКолИсходное.Кол