Здравствуйте, уважаемые программисты.
Есть база на обычных формах. Появилась необходимость написать обработку, которая будет учитывать местный шрифт (Азербайджанский), поэтому и это пришлось дописывать...
Поиск работает практически отлично =)
Единственная проблема в том, что он не выгружает данные в табличное поле. Точнее выгружает только 1 строку... Прошу помочь.
Есть база на обычных формах. Появилась необходимость написать обработку, которая будет учитывать местный шрифт (Азербайджанский), поэтому и это пришлось дописывать...
Поиск работает практически отлично =)
Единственная проблема в том, что он не выгружает данные в табличное поле. Точнее выгружает только 1 строку... Прошу помочь.
Процедура Кнопка1Нажатие(Элемент)
Обработка();
Запрос3 = Новый Запрос;
Запрос3.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Ссылка КАК ссылка,
| Номенклатура.Родитель как группа
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса3 = Запрос3.Выполнить();
ВыборкаДетальныеЗаписи3 = РезультатЗапроса3.Выбрать();
Пока ВыборкаДетальныеЗаписи3.Следующий() цикл
КонецЦикла;
чискол = ВыборкаДетальныеЗаписи3.Количество();
чискол = число(чискол);
чискол = чискол;
КоличествоОбходов = чискол;
Предупреждение("Формируется список. Ждите...", 1.5);
Сообщить ("Формируется список...");
Для Инд = 0 По КоличествоОбходов Цикл Индикатор = Инд*100/КоличествоОбходов;
КонецЦикла;
Предупреждение("Список сформирован!", 1.5);
Сообщить ("Список сформирован...");
КонецПроцедуры
Процедура обработка() экспорт
ОчиститьСообщения();
Предупреждение("Идёт поиск. Ждите...", 1.5);
Сообщить ("Идёт поиск. Ждите...");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка как с,
| Номенклатура.Родитель как р,
| Номенклатура.Наименование как н
|ПОМЕСТИТЬ тт
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| (Номенклатура.Наименование ПОДОБНО &Наименование
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеаз
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазт
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазк
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазкт)
|
|ИНДЕКСИРОВАТЬ ПО
| Н,
| Р,
| С
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| тт.С как Ссылка,
| тт.р как Группа,
| тт.Н как Наименование
|ИЗ
| тт КАК тт";
Запрос2 = Новый Запрос;
Запрос2.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Родитель КАК Группа
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса2 = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();
Пока ВыборкаДетальныеЗаписи2.Следующий() цикл
имяном = ВыборкаДетальныеЗаписи2.наименование;
имяном = строка(имяном);
//имяном = СтрЗаменить(имяном, "0", "");
//имяном = СтрЗаменить(имяном, "1", "");
//имяном = СтрЗаменить(имяном, "2", "");
//имяном = СтрЗаменить(имяном, "3", "");
//имяном = СтрЗаменить(имяном, "4", "");
//имяном = СтрЗаменить(имяном, "5", "");
//имяном = СтрЗаменить(имяном, "6", "");
//имяном = СтрЗаменить(имяном, "7", "");
//имяном = СтрЗаменить(имяном, "8", "");
//имяном = СтрЗаменить(имяном, "9", "");
Аз = имяном;
Аз = СтрЗаменить(Аз, "e", "ə");
Аз = СтрЗаменить(Аз, "E", "Ə");
Аз = СтрЗаменить(Аз, "0", "");
Аз = СтрЗаменить(Аз, "1", "");
Аз = СтрЗаменить(Аз, "2", "");
Аз = СтрЗаменить(Аз, "3", "");
Аз = СтрЗаменить(Аз, "4", "");
Аз = СтрЗаменить(Аз, "5", "");
Аз = СтрЗаменить(Аз, "6", "");
Аз = СтрЗаменить(Аз, "7", "");
Аз = СтрЗаменить(Аз, "8", "");
Аз = СтрЗаменить(Аз, "9", "");
АзТ = имяном;
АзТ = СтрЗаменить(АзТ, "a", "ə");
АзТ = СтрЗаменить(АзТ, "A", "Ə");
АзТ = СтрЗаменить(АзТ, "0", "");
АзТ = СтрЗаменить(АзТ, "1", "");
АзТ = СтрЗаменить(АзТ, "2", "");
АзТ = СтрЗаменить(АзТ, "3", "");
АзТ = СтрЗаменить(АзТ, "4", "");
АзТ = СтрЗаменить(АзТ, "5", "");
АзТ = СтрЗаменить(АзТ, "6", "");
АзТ = СтрЗаменить(АзТ, "7", "");
АзТ = СтрЗаменить(АзТ, "8", "");
АзТ = СтрЗаменить(АзТ, "9", "");
АзК = имяном;
АзК = СтрЗаменить(АзК, "ə", "a");
АзК = СтрЗаменить(АзК, "Ə", "A");
АзК = СтрЗаменить(АзК, "0", "");
АзК = СтрЗаменить(АзК, "1", "");
АзК = СтрЗаменить(АзК, "2", "");
АзК = СтрЗаменить(АзК, "3", "");
АзК = СтрЗаменить(АзК, "4", "");
АзК = СтрЗаменить(АзК, "5", "");
АзК = СтрЗаменить(АзК, "6", "");
АзК = СтрЗаменить(АзК, "7", "");
АзК = СтрЗаменить(АзК, "8", "");
АзК = СтрЗаменить(АзК, "9", "");
АзКТ = имяном;
АзКТ = СтрЗаменить(АзКТ, "ə", "e");
АзКТ = СтрЗаменить(АзКТ, "Ə", "E");
АзКТ = СтрЗаменить(АзКТ, "0", "");
АзКТ = СтрЗаменить(АзКТ, "1", "");
АзКТ = СтрЗаменить(АзКТ, "2", "");
АзКТ = СтрЗаменить(АзКТ, "3", "");
АзКТ = СтрЗаменить(АзКТ, "4", "");
АзКТ = СтрЗаменить(АзКТ, "5", "");
АзКТ = СтрЗаменить(АзКТ, "6", "");
АзКТ = СтрЗаменить(АзКТ, "7", "");
АзКТ = СтрЗаменить(АзКТ, "8", "");
АзКТ = СтрЗаменить(АзКТ, "9", "");
Запрос.УстановитьПараметр("наименование", имяном);
Запрос.УстановитьПараметр("наименованиеАЗ", Аз);
Запрос.УстановитьПараметр("наименованиеАЗТ", АзТ);
Запрос.УстановитьПараметр("наименованиеАЗК", АзК);
Запрос.УстановитьПараметр("наименованиеАЗКТ", АзКТ);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТЗ.Значение = Результат;
Пока ВыборкаДетальныеЗаписи.Следующий() цикл
Для каждого строка из ЭлементыФормы.ТЗ.Значение Цикл
ЭлементыФормы.ТЗ.СоздатьКолонки();
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Всякие полезности
- Обработка для просмотра таблиц внешних источников данных (Обычное приложение)
- Программная работа и компоненты СКД
- Консоль кода с поддержкой объявления процедур и функций, с дополнительными функциями отслеживания и вывода значений
- Приемы работы с СКД: выгрузка данных справочников и документов в линейном виде в табличный документ
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
Код сейчас такой, но в таблицу выгружает всё равно только 1 номенклатуру.
Процедура Кнопка1Нажатие(Элемент)
Обработка();
Предупреждение("Формируется список. Ждите...", 1.5);
Сообщить ("Формируется список...");
Предупреждение("Список сформирован!", 1.5);
Сообщить ("Список сформирован...");
КонецПроцедуры
Процедура обработка() экспорт
ОчиститьСообщения();
Предупреждение("Идёт поиск. Ждите...", 1.5);
Сообщить ("Идёт поиск. Ждите...");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка как с,
| Номенклатура.Родитель как р,
| Номенклатура.Наименование как н
|ПОМЕСТИТЬ тт
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| (Номенклатура.Наименование ПОДОБНО &Наименование
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеаз
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазт
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазк
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазкт)
|
|ИНДЕКСИРОВАТЬ ПО
| Н,
| Р,
| С
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| тт.С как Ссылка,
| тт.р как Группа,
| тт.Н как Наименование
|ИЗ
| тт КАК тт";
Запрос2 = Новый Запрос;
Запрос2.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Родитель КАК Группа
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса2 = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();
Пока ВыборкаДетальныеЗаписи2.Следующий() цикл
имяном = ВыборкаДетальныеЗаписи2.наименование;
имяном = строка(имяном);
//имяном = СтрЗаменить(имяном, "0", "");
//имяном = СтрЗаменить(имяном, "1", "");
//имяном = СтрЗаменить(имяном, "2", "");
//имяном = СтрЗаменить(имяном, "3", "");
//имяном = СтрЗаменить(имяном, "4", "");
//имяном = СтрЗаменить(имяном, "5", "");
//имяном = СтрЗаменить(имяном, "6", "");
//имяном = СтрЗаменить(имяном, "7", "");
//имяном = СтрЗаменить(имяном, "8", "");
//имяном = СтрЗаменить(имяном, "9", "");
Аз = имяном;
Аз = СтрЗаменить(Аз, "e", "ə");
Аз = СтрЗаменить(Аз, "E", "Ə");
Аз = СтрЗаменить(Аз, "0", "");
Аз = СтрЗаменить(Аз, "1", "");
Аз = СтрЗаменить(Аз, "2", "");
Аз = СтрЗаменить(Аз, "3", "");
Аз = СтрЗаменить(Аз, "4", "");
Аз = СтрЗаменить(Аз, "5", "");
Аз = СтрЗаменить(Аз, "6", "");
Аз = СтрЗаменить(Аз, "7", "");
Аз = СтрЗаменить(Аз, "8", "");
Аз = СтрЗаменить(Аз, "9", "");
АзТ = имяном;
АзТ = СтрЗаменить(АзТ, "a", "ə");
АзТ = СтрЗаменить(АзТ, "A", "Ə");
АзТ = СтрЗаменить(АзТ, "0", "");
АзТ = СтрЗаменить(АзТ, "1", "");
АзТ = СтрЗаменить(АзТ, "2", "");
АзТ = СтрЗаменить(АзТ, "3", "");
АзТ = СтрЗаменить(АзТ, "4", "");
АзТ = СтрЗаменить(АзТ, "5", "");
АзТ = СтрЗаменить(АзТ, "6", "");
АзТ = СтрЗаменить(АзТ, "7", "");
АзТ = СтрЗаменить(АзТ, "8", "");
АзТ = СтрЗаменить(АзТ, "9", "");
АзК = имяном;
АзК = СтрЗаменить(АзК, "ə", "a");
АзК = СтрЗаменить(АзК, "Ə", "A");
АзК = СтрЗаменить(АзК, "0", "");
АзК = СтрЗаменить(АзК, "1", "");
АзК = СтрЗаменить(АзК, "2", "");
АзК = СтрЗаменить(АзК, "3", "");
АзК = СтрЗаменить(АзК, "4", "");
АзК = СтрЗаменить(АзК, "5", "");
АзК = СтрЗаменить(АзК, "6", "");
АзК = СтрЗаменить(АзК, "7", "");
АзК = СтрЗаменить(АзК, "8", "");
АзК = СтрЗаменить(АзК, "9", "");
АзКТ = имяном;
АзКТ = СтрЗаменить(АзКТ, "ə", "e");
АзКТ = СтрЗаменить(АзКТ, "Ə", "e");
АзКТ = СтрЗаменить(АзКТ, "0", "");
АзКТ = СтрЗаменить(АзКТ, "1", "");
АзКТ = СтрЗаменить(АзКТ, "2", "");
АзКТ = СтрЗаменить(АзКТ, "3", "");
АзКТ = СтрЗаменить(АзКТ, "4", "");
АзКТ = СтрЗаменить(АзКТ, "5", "");
АзКТ = СтрЗаменить(АзКТ, "6", "");
АзКТ = СтрЗаменить(АзКТ, "7", "");
АзКТ = СтрЗаменить(АзКТ, "8", "");
АзКТ = СтрЗаменить(АзКТ, "9", "");
Запрос.УстановитьПараметр("наименование", имяном);
Запрос.УстановитьПараметр("наименованиеАЗ", Аз);
Запрос.УстановитьПараметр("наименованиеАЗТ", АзТ);
Запрос.УстановитьПараметр("наименованиеАЗК", АзК);
Запрос.УстановитьПараметр("наименованиеАЗКТ", АзКТ);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() цикл
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТЗ.Значение = Результат;
ЭлементыФормы.ТЗ.СоздатьКолонки();
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьКод сейчас такой, но в таблицу выгружает всё равно только 1 номенклатуру.
(7)
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТЗ.Значение = Результат;
Вы ее тупо перезаписываете. И итоговый результат это работа последнего прохода цикла.
И избавляйте от запросов цикле.
Получили первый результат запроса. обошли его весь с нужной заменой и выполнили итоговый запрос с передачей всех параметров. А не как сейчас, для каждой итерации цикла.
Код сейчас такой, но в таблицу выгружает всё равно только 1 номенклатуру.
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТЗ.Значение = Результат;
Вы ее тупо перезаписываете. И итоговый результат это работа последнего прохода цикла.
И избавляйте от запросов цикле.
Получили первый результат запроса. обошли его весь с нужной заменой и выполнили итоговый запрос с передачей всех параметров. А не как сейчас, для каждой итерации цикла.
(4)Так я и говорю. Надо добавлять.
Как то так. Пишу без проверки, прям здесь
Ну после всех циклов
Как то так. Пишу без проверки, прям здесь
Если ЭлементыФормы.ТЗ.Значение.Количество() = 0 Тогда
ЭлементыФормы.ТЗ.Значение = Результат;
Иначе
Для Каждого ТекСтр Из Результат Цикл
НоваяСтрока = ЭлементыФормы.ТЗ.Значение.Добавить();
ЗаполнитьЗначениеСвойств(НоваяСтрока,ТекСтр);
КонецЦикла;
КонецЕсли;
Ну после всех циклов
ЭлементыФормы.ТЗ.СоздатьКолонки();
(3)
Код сейчас такой, но в таблицу выгружает всё равно только 1 номенклатуру.
Процедура Кнопка1Нажатие(Элемент)
Обработка();
Предупреждение("Формируется список. Ждите...", 1.5);
Сообщить ("Формируется список...");
Предупреждение("Список сформирован!", 1.5);
Сообщить ("Список сформирован...");
КонецПроцедуры
Процедура обработка() экспорт
ОчиститьСообщения();
Предупреждение("Идёт поиск. Ждите...", 1.5);
Сообщить ("Идёт поиск. Ждите...");
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка как с,
| Номенклатура.Родитель как р,
| Номенклатура.Наименование как н
|ПОМЕСТИТЬ тт
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| (Номенклатура.Наименование ПОДОБНО &Наименование
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеаз
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазт
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазк
| ИЛИ Номенклатура.Наименование ПОДОБНО &Наименованиеазкт)
|
|ИНДЕКСИРОВАТЬ ПО
| Н,
| Р,
| С
|;
|
|//////////////////////////////////////////////////////////// ////////////////////
|ВЫБРАТЬ
| тт.С как Ссылка,
| тт.р как Группа,
| тт.Н как Наименование
|ИЗ
| тт КАК тт";
Запрос2 = Новый Запрос;
Запрос2.Текст =
"ВЫБРАТЬ
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Родитель КАК Группа
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса2 = Запрос2.Выполнить();
ВыборкаДетальныеЗаписи2 = РезультатЗапроса2.Выбрать();
Пока ВыборкаДетальныеЗаписи2.Следующий() цикл
имяном = ВыборкаДетальныеЗаписи2.наименование;
имяном = строка(имяном);
//имяном = СтрЗаменить(имяном, "0", "");
//имяном = СтрЗаменить(имяном, "1", "");
//имяном = СтрЗаменить(имяном, "2", "");
//имяном = СтрЗаменить(имяном, "3", "");
//имяном = СтрЗаменить(имяном, "4", "");
//имяном = СтрЗаменить(имяном, "5", "");
//имяном = СтрЗаменить(имяном, "6", "");
//имяном = СтрЗаменить(имяном, "7", "");
//имяном = СтрЗаменить(имяном, "8", "");
//имяном = СтрЗаменить(имяном, "9", "");
Аз = имяном;
Аз = СтрЗаменить(Аз, "e", "ə");
Аз = СтрЗаменить(Аз, "E", "Ə");
Аз = СтрЗаменить(Аз, "0", "");
Аз = СтрЗаменить(Аз, "1", "");
Аз = СтрЗаменить(Аз, "2", "");
Аз = СтрЗаменить(Аз, "3", "");
Аз = СтрЗаменить(Аз, "4", "");
Аз = СтрЗаменить(Аз, "5", "");
Аз = СтрЗаменить(Аз, "6", "");
Аз = СтрЗаменить(Аз, "7", "");
Аз = СтрЗаменить(Аз, "8", "");
Аз = СтрЗаменить(Аз, "9", "");
АзТ = имяном;
АзТ = СтрЗаменить(АзТ, "a", "ə");
АзТ = СтрЗаменить(АзТ, "A", "Ə");
АзТ = СтрЗаменить(АзТ, "0", "");
АзТ = СтрЗаменить(АзТ, "1", "");
АзТ = СтрЗаменить(АзТ, "2", "");
АзТ = СтрЗаменить(АзТ, "3", "");
АзТ = СтрЗаменить(АзТ, "4", "");
АзТ = СтрЗаменить(АзТ, "5", "");
АзТ = СтрЗаменить(АзТ, "6", "");
АзТ = СтрЗаменить(АзТ, "7", "");
АзТ = СтрЗаменить(АзТ, "8", "");
АзТ = СтрЗаменить(АзТ, "9", "");
АзК = имяном;
АзК = СтрЗаменить(АзК, "ə", "a");
АзК = СтрЗаменить(АзК, "Ə", "A");
АзК = СтрЗаменить(АзК, "0", "");
АзК = СтрЗаменить(АзК, "1", "");
АзК = СтрЗаменить(АзК, "2", "");
АзК = СтрЗаменить(АзК, "3", "");
АзК = СтрЗаменить(АзК, "4", "");
АзК = СтрЗаменить(АзК, "5", "");
АзК = СтрЗаменить(АзК, "6", "");
АзК = СтрЗаменить(АзК, "7", "");
АзК = СтрЗаменить(АзК, "8", "");
АзК = СтрЗаменить(АзК, "9", "");
АзКТ = имяном;
АзКТ = СтрЗаменить(АзКТ, "ə", "e");
АзКТ = СтрЗаменить(АзКТ, "Ə", "e");
АзКТ = СтрЗаменить(АзКТ, "0", "");
АзКТ = СтрЗаменить(АзКТ, "1", "");
АзКТ = СтрЗаменить(АзКТ, "2", "");
АзКТ = СтрЗаменить(АзКТ, "3", "");
АзКТ = СтрЗаменить(АзКТ, "4", "");
АзКТ = СтрЗаменить(АзКТ, "5", "");
АзКТ = СтрЗаменить(АзКТ, "6", "");
АзКТ = СтрЗаменить(АзКТ, "7", "");
АзКТ = СтрЗаменить(АзКТ, "8", "");
АзКТ = СтрЗаменить(АзКТ, "9", "");
Запрос.УстановитьПараметр("наименование", имяном);
Запрос.УстановитьПараметр("наименованиеАЗ", Аз);
Запрос.УстановитьПараметр("наименованиеАЗТ", АзТ);
Запрос.УстановитьПараметр("наименованиеАЗК", АзК);
Запрос.УстановитьПараметр("наименованиеАЗКТ", АзКТ);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() цикл
Результат = Запрос.Выполнить().Выгрузить();
ЭлементыФормы.ТЗ.Значение = Результат;
ЭлементыФормы.ТЗ.СоздатьКолонки();
КонецЦикла;
КонецЦикла;
КонецПроцедуры
ПоказатьКод сейчас такой, но в таблицу выгружает всё равно только 1 номенклатуру.
(6) Опять не то. В цикле проходит выборку, формирует наименования, выгружает одну номенклатуру в ТЗ, затирая то, что было выгружено на предыдущем проходе. Надо сформировать ТЗ с наименованиями, передать ее параметром в запрос и с ней соединять номенклатуру по ПОДОБНО.
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() цикл
Результат = Запрос.Выполнить().Выгрузить();
ПоказатьНужно, наверное, к таблице в цикле добавлять ДетальныеЗаписи, а не Результат выгружать, потому и берет одну (последнюю) номенклатуру...
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот