Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
1

Определённая последовательность строк в ТП. Продолжение

28.09.2017, 13:50. Просмотров 761. Ответов 1
Метки нет (Все метки)

Приветствую всех, то как сделано тут - сказали переделать надо, так как сортировка при получении данных нагружает базу.

Посоветовали сделать так, при событии "ПриОкончанииРедактирования":
1) выбрать запросом из регистра по товару (в запросе присвоить номера по принципу из предыдущей темы).
2) перекинуть в таблицу значений и сделать сортировку по 2 полям.
3) установить номер поля в регистр по нужной записи.

Накидал тестовый код, номера, как надо присвою позже в запросе:

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
Процедура НоменклатураКонтрагентовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
 
 
Запрос = Новый Запрос;  //1)                                        
    Запрос.Текст = "ВЫБРАТЬ
                   |    НоменклатураКонтрагентов.Контрагент.Ссылка КАК Контрагент,
                   |    КОЛИЧЕСТВО(НоменклатураКонтрагентов1.Контрагент.Ссылка) КАК Номер
                   |ИЗ
                   |    РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
                   |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов1
                   |        ПО НоменклатураКонтрагентов.Контрагент >= НоменклатураКонтрагентов1.Контрагент
                   |            И НоменклатураКонтрагентов.Номенклатура = НоменклатураКонтрагентов1.Номенклатура
                   |ГДЕ
                   |    НоменклатураКонтрагентов.Номенклатура.Ссылка = &Номенклатура
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    НоменклатураКонтрагентов.Контрагент.Ссылка
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Номер,
                   |    Контрагент";                                        
    Запрос.УстановитьПараметр("Номенклатура", Ссылка);                                          
    ЗапросАртикул = Запрос.Выполнить().Выгрузить(); 
 
    Таб = Новый ТаблицаЗначений;   //2) 
    Таб.Колонки.Добавить("Контрагент");
    Таб.Колонки.Добавить("Номер");
 
Для каждого Стр из ЗапросАртикул Цикл
 
Строка = Таб.Добавить();
Строка.Контрагент = Стр.Контрагент;
Элемент.Колонки.НомерПоПорядку.ЭлементУправления.Значение = Строка.Контрагент; //3)
 
КонецЦикла;
 
КонецПроцедуры

3) Этим пунктом хочу контрагента вставить в строку, чтобы увидеть, что значения подставляются, но поле пустое выходит, хотя в отладчике значения показываются.

Можете посоветовать каким методом победить?
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2017, 13:50
Ответы с готовыми решениями:

Определённая последовательность строк в ТП
Здравствуйте, подскажите пожалуйста, как это можно сделать? Есть элемент...

В DataGridView загружается определённая строка и с ней появляются 5 пустых строк - как их удалить
Здравствуйте. Имеется: DataGridView на форме. Текстовый файл (6 строк). В...

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

Определённая ячейка таблицы
Здравствуйте. Возникла следующая проблема - предположим команда должна...

Получение групп, в которые входит определённая группа
Добрый день. Рассмотрим пример вложенности групп (Отделы продаж(Отдел продаж...

1
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
09.10.2017, 13:11  [ТС] 2
Лучший ответ Сообщение было отмечено GreenkA как решение

Решение

В общем допилил свой код без ТЗ, работает как надо и не нагружает базу.

1C
1
2
3
4
5
6
7
Процедура ПриОткрытии()
 
ЭлементыФормы.НоменклатураКонтрагентов.НастройкаПорядка.Контрагент.Доступность = Истина;
    ЭлементыФормы.НоменклатураКонтрагентов.НастройкаПорядка.НомерПоПорядку.Доступность = Истина;
    НоменклатураКонтрагентов.Порядок.Установить("НомерПоПорядку Возр, Контрагент Возр");
 
КонецПроцедуры // ПриОткрытии()
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
40
41
42
43
Процедура НоменклатураКонтрагентовПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
    
    Запрос = Новый Запрос;                                          
    Запрос.Текст = "ВЫБРАТЬ
                   |    НоменклатураКонтрагентов.Контрагент КАК Контрагент,
                   |    ВЫБОР
                   |        КОГДА НоменклатураКонтрагентов.Контрагент.Наименование = ""RA""
                   |            ТОГДА ""1""
                   |        КОГДА НоменклатураКонтрагентов.Контрагент.Наименование = ""BS""
                   |            ТОГДА ""2""
                   |        КОГДА НоменклатураКонтрагентов.Контрагент.Наименование = ""SP""
                   |            ТОГДА ""3""
                   |        КОГДА НоменклатураКонтрагентов.Контрагент.Наименование = ""WA""
                   |            ТОГДА ""4""
                   |        КОГДА НоменклатураКонтрагентов.Контрагент.Наименование = ""VIPA""
                   |            ТОГДА ""5""
                   |        КОГДА НоменклатураКонтрагентов.Контрагент.Наименование = ""DH""
                   |            ТОГДА ""6""
                   |        КОГДА НоменклатураКонтрагентов.Контрагент.Наименование = ""DE""
                   |            ТОГДА ""7""
                   |        ИНАЧЕ ""8""
                   |    КОНЕЦ КАК Номер
                   |ИЗ
                   |    РегистрСведений.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов
                   |ГДЕ
                   |    НоменклатураКонтрагентов.Номенклатура.Ссылка = &Номенклатура
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Номер,
                   |    Контрагент";                                        
    Запрос.УстановитьПараметр("Номенклатура", Ссылка);                                                                                          
    Результат = Запрос.Выполнить(); 
    Выборка = Результат.Выбрать();  
        
    Пока Выборка.Следующий() Цикл
        Запись = РегистрыСведений.НоменклатураКонтрагентов.СоздатьМенеджерЗаписи();
        Запись.Номенклатура = Элемент.ТекущаяСтрока.Номенклатура;
        Запись.Контрагент = Выборка.Контрагент;
        Запись.НомерПоПорядку = Выборка.Номер;
        Запись.Записать(Истина);
    КонецЦикла;
 
КонецПроцедуры
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2017, 13:11

Выполнить действие , если нажата определённая клавиша
Как можно сделать так, что бы при нажатии на клавишу , определённую, в...

Определённая вкладка Tpagecontrol при создании формы
Всем привет. Мне нужно, чтобы при создании формы открывалась первая вкладка. Я...

Как в экселе узнать открыта ли определённая книга?
Подскажите как в экселе узнать открыта ли определённая книга? Private Sub...


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

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

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