Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
18 апр 2024, 17:10

Снова "Структура данных". Помогите, не могу сообразить

Автор JohnDoe144, 12 мая 2016, 12:34

0 Пользователей и 1 гость просматривают эту тему.

JohnDoe144

Спасибо большое, буду пробовать с формированием РС. Я, правда, с ними плохо знаком и использовал периодический РС разве что для курсов валют...

Однако, так и не понял, каким образом сделать выбор списка значений для элемента ТЧ (в запросах выше). :(

Rasty

у вас же открывается форма выбора, а в строке у вас заполнены все нужные значения для отбора, в событие колонки началавыбора пишите код по открытию нужной вам формы с заполнением отбора по нужным вам значениям
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

JohnDoe144

Нет, не получается.

1. На основной форме "Номенклатура" пытаюсь сформировать Список Выбора для реквизита "Торговая марка", который зависит от выбранного Производителя (Поставщика). Список выбора формируется, но значение не сохраняется. Не понимаю, почему. Подскажите, пожалуйста, где ошибка? (См. ниже)

Код (Значение реквизита "ТорговаяМарка" - СсылкаСправочникТорговыеМарки).

&НаКлиенте
Процедура ТорговаяМаркаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   ФормированиеСпискаВыбораТорговыхМарок(Объект.Поставщик);
КонецПроцедуры

&НаСервере
Процедура ФормированиеСпискаВыбораТорговыхМарок(Поставщик)
   Элементы.ТорговаяМарка.СписокВыбора.Очистить();
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   ПоставщикиТорговыеМаркиИБренды.ТорговаяМаркаНазвание КАК ТорговаяМарка,
                  |   Поставщики.Ссылка,
                  |   ПоставщикиТорговыеМаркиИБренды.ТорговаяМаркаНазвание.Владелец КАК Владелец
                  |ИЗ
                  |   Справочник.Поставщики.ТорговыеМаркиИБренды КАК ПоставщикиТорговыеМаркиИБренды
                  |      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Поставщики КАК Поставщики
                  |      ПО ПоставщикиТорговыеМаркиИБренды.Ссылка = Поставщики.Ссылка
                  |ГДЕ
                  |   Поставщики.Ссылка = &Ссылка";
   Запрос.УстановитьПараметр("Ссылка", Поставщик);   
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
      Элементы.ТорговаяМарка.СписокВыбора.Добавить(Выборка.ТорговаяМарка);
   КонецЦикла;
КонецПроцедуры

2. Формирование списка для элемента ТЧ должно происходить на форме элемента ТипоразмерыНоменклатуры (у которой есть реквизит Объект.Владелец, ссылающийся на запись Номенклатура, в которой то и внесен "Производитель"). Получается, что при открытии формы ТипоразмерыНоменклатуры необходимо передать значение "Производителя" из формы Номенклатура и дальше формировать список выбора. А вот как этого добиться никак не соображу.

:(


Rasty

Форма = ПолучитьФорму("Справочник.Контрагенты.Форма.ФормаВыбора");
ЭлементОтбора = Форма.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ПолеИзСписка");
ЭлементОтбора.ПравоеЗначение = ВашеЗеначение;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

JohnDoe144

Простите за глупый вопрос, а на какое событие "вешать" Ваш код?
Эту же форму необходимо открыть для определенного элемента ТЧ. Т.е. на событие "НачалоОбработкиВыбора" для элемента?

Rasty

Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

JohnDoe144

Запутался окончательно в Поставщиках-Номенклатуре-Производителях-и-Ценах. :(
Что первично... что второстепенно.... не разберусь.

Ладно, извините, если что.
Всем спасибо за помощь.
Добавлено: 13 мая 2016, 14:14


Товарищи, если есть возможность, объясните, пожалуйста, "на пальцах", как все-таки "должно быть".

Исходя из вышеописанной задачи, что от чего зависит, что чему подчинено и как правильно заполнять.

Вариант:
1. Заполняю справочник "Производители" с его торговыми марками
2. Заполняю справочник "Номенклатура", где есть реквизит СсылкаСправочникПроизводители и СсылкаСправочникТорговыеМарки
3. Заполняю подчиненный справочник "ТипоразмерыНоменклатуры", где есть реквизит Номенклатура.Владелец
4. Заполняю РегистрСведений (РС) "Цены поставщиков", у которого измерения: Номенклатура, ТипоразмерНоменклатуры, Производитель, ТорговаяМарка, Поставщик; Ресурсы: Цена за ед. 4.1. Причем РС - периодический, "В пределах дня" или даже "В пределах секунды"
4.2. Причем данные в РС я смогу вносить как через форму элемента ТипоразмерНоменклатуры, так и из любой другой формы для Измерений, помеченных как "ведущее". btw правильно ли отмечать несколько измерений в качестве "ведущих"?

Т.о. в дальнейшем, из РС я смогу получить любые сведения.

Правильно ли я рассуждаю или же логика у предлагаемой вами структуры иная?
Если - правильная, то все-таки как логичнее организовать РС? Что - в "измерения", а что - в "ресурсы", а что - в "реквизиты"?

Спасибо.

Rasty

все что там написано это для примера, "ПолеИзСписка" это то поле, по которому будет производиться отбор, "ВашеЗначение" это то значение с которым будете сравнивать, а форма это просто форма, которая мне первая под руку попалась
Помогли - Скажи спасибо! Решил сам - поделись решением!
:)

JohnDoe144

Ок, вроде разобрался (более или менее). Новый вопрос :)
Хочу заполнять цены поставщиков в РегистрСведений "Цены" непосредственно из формы "ТипоразмерыНоменклатуры" (форма элемента Справочника ТипоразмерыНоменклатуры, подчиненный справочнику Номенклатура).
Вопрос:
Каким образом сделать так, чтобы данные для Измерений заполнялись автоматически, а именно:
1. Производитель (СсылкаСправочникКонтрагенты в Справочнике Номенклатура)
2. ТорговаяМарка (СсылкаСправочникТорговыеМарки в Справочнике Номенклатура)
3. Номенклатура (Владелец справочника ТипоразмерыНоменклатуры)
4. ТипоразмерНоменклатуры (откуда собственно и вызывается форма записи в РегистрСведений "Цены"?
Добавлено: 15 мая 2016, 01:51


Пока ждал ответ, сделал через запрос.
Т.к. при открытии формы записи из ТипоразмерыНоменклатуры, поле "ТипоразмерНоменклатуры" заполняется автоматически, добавил событие на форму ПриОткрытии:
Не уверен, что сделал правильно, но работает. Буду рад критике и замечаниям по коду ниже.

&НаКлиенте
Процедура ПриОткрытии(Отказ)
   СтруктураДанных = ЗаполнитьНоменклатуру(Запись.ТипоразмерНоменклатуры);
   Запись.Производитель = СтруктураДанных.Производитель;
   Запись.Номенклатура = СтруктураДанных.Наименование;
   Запись.ТорговаяМарка = СтруктураДанных.ТорговаяМарка;
КонецПроцедуры

&НаСервере
Функция ЗаполнитьНоменклатуру(Типоразмер)
   //Сообщить(Типоразмер);
   Запрос = Новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |   Номенклатура.Производитель,
                  |   ТипоразмерыНоменклатуры.Ссылка,
                  |   Номенклатура.Ссылка КАК Номенклатура,
                  |   Номенклатура.ТорговаяМарка.Ссылка КАК ТорговаяМарка
                  |ИЗ
                  |   Справочник.ТипоразмерыНоменклатуры КАК ТипоразмерыНоменклатуры
                  |      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
                  |      ПО ТипоразмерыНоменклатуры.Владелец = Номенклатура.Ссылка
                  |ГДЕ
                  |   ТипоразмерыНоменклатуры.Ссылка = &Ссылка";
   Запрос.УстановитьПараметр("Ссылка", Типоразмер);
   Выборка = Запрос.Выполнить().Выбрать();
   Пока Выборка.Следующий() Цикл
      СтруктураДанных = Новый Структура("Наименование, Производитель, ТорговаяМарка", Выборка.Номенклатура, Выборка.Производитель, Выборка.ТорговаяМарка);
   КонецЦикла;
   
   Возврат СтруктураДанных;
   
КонецФункции


Добавлено: 15 мая 2016, 01:59


И еще один вопрос: Как сделать так, чтобы при создании Записи Регистра сведений из формы Типоразмеры открывалась одна форма записи, а при открытии из другой какой-либо формы - открывалась другая форма записи?
Добавлено: 15 мая 2016, 02:49


И еще один небольшой вопрос:
Раз в Справочнике "Контрагенты" последние подразделяются на Поставщиков и Производителей (с помощью реквизитов типа Булево), можно ли ограничить видимость команды "ЦеныНаНоменклатуру" в Панели навигации так, чтобы команда была видима только для тех контрагентов, которые помечены как "Поставщики"?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск