Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
1

Для документа "ПродажаТоваров" на форму списка добавить "ПолеВвода"

26.04.2014, 04:49. Просмотров 1478. Ответов 19
Метки нет (Все метки)

Для документа "ПродажаТоваров" на форму списка добавить "ПолеВвода" с типом "СправочникСсылка.Контрагенты". На событие формы "ПриОткрытии" в поле ввода должна появляться ссылка на контрагента, закупившего товаров на наибольшую сумму в рублях.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Процедура ПриОткрытии()
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
|   ПродажаТоваровТовары.Ссылка.Контрагент.Ссылка,
|   МАКСИМУМ(ПродажаТоваровТовары.Ссылка.Итого) КАК Итого
|ИЗ
|   Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
|
|СГРУППИРОВАТЬ ПО
|   ПродажаТоваровТовары.Ссылка.Контрагент.Ссылка";
 
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
 
Пока Выборка.Следующий() Цикл
 
    
 
КонецЦикла;
 
ЭлементыФормы.ТабличноеПоле1.Значение=Результат.Выгрузить();
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
// Вставить содержимое обработчика.
КонецПроцедуры
Добавлено через 2 минуты
Он выводит моих контрагентов в созданное мной ТабличноеПоле1, а мне надо вывести наибольшого контрагента, т.е. у которого "Итого" больше в ПолеВвода1. Помогите пожалуйста))
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2014, 04:49
Ответы с готовыми решениями:

На форму списка товаров добавить "ТабличноеПоле" с типом значений "ДеревоЗначений"
1С.8.0 На форму списка товаров добавить "ТабличноеПоле" с типом значений "ДеревоЗначений". При...

Автоматическое заполнение поля "Комментарий" документа "заказ покупателя"
Всем здравствуйте! Помогите, пожалуйста, решить такую задачку: С сайта (на Битриксе) выгружаются...

1С 8.3 Розница 2.1.4.9 "Текущая цена розницы" и "Остаток" в форме элемента "Номенклатура"
Есть ли готовое решение, можно через внешнюю форму нужно контроль "Текущая цена розницы" и...

Создать произвольную форму для справочника "Сотрудники"
Создать произвольную форму для справочника "Сотрудники". На форму списка добавить кнопку, при...

Как создать колонку "Цена" и "Количество" в справочнике номенклатура
Подскажите как создать колонку "Цена" и "Количество" в справочнике номенклатура?

19
Dethmontt
Модератор
Эксперт 1С
2659 / 2446 / 421
Регистрация: 10.03.2011
Сообщений: 8,756
Записей в блоге: 1
Завершенные тесты: 1
26.04.2014, 05:14 2
ВЫБРАТЬ ПЕРВЫЕ 1
*
ИЗ ТвояТаблица
СОРТИРОВАТЬ ПО
Цифра
0
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
26.04.2014, 12:42  [ТС] 3
Куда вставлять?

Добавлено через 1 час 33 минуты
Ошибку выдает...
0
GreenkA
Модератор
Эксперт 1С
2990 / 1911 / 520
Регистрация: 25.06.2009
Сообщений: 6,784
26.04.2014, 14:44 4
Fenlou,
1C
1
2
3
4
5
6
7
8
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
|   ПродажаТоваровТовары.Ссылка.Контрагент.Ссылка,
|   ПродажаТоваровТовары.Ссылка.Итого КАК Итого
|ИЗ
|   Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
|
|УПОРЯДОЧИТЬ ПО
    ПродажаТоваровТовары.Ссылка.Итого УБЫВ";
0
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
26.04.2014, 16:57  [ТС] 5
а как отобразить результат в ПолеВвода1?

Добавлено через 1 минуту
И он не правильно выводит, надо закупившего товаров на наибольшую сумму в рублях.
0
Dethmontt
Модератор
Эксперт 1С
2659 / 2446 / 421
Регистрация: 10.03.2011
Сообщений: 8,756
Записей в блоге: 1
Завершенные тесты: 1
27.04.2014, 01:24 6
Цитата Сообщение от Fenlou Посмотреть сообщение
И он не правильно выводит, надо закупившего товаров на наибольшую сумму в рублях.
А откуда мы знаем что у тебя в реквизите документа ИТОГО лежит, рубли там или не рубли =((
0
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
27.04.2014, 14:22  [ТС] 7
Вот http://files.mail.ru/83D4A4AE021A4056A80614A029ED965A

Добавлено через 25 секунд
Сумма в рублях рассчитывалась
0
Dethmontt
Модератор
Эксперт 1С
2659 / 2446 / 421
Регистрация: 10.03.2011
Сообщений: 8,756
Записей в блоге: 1
Завершенные тесты: 1
28.04.2014, 01:43 8
Читай комментарии
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Процедура ПриОткрытии()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
                   |    ПродажаТоваровТовары.Ссылка.Контрагент КАК Контрагент,
                   |    СУММА(ПродажаТоваровТовары.Сумма) КАК Сумма,
                   |    ПродажаТоваровТовары.Валюта
                   |ИЗ
                   |    Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
                   |ГДЕ
                   |    &НетКонстанты или ПродажаТоваровТовары.Валюта = &Валюта
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    ПродажаТоваровТовары.Ссылка.Контрагент,
                   |    ПродажаТоваровТовары.Валюта
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Сумма УБЫВ";
                   
    //Для того что бы запрос отбирал максимум только по определенной валюте 
    //необходимо в конфигурацию добавить константу "ВалютаРегламентированногоУчета" - тип СправочникСсылка.Валюты
    //И установить ей значение, ну например "Российский рубль"
    
    //Если константы нет в программе, то выбирается просто максимальное число не зависимо от валюты (и курса конечно)
    МетаКонстанта = Метаданные.Константы.Найти("ВалютаРегламентированногоУчета");
    Запрос.УстановитьПараметр("НетКонстанты", МетаКонстанта = Неопределено);
    Если МетаКонстанта <> Неопределено Тогда
        Запрос.УстановитьПараметр("Валюта", Константы["ВалютаРегламентированногоУчета"].Получить());
    Иначе
        Запрос.УстановитьПараметр("Валюта", ""); //Нужно заполнять параметр запроса что бы избежать ошибки компиляции 
    КонецЕсли;  
     
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если Выборка.Следующий() Тогда
        Сообщить("Контрагент - <"+Строка(Выборка.Контрагент)+"> купил больше всех! Всего на сумму - <"+Выборка.Сумма+"> "+Строка(Выборка.Валюта));
    КонецЕсли; 
    
КонецПроцедуры
0
duk337
2951 / 1763 / 82
Регистрация: 03.11.2011
Сообщений: 8,280
28.04.2014, 11:29 9
Цитата Сообщение от Fenlou Посмотреть сообщение
Вот
Большая просьба картинки цеплять к сообщению в расширенном режиме (кнопка такая внизу)
0
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
28.04.2014, 15:00  [ТС] 10
Запрос не тот получается.
0
SPR1TE89
21 / 21 / 3
Регистрация: 22.04.2014
Сообщений: 112
28.04.2014, 15:31 11
Fenlou,
Ты так хотел?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ЗначениеВалюты = Справочники.Валюты.НайтиПоКоду("1");
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
               |    МАКСИМУМ(ПродажаТоваровТовары.Сумма) КАК Сумма,
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент КАК Контрагент
               |ИЗ
               |    Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
               |ГДЕ
               |    (ПродажаТоваровТовары.Валюта = &Валюта
               |            ИЛИ &ВалютаНеЗаполнена)
               |
               |СГРУППИРОВАТЬ ПО
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент";     
Запрос.УстановитьПараметр("Валюта", ЗначениеВалюты);
Запрос.УстановитьПараметр("ВалютаНеЗаполнена", Не ЗначениеЗаполнено(ЗначениеВалюты));
 
Результат = Запрос.Выполнить();
ТаблицаЗнч = Результат.Выгрузить();
ЭлементыФормы.ПолеВвода1.Значение = ТаблицаЗнч[0].Контрагент;
ЭлементыФормы.ТабличноеПоле1.Значение=  ТаблицаЗнч; 
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
1
Миниатюры
Для документа "ПродажаТоваров" на форму списка добавить "ПолеВвода"  
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
28.04.2014, 18:15  [ТС] 12
Да, спасибо)

Добавлено через 42 секунды
только это можно выполнить в 1С:П8.0?

Добавлено через 1 минуту
{Документ.ПродажаТоваров.Форма.ФормаСписка(4,1)}: Переменная не определена (Запрос)
<<?>>Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
{Документ.ПродажаТоваров.Форма.ФормаСписка(17,1)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("Валюта", ЗначениеВалюты);
{Документ.ПродажаТоваров.Форма.ФормаСписка(18,1)}: Переменная не определена (Запрос)
<<?>>Запрос.УстановитьПараметр("ВалютаНеЗаполнена", Не ЗначениеЗаполнено(ЗначениеВалюты));
{Документ.ПродажаТоваров.Форма.ФормаСписка(20,13)}: Переменная не определена (Запрос)
Результат = <<?>>Запрос.Выполнить();
{Документ.ПродажаТоваров.Форма.ФормаСписка(18,51)}: Процедура или функция с указанным именем не определена (ЗначениеЗаполнено)
Запрос.УстановитьПараметр("ВалютаНеЗаполнена", Не <<?>>ЗначениеЗаполнено(ЗначениеВалюты));

Добавлено через 23 секунды
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Процедура ПриОткрытии()
ЗначениеВалюты = Справочники.Валюты.НайтиПоКоду("1");
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
               |    МАКСИМУМ(ПродажаТоваровТовары.Сумма) КАК Сумма,
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент КАК Контрагент
               |ИЗ
               |    Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
               |ГДЕ
               |    (ПродажаТоваровТовары.Валюта = &Валюта
               |            ИЛИ &ВалютаНеЗаполнена)
               |
               |СГРУППИРОВАТЬ ПО
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент";     
Запрос.УстановитьПараметр("Валюта", ЗначениеВалюты);
Запрос.УстановитьПараметр("ВалютаНеЗаполнена", Не ЗначениеЗаполнено(ЗначениеВалюты));
 
Результат = Запрос.Выполнить();
ТаблицаЗнч = Результат.Выгрузить();
ЭлементыФормы.ПолеВвода1.Значение = ТаблицаЗнч[0].Контрагент;
ЭлементыФормы.ТабличноеПоле1.Значение=  ТаблицаЗнч; 
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки(); 
// Вставить содержимое обработчика.
КонецПроцедуры
0
SPR1TE89
21 / 21 / 3
Регистрация: 22.04.2014
Сообщений: 112
29.04.2014, 09:23 13
Fenlou, ой забыл,
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Запрос = Новый Запрос;
ЗначениеВалюты = Справочники.Валюты.НайтиПоКоду("1");
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
               |    МАКСИМУМ(ПродажаТоваровТовары.Сумма) КАК Сумма,
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент КАК Контрагент
               |ИЗ
               |    Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
               |ГДЕ
               |    (ПродажаТоваровТовары.Валюта = &Валюта
               |            ИЛИ &ВалютаНеЗаполнена)
               |
               |СГРУППИРОВАТЬ ПО
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент";     
Запрос.УстановитьПараметр("Валюта", ЗначениеВалюты);
Если  ЗначениеВалюты <> Неопределено Тогда 
    запрос.УстановитьПараметр("ВалютаНеЗаполнена", Ложь);
Иначе
    запрос.УстановитьПараметр("ВалютаНеЗаполнена", Истина);
КонецЕсли;
 
Результат = Запрос.Выполнить();
ТаблицаЗнч = Результат.Выгрузить();
ЭлементыФормы.ПолеВвода1.Значение = ТаблицаЗнч[0].Контрагент;
ЭлементыФормы.ТабличноеПоле1.Значение=  ТаблицаЗнч; 
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
1
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
29.04.2014, 12:21  [ТС] 14
А можно не учитывать валюты, то есть просто у которого больше "итого"?

Добавлено через 48 минут
Кстати он не правильно выводит, он должен вывести контрагента с общиг итогом, а не наибольший из товаров данного контрагента.
0
SPR1TE89
21 / 21 / 3
Регистрация: 22.04.2014
Сообщений: 112
29.04.2014, 14:11 15
Fenlou, Можно но ты путаницу получишь вдруг где - то в документах сумма в долларах будет или в евро? Её же пересчитать надо.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
Запрос = Новый Запрос;
ЗначениеВалюты = Справочники.Валюты.НайтиПоКоду("1");
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
               |    МАКСИМУМ(ПродажаТоваровТовары.Сумма) КАК Сумма,
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент КАК Контрагент
               |ИЗ
               |    Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
               |ГДЕ
               |    (ПродажаТоваровТовары.Валюта = &Валюта
               |            ИЛИ &ВалютаНеЗаполнена)
               |
               |СГРУППИРОВАТЬ ПО
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент
               |ИТОГИ
               |    СУММА(Сумма),
               |    МАКСИМУМ(Контрагент)
               |ПО
               |    ОБЩИЕ";     
Запрос.УстановитьПараметр("Валюта", ЗначениеВалюты);
Если  ЗначениеВалюты <> Неопределено Тогда 
    запрос.УстановитьПараметр("ВалютаНеЗаполнена", Ложь);
Иначе
    запрос.УстановитьПараметр("ВалютаНеЗаполнена", Истина);
КонецЕсли;
 
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока  Выборка.Следующий() Цикл
    
    ОднаЗапись = Выборка.Контрагент;
    
КонецЦикла;
ЭлементыФормы.ПолеВвода1.Значение = ОднаЗапись;
1
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
29.04.2014, 14:23  [ТС] 16
Цитата Сообщение от SPR1TE89 Посмотреть сообщение
Запрос = Новый Запрос; ЗначениеВалюты = Справочники.Валюты.НайтиПоКоду("1"); Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 | МАКСИМУМ(ПродажаТоваровТовары.Сумма) КАК Сумма, | ПродажаТоваровТовары.Валюта, | ПродажаТоваровТовары.Ссылка.Контрагент КАК Контрагент |ИЗ | Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары |ГДЕ | (ПродажаТоваровТовары.Валюта = &Валюта | ИЛИ &ВалютаНеЗаполнена) | |СГРУППИРОВАТЬ ПО | ПродажаТоваровТовары.Валюта, | ПродажаТоваровТовары.Ссылка.Контрагент"; Запрос.УстановитьПараметр("Валюта", ЗначениеВалюты); Если ЗначениеВалюты <> Неопределено Тогда запрос.УстановитьПараметр("ВалютаНеЗаполнена", Ложь); Иначе запрос.УстановитьПараметр("ВалютаНеЗаполнена", Истина); КонецЕсли; Результат = Запрос.Выполнить(); ТаблицаЗнч = Результат.Выгрузить(); ЭлементыФормы.ПолеВвода1.Значение = ТаблицаЗнч[0].Контрагент; ЭлементыФормы.ТабличноеПоле1.Значение= ТаблицаЗнч; ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
Почему при изменение суммы, значение в ТабличноеПоле1 не изменяется?
0
SPR1TE89
21 / 21 / 3
Регистрация: 22.04.2014
Сообщений: 112
29.04.2014, 14:44 17
Fenlou, потому что у тебя процедура "При открытии" , если ты поменяешь сумму в документе и список документов откроешь по новой, то она(сумма) поменяется. А так конечно не будет, у тебя запрос на событии "при открытии" списка формируется.
0
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
29.04.2014, 15:16  [ТС] 18
Цитата Сообщение от SPR1TE89 Посмотреть сообщение
потому что у тебя процедура "При открытии" , если ты поменяешь сумму в документе и список документов откроешь по новой, то она(сумма) поменяется. А так конечно не будет, у тебя запрос на событии "при открытии" списка формируется.
Спасибо!
0
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
05.05.2014, 12:42  [ТС] 19
Все таки есть ошибка, например если другой контрагент заказал на большую сумму, то выводится только первый контрагент. Как исправить?
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Процедура ПриОткрытии()
Запрос = Новый Запрос;
ЗначениеВалюты = Справочники.Валюты.НайтиПоКоду("1");
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
               |    МАКСИМУМ(ПродажаТоваровТовары.Сумма) КАК Сумма,
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент КАК Контрагент
               |ИЗ
               |    Документ.ПродажаТоваров.Товары КАК ПродажаТоваровТовары
               |ГДЕ
               |    (ПродажаТоваровТовары.Валюта = &Валюта
               |            ИЛИ &ВалютаНеЗаполнена)
               |
               |СГРУППИРОВАТЬ ПО
               |    ПродажаТоваровТовары.Валюта,
               |    ПродажаТоваровТовары.Ссылка.Контрагент";     
Запрос.УстановитьПараметр("Валюта", ЗначениеВалюты);
Если  ЗначениеВалюты <> Неопределено Тогда 
    запрос.УстановитьПараметр("ВалютаНеЗаполнена", Ложь);
Иначе
    запрос.УстановитьПараметр("ВалютаНеЗаполнена", Истина);
КонецЕсли;
 
Результат = Запрос.Выполнить();
ТаблицаЗнч = Результат.Выгрузить();
ЭлементыФормы.ПолеВвода1.Значение = ТаблицаЗнч[0].Контрагент;
ЭлементыФормы.ТабличноеПоле1.Значение=  ТаблицаЗнч; 
ЭлементыФормы.ТабличноеПоле1.СоздатьКолонки();
 
// Вставить содержимое обработчика.
КонецПроцедуры
0
Fenlou
1 / 1 / 2
Регистрация: 11.03.2014
Сообщений: 480
06.05.2014, 16:42  [ТС] 20
Все получилось, ничего не надо!
0
06.05.2014, 16:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2014, 16:42

Как вызвать функцию формы "Обработки" из "Общего модуля"?
В Обработке реализована некая функция. Как мне вызвать ее из Общего модуля? Эта функция собирает...

Ошибка при выполнении проведения документа "Бухгалтерская Операция"
При проведении документа БухгалтерскаяОперация выдает: Поле объекта не обнаружено(Хозрасчетный)...

Заполнение табличной части документа "Инвентарных номеров"
Здравствуйте многоуважаемые форумчане. Обращаюсь к Вам за очередной помощью. После долгих исканий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru