Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите розобратся с запросом и его данными          
leo10k10 Подменю пользователя
сообщение 27.03.17, 12:31
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Подскажите что не так пишу или делаю.
Есть запрос

Запрос_1 = СоздатьОбъект("Запрос");
    ТекстЗапроса_1 =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ПриходнаяНакладная = Документ.ПриходнаяНакладная.ТекущийДокумент;
    |ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
    |ПлотностьНа15Град = Документ.ПриходнаяНакладная.ПлотностьНа15Град;
    |ЛитрОтПлотности = Документ.ПриходнаяНакладная.ЛитрОтПлотности;
    |Группировка День;
    |Группировка ПриходнаяНакладная;
    |Группировка ТМЦ;
    |Группировка ПлотностьНа15Град;
    |Группировка ЛитрОтПлотности;
    |"//}}ЗАПРОС


создаю таблицу значений для заполнения ее данными запроса

Список_Прих = СоздатьОбъект("ТаблицаЗначений");
    Список_Прих.НоваяКолонка("День", "Дата");
    Список_Прих.НоваяКолонка("НомПрихНакл", "Строка");
    Список_Прих.НоваяКолонка("ИмяПрихТовара", "Строка");
    Список_Прих.НоваяКолонка("ПлотнПрихТовара", "Число");
    Список_Прих.НоваяКолонка("ПрихАкцизЛитр", "Число");


и заполняю ее на цикле последеней групировки

Пока Запрос_1.Группировка(5) = 1 Цикл
                    Сообщить (Запрос_1.ЛитрОтПлотности);
                    НомПрих = НомПрих + 1;
                    Список_Прих.НоваяСтрока(НомПрих);
                    Список_Прих.День = Запрос_1.День;
                                    Список_Прих.НомПрихНакл = Запрос_1.ПриходнаяНакладная;
                                    Список_Прих.ИмяПрихТовара = Запрос_1.ТМЦ;
                                    Список_Прих.ПлотнПрихТовара = Запрос_1.ПлотностьНа15Град;
                                    Список_Прих.ПрихАкцизЛитр = Запрос_1.ЛитрОтПлотности;
                КонецЦикла;


в результате неверная информация в полях таблици Список_Прих что не так не пойму

Acid Подменю пользователя
сообщение 27.03.17, 12:56
Сообщение #2

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

leo10k10 @ Сегодня, 12:31 * ,
Таблицу создавать не нужно. Надо выгрузить результат выполнения запроса в таблицу. Список_Прих = Результат.Выгрузить();

leo10k10 Подменю пользователя
сообщение 27.03.17, 14:10
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Acid @ 27.03.17, 12:56) *
Таблицу создавать не нужно. Надо выгрузить результат выполнения запроса в таблицу. Список_Прих = Результат.Выгрузить();

Вот что получилось

Список_Прих = Результат<<?>>.Таб_1.Выгрузить();
{Отчет.новый3.Форма.Модуль(201)}: Переменная не определена (Результат)
При проверке модуля обнаружены синтаксические ошибки!

или так

Список_Прих = Результат<<?>>.Выгрузить();
{Отчет.новый3.Форма.Модуль(201)}: Переменная не определена (Результат)
При проверке модуля обнаружены синтаксические ошибки!

daveal Подменю пользователя
сообщение 27.03.17, 14:36
Сообщение #4

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

Таб_1 = СоздатьОбъект("ТаблицаЗначений");
Запрос_1.Выгрузить(Таб_1,0,0);

Acid Подменю пользователя
сообщение 27.03.17, 15:25
Сообщение #5

Про1С-ник
Иконка группы
За заслуги на форуме в 2010 году
Группа: Местный
Сообщений: 2104
Из: Занзибар
Спасибо сказали: 377 раз
Рейтинг: 260.7

leo10k10 @ Сегодня, 14:10 * ,
Не правильно. Пример есть в Синтакс-Помощнике

leo10k10 Подменю пользователя
сообщение 27.03.17, 16:56
Сообщение #6

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(Acid @ 27.03.17, 15:25) *
Не правильно. Пример есть в Синтакс-Помощнике


Заглянул я в Синтаксис там чорным по белому написано что это <ИдентификаторРегистра> а у меня работа с Документами да и примера там ни какого нету

Вот полный текс кода
//*******************************************
// Процедура генерации запроса Сформировать.
//
Процедура Сформировать()
    Перем Запрос_1, ТекстЗапроса_1, Таб_1, Список_Прих, НомПрих;
    //Создание объекта типа Запрос
    Запрос_1 = СоздатьОбъект("Запрос");
    ТекстЗапроса_1 =
    "//{{ЗАПРОС(Сформировать)
    |Период с ВыбНачПериода по ВыбКонПериода;
    |Обрабатывать НеПомеченныеНаУдаление;
    |ПриходнаяНакладная = Документ.ПриходнаяНакладная.ТекущийДокумент;
    |ТМЦ = Документ.ПриходнаяНакладная.ТМЦ;
    |ПлотностьНа15Град = Документ.ПриходнаяНакладная.ПлотностьНа15Град;
    |ЛитрОтПлотности = Документ.ПриходнаяНакладная.ЛитрОтПлотности;
    |Группировка День;
    |Группировка ПриходнаяНакладная;
    |Группировка ТМЦ;
    |Группировка ПлотностьНа15Град;
    |Группировка ЛитрОтПлотности;
    |"//}}ЗАПРОС
;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос_1.Выполнить(ТекстЗапроса_1) = 0 Тогда
        Возврат;
    КонецЕсли;

    // Подготовка к заполнению выходных форм данными запроса
    Таб_1 = СоздатьОбъект("Таблица");
    Список_Прих = СоздатьОбъект("ТаблицаЗначений");
    Список_Прих.НоваяКолонка("День", "Дата");
    Список_Прих.НоваяКолонка("НомПрихНакл", "Строка");
    Список_Прих.НоваяКолонка("ИмяПрихТовара", "Строка");
    Список_Прих.НоваяКолонка("ПлотнПрихТовара", "Число");
    Список_Прих.НоваяКолонка("ПрихАкцизЛитр", "Число");
    НомПрих = 0;
    Таб_1.ИсходнаяТаблица("Сформировать");
    // Заполнение полей "Заголовок"
    Таб_1.ВывестиСекцию("Заголовок");
    Состояние("Заполнение выходной таблицы...");
    Таб_1.Опции(0, 0, Таб_1.ВысотаТаблицы(), 0);
    Пока Запрос_1.Группировка(1) = 1 Цикл
        Сообщить (Запрос_1.День);                           // результат == 04.01.2017
        Пока Запрос_1.Группировка(2) = 1 Цикл
            Сообщить (Запрос_1.ПриходнаяНакладная);         // результат == Прих. накл. ПН-0000001 (04.01.2017)
            Пока Запрос_1.Группировка(3) = 1 Цикл
                Сообщить (Запрос_1.ТМЦ);                    // результат == Паливо дизельне ДТ-Л-К5 сорт С ( УКТЕД 2710194300)
                Пока Запрос_1.Группировка(4) = 1 Цикл
                    Сообщить (Запрос_1.ПлотностьНа15Град);  // результат == 0.7625
                    Пока Запрос_1.Группировка(5) = 1 Цикл
                        Сообщить (Запрос_1.ЛитрОтПлотности);// результат == 36254
                        НомПрих = НомПрих + 1;
                        Список_Прих.НоваяСтрока(НомПрих);
                        Список_Прих.День = Запрос_1.День;
                        Список_Прих.НомПрихНакл = Запрос_1.ПриходнаяНакладная;
                        Список_Прих.ИмяПрихТовара = Запрос_1.ТМЦ;
                        Список_Прих.ПлотнПрихТовара = Запрос_1.ПлотностьНа15Град;
                        Список_Прих.ПрихАкцизЛитр = Запрос_1.ЛитрОтПлотности;
                    КонецЦикла;
                КонецЦикла;
            КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    
    
    // Заполнение строк поля "ПриходныйАКЦЫЗ"
    Список_Прих.ВыбратьСтроки();
    Пока Список_Прих.ПолучитьСтроку() = 1 Цикл
       Таб_1.ВывестиСекцию("ЛитрОтПлотности");
    КонецЦикла;
    
    // Заполнение полей через Список_Прих
    Список_Прих.ВыбратьСтроки();
    Пока Список_Прих.ПолучитьСтроку() = 1 Цикл
         Сообщить(Шаблон("[Список_Прих.День = Запрос_1.День] х [Список_Прих.НомПрихНаклра] х [Список_Прих.ИмяПрихТовара] х [Список_Прих.ПлотнПрихТовара]"));
    
    КонецЦикла;    // получил результат:       04.01.2017       Х             49943           Х            148       219         х            0.7625                    
                                                                
        
    // Вывод заполненной формы
    Таб_1.ТолькоПросмотр(1);
    Таб_1.Показать("Сформировать", "");
КонецПроцедуры


смысл в том что результат запроса мне надо записать в "Список_Прих" и дальше проводить ряд нонипуляций

leo10k10 @ Сегодня, 16:54 * ,
а я только дату и последние числовые значения нв нормальном виде имею а в остольном бред может это изза строковой переменной

daveal Подменю пользователя
сообщение 28.03.17, 8:06
Сообщение #7

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

Список_Прих.НомПрихНакл = Запрос_1.ПриходнаяНакладная.НомерДок;
Список_Прих.ИмяПрихТовара = Запрос_1.ТМЦ.Наименование;

Спасибо сказали: leo10k10,

leo10k10 Подменю пользователя
сообщение 28.03.17, 9:43
Сообщение #8

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(daveal @ 28.03.17, 8:06) *
Список_Прих.НомПрихНакл = Запрос_1.ПриходнаяНакладная.НомерДок;
Список_Прих.ИмяПрихТовара = Запрос_1.ТМЦ.Наименование;


Приятно иметь дело с специолистом который может розобратся в поставленом вопросе и дать дельный совет.
Спосибо за Ваше дрогоценное время потраченое на меня и мою проблему, но блогодаря Вам она решена 12201689.gif

leo10k10 @ Сегодня, 9:34 * ,
Я дико извеняюсь не хочу наглеть но хочу посоветоватца как лутше теперь перебрать полученый список чтобы просумировать поле "Список_Прих.ПрихАкцизЛитр" относительно одиного и товоже товара наименование когорого в поле "Список_Прих.ИмяПрихТовара" с учетом того что плотность этого товара указаная в поле "Список_Прих.ПлотнПрихТовара" должна быть одинаковой.

daveal Подменю пользователя
сообщение 28.03.17, 9:51
Сообщение #9

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

Список_Прих.Свурнуть("День,НомПрихНакл,ИмяПрихТовара,ПлотнПрихТовара","ПрихАкцизЛитр");

Можно было это еще в запросе сделать "Функция СуммаЛитрОтПлотности = Сумма(ЛитрОтПлотности);". Только тогда нужно убрать группировку по ЛитрОтПлотности

nysysimara Подменю пользователя
сообщение 28.03.17, 12:56
Сообщение #10

Оратор
Иконка группы
Группа: Местный
Сообщений: 312
Из: Бердянск
Спасибо сказали: 110 раз
Рейтинг: 0

leo10k10,
можно вопрос:
почему вы не воспользовались этим
daveal @ Вчера, 14:36 * ,
советом?


Signature
1С Предприятие 7.7: Бух. учет для Украины (активно дописанная) + самописка (учет производства и ЗП)
1С Предприятие 8.3: Бух.предприятия 3.0 + самописка
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Кроме высшего образования, нужно иметь хотя бы среднее соображение

leo10k10 Подменю пользователя
сообщение 28.03.17, 15:05
Сообщение #11

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(nysysimara @ 28.03.17, 12:56) *
можно вопрос:
почему вы не воспользовались этим
daveal @ Вчера, 14:36 ,
советом?


Я до сих пор не понимаю такого маневра соотвецтвенно и не воспользовался.
Р.С. я не волшебник я только учусь

Цитата(daveal @ 28.03.17, 9:51) *
Список_Прих.Свурнуть("День,НомПрихНакл,ИмяПрихТовара,ПлотнПрихТовара","ПрихАкцизЛитр");

Можно было это еще в запросе сделать "Функция СуммаЛитрОтПлотности = Сумма(ЛитрОтПлотности);". Только тогда нужно убрать группировку по ЛитрОтПлотности



Может я неправильно выразился или чегото не понимаю но на мой взгляд так не пойдет видь мне не просто сумма нужна.
Сечас попробую обяснить на примере: допустим вчера мне на приход пришло два вида топлива ДТ и Бензин95 соотвецтвенно в поле "ИмяПрихТовара" два разных имени и у каждого имени может быть своя плотность указаная в поле "ПлотнПрихТовара" например ДТ было двух видов качества с плотностю 0,785 и 0,825 по сути имеем три строки, сегодня на приход мне прошло еще два вида ДТ с плотностями 0,776 и 0,825 тоесть еще две строчки подбивая итог я должен получить 4 строки и сумма будет лиш по одному виду топлива а именно ДТ с плотностью 0,825.

я пока это все писал думаю может стоит свертку произвести таким образом:
Список_Прих.Свурнуть("ИмяПрихТовара,ПлотнПрихТовара","ПрихАкцизЛитр");


daveal Подменю пользователя
сообщение 28.03.17, 15:28
Сообщение #12

Говорящий
***
Группа: Пользователи
Сообщений: 70
Из: Киев
Спасибо сказали: 25 раз
Рейтинг: 0

Суммирование в запросе происходит в разрезе объявленных группировок. Если сумма нужна только по плотности и ТМЦ, так и оставьте в запросе только эти группировки.

Спасибо сказали: leo10k10,

leo10k10 Подменю пользователя
сообщение 28.03.17, 16:21
Сообщение #13

Общительный
**
Группа: Пользователи
Сообщений: 42
Спасибо сказали: 0 раз
Рейтинг: 0

Цитата(daveal @ 28.03.17, 15:28) *
Суммирование в запросе происходит в разрезе объявленных группировок. Если сумма нужна только по плотности и ТМЦ, так и оставьте в запросе только эти группировки.

да так и есть спс

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 0:01
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!