Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.171] |
|
Сообщ.
#1
,
|
|
|
Бух 3.0, не вытаскивается договор контрагента.
делаю так: ФормаКонтрагент - справочник.ссылка.контрагент &НаКлиенте Процедура Сформировать(Команда) НайтиДоговорКонтрАгента(ФормаКонтрагент); КонецПроцедуры &НаСервере Процедура НайтиДоговорКонтрАгента(ФормаКонтрагент) КАгент = Новый Структура; КАгент.Вставить("Контрагент",ФормаКонтрагент); ФормаДоговор = РегистрыСведений.ОсновныеДоговорыКонтрагента.Получить(ТекущаяДата(),КАгент)[0]; КонецПроцедуры Пишет "несоответствие типов" |
Сообщ.
#2
,
|
|
|
Откуда взялась ФормаКонтрагент? Кусок кода можно?
|
Сообщ.
#3
,
|
|
|
evGenius
Это реквизит на форме, не более того. Прикреплённый файл____________.zip (3,68 Кбайт, скачиваний: 134) |
Сообщ.
#4
,
|
|
|
Цитата ^D^ima @ Это реквизит на форме, не более того. И какой тип попадает в твою функцию? |
Сообщ.
#5
,
|
|
|
справочник.ссылка.контрагент, я написал.
Или для регистров сведений нужны все реквизиты? Там их 3 |
Сообщ.
#6
,
|
|
|
Цитата ^D^ima @ Это реквизит на форме, не более того. Это строка. Ты уверен, что по строке сработает поиск договора? Раз ругается на несоответствие типов, то скорее всего надо ссылку на контрагента передавать. Добавлено Цитата ^D^ima @ ФормаКонтрагент - справочник.ссылка.контрагент У меня открылось, как строка. |
Сообщ.
#8
,
|
|
|
Ты в ФормаДоговор пытаешься запись регистра запихнуть. Надо дописать что-то типа".Договор".
|
Сообщ.
#9
,
|
|
|
evGenius
Я делаю вообще сообщить, то-же самое &НаСервере Процедура НайтиДоговорКонтрАгента(ФормаОрганизация,ФормаКонтрагент) Сообщить(ФормаКонтрагент); КАгент = Новый Структура; КАгент.Вставить("Организация",ФормаОрганизация); КАгент.Вставить("Контрагент",ФормаКонтрагент); КАгент.Вставить("ВидДоговора",Перечисления.ВидыДоговоровКонтрагентов.СПокупателем); Сообщить(РегистрыСведений.ОсновныеДоговорыКонтрагента.Получить(ТекущаяДата(),КАгент)[0]); КонецПроцедуры |
Сообщ.
#10
,
|
|
|
Так а как программа будет сообщать запись регистра?
|
Сообщ.
#11
,
|
|
|
Я думаю что должна сообщить, так-же как и ссылку на контрагента.
Ошибка все-равно в чем-то другом, через отладчик не вычислить сообщение Прикреплённый файл____________________.png (32,33 Кбайт, скачиваний: 598) |
Сообщ.
#12
,
|
|
|
Проблема в том, что регистр сведений непериодический, у метода Получить() не должно быть параметра-даты, только отбор.
Добавлено &НаСервере Процедура НайтиДоговорКонтрАгента(ФормаОрганизация,ФормаКонтрагент) КАгент = Новый Структура; КАгент.Вставить("Организация",ФормаОрганизация); КАгент.Вставить("Контрагент",ФормаКонтрагент); КАгент.Вставить("ВидДоговора",Перечисления.ВидыДоговоровКонтрагентов.СПокупателем); ФормаДоговор = РегистрыСведений.ОсновныеДоговорыКонтрагента.Получить(КАгент)[0].Договор; КонецПроцедуры |
Сообщ.
#13
,
|
|
|
Цитата evGenius @ не должно быть параметра-даты, только отбор. А это тогда о чем? Прикреплённый файл____________________.png (6,02 Кбайт, скачиваний: 597) |
Сообщ.
#15
,
|
|
|
В итоге сделал так: Ид другого справочника взял данные.
ДоговорКонтрАгента = новый Запрос; ДоговорКонтрАгента.Текст = "ВЫБРАТЬ | ДоговорыКонтрагентов.Ссылка |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец = &Владелец | И ДоговорыКонтрагентов.Организация = &Организация"; ДоговорКонтрАгента.УстановитьПараметр("Организация",ФормаОрганизация); ДоговорКонтрАгента.УстановитьПараметр("Владелец",ФормаКонтрагент); Выборка = ДоговорКонтрАгента.Выполнить().Выбрать(); Выборка.Следующий(); ФормаДоговор=Выборка.ссылка; Вместо запроса пытался сделать структуру, не получилось. КАгент = Новый Структура; КАгент.Вставить("Организация",ФормаОрганизация); КАгент.Вставить("Владелец",ФормаКонтрагент); ФормаДоговор = Справочники.ДоговорыКонтрагентов.ПолучитьДанныеВыбора(КАгент); Ещё одно непонятное: В справочнике ДоговорКонтрАгента нет реквизита Владелец. - Я не наблюдаю его визуально. проверил все реквизиты, нигде нет ни названия "Владелец" ни ссылки на контрагента у других реквизитов. - Этот код ФормаДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Владелец",ФормаКонтрагент); ФормаДоговор = Справочники.ДоговорыКонтрагентов.НайтиПоРеквизиту("Организация",ФормаОрганизация); Сообщить(ФормаДоговор.Владелец); Отрабатывает на ура. Т.е в запросе можно указать это реквизит, сообщить его можно, но найти по нему нельзя(его и нет в справочнике в принципе). Откуда вашу **** взялся этот Владелец??????? |
Сообщ.
#16
,
|
|
|
Владелец - это хитрый реквизит, не совсем реквизит, как и Родитель. По нему нельзя так искать. Он появляется, когда справочник подчиняется другому.
Добавлено Попозже вечером напишу как правильно сделать процедуру поиска договора, сейчас под рукой БП3 нет. |
Сообщ.
#17
,
|
|
|
Как же 1-ка меня нервирует...
Почему в конфигураторе нет документа "Оказание производственных услуг", а в 1-ке он откуда-то берется. Вопрос откуда и как его тогда программно создавать? Прикреплённый файлDocs.jpg (81,72 Кбайт, скачиваний: 575) |
Сообщ.
#18
,
|
|
|
Это синоним. Встаем в конфигураторе на корень "Документы", Ctrl+F - ищем по синониму.
|
Сообщ.
#19
,
|
|
|
Я бы сделал так:
Функция ПолучитьДоговорКонтрагента(Контрагент, Организация, ВидДоговора) // сначала ищем основной ЗапросПоиска = Новый Запрос( "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ОсновныеДоговорыКонтрагента.Договор |ИЗ | РегистрСведений.ОсновныеДоговорыКонтрагента КАК ОсновныеДоговорыКонтрагента |ГДЕ | ОсновныеДоговорыКонтрагента.Контрагент = &Владелец | ОсновныеДоговорыКонтрагента.ВидДоговора = &ВидДоговора | И ОсновныеДоговорыКонтрагента.Организация = &Организация"); ЗапросПоиска.УстановитьПараметр("Организация", Организация); ЗапросПоиска.УстановитьПараметр("Владелец", Контрагент); ЗапросПоиска.УстановитьПараметр("ВидДоговора", ВидДоговора); ВыборкаПоиска = ЗапросПоиска.Выполнить().Выбрать(); Если ВыборкаПоиска.Следующий() Тогда Возврат ВыборкаПоиска.Договор; КонецЕсли; // ну раз нет основного, то первый попавшийся ЗапросПоиска = Новый Запрос( "ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1 | ДоговорыКонтрагентов.Ссылка |ИЗ | Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов |ГДЕ | ДоговорыКонтрагентов.Владелец = &Владелец | И ДоговорыКонтрагентов.Организация = &Организация | И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора | И НЕ ДоговорыКонтрагентов.ПометкаУдаления"); ЗапросПоиска.УстановитьПараметр("Организация", Организация); ЗапросПоиска.УстановитьПараметр("Владелец", Контрагент); ЗапросПоиска.УстановитьПараметр("ВидДоговора", ВидДоговора); ВыборкаПоиска = ЗапросПоиска.Выполнить().Выбрать(); Если ВыборкаПоиска.Следующий() Тогда Возврат ВыборкаПоиска.Ссылка; КонецЕсли; // ну нету раз Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка(); КонецФункции |
Сообщ.
#20
,
|
|
|
evGenius
Спасибо, я примерно так и сделал. |