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

Хранилище

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

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



> Помогите произвести подсчет в табличной части          
kosalex Подменю пользователя
сообщение 29.10.14, 12:59
Сообщение #1

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

Есть табличная часть РС. на этой же форме есть ТЗ в которую должно заноситься номенклатура и количество этой номенклатуры в списке на форме. К примеру пользователь установил отбор, в форме списка вывелись строки, нужно посчитать сколько строк вывелось и с какой номенклатурой.

пишу вот так:
Пример1:
//Процедура РегистрСведенийСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    ТЧИнформация.Очистить();
    СтрокаТЧ = ТЧИнформация.Добавить();
    СтрокаТЧ.Номенклатура = ОформленияСтрок[0].ДанныеСтроки.НоменклатураПрибытие;
    СтрокаТЧ.Количество = 1;
    ТЧИнформация.Свернуть("Номенклатура","Количество");

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

Пример2:
Процедура РегистрСведенийСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
    //ТЧИнформация.Очистить();
    СтрокаТЧ = ТЧИнформация.Добавить();
    СтрокаТЧ.Номенклатура = ДанныеСтроки.НоменклатураПрибытие;
    СтрокаТЧ.Количество = 1;
    ТЧИнформация.Свернуть("Номенклатура","Количество");

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



При открытии формы, вроде бы заносится и считается, НО заносится и считается часть данных, после того как крутишь скроллингом, подсчитываются и остальные.

Как сделать?


TipsyKID Подменю пользователя
сообщение 29.10.14, 13:45
Сообщение #2

Оратор
Иконка группы
Группа: Местный
Сообщений: 413
Из: Киев
Спасибо сказали: 161 раз
Рейтинг: 0

Думаю Вы имеете ввиду вот это : [необходимо зарегистрироваться для просмотра ссылки]


Signature
Специалист : Технологическая платформа 8.х, Бухгалтерия для Украины, Управление торговлей для Украины, Зарплата и Управление Персоналом для Украины

kosalex Подменю пользователя
сообщение 03.11.14, 12:55
Сообщение #3

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

Цитата(TipsyKID @ 29.10.14, 13:45) *
Думаю Вы имеете ввиду вот это : [необходимо зарегистрироваться для просмотра ссылки]


Да мне нужно это! Пишу через постоитель запросов, вот код:
Процедура РегистрСведенийСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    Источник = Элемент.Значение;
    //Запрос = Новый Запрос;
    ОтборСтрок = Элемент.Значение.Отбор;
        
    ПостроительЗапроса = Новый ПостроительЗапроса;
    ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Источник);
    
    
    // Добавляются необходимые отборы, такие же как в отборы в табличной части.
    Для Каждого ЭлементОтбора Из ОтборСтрок Цикл
        Если ЭлементОтбора.Использование Тогда
            НовыйОтбор = ПостроительЗапроса.Отбор;
            НовыйОтбор.Добавить(ЭлементОтбора.Имя); // ОШИБКА НЕ УДАЕТСЯ ДОБАВИТЬ!
            НовыйОтбор.Использование = Истина;
            НовыйОтбор.ВидСравнения = ЭлементОтбора.ВидСравнения; // нужный вид сравнения
            НовыйОтбор.ЗначениеС = ЭлементОтбора.ЗначениеС;
            НовыйОтбор.ЗначениеПо = ЭлементОтбора.ЗначениеПо;
            НовыйОтбор.Значение = ЭлементОтбора.Значение;
        КонецЕсли;
        
    КонецЦикла;

ПостроительЗапроса.Выполнить ();

Результат = ПостроительЗапроса.Результат.Выгрузить(); // отобранные строки типа РезультатЗапроса

Если ЗначениеЗаполнено(Результат) Тогда
ТабличноеПолеИнформация = Результат;
ТабличноеПолеИнформация.Колонки.Добавить("КоличествоВагонов",,"Количество вагонов",);
Для каждого Строка Из ТабличноеПолеИнформация Цикл
    Строка.КоличествоВагонов = 1;    
КонецЦикла;
ТабличноеПолеИнформация.Свернуть("НоменклатураПрибытие","ВесПоПрибытию, КоличествоВагонов");
КонецЕсли;

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


Как передать отбор с формы списка в отбор построителя запроса?


Описание ошибки:
{РегистрСведений.ПростойВагона.Форма.ФормаСписка.Форма(486)}: Ошибка при вызове метода контекста (Добавить)
НовыйОтбор.Добавить(ЭлементОтбора.Имя);
по причине:
Недопустимое значение параметра (параметр номер '1')



с отбором разобрался, код ниже. Все добавляется. Вопрос другой)) Как в построитель запроса добавить поле со значением "1" - число?
И ещё там где ВидСравнения, ошибка, не могу установить вид сравнения такой как выбран на форме. Почему?

Процедура РегистрСведенийСписокПриПолученииДанных(Элемент, ОформленияСтрок)
    Источник = Элемент.Значение;
    ОтборСтрок = Элемент.Значение.Отбор;
    
    ПостроительЗапроса = Новый ПостроительЗапроса;
    ПостроительЗапроса.ИсточникДанных = Новый ОписаниеИсточникаДанных(Источник);
    ПостроительЗапроса.ДоступныеПоля.Добавить("КоличествоВагонов",,,);
    ПостроительЗапроса.ДоступныеПоля.КоличествоВагонов = 1;
    
    Для Каждого НастройкаОтбора Из ПостроительЗапроса.ДоступныеПоля Цикл
        НастройкаОтбора.Отбор = Истина;
    КонецЦикла;
    
    // Добавляются необходимые отборы, такие же как в отборы в табличной части.
    Для Каждого ЭлементОтбора Из ОтборСтрок Цикл
        Если ЭлементОтбора.Использование Тогда
            //Есть = Истина;
            НовыйОтбор = ПостроительЗапроса.Отбор;
            НовыйОтбор.Добавить(Строка(ЭлементОтбора.Имя));
            НовыйОтбор[ЭлементОтбора.Имя].Использование = Истина;
            НовыйОтбор[ЭлементОтбора.Имя].ВидСравнения = ЭлементОтбора.ВидСравнения; // нужный вид сравнения
            НовыйОтбор[ЭлементОтбора.Имя].ЗначениеС = ЭлементОтбора.ЗначениеС;
            НовыйОтбор[ЭлементОтбора.Имя].ЗначениеПо = ЭлементОтбора.ЗначениеПо;
            НовыйОтбор[ЭлементОтбора.Имя].Значение = ЭлементОтбора.Значение;
        КонецЕсли;
    КонецЦикла;
    

    ПостроительЗапроса.Выполнить ();
    
    Результат = ПостроительЗапроса.Результат.Выгрузить(); // отобранные строки типа РезультатЗапроса
    
    Если ЗначениеЗаполнено(Результат) Тогда
        ТабличноеПолеИнформация = Результат;
        ТабличноеПолеИнформация.Колонки.Добавить("КоличествоВагонов",,"Количество вагонов",);
        Для каждого Строка Из ТабличноеПолеИнформация Цикл
            Строка.КоличествоВагонов = 1;    
        КонецЦикла;
        ТабличноеПолеИнформация.Свернуть("НоменклатураПрибытие","ВесПоПрибытию, КоличествоВагонов");
    КонецЕсли;
    
    
КонецПроцедуры


alex040269 Подменю пользователя
сообщение 03.11.14, 13:35
Сообщение #4

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(kosalex @ 03.11.14, 13:55) *
Как в построитель запроса добавить поле со значением "1" - число?



ПостроительЗапроса = Новый ПостроительЗапроса;
НовыйОтбор = ПостроительЗапроса.Отбор;
НовыйОтбор.Добавить(Строка(ЭлементОтбора.Имя));
НовыйОтбор[ЭлементОтбора.Имя].Использование = Истина;
НовыйОтбор[ЭлементОтбора.Имя].Значение = 1;
НовыйОтбор[ЭлементОтбора.Имя].Использование = Истина;


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

kosalex Подменю пользователя
сообщение 03.11.14, 14:16
Сообщение #5

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

Цитата(alex040269 @ 03.11.14, 13:35) *
ПостроительЗапроса = Новый ПостроительЗапроса;
НовыйОтбор = ПостроительЗапроса.Отбор;
НовыйОтбор.Добавить(Строка(ЭлементОтбора.Имя));
НовыйОтбор[ЭлементОтбора.Имя].Использование = Истина;
НовыйОтбор[ЭлементОтбора.Имя].Значение = 1;
НовыйОтбор[ЭлементОтбора.Имя].Использование = Истина;



Вы меня не поняли. Нужно добавить поле не в отбор а в сам построитель и заполнить это добавленное поле, значение 1

Второй вопрос, это как передать ВидСравнения в построитель запроса из Отбора в форме списка ?

Что хотел:
Из РегистраСведенийСписок по установленному отбору, читать записи и добавлять в ТЗ.

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

    ПостроительЗапроса.Выполнить ();
    
    Результат = ПостроительЗапроса.Результат.Выгрузить(); // отобранные строки типа РезультатЗапроса
    
    Если ЗначениеЗаполнено(Результат) Тогда
        ТабличноеПолеИнформация = Результат;
        ТабличноеПолеИнформация.Колонки.Добавить("КоличествоВагонов",,"Количество вагонов",);
        
//Вот тут, подскажите как добавить это поле КоличествоВагонов в построитель запросов со значением "1", чтобы потом в цикле не проставлять эту "1"???
Для каждого Строка Из ТабличноеПолеИнформация Цикл
            Строка.КоличествоВагонов = 1;    
        КонецЦикла;

        ТабличноеПолеИнформация.Свернуть("НоменклатураПрибытие","ВесПоПрибытию, КоличествоВагонов");
    КонецЕсли;
    
    
КонецПроцедуры

alex040269 Подменю пользователя
сообщение 03.11.14, 14:22
Сообщение #6

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

тогда после ВЫБРАТЬ вставить текст
Цитата
1 КАК Поле

ПостроительЗапроса.Запрос.Текст = ....
или
Запрос = ПостроительЗапроса.ПолучитьЗапрос();
Запрос.Текст = ....
Запрос.Выполнить()


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

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

kosalex Подменю пользователя
сообщение 03.11.14, 14:24
Сообщение #7

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

Цитата(alex040269 @ 03.11.14, 14:22) *
тогда после ВЫБРАТЬ вставить текст
ПостроительЗапроса.Запрос.Текст = ....
или
Запрос = ПостроительЗапроса.ПолучитьЗапрос();
Запрос.Текст = ....
Запрос.Выполнить()


Угу, спасибо smile.gif


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


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

 

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