Имя: Пароль:
1C
1С v8
Как в запросе ввести отбор по счету v8.1
0 Yoshi
 
08.09.11
11:20
Задача состояла в том, чтобы создать документ списания, который бы списывал все материалы с сотрудника при его увольнении.

Создала документ, в котором предусмотрела поля ввода сотрудника и вот сейчас подумала, что и поля ввода счета учета тоже не помешало бы. Так вот, по кнопочке заполнить хочу, чтобы заполнялась табличная часть документа, у которой есть реквизиты, наименование которых совпадает с теми, что я получаю в запросе (вроде бы =)). Используя консоль, добилась того, что получаю всю номенклатуру по всем счетам (.

понимаю, что нужен отбор, но знания мои в программировании стремятся к нулю, потому делаю все на ощупь.

Есть такой текст запроса

Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |    ХозрасчетныйОстатки.КоличествоОстаток КАК Количество,
   |    ХозрасчетныйОстатки.СуммаОстаток КАК Сумма,
   |    ХозрасчетныйОстатки.Счет,
   |    ХозрасчетныйОстатки.Субконто1.Ссылка КАК Номенклатура
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |    ХозрасчетныйОстатки.КоличествоОстаток,
   |    ХозрасчетныйОстатки.СуммаОстаток,
   |    ХозрасчетныйОстатки.Счет,
   |    ХозрасчетныйОстатки.Субконто1.Ссылка
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
   |
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |    ХозрасчетныйОстатки.КоличествоОстаток,
   |    ХозрасчетныйОстатки.СуммаОстаток,
   |    ХозрасчетныйОстатки.Счет,
   |    ХозрасчетныйОстатки.Субконто1.Ссылка
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
   |ОБЪЕДИНИТЬ ВСЕ
   |
   |ВЫБРАТЬ
   |    ХозрасчетныйОстатки.КоличествоОстаток,
   |    ХозрасчетныйОстатки.СуммаОстаток,
   |    ХозрасчетныйОстатки.Счет,
   |    ХозрасчетныйОстатки.Субконто1.Ссылка
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки КАК ХозрасчетныйОстатки
   |ИТОГИ ПО
   |    ОБЩИЕ,
   |    Сумма,
   |    Количество";


Как мне в этот запрос внести отбор по конкретному счету (счет забалансовый, впоследствии необходимо будет еще и проводки формировать).
Или мыслю я совершенно не в том направлении?
1 Grusswelle
 
08.09.11
11:21
В параметрах виртуальной таблицы остатков: Счет В ИЕРАРХИИ(&Счет).
2 Wobland
 
08.09.11
11:22
пол мужской, зарегистрирован вчера. создала, добилась... чего-то не хватает в карточке ;)
3 Yoshi
 
08.09.11
11:23
о простите ) не заметила пола)
4 Wobland
 
08.09.11
11:24
(3) мы тоже не всё видим
5 Yoshi
 
08.09.11
11:25
значит мне нужно создать виртуальную таблицу, ибо ее у меня нет ( или я чего-то опять не поняла?
6 Wobland
 
08.09.11
11:26
ответ на вопрос "Как мне в этот запрос внести отбор по конкретному счету" полностью раскрыт в (1)
7 Yoshi
 
08.09.11
11:28
(6) жаль, ясности это не добавило ( значит придется справляться самой

в любом случае спасибо
8 Wobland
 
08.09.11
11:30
(7) для примера:
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&Начало, &Конец, Регистратор, СчетДт = &СчетДТ, , СчетКт = &СчетКТ, , СубконтоКт1 = &СубконтоКт1) КАК ХозрасчетныйОборотыДтКт
9 Yoshi
 
08.09.11
11:33
(8) простите студента за возможно глупый вопрос, но
значит ли это, что мысль "надо добавить поле ввода счета" было верным ?  Иначе как запрос поймет какой именно счет имеется в виду ? или не так?
10 Wobland
 
08.09.11
11:35
(9) Запрос.УстановитьПараметр() - вот так он поймёт. а что ты туда будешь передавать неизвестно. хочешь - с поля ввода на форме читай, хочешь - пиши в коде..
11 Wobland
 
08.09.11
11:36
Тематическая ветка форума подобна нераспустившейся розе, которую нужно осветить солнцем, помочь ей подняться. Только когда вопрос уже решён, девушке можно намекнуть про фотку... И тогда распустившаяся роза будет прекрасна!
12 AndreYAN
 
08.09.11
11:37
(7)(8) можно еще так

  |ИЗ
  |    РегистрБухгалтерии.Хозрасчетный.ОборотыДтКт(&Начало, &Конец, Регистратор, СчетДт.Код = "60.02", , СчетКт.Код = "60.01", , СубконтоКт1 = &СубконтоКт1) КАК ХозрасчетныйОборотыДтКт
13 Yoshi
 
08.09.11
11:38
оу...а это обязательно? нет, я не отказываюсь, просто любопытно...к своему стыду не читала правила форума (если они вообще есть=))
14 Wobland
 
08.09.11
11:39
(13) это такая традиция, и нарушить её мы не в силах
15 Yoshi
 
08.09.11
11:49
(14) ох, не будем нарушать традиции )
16 Wobland
 
08.09.11
11:54
(15) ээм... там на фото человек?
17 AdaRogers
 
08.09.11
12:02
а зачем объединять 4 одинаковых запроса?
18 Wobland
 
08.09.11
12:05
(17) вот это фокус, действительно! ;)
видимо для надёжности. вдруг с первого раза данные не вытянутся
19 Yoshi
 
08.09.11
12:24
(17)ойей, это переделанный запрос, изначально собирались данные из 4х разных таблиц, потому и 4 запроса, вчера поздно вечером (или уже утром, не помню) решила, что достаточно из одной взять все данные, и вконец запуталась, что делаю (((
20 Yoshi
 
08.09.11
12:25
(16) на фото человек ), пока так, позже поменяю, это так, для подтверждения принадлежности к полу )
21 Yoshi
 
08.09.11
12:29
дело в том, что по счету, с которого нужно списать материалы, ведется партионный учет. списывается все с конкретного человека, потому думала, что лучше сделать отбор по сотруднику, потом решила, что по счету, сейчас вообще не знаю что думать
22 Yoshi
 
08.09.11
12:36
а не могли бы вы мне объяснить как именно работает оператор В ИЕРАРХИИ
23 Wobland
 
08.09.11
12:38
Результатом оператора В ИЕРАРХИИ будет ИСТИНА, если значение выражения слева является ссылкой на элемент справочника и входит во множество значений справа или иерархически принадлежит какой-нибудь группе, содержащейся в этом множестве.

грубо говоря, отбирает всё, что в группе
24 Yoshi
 
08.09.11
12:41
Спасибо ;)
25 Yoshi
 
16.09.11
11:06
на случай, если кому пригодится:

в модуле формы документа


Процедура КоманднаяПанельЗаполнить(Кнопка)
   
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
              |    ХозрасчетныйОстатки.СуммаОстаток КАК Сумма,
              |    ХозрасчетныйОстатки.Счет,
              |    ХозрасчетныйОстатки.Субконто1.Ссылка КАК Номенклатура,
              |    ХозрасчетныйОстатки.КоличествоОстаток КАК Количество,
              |    ХозрасчетныйОстатки.Субконто3
              |ИЗ
              |    РегистрБухгалтерии.Хозрасчетный.Остатки(
              |            ,
              |            Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.СпецодеждаВЭксплуатацииВспомогательный)
              |                ИЛИ Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ИнвентарьИХозяйственныеПринадлежностиВЭксплуатации),
              |            ,
              |            Субконто3 = &Сотрудник) КАК ХозрасчетныйОстатки";

Запрос.УстановитьПараметр("Сотрудник",Сотрудник);
Выборка = Запрос.Выполнить().Выбрать();
МатериалыВЭксплуатации.Очистить();
Пока Выборка.Следующий() Цикл
   
   // МатериалыВЭксплуатации - Табличная часть на форме, создаем в ней новую строку
           НовСтр=МатериалыВЭксплуатации.Добавить();
           // Заполняем значения новой строки значениями  результат запроса:
            НовСтр.Номенклатура =Выборка.Номенклатура;
              НовСтр.Количество = Выборка.Количество;
            НовСтр.Сумма = Выборка.Сумма;
              НовСтр.Счет = Выборка.Счет;
           
КонецЦикла;

КонецПроцедуры




в модуле самого документа


Процедура ОбработкаПроведения(Отказ, Режим)
       Движения.Хозрасчетный.Записывать = Истина;
       Движения.Хозрасчетный.Очистить();
   Для Каждого ТекСтрокаМатериалыВЭксплуатации Из МатериалыВЭксплуатации Цикл
       Движение = Движения.Хозрасчетный.Добавить();
       Движение.Период = Дата;
       Движение.СчетКт = ТекСтрокаМатериалыВЭксплуатации.Счет;
       БухгалтерскийУчет.УстановитьСубконто(Движение.СчетКт, Движение.СубконтоКт, 1, Сотрудник);
       БухгалтерскийУчет.УстановитьСубконто(Движение.СчетКт, Движение.СубконтоКт, 2, ТекСтрокаМатериалыВЭксплуатации.Номенклатура);
       Движение.КоличествоКт = ТекСтрокаМатериалыВЭксплуатации.Количество;
       Движение.Сумма = ТекСтрокаМатериалыВЭксплуатации.Сумма;
       Движение.Организация = Организация;
   КонецЦикла;
КонецПроцедуры


Правда не вижу оборотов по ОСВ по счету, пока не поняла почему ), но может и это кому-нибудь поможет )
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший