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

Помогите создать обработку в 1С предприятии :dfbsdfbsdf:

Автор proofet, 11 фев 2011, 21:04

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

cska-fanat-kz

Сперва нужно запросом получить всех контрагентов, у которых нет выбранной ТТ.
И обходом результата запроса эту самую ТТ проставить.
А запрос может быть например таким:

ВЫБРАТЬ
   Контрагенты.Ссылка
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   (НЕ Контрагенты.Ссылка В
            (ВЫБРАТЬ РАЗЛИЧНЫЕ
               КонтрагентыТорговыеТочки.Ссылка КАК Контрагент
            ИЗ
               Справочник.Контрагенты.ТорговыеТочки КАК КонтрагентыТорговыеТочки
            ГДЕ
               КонтрагентыТорговыеТочки.Ссылка В ИЕРАРХИИ (&парамГруппа)
               И КонтрагентыТорговыеТочки.ТорговыеТочки = &парамТорговаяТочка))
   И Контрагенты.ЭтоГруппа = ЛОЖЬ
   И Контрагенты.Ссылка В ИЕРАРХИИ(&парамГруппа)
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

proofet

я её присваиваю не всем контрагентам справочника, а только тем которые находятся в выбранной в "ПолеВыбора" группе.
Проверку на заполненность мне было велено сделать "Сверху").


proofet


cska-fanat-kz

Цитата: proofet от 13 фев 2011, 12:24
я её присваиваю не всем контрагентам справочника, а только тем которые находятся в выбранной в "ПолеВыбора" группе.
Проверку на заполненность мне было велено сделать "Сверху").

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

Klyacksa

Цитата: proofet от 13 фев 2011, 12:24
я её присваиваю не всем контрагентам справочника, а только тем которые находятся в выбранной в "ПолеВыбора" группе.
По коду вы ее присваиваете как раз всем контрагентам (отбора же нет!):
ВыборкаКонтрагенты=Справочники.Контрагенты.Выбрать();

Цитата: proofet от 13 фев 2011, 12:24
Проверку на заполненность мне было велено сделать "Сверху").
Так не нужно же ее делать дважды!
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

cska-fanat-kz

proofet, небольшой совет.

вместо

Если Не ЗначениеЗаполнено(...) Тогда

КонецЕсли;
Если ЗначениеЗаполнено(...) Тогда

КонецЕсли;

можно смело написать

Если ЗначениеЗаполнено(...) Тогда

Иначе

КонецЕсли;

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

cska-fanat-kz

Цитата: Klyacksa от 13 фев 2011, 12:31
По коду вы ее присваиваете как раз всем контрагентам (отбора же нет!):
ВыборкаКонтрагенты=Справочники.Контрагенты.Выбрать();

Тот код можно смело "заснуть на клавише F8" и больше не вспоминать о нем.
Потому как там все неправильно.

Алгоритм нажатия кнопки такой:
1. Проверить заполнение поля ГруппаКонтрагентов
2. Сформировать запрос - список контрагентов у которых нет выбранной ТТ
3. Обойди результат запроса и проставить выбранную ТТ
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

proofet


Цитировать
ВЫБРАТЬ
   Контрагенты.Ссылка
ИЗ
   Справочник.Контрагенты КАК Контрагенты
ГДЕ
   (НЕ Контрагенты.Ссылка В
            (ВЫБРАТЬ РАЗЛИЧНЫЕ
               КонтрагентыТорговыеТочки.Ссылка КАК Контрагент
            ИЗ
               Справочник.Контрагенты.ТорговыеТочки КАК КонтрагентыТорговыеТочки
            ГДЕ
               КонтрагентыТорговыеТочки.Ссылка В ИЕРАРХИИ (&парамГруппа)
               И КонтрагентыТорговыеТочки.ТорговыеТочки = &парамТорговаяТочка))
   И Контрагенты.ЭтоГруппа = ЛОЖЬ
   И Контрагенты.Ссылка В ИЕРАРХИИ(&парамГруппа)

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


p.s. прошу простить заранее,  может не понимаю совсем элементарных вещей... (учусь только, опыта никакого)

cska-fanat-kz

Ура! 100! ))

Условие на группы:

"Контрагенты.Ссылка В ИЕРАРХИИ(&парамГруппа)"

Я просто дал текст запроса, а параметры дальше задаются.

Запрос = Новый Запрос;
Запрос.Текст = "<<вышеприведенный текст>>";
Запрос.УстановитьПараметр("парамГруппа", ЭлементыФормы.ПолеВыбора1.Значение);
Запрос.УстановитьПараметр("парамТорговаяТочка", ЭлементыФормы.СправочникСписок.ТекущаяСтрока);

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

proofet

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

ВыборкаКонтрагенты=Справочники.Контрагенты.Выбрать( //Как устновить здесь нужный Отбор ?);
Пока ВыборкаКонтрагенты.Следующий() цикл
     ТабЧасть=ВыборкаКонтрагенты.ТорговыеТочки;
     Если ТабЧасть.НайтиСтроки(Новый Структура("ТорговаяТочка", НашаТоргТочкаССылка).Количество()=0 тогда
            Контрагент=ВыборкаКонтрагенты.ПолучитьОбъект();
            НоваяСтрокаТЧ=ТабЧасть.Добавить();
            НоваяСтрокаТЧ.ТорговаяТочка=НашаТоргТочкаССылка;
            Контрагент.Записать();
     конецЕсли;
конеццикла;
   
   Иначе  Сообщить("Не выбрана группа Контрагентов!");

КонецЕсли;



Теги:

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

Рейтинг@Mail.ru

Поиск