Имя: Пароль:
1C
1С v8
как с помощью обработки установить основной договор контрагента
,
0 amadeus2010
 
22.11.13
13:21
Добрый день, такой вопрос в справочнике Контрагенты указан договор с контрагентом, как программно сделать его основным. Обработкой были загружены 5000 контрагентов и ни кого не указан основной договор как при нажатии кнопки Основной. Из-за этого не проводятся документы реализации.
создал такую процедуру
////////////////////////////////////////////////////////////////
Процедура Кнопка1Нажатие(Элемент)
Контрагенты=Справочники.Контрагенты.НайтиПоНаименованию(ЭтотОбъект);
если Контрагенты.Покупатель=Ложь тогда
попытка
КонтрагентыОбъект = Контрагенты.ПолучитьОбъект();
КонтрагентыОбъект.Покупатель=Истина;        //Здесь должен быть объект !!!!!!!!!!!
//КонтрагентыОбъект.Записать();
исключение
конецпопытки;
конецесли;

выборка = Справочники.ДоговорыКонтрагентов.Выбрать( ,Контрагенты);
Пока выборка.Следующий() = 1 Цикл
Если (выборка.Наименование="Əsas Müqavilə") и (выборка.ВидДоговора=перечисления.ВидыДоговоровКонтрагентов.СПокупателем) тогда
   КонтрагентыОбъект.ОсновнойДоговорКонтрагента=выборка.Ссылка;
   КонтрагентыОбъект.Записать();
  
  иначе
сообщить("нет Əsas Müqavilə!");
конецесли;
КонецЦикла;

КонецПроцедуры
//////////////////////////////////////////////////////////////////
но наименование договора не становиться основным
1 Godofsin
 
22.11.13
13:22
выборка.Наименование="Əsas Müqavilə" - 0_0
2 George Wheels
 
22.11.13
13:23
Контрагенты=Справочники.Контрагенты.НайтиПоНаименованию(ЭтотОбъект);

Что такое ЭтотОбъект?
3 Maxus43
 
22.11.13
13:24
посмотри что происходит по нажатию кнокпи "основной", тоже самое надо сделать
4 Cube
 
22.11.13
13:24
(0) Замени везде слово "Контрагенты" на "МояПеременная"
5 Cube
 
22.11.13
13:24
+(4) А не, что-то я прогнал))
6 Godofsin
 
22.11.13
13:27
ПроверитьПометкуКнопкиУстановкиОсновногоДоговора();
Это в УТ 10.3 при нажатии на кнопку "Основной"
7 amadeus2010
 
22.11.13
13:30
(1)это наименование договора на азербайджанском просто на форуме не читается
8 amadeus2010
 
22.11.13
13:52
что-то не получается пока что-то решить задачу
9 catena
 
22.11.13
13:54
А Покупатель в истину выставляется?
10 Infsams654
 
22.11.13
13:58
(0) 5000 контрагентов
"создал такую процедуру"

Процедура Кнопка1Нажатие(Элемент)

дальше читать уже бесполезно
11 amadeus2010
 
22.11.13
14:04
(10) эти контрагенты были загружены другой обработкой в которой не было учтена установка основного договора по умолчанию.Теперь надо сделать так чтобы для всех контрагентов был основной договор по умолчанию один. Для этого я пытаюсь создать обработку которая проставит для всех договоров по умолчанию 1 основной договор т.е он станет полужирным шрифтом
12 Aleksey
 
22.11.13
14:05
(0) какая связь между основным договором и проведением реализации?

Исправь загрузку реализации чтобы она брала не основной договор, а искала по наименованию, или сначало основной, а если он пустой - ищем по наименованию
13 Aleksey
 
22.11.13
14:06
(11) От того что ты проставишь основной договор, старые реализации проводится не будут
14 Aleksey
 
22.11.13
14:07
И да у тебя скорее всего не выполняется условие, попробуй или СокрЛП(выборка.Наименование), или через найти
15 amadeus2010
 
22.11.13
14:12
(12) Мне надо чтобы у контрагентов было проставлено основной договор "Договор" и чтобы он был выделен полужирным шрифтом как при нажатии кнопки Основной или при нажатии кнопки Записать справочника Контрагенты
16 Aleksey
 
22.11.13
14:16
(15) У тебя нарушена причина-следственная свзяь, реализация не проводится не потому что у контрагента не указан основной договор. У тебя цель какая? Провести реализацию?
Даже если ты укажешь основной договор, то всё равно реализация не проведётся, ты это можешь понять?
17 Aleksey
 
22.11.13
14:17
И да такие дела делаются не выборкой, а запросом, плюс там еще может быть разные организации
18 amadeus2010
 
22.11.13
14:23
(15) сейчас задача стоит в том чтобы у всех договоров название договора было полужирным шрифтом т.е он был основным из списка.
19 amadeus2010
 
22.11.13
14:23
Организация одна
20 Fram
 
22.11.13
14:28
А вот это никого не смутило?
Пока выборка.Следующий() = 1 Цикл
21 Aleksey
 
22.11.13
14:29
(20) а должно?
22 Aleksey
 
22.11.13
14:30
(18) перепеши на запрос по справочнику договору, это быстрее и проще
23 Fram
 
22.11.13
14:31
(21)
СправочникВыборка.<Имя справочника>.Следующий (CatalogSelection.<Имя справочника>.Next)
СправочникВыборка.<Имя справочника> (CatalogSelection.<Имя справочника>)
Следующий (Next)
Синтаксис:

Следующий()
Возвращаемое значение:

Тип: Булево.
Истина - следующий элемент выбран; Ложь - достигнут конец выборки.
Описание:

Получает следующий элемент из выборки. Для обхода справочника нужно после получения выборки вызвать данный метод для позиционирования на первый элемент и далее вызывать до тех пор, пока не будет возвращено значение Ложь.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

ВыборкаСправочника = Справочники.Валюты.Выбрать();
Пока ВыборкаСправочника.Следующий() Цикл
    Сообщить("Записана валюта " + ВыборкаСправочника.Наименование);
КонецЦикла;
24 Fram
 
22.11.13
14:31
Тип: Булево !!!!!!!!!
25 Aleksey
 
22.11.13
14:33
(24) это же 1С, тут неявное преобразования типа
Т.е. у 1С (истина = 1 ) дает истину
26 Aleksey
 
22.11.13
14:34
т.е. для 1С истина и 1 равнозначные понятия, так же как и ложь и 0, видно сделано для совместимости с 7.7
27 amadeus2010
 
22.11.13
14:37
предположим создал такой запрос который показывает основный договора
ВЫБРАТЬ
    Контрагенты.Наименование,
    Контрагенты.ОсновнойДоговорКонтрагента
ИЗ
    Справочник.Контрагенты КАК Контрагенты
т.е те у которых название выделено полужирным шрифтом, а как отобрать остальных контрагентов и им назначить основной договор?
28 Fram
 
22.11.13
14:37
(26) действительно. не знал
29 Aleksey
 
22.11.13
14:40
Запрос=новый Запрос;
Запрос.Текст="
|ВЫБРАТЬ
|    ДоговорыКонтрагентов.Ссылка.Владелец КАК Контрагент,
|    ДоговорыКонтрагентов.Ссылка КАК Договор
|ИЗ
|    Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
|    ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора
|    И ДоговорыКонтрагентов.Наименование ПОДОБНО &Наименование
|    И ДоговорыКонтрагентов.Владелец.ОсновнойДоговорКонтрагента <> ДоговорыКонтрагентов.Ссылка
|";
Запрос.УстановитьПараметр("ВидДоговора",Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
Запрос.УстановитьПараметр("Наименование","%догово%");
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
    КонтрагентОбъект =   Результат.Контрагент.ПолучитьОбъект();
    КонтрагентОбъект.ОсновнойДоговорКонтрагента =   Результат.Договор;
    КонтрагентОбъект.Записать();
КонецЦикла;
30 Aleksey
 
22.11.13
14:42
только вместо
Запрос.УстановитьПараметр("Наименование","%догово%");
Укажи своё "&#399;sas M&#252;qavil&#601;"
31 amadeus2010
 
22.11.13
14:43
спасибо, т.е запрос установит пометку полужирный для всех договоров?
32 Aleksey
 
22.11.13
14:46
(31) нет запрос выберет те договора которые "не полужирные", а уже затем ты в выборке проставляешь основной договор, который автоматом делает полужирные
33 Мимохожий Однако
 
22.11.13
14:51
КонтрагентОбъект = ЭтотОбъект.Владелец.ПолучитьОбъект();
КонтрагентОбъект.ОсновнойДоговорКонтрагента = ЭтотОбъект.Ссылка;
КонтрагентОбъект.Записать();
34 Infsams654
 
22.11.13
16:59
(31) да, запросы предназначены именно для того, чтобы устанавливать пометку полужирный
AdBlock убивает бесплатный контент. 1Сергей