Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0
Добрый день или другого времени суток.
УНФ для Украины, редакция 1.3 Управляемые формы.
Возникла необходимость сделать рабочее место технолога. Что бы было видно какой товар обладает спецификацией и его содержимое. Для этого создал обработку, навесил на три табличные части и динамический список(номенклатура).
Создал событие на динамическом списке "ПриАктивизацииЯчейки".
С помощью нее делаю выборку ссылки текущего выбранного значения в справочнике. И передаю значение в процедуру на сервер, где вытаскиваю саму спецификацию.
&НаСервере Процедура ТехнологРасчет(СТЧИ) Запрос = Новый Запрос;
Но как ее загрузить в таблицу "СпецификацияПродукции" никак не могу разобраться. Нашел множество подобных примеров, выкачал некоторые обработки с похожим принципом, но ниче не выходит.
Отвечу сразу на так любимый некоторыми совет : "М.Г.Радченко" читаю.
Группа: Пользователи
Сообщений: 10
Спасибо сказали: 0 раз
Рейтинг: 0
Цитата(sava1 @ 01.10.14, 13:13)
результат запроса в массив, вернуть клиенту, заполнить ТП
Вот на этом пункте и застрял. Не сумел нормально вернуть клиенту и заполнить ТЧ. При возвращении на клиента ругается, что обращаюсь к процедуре как к функции. Другие варианты просто писали, что превышен временный интервал.
Названия выводимые в запросе и самой ТЧ совпадают.
&НаСервере Функция ЗаполнитьМагазины() Массив = Новый Массив; Структура = Новый Структура("НомерМагазина","НомерМагазина","НаименованиеВСАП","ТорговаяПлощадь","ДатаОткрытия","Комп","ТипМагазина","Регион"); й = 0; Для Каждого Стр Из Т Цикл Структура.Вставить("ГУИД",Стр.ГУИД); Структура.Вставить("НомерМагазина",Стр.НомерМагазина); Структура.Вставить("НаименованиеВСАП",Стр.НаименованиеВСАП); Структура.Вставить("ТорговаяПлощадь",Стр.ТорговаяПлощадь); Структура.Вставить("ДатаОткрытия",Стр.ДатаОткрытия); Структура.Вставить("Комп",Стр.Комп); Структура.Вставить("ТипМагазина",Стр.ТипМагазина); Структура.Вставить("Регион",Стр.Регион); Массив.Вставить(й,Структура); й = й +1; КонецЦикла; Возврат Массив; КонецФункции
&НаКлиенте Процедура ПрочитатьДанные(Команда) Магазины.Очистить(); Массив = ЗаполнитьМагазины(); й=0; Для Каждого Стр Из Массив Цикл Структура = Массив.Получить(й); й=й+1; НС = Магазины.Добавить(); НС.ГУИД = Структура.ГУИД; НС.НомерМагазина = Структура.НомерМагазина; НС.НаименованиеВСАП = Структура.НаименованиеВСАП; НС.ТорговаяПлощадь = Структура.ТорговаяПлощадь; НС.ДатаОткрытия = Структура.ДатаОткрытия; НС.Комп = Структура.Комп; НС.ТипМагазина = Структура.ТипМагазина; НС.Регион = Структура.Регион; КонецЦикла; КонецПроцедуры
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(Vofka @ 02.10.14, 10:11)
У меня, кстати, однажды был не очень приятный нежданчик, связанный с игнорированием этого примечания.
Использовать их можно, только осторожно У меня есть одно решеннице, где использую такой вариант:
Процедура ПриАктивизацииСтроки() Если ВыполнятьПриАктивизацииСтроки Тогда // это реквизит формы, который при открытии ложь, а при нужных действиях задается Истина // чего-то делаем КонецЕсли; КонецПроцедуры
Личные бесплатные консультации не даю, для этого есть форум!
Для Каждого Стр Из Массив Цикл Структура = Массив; НС = Элементы.Полуфабрикаты.Добавить(); НС.Наименование2 = Структура.Наименование2; НС.характеристика = Структура.характеристика; КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере Функция ТехнологРасчет(СТЧИ) Запрос = Новый Запрос;
Запрос.Текст = ("ВЫБРАТЬ | Номенклатура.Спецификация КАК Наименование2, | Номенклатура.Спецификация.ХарактеристикаПродукции КАК характеристика |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &Номенклатура" ); Запрос.УстановитьПараметр("Номенклатура", СТЧИ); Результат = Запрос.ВыполнитьПакет();
Возврат Результат;
КонецФункции
Теперь уходит в цикл и сидит там - пока не прекращаю отладку.
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2536 раз
Рейтинг: 0
Цитата(EvgenM @ 06.10.14, 13:58)
Результат = Запрос.ВыполнитьПакет();
У Вас тут Массив из результатов выполнения запросов. ВыполнитьПакет - это если в запросе есть пакеты. Один запрос это Запрос.Выполнить(). Массив из результата можно получить только одномерный, если хотите получить два, то надо что-то типа:
ТЗ = Запрос.Выполнить().Выгрузить(); Массив1 = ТЗ.ВыгрузитьКолонку("Наименование2"); Массив2 = ТЗ,ВыгрузитьКолонку("характеристика"); Результат = Новый Массив; Результат.Добавить(Массив1); Результат.Добавить(Массив2);
а вместо
Цитата
Массив= ТехнологРасчет(СТЧ);
Для Каждого Стр Из Массив Цикл Структура = Массив; НС = Элементы.Полуфабрикаты.Добавить(); НС.Наименование2 = Структура.Наименование2; НС.характеристика = Структура.характеристика; КонецЦикла;
Массив= ТехнологРасчет(СТЧ); КоличествоСтрок = Массив[0].Количество()-1; Для Индекс = 0 По КоличетсовСтрок Цикл НС = Элементы.Полуфабрикаты.Добавить(); НС.Наименование2 = Массив[0][Индекс]; НС.характеристика = Массив[1][Индекс]; КонецЦикла;
Личные бесплатные консультации не даю, для этого есть форум!
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!