Работа с таблицей, загрузка из ТМЦ - 1С Бухгалтерия 7.7 для Украины - Для пользователя - Украинский форум 1C
Украинский форум 1C
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 2 из 4«1234»
Модератор форума: Valerka 
Украинский форум 1C » Для пользователя » 1С Бухгалтерия 7.7 для Украины » Работа с таблицей, загрузка из ТМЦ
Работа с таблицей, загрузка из ТМЦ
igmig65Дата: Среда, 09.07.2008, 09:33 | Сообщение # 16
Генерал-майор
Группа: Проверенные
Сообщений: 372
Репутация: 25
Статус: Offline
Вот вариант:
Code
Процедура Сформировать()
  Перем Запрос, ТекстЗапроса, Таб;
  Запрос = СоздатьОбъект("Запрос");
  ТекстЗапроса =  
  "//{{ЗАПРОС(Сформировать)
  |Период с ВыбНачПериода по ВыбКонПериода;
  |Контрагент = Документ.ПриходнаяНакладная.Контрагент;
  |ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
  |ЦенаБезНДС = Документ.ПриходнаяНакладная.ЦенаБезНДС;
  |Функция Цена = Среднее(ЦенаБезНДС);
  |Группировка ТМЦ;
  |Группировка День все ВошедшиеВЗапрос;
  |Условие(Контрагент = ВыбКонтрагент);
  |"//}}ЗАПРОС
  ;
  Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
   Возврат;
  КонецЕсли;
  Таб = СоздатьОбъект("Таблица");
  Таб.ИсходнаяТаблица("Сформировать");
  Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
  Таб.ВывестиСекцию("Заголовок|Секция1");
  Пока Запрос.Группировка(1) = 1 Цикл
   Пока Запрос.Группировка(2) = 1 Цикл
    Дт = Запрос.День;
    Таб.ПрисоединитьСекцию("Заголовок|Секция2");
   КонецЦикла;
   Прервать;
  КонецЦикла;
  Запрос.ВНачалоВыборки();
  Пока Запрос.Группировка(1) = 1 Цикл
   Таб.ВывестиСекцию("ТМЦ|Секция1");
   Пока Запрос.Группировка(2) = 1 Цикл
    Таб.ПрисоединитьСекцию("ТМЦ|Секция2");
   КонецЦикла;
  КонецЦикла;
  Таб.ТолькоПросмотр(1);
  Таб.Показать("Сформировать", "");
КонецПроцедуры

Здесь выбконтрагент это реквизит формы, выбирать только элемент;
В заголовке в ячейке где дни савиш формулу Дт,
А в секции ТМЦ для вывода цен формула Запрос.Цена.
Таблицу прицепил
Прикрепления: 9861347.gif(104Kb)
 
Roman_KДата: Среда, 09.07.2008, 14:29 | Сообщение # 17
Полковник
Группа: Пользователи
Сообщений: 156
Репутация: 5
Статус: Offline
Valerka, было упоминание о конструкторе запроса... как его вызвать в 1С 7.7?

Пришелец из С/С++ ...ушелец в C#/ASP.Net
 
ivisorДата: Среда, 09.07.2008, 15:42 | Сообщение # 18
Генерал-полковник
Группа: Проверенные
Сообщений: 1049
Репутация: 98
Статус: Offline
Quote (igmig65)
Глюк конструктора, щелкаеш сначала по Все - недоступна, щелкаеш по строке с группировкой День - доступна
Точно, так и есть. Ну и работает это на практике - проверял?

Добавлено (09.07.2008, 15:34)
---------------------------------------------
Roman_K, Когда у тя открыто что нибудь, что имеет эранную форму меню "Конструктор"-"Запрос". Я обычно делаю все в новой внешенй обработке (можно ее не записыать если не бужешь делать в ней отладку), а потом, после того как конструктор все сформирует, - правлю и копирую туда куда надо, а то он любит на форму реквизиты добавлять ... biggrin
А ваще весч оч. удобная - освой не пожалеешь.

Добавлено (09.07.2008, 15:42)
---------------------------------------------
igmig65, Vava, Можно вместо

Code
|Условие(Контрагент = ВыбКонтрагент);

Code
|Условие(Контрагент В ВыбКонтрагент);

А для ВыбКонтрагент разрешить выбор групп, тогда можно выполнять зпрос по группе контрагентов, а если ВыбКонтрагент будет пустой, то выдаст выведется по всем, а в оригинале ни по кому при пустом ВыбКонтрагент. Но это, конечно, если нужно.

Чтобы получить перечень доступных обновлений отошлите пустое письмо на адрес: 1c_download@bk.ru
Впишите нужный пункт в тему письма для 1c_download@bk.ru и получите ссылку на закачку.
 
VavaДата: Суббота, 12.07.2008, 21:32 | Сообщение # 19
Подполковник
Группа: Пользователи
Сообщений: 134
Репутация: 0
Статус: Offline
Спасибо всем за помощь!
Code
|Условие(Контрагент В ВыбКонтрагент);
пригодилось тоже =)

Два вопроса осталось.
Можно ли в запросе определять не максимальную цену, а цену по последней закупке?
И как все таки определить группу. Пробовал

Code
Если Запрс.ТМЦ.ЭтоГруппа()=1 Тогда ...

Не работает так. Видимо в запрос не попадают папки. Как можно сделать, чтоб попадали?
Запрос получился такой:
Code

   "//{{ЗАПРОС(Сформировать)  
   |Период с Дата1 по Дата2;  
   |Обрабатывать НеПомеченныеНаУдаление;  
   |НаименованиеФирмы = Документ.ПриходнаяНакладная.Контрагент;  
   |ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;  
   |СуммаСНДС = Документ.ПриходнаяНакладная.СуммаСНДС;
   |Кво = Документ.ПриходнаяНакладная.Кво;
   |Функция Цена = Максимум(СуммаСНДС/Кво);     
   |Фирма = Документ.ПриходнаяНакладная.Контрагент;
   |Группировка ТМЦ все ВошедшиеВЗапрос;  
   |Группировка НаименованиеФирмы все ВошедшиеВЗапрос;   
   |Группировка День все ВошедшиеВЗапрос;    
   |"//}}ЗАПРОС

Спасибо
 
ValerkaДата: Воскресенье, 13.07.2008, 08:02 | Сообщение # 20
Генерал-полковник
Группа: Модераторы
Сообщений: 976
Репутация: 138
Статус: Offline
Quote (Vava)
Не работает так. Видимо в запрос не попадают папки. Как можно сделать, чтоб попадали?

Судя по тексту запроса, папки попадают. Попробуй
Code
Если Запрос.ЭтоГруппа() = 1 Тогда

ТМЦ не надо писать, ты же обрабатываешь группировку.

Можно ответить на любой вопрос, если вопрос задан правильно.
Если люди помогли - плюс нажать не забываем :)
 
VavaДата: Среда, 16.07.2008, 17:50 | Сообщение # 21
Подполковник
Группа: Пользователи
Сообщений: 134
Репутация: 0
Статус: Offline
Code
Пока Запрос.Группировка("ТМЦ") = 1 Цикл
        Если Запрос.ЭтоГруппа()=1 Тогда
               Таб.ВывестиСекцию("Группа");
        КонецЕсли;
....
КонецЦикла;

Выдается ошибка при компиляции:

Если Запрос.ЭтоГруппа()=1 Тогда
{C:\PROGRAM FILES\1CV77\SAT\EXTFORMS\РЕЕСТР ТМЦ3.ERT(124)}: Недостаточное число параметров передано при вызове функции/процедуры объекта

А если написать:

Code
Пока Запрос.Группировка("ТМЦ") = 1 Цикл
        Если Запрос.ЭтоГруппа("ТМЦ")=1 Тогда
               Таб.ВывестиСекцию("Группа");
        КонецЕсли;
....
КонецЦикла;

условие не выполняется никогда (

 
ValerkaДата: Среда, 16.07.2008, 18:20 | Сообщение # 22
Генерал-полковник
Группа: Модераторы
Сообщений: 976
Репутация: 138
Статус: Offline
Code

Если Запрос.ТМЦ.ЭтоГруппа(1)=1 Тогда //1-первая группировка
        Таб.ВывестиСекцию("Группа");  
КонецЕсли;

Хотя, по идее это тоже самое.
Попробуй посмотреть отладчиком что передается в группировку, и почему нету групп.
Видать потому, что выбирается из документов?

Можно ответить на любой вопрос, если вопрос задан правильно.
Если люди помогли - плюс нажать не забываем :)
 
ivisorДата: Среда, 16.07.2008, 22:44 | Сообщение # 23
Генерал-полковник
Группа: Проверенные
Сообщений: 1049
Репутация: 98
Статус: Offline
Пацаны - вы че???
Не будет тут групп никогда - патаму шо |ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
ИМХО Откуда взятсяа группам? Это ж к доку обращение а не к регистру?
Думаю надо добавлять в запрос:
Code
ГрТМЦ = Документ.ПриходнаяНакладная.ТМЦ.Родитель;  
  |Группировка ГрТМЦ ;   
  |Условие(ГрТМЦ В ВыбГруппаТМЦ)

Тока я нифига не понимаю - за каким Х такое надо? Ведь цена (ни средняя ни последняя) не имеет ни какого смысла для групп.
Разве что нужно чтобы в таблице ТМЦ упорядочивались внутри групп - типа сначала по порядку идут ТМЦ группы "Колбасы", потом ТМЦ группы "Сыры", тада - да, такое подойдет.
Если ж просто нужно ограничивать, выборку ТМЦ определенной группой, тогда нужно:
Code
|Условие(ТМЦ В ВыбТМЦ);


Чтобы получить перечень доступных обновлений отошлите пустое письмо на адрес: 1c_download@bk.ru
Впишите нужный пункт в тему письма для 1c_download@bk.ru и получите ссылку на закачку.
 
igmig65Дата: Четверг, 17.07.2008, 07:41 | Сообщение # 24
Генерал-майор
Группа: Проверенные
Сообщений: 372
Репутация: 25
Статус: Offline
Я вопще писал запрос с группировкой: День все ВошедшиеВЗапрос; для того чтобі єту группировку віводить в вертикальных секциях. И тут она имеет смысл.
А зачем это:
|Группировка ТМЦ все ВошедшиеВЗапрос;
|Группировка НаименованиеФирмы все ВошедшиеВЗапрос;
|Группировка День все ВошедшиеВЗапрос; ,
Для горизонтальных группировок все ВошедшиеВЗапрос неимеет никакого смысла. Да и вообще эта фишка и нужна для того чтобы в вертикальные секции попадали нулевые выборки, иначе это лишнее.
В том запросе что я написал только подогнать все по реквизитам и будет работать 100%, проверено, исправить только
Условие(ТМЦ В ВыбТМЦ);
И вообще:
Quote (ivisor)
Тока я нифига не понимаю - за каким Х такое надо? Ведь цена (ни средняя ни последняя) не имеет ни какого смысла для групп.

++++
А чтобы упорядочить по группам, то Упорядочить по ТМЦ.Родитель
 
ValerkaДата: Четверг, 17.07.2008, 08:39 | Сообщение # 25
Генерал-полковник
Группа: Модераторы
Сообщений: 976
Репутация: 138
Статус: Offline
Quote (ivisor)
Пацаны - вы че???

И правда, а че мы? biggrin

Можно ответить на любой вопрос, если вопрос задан правильно.
Если люди помогли - плюс нажать не забываем :)
 
igmig65Дата: Четверг, 17.07.2008, 08:49 | Сообщение # 26
Генерал-майор
Группа: Проверенные
Сообщений: 372
Репутация: 25
Статус: Offline
Да, кстати условие В в запросе, если стоит скюэль невсегда работает, все никак непроверю када именно, может даже всегда.
 
ivisorДата: Четверг, 17.07.2008, 18:49 | Сообщение # 27
Генерал-полковник
Группа: Проверенные
Сообщений: 1049
Репутация: 98
Статус: Offline
igmig65, прикольно звучит условие не всегда работает ... может быть даже всегда cool biggrin

Добавлено (17.07.2008, 18:49)
---------------------------------------------
Слушай - нарисуй в экселе и выложи скрином пример того, что ты хотел бы получить в итоге в форме отчета (и как это должно выглядеть) а мы те подскажем как этого добится, а то я что-то потерял ход мысли ... wacko


Чтобы получить перечень доступных обновлений отошлите пустое письмо на адрес: 1c_download@bk.ru
Впишите нужный пункт в тему письма для 1c_download@bk.ru и получите ссылку на закачку.
 
VavaДата: Пятница, 18.07.2008, 09:08 | Сообщение # 28
Подполковник
Группа: Пользователи
Сообщений: 134
Репутация: 0
Статус: Offline
Quote
Слушай - нарисуй в экселе и выложи скрином пример того, что ты хотел бы получить в итоге в форме отчета (и как это должно выглядеть) а мы те подскажем как этого добится, а то я что-то потерял ход мысли ...

Я не понял как прикрепить сюда картинку.

Что нужно. Есть предприятие. Предприятие работает с разными поставщиками. Нужно получить 2 таблицы.
В первой таблице по выбранному контрагенту, за выбранный интервал времени выводится история закупок. Первый столбец - наименование товаров. Дальше идут столбцы с указанием цены и кол-ва единиц товара за сутки.
Это работает. Но для наглядности нужно товары выделять в группы (например: продукты, стройматериалы, ГСМ.....) В номенклатуре товары разбиты по папочкам сответствующим. Т.Е. в таблице идет название группы Продукты, а потом перечисляются ее составляющие.

Во второй таблице в первом столбце тоже товары. А в последующих столбцах идут поставщики с ценами на товар. Цену нужно брать из последней закупки по данному наименованию товара.

Т.Е. 2 вопроса. Как определять группы и как находить цену на товар по последней какупке у конкретного контрагента?

Сообщение отредактировал Vava - Пятница, 18.07.2008, 09:11
 
igmig65Дата: Пятница, 18.07.2008, 10:10 | Сообщение # 29
Генерал-майор
Группа: Проверенные
Сообщений: 372
Репутация: 25
Статус: Offline
Quote (Vava)
Но для наглядности нужно товары выделять в группы

Добавь колонку с Запрос.ТМЦ.Родитель - будешь видеть родителя, итоги по группам неактуальны. Если нужно упорядочить по группам, то как я писал выше Упорядочить по ТМЦ.Родитель.
Для второй таблицы я так понял даты неважны важны сами товары определенной группы? Тогда, если партионный учет, то все есть в партиях, и док и цена. Нужно работать с ним
 
VavaДата: Воскресенье, 20.07.2008, 12:31 | Сообщение # 30
Подполковник
Группа: Пользователи
Сообщений: 134
Репутация: 0
Статус: Offline
igmig65, Спасибо!
Упорядочить по ТМЦ.Родитель помогло.
А как можно решить вопрос насчет последней цены, если не по партиям?

Добавлено (20.07.2008, 12:31)
---------------------------------------------

Code
  ТекстЗапроса =   
   "//{{ЗАПРОС(Сформировать)  
   |Период с Дата1 по Дата2;  
   |Обрабатывать НеПомеченныеНаУдаление;  
   |НаименованиеФирмы = Документ.ПриходнаяНакладная.Контрагент;  
   |ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;  
   |СуммаСНДС = Документ.ПриходнаяНакладная.СуммаСНДС;
   |Кво = Документ.ПриходнаяНакладная.Кво;              
   |НДС = Документ.ПриходнаяНакладная.ВидНДС;    
   |Функция Цена = Максимум(СуммаСНДС/Кво);    
   |Группировка ТМЦ Упорядочить По ТМЦ.Родитель;  
   |Группировка НаименованиеФирмы все ВошедшиеВЗапрос;
   |"//}}ЗАПРОС  
   ;

Я вывожу строку, в которой указываю название фирмы и вид НДС таким образом:
Секция ("Заголовок|Цена") имеет 2 ячейки:
Запрос.НаименованиеФирмы
Запрос.НДС

Code
  Пока Запрос.Группировка(1) = 1 Цикл  
    Пока Запрос.Группировка(2) = 1 Цикл
     Таб.ПрисоединитьСекцию("Заголовок|Цена");
    КонецЦикла;  
    Прервать;  
   КонецЦикла;

Но в зависимости от выбранного интервала НДС принимает одно и то же значение(или Без НДС или 20%) для всех фирм. Наименования фирм идут правильно. Такое впечатление, что используется первое значение НДС из выборки для всех фирм. Что я сделал неправильно?
Спасибо

Сообщение отредактировал Vava - Пятница, 18.07.2008, 20:31
 
Украинский форум 1C » Для пользователя » 1С Бухгалтерия 7.7 для Украины » Работа с таблицей, загрузка из ТМЦ
Страница 2 из 4«1234»
Поиск: