Имя: Пароль:
1C
1С v8
v8: Получить остатки по складам в Ут 10
0 lesstat
 
07.12.11
10:11
Вопрос вот в чем: откуда можно выдернуть остатки на определенную дату?
И как это будет выглядеть программно(я про дату), если на форме создам поле ввода с типом дата.
1 ДенисЧ
 
07.12.11
10:13
Из регистра, я так думаю...
2 Шапокляк
 
07.12.11
10:13
Из регистров получить, запросом. Дату в запросе указать.
3 mirosh
 
07.12.11
10:30
(0) форма:
http://imageshost.ru/photo/19617/id1117826.html

Обработка события
4 mirosh
 
07.12.11
10:31
(3)

   Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ТоварыНаСкладахОстатки.Номенклатура,
   |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК Остаток
   |ИЗ
   |    РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаАктуальности, ) КАК ТоварыНаСкладахОстатки";
   Запрос.УстановитьПараметр("ДатаАктуальности", ДатаАктуальности);
   
   Результат = Запрос.Выполнить().Выгрузить().Скопировать();
   ЭлементыФормы.Результат.СоздатьКолонки();
5 rutony
 
07.12.11
10:34
(4) Это только оптовые склады, если у ТС розничные, то это провал
6 Asmody
 
07.12.11
10:36
типовых отчётов не хватает?
7 mirosh
 
07.12.11
10:37
(5) как получить розничные?
8 Asmody
 
07.12.11
10:39
(7) пошукать в другом регистре(ах)
9 rutony
 
07.12.11
10:40
(7) К примеру, объединение к запросу (4) данных из регистра ТоварыВРознице
10 DmitryPavlik
 
07.12.11
10:40
(6) + 1
11 mirosh
 
07.12.11
11:33
(9) спасибо, понятно
12 lesstat
 
07.12.11
12:19
(6) это нужно выгружать в ДБФ для загрузки в другую прогу
13 lesstat
 
07.12.11
13:02
В чем тут ошибка не подскажете: Вот запрос

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

ДатаОстатков это поле на форме типа Дата
Переменная объявлена как

Перем ДатаОстатков;
ДатаОстатков = ЭтаФорма.ЭлементыФормы.ДатаОстатков;

Выдает ошибку:(7, 2)}: Ошибка обработки представления "РегистрНакопления.ТоварыОрганизаций.Остатки:Несоответствие типов (Параметр номер ""1"")"
<<?>>РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаОстатков,) КАК ТоварыОрганизацийОстатки
14 Кокос
 
07.12.11
13:07
Сумма(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК Количество,
15 Кокос
 
07.12.11
13:08
и "количество" из гуппировок убери
16 lesstat
 
07.12.11
13:27
(14) Сделал, но ошибку то не убрало
17 Кокос
 
07.12.11
13:29
ЭтаФорма.ЭлементыФормы.ДатаОстатков.Значение или как там поле называется не помню. попробуй так
18 lesstat
 
07.12.11
13:40
(17) Теперь ругается на

ТоварыОрганизацийОстатки.Склад КАК Склад,
              |    ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
              |    ТоварыОрганизацийОстатки.СерияНоменклатуры КАК СерияНоменклатуры


Ошибка: Поле не входит в группу "ТоварыОрганизацийОстатки.Номенклатура"
<<?>>ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,

и так про все 3 отбора
19 Кокос
 
07.12.11
13:42
|Сгруппировать ПО
              |    ТоварыОрганизацийОстатки.Номенклатура,
              |    ТоварыОрганизацийОстатки.СерияНоменклатуры,
              |    ТоварыОрганизацийОстатки.Склад

перед упорядочиванием добавь. сорь если ошибся в написании. сейчас не на 1с
20 Кокос
 
07.12.11
13:42
убери нахрен из упорядочивания количество. Сумма(...) поставил?
21 lesstat
 
07.12.11
13:43
вот полностью текст


Процедура КнопкаВыполнитьНажатие(Кнопка)
   
// Запись данных справочника в DBF-файл:
Перем ДатаОстатков;
ДатаОстатков = ЭтаФорма.ЭлементыФормы.ДатаОстатков.Значение;
БД = Новый XBase;
// проектируется структура таблицы, т.е. имена и типы полей
БД.Поля.Добавить("Kolich","N",6,0);    // числовое поле Код
БД.Поля.Добавить("Name","S",30);    // строковое поле Наименование
// создание файла с указанной структурой
БД.СоздатьФайл("C://1.dbf");
Запрос=Новый Запрос;
запрос.Текст = "ВЫБРАТЬ
              |    Сумма(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК Количество,
              |    ТоварыОрганизацийОстатки.Склад КАК Склад,
              |    ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура,
              |    ТоварыОрганизацийОстатки.СерияНоменклатуры КАК СерияНоменклатуры
              |ИЗ
              |    РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаОстатков,) КАК ТоварыОрганизацийОстатки
              |
              |УПОРЯДОЧИТЬ ПО
              |    Номенклатура,
              |    СерияНоменклатуры,
              |    Склад";
             
              Запрос.УстановитьПараметр("датаОстатков", ДатаОстатков);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
   // создается новая пустая строка таблицы
   БД.Добавить();
   // заполняем поля новой строки
   БД.Kolich = Выборка.Количество;
   БД.Name = Выборка.Номенклатура.ПолноеНаименование();
КонецЦикла;
// зафиксировать изменения в файле
БД.ЗакрытьФайл();
КонецПроцедуры
22 Кокос
 
07.12.11
13:44
Сгруппировать ПО

в тексте запроса не вижу или "группировка" не помню точно
23 Кокос
 
07.12.11
13:44
вообще юзай конструктор запросов раз не шаришь в них. ставишь "" две кавычки. левой кнопкой между "" курсор ставишь и выбираешь "Конструктор запросов"
24 pscorp
 
07.12.11
13:50
Сотрите Сумму из запроса, эта строчка была правильной. GentleMan перепутал группировку и упорядочивание. должно быть
ТоварыОрганизацийОстатки.КоличествоОстаток КАК Количество,
25 Кокос
 
07.12.11
13:53
(24) это он перепутал. а без суммы вообще бесмысленный запрос получается.
26 pscorp
 
07.12.11
13:56
только если у товара есть остатки по разным сериям или складам, то будет соответственное количество строк в запросе по этому товару, а вы в другую базу выгружаете только наименование и количество.
Тогда действительно лучше использовать группировку.
Ее лучше настроить уже из конструктора запроса, щелкнув по нему правой кнопкой и не выбирать тогда склад и серию, раз уж вы их не используете при перекачке.

ВЫБРАТЬ
   СУММА(ТоварыОрганизацийОстатки.КоличествоОстаток) КАК Количество,
   ТоварыОрганизацийОстатки.Номенклатура КАК Номенклатура
ИЗ
   РегистрНакопления.ТоварыОрганизаций.Остатки(&ДатаОстатков, ) КАК ТоварыОрганизацийОстатки

СГРУППИРОВАТЬ ПО
   ТоварыОрганизацийОстатки.Номенклатура

Вот такой текст запроса должен быть по идее.
27 pscorp
 
07.12.11
13:58
ну и еще точно товары организаций хотите использовать? может Товары на складах?
28 Кокос
 
07.12.11
13:58
(26) а что тогда писал "Сотрите Сумму из запроса, эта строчка была правильной?:)
29 Кокос
 
07.12.11
13:58
(27) при правильном учете эти регистры часто бывают равны :)
30 pscorp
 
07.12.11
14:02
ну запрос-то не из-за нее не работал. А вот что надо получить и в каких разрезах данные хранятся не знаю. Ладно, надеюсь получится, что надо.
31 lesstat
 
07.12.11
14:17
теперь все без ошибок, но создается пустой фаил, и уж очень быстро отрабатывает обработка, как будто запрос вообще не выполняется
32 Кокос
 
07.12.11
14:25
БД.Записать() вроде забыл. да блин. учи матчасть :)
33 lesstat
 
07.12.11
14:28
Спасибо, заработало :)
Независимо от того, куда вы едете — это в гору и против ветра!