Добрый день или другого времени суток.
УНФ для Украины, редакция 1.3
Управляемые формы.
Возникла необходимость сделать рабочее место технолога.
Что бы было видно какой товар обладает спецификацией и его содержимое.
Для этого создал обработку, навесил на три табличные части и динамический список(номенклатура).
Создал событие на динамическом списке "ПриАктивизацииЯчейки".
&НаКлиенте
Процедура НоменклатураПриАктивизацииЯчейки(Элемент)
Сообщить("111");
СТЧ = Элементы.Номенклатура.ТекущаяСтрока;
СТЧ2 = Элементы.Номенклатура.ТекущиеДанные;
Если СТЧ2.Артикул <> "" тогда
ТехнологРасчет(СТЧ);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ТехнологРасчет(СТЧИ)
Запрос = Новый Запрос;
Запрос.Текст = ("ВЫБРАТЬ
| Номенклатура.Спецификация как Наименование2,
| Номенклатура.Спецификация.ХарактеристикаПродукции,
| Номенклатура.Спецификация.Состав.(
| Ссылка,
| НомерСтроки,
| ТипСтрокиСостава,
| Номенклатура,
| Характеристика,
| ЕдиницаИзмерения,
| Спецификация,
| Количество,
| КоличествоПродукции,
| ДоляСтоимости
| ) КАК Спецификация1
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка = &Номенклатура"
);
Запрос.УстановитьПараметр("Номенклатура", СТЧИ);
Результат = Запрос.ВыполнитьПакет();
//
КонецПроцедуры // ТехнологРасчет()
! | Правила,п. 5,11 |
logist, извиняюсь, переделал.
! | Правила, 11! В следующий раз картинки будут удалены. |
результат запроса в массив, вернуть клиенту, заполнить ТП
Код покажите
В типовых в общем модуле есть функция
ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт
ТаблицаЗначенийВМассив(ТаблицаЗначений) Экспорт
примера:
&НаСервере
Функция ЗаполнитьМагазины()
Массив = Новый Массив;
Структура = Новый Структура("НомерМагазина","НомерМагазина","НаименованиеВСАП","ТорговаяПлощадь","ДатаОткрытия","Комп","ТипМагазина","Регион");
й = 0;
Для Каждого Стр Из Т Цикл
Структура.Вставить("ГУИД",Стр.ГУИД);
Структура.Вставить("НомерМагазина",Стр.НомерМагазина);
Структура.Вставить("НаименованиеВСАП",Стр.НаименованиеВСАП);
Структура.Вставить("ТорговаяПлощадь",Стр.ТорговаяПлощадь);
Структура.Вставить("ДатаОткрытия",Стр.ДатаОткрытия);
Структура.Вставить("Комп",Стр.Комп);
Структура.Вставить("ТипМагазина",Стр.ТипМагазина);
Структура.Вставить("Регион",Стр.Регион);
Массив.Вставить(й,Структура);
й = й +1;
КонецЦикла;
Возврат Массив;
КонецФункции
&НаКлиенте
Процедура ПрочитатьДанные(Команда)
Магазины.Очистить();
Массив = ЗаполнитьМагазины();
й=0;
Для Каждого Стр Из Массив Цикл
Структура = Массив.Получить(й);
й=й+1;
НС = Магазины.Добавить();
НС.ГУИД = Структура.ГУИД;
НС.НомерМагазина = Структура.НомерМагазина;
НС.НаименованиеВСАП = Структура.НаименованиеВСАП;
НС.ТорговаяПлощадь = Структура.ТорговаяПлощадь;
НС.ДатаОткрытия = Структура.ДатаОткрытия;
НС.Комп = Структура.Комп;
НС.ТипМагазина = Структура.ТипМагазина;
НС.Регион = Структура.Регион;
КонецЦикла;
КонецПроцедуры
свой код покажите
Если код остался с 1 поста, то - на сервере выполняется Функция, которая возвращает массив Клиенту
ИМХО: использование ПриАктивизацииСтроки() - слишком нагло по отношению к БД - лучше Выбор() или получать все СПецификации и управлять отбором.
Обратите внимание, что пишут в СП по поводу ПриАктивизацииСтроки():
Процедура ПриАктивизацииСтроки()
Если ВыполнятьПриАктивизацииСтроки Тогда // это реквизит формы, который при открытии ложь, а при нужных действиях задается Истина
// чего-то делаем
КонецЕсли;
КонецПроцедуры
Надеялся таки разобраться, но чую основательно заглох.
Вот весь код используемый в модуле формы.
Элементы.Номенклатура - динамический список.
Элементы.Полуфабрикаты - табличная часть на форме.
&НаКлиенте
Процедура НоменклатураПриАктивизацииСтроки(Элемент)
ОбработкаСписка();
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаСписка()
СТЧ = Элементы.Номенклатура.ТекущаяСтрока;
СТЧ2 = Элементы.Номенклатура.ТекущиеДанные;
Если СТЧ2.Артикул <> "" тогда
Массив= ТехнологРасчет(СТЧ);
Для Каждого Стр Из Массив Цикл
Структура = Массив;
НС = Элементы.Полуфабрикаты.Добавить();
НС.Наименование2 = Структура.Наименование2;
НС.характеристика = Структура.характеристика;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ТехнологРасчет(СТЧИ)
Запрос = Новый Запрос;
Запрос.Текст = ("ВЫБРАТЬ
| Номенклатура.Спецификация КАК Наименование2,
| Номенклатура.Спецификация.ХарактеристикаПродукции КАК характеристика
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка = &Номенклатура"
);
Запрос.УстановитьПараметр("Номенклатура", СТЧИ);
Результат = Запрос.ВыполнитьПакет();
Возврат Результат;
КонецФункции
ТЗ = Запрос.Выполнить().Выгрузить();
Массив1 = ТЗ.ВыгрузитьКолонку("Наименование2");
Массив2 = ТЗ,ВыгрузитьКолонку("характеристика");
Результат = Новый Массив;
Результат.Добавить(Массив1);
Результат.Добавить(Массив2);
Массив= ТехнологРасчет(СТЧ);
КоличествоСтрок = Массив[0].Количество()-1;
Для Индекс = 0 По КоличетсовСтрок Цикл
НС = Элементы.Полуфабрикаты.Добавить();
НС.Наименование2 = Массив[0][Индекс];
НС.характеристика = Массив[1][Индекс];
КонецЦикла;
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua