Имя: Пароль:
1C
1C 7.7
v7: Помогите разобраться с регистром?
0 asphix
 
20.01.12
11:01
Добрый день!

1Cv77, ТиС.

В стандартном отчёте "Остатки ТМЦ" добавил кнопку, к которой привязал процедуру выгрузки остатков в нужном формате в csv. В целом вроде работает, но не выгружает товары, остаток по которым на складе 0. А хотелось бы видеть позицию, штрихкод и цихерку 0 в поле остатка.

Делаю так:

Процедура Выгрузка()
   csv = СоздатьОбъект("Текст");
   Запрос = СоздатьОбъект("Запрос");
   Опт = 0;
   
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
    | ЮрЛицо        = Регистр.ОстаткиТМЦ.Фирма.ЮрЛицо, Регистр.РезервыТМЦ.Фирма.ЮрЛицо;
    | ШтрихКод     = Регистр.ОстаткиТМЦ.Номенклатура.БазоваяЕдиница.ШтрихКод;
    | Номенклатура    = Регистр.ОстаткиТМЦ.Номенклатура;
    | ТоварИмя        = Регистр.ОстаткиТМЦ.Номенклатура.Наименование;
    | Склад        = Регистр.ОстаткиТМЦ.Склад, Регистр.РезервыТМЦ.Склад;
    | Количество    = Регистр.ОстаткиТМЦ.Количество;
    | Цена        = Регистр.ОстаткиТМЦ.ЦенаПрод;
    | Функция КоличествоКонОст = КонОст(Количество);
    | Группировка Номенклатура упорядочить по Номенклатура.Родитель.Код;
    | Группировка Склад Все ВошедшиеВЗапрос;
    | Условие (ЮрЛицо в ВыбРазделитель2);
    | Условие (Номенклатура в глУсловие1);
    | Условие (Склад в ВыбСклад);";
   
   Если Запрос.Выполнить(ТекстЗапроса) <> 0 Тогда
       Пока Запрос.Группировка("Номенклатура") = 1 Цикл
           Если Запрос.Номенклатура.Родитель.Выбран() = 1 тогда // игнорируем переходы между групп
               глВернутьЦену(Запрос.Номенклатура, ЦенаИзСправочника, ДатаКонца, Опт);
               csv.ДобавитьСтроку(Запрос.Номенклатура.Родитель.Код + ";" +
                                  СокрЛП(Запрос.ШтрихКод) + ";" +
                                  СокрЛП(Запрос.ТоварИмя) + ";" +
                                  Запрос.КоличествоКонОст + ";" +
                                  //Запрос.Цена + ";" +
                                  Опт);
           КонецЕсли;
       КонецЦикла;
       Сообщить(ТекущееВремя() + " Выгрузка сформирована успешно.");
   КонецЕсли;
   
   csv.Записать("c:\temp\export.csv");
   
КонецПроцедуры


Прошу строго не судить, в 1С совсем профан, помогите советом?
1 1Сергей
 
20.01.12
11:07
| Группировка Номенклатура упорядочить по Номенклатура.Родитель.Код Все;
2 Дядя Васька
 
20.01.12
11:08
А что такое "переходы между групп"? Ты проигнорировал все элементы корня просто.
3 asphix
 
20.01.12
11:18
2 1Сергей: в таком случае в файлик выводятся по две записи с каждым товаром:
первая с остатком 0 и в поле цены стоит % наценки
вторая с правильным остатком и правильно выбранной ценой

Записи с остатком на складе 0 не выводятся всё-равно..


2 Дядя Васька: использую множественный фильтр и для выгрузки в файл мне элементы корня не нужны.
4 1Сергей
 
20.01.12
11:21
(3) тогда ещё подправь:

    | Группировка Склад;
5 Дядя Васька
 
20.01.12
11:23
А зачем вообще по складам группировка?
6 asphix
 
20.01.12
11:26
2 1Сергей: результат ровно тот же :(

2 Дядя Васька: да хрен его знает.. на самом деле мне просто нужен список позиций на складе со штрихкодом и остатком (даже нулевым), по незнанию методом тыка писал :(

З.Ы.: бытует мнение, что в регистрах остатков не хранится инфа по товарам с нулевым остатком. Интересно, это правда?
7 Дядя Васька
 
20.01.12
11:27
(6) Ты не поверишь :) Откуда ей там взяться-то?
8 1Сергей
 
20.01.12
11:28
(6) ты что-то не там смотришь
9 Дядя Васька
 
20.01.12
11:29
Кстати да... Процент наценки вместо цены по такому коду вроде как не может получится в принципе
10 asphix
 
20.01.12
11:34
В общих чертах мне необходима такая мини-формочка, где я мог бы выбрать нужную номенклатурную группу, тип цены и склад и получить список товаров в выбранной  группе со штрихкодом, ценой и остатком на складе.

попробовал присовоокупиться к стандартному отчёту Остатки ТМЦ, но он, зараза, и сам по нулевым остаткам выводит только Наименование товара и цену, а штрихкод и кол-во нет. Последнее я бы ему простил методом NVL. А вот без штрихкода вообще никуда :(

Может быть натолкнёте на более изящное решение проблемы?
11 Дядя Васька
 
20.01.12
11:36
(10) Так ты ж его из базовой единицы берешь. Номенклатура в нем есть, что мешает просто написать КакТамНазываетсяПеременнаяСНоменклатурой.БазоваяЕдиница.Штрихкод?
12 Дядя Васька
 
20.01.12
11:38
+(11) Да и цену через глВернутьЦену() берешь, тоже не в запросе...
13 Дядя Васька
 
20.01.12
11:39
Точнее чего я... Цену говоришь выводит же. А что количество нет, так ить нулевое же.
14 ЧеловекДуши
 
20.01.12
11:42
(10)Делаешь в 10 заходов.
Сперва создаешь ТЗ, в которой будет нужный тебе товар
Потом пишешь свой запрос в (0) и получаешь остаток...
Ну и т.д. сам, лепишь мего ТЗ
В конце её выводишь.
15 ЧеловекДуши
 
20.01.12
11:43
+ все в одной можно получить только прямым запросом ;)
16 1Сергей
 
20.01.12
11:46
(14) О_о нафига такой огород?
17 Дядя Васька
 
20.01.12
11:46
(15) Не мудри. Есть отчет нормальный который все выводит. ТС там не хватает только ШК, а чтобы до него добраться никакой запрос и не нужен.
18 ЧеловекДуши
 
20.01.12
11:49
(16)Если огород ему ненать, то твой ответ в (1) уже окончателен :)
19 ЧеловекДуши
 
20.01.12
11:50
Чета мне сдается, что автору нужен прайс лист :)
20 asphix
 
20.01.12
12:18
2 ЧеловекДуши, почти угадали :) Только в этом прайс-листе нужно указывать кол-во остатка товара на складе :)
21 KatyaShumilova
 
20.01.12
14:34
(20) Добавьте колонку "Остатки" с вырадением <ПечКол>, в таблицу.
А в модуле напишите примерно так:
Кол=Регистр.ОстаткиТМЦ.СводныйОстаток(,Докум.Номенклатура,,,"Количество");
       ПечКол=Формат(Кол,"Ч10.0");
22 asphix
 
20.01.12
17:39
2 KatyaShumilova: спасибо, попробую!