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

загрузить данные реквизита в справочник из документа

Автор ls600, 09 окт 2014, 15:03

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

ls600

Доброго времени суток. Возможно ли реализовать такую задачу.
Сразу скажу база не типовая, склад. обычное приложение.
Сделал документ Анализ движения заявок на закупку. У этого документа есть реквизит Номер Заявки (Тип Строка). Получается создается документ Анализ движения заявок. Заполняется данными. Далее в справочнике Номенклатура добавил реквизит СсылкаНаЗаявку(рис).  т.е при выборе выбирается нужный документ и автоматически "нужно реализовать" заполнится в справочнике номер заявки, который указывался в документе. у документа естественно есть РегистрСведений., лучше из него взять этот номер через запрос.

Создал функцию которая должна из регистра выбирается номер заявки нужного документа.


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

Процедура СсылкаНаЗаявкуПриИзменении(Элемент)
   Номер = СформироватьНомерЗаявки();
   ЭлементыФормы.НомерЗаявки.Значение = Номер;
КонецПроцедуры



И вот в поле номер заявке никакие данные не попадают. Может что то не так в коде, подскажите, а то уже мозг кипит.
Если есть альтернативный вариант решение этой задачи буду рад выслушать.






cska-fanat-kz

Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
   Возврат Результат.НомерЗаявки;
Иначе
    Возврат 0;
КонецЕсли;
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

дфтын

В консоль запросов запрос кидайте. единственный вариант - номер заявки - неограниченная мысль пока ..хотя ошибку бы давало...А РЛС не вклчюен у вас?

LexaK

а нафига так сложно писать, сдаем экзамен на говнокодировщика?
судя по вашему коду, у вас уже есть СсылкаНаЗаявку

всего то и надо написать

Процедура СсылкаНаЗаявкуПриИзменении(Элемент)
НомерЗаявки = СсылкаНаЗаявку.НомерЗаявки ;
КонецПроцедуры
если помогло нажмите: Спасибо!

ls600

Цитата: cska-fanat-kz от 09 окт 2014, 15:33
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
   Возврат Результат.НомерЗаявки;
Иначе
    Возврат 0;
КонецЕсли;

Постоянно 0 появляется. хоть что то, а не пустая:D  буду думать дальше
Добавлено: 09 окт 2014, 18:29


Цитата: LexaK от 09 окт 2014, 18:19
а нафига так сложно писать, сдаем экзамен на говнокодировщика?
судя по вашему коду, у вас уже есть СсылкаНаЗаявку

всего то и надо написать

Процедура СсылкаНаЗаявкуПриИзменении(Элемент)
НомерЗаявки = СсылкаНаЗаявку.НомерЗаявки ;
КонецПроцедуры


дело не в сложности, написал по вашему коду.
ошибка
{Справочник.Номенклатура.Форма.ФормаЭлемента.Форма(1266)}: Значение не является значением объектного типа (Номер)
   НомерЗаявки = СсылкаНаЗаявку.Номер;

LexaK

НомерЗаявки = СсылкаНаЗаявку.НомерЗаявки;
Добавлено: 09 окт 2014, 19:32


по правильному, так надо сделать

...
Если ЗначениеЗаполнено(СсылкаНаЗаявку) Тогда
НомерЗаявки = СсылкаНаЗаявку.НомерЗаявки;
Иначе
НомерЗаявки = "";
КонецЕсли;
...

в процессе работы вы можете очистить поле СсылкаНаЗаявку, при этом НомерЗаявки тоже надо почистить.
если помогло нажмите: Спасибо!

cska-fanat-kz

Цитата: LexaK от 09 окт 2014, 18:19а нафига так сложно писать, сдаем экзамен на говнокодировщика?

каюсь, уже не стал спрашивать, зачем такой кудрявый алгоритм...
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ls600

в итоге вот так сделал. и номер заявки выходят как надо.

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

КонецФункции

Процедура СсылкаНаЗаявкуПриИзменении(Элемент)
Номер = СформироватьНомерЗаявки();
ЭлементыФормы.НомерЗаявки.Значение = Номер;
КонецПроцедуры

cska-fanat-kz

ЭлементыФормы.СсылкаНаЗаявку.Значение
ЭлементыФормы.НомерЗаявки.Значение

а если напишете просто "СсылкаНаЗаявку" и "НомерЗаявки" - что-то изменится?
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

ls600

Цитата: cska-fanat-kz от 10 окт 2014, 10:40а если напишете просто "СсылкаНаЗаявку" и "НомерЗаявки" - что-то изменится?
то выскакивает ошибка, Значение не является значением объектного типа (Значение).

зашел повторно в номенклатуру и получается номер заявки остался с документа, а сама заявка исчезла :dfbbdrfb:

Теги:

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

Рейтинг@Mail.ru

Поиск