Неопознанный оператор &НаСервере

1. Stiks1911 16.08.22 09:24 Сейчас в теме
Добрый день!) КА, в расширении написал код, вчера все работало, сегодня перезапускаю, не работает. В параметрах запуска стоит Толстый клиент Управляемое приложение. Подскажите пожалуйста, в чем причина ошибки?
Ниже сам код и ошибка по нему:

&НаСервере
Процедура Расш1_ПриОткрытииПередНаСервере()
СсылкаДок = Объект.Ссылка;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Партнеры.ОсновнойМенеджер КАК ОсновнойМенеджер
|ИЗ
| Документ.эсЗаданиеСотруднику КАК эсЗаданиеСотруднику
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
| ПО эсЗаданиеСотруднику.Партнер = Партнеры.Ссылка
|ГДЕ
| эсЗаданиеСотруднику.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", СсылкаДок);
РезультатЗапроса = Запрос.Выполнить();


Выборка = РезультатЗапроса.Выбрать();

Выборка.Следующий();

Если Объект.ОтветственныйМенеджер <> Выборка.ОсновнойМенеджер Тогда

Объект.ОтветственныйМенеджер = Выборка.ОсновнойМенеджер;
ЭтотОбъект.Записать();
КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура Расш1_ПриОткрытииПеред(Отказ)
Если ЗначениеЗаполнено(Объект.Партнер) Тогда
Расш1_ПриОткрытииПередНаСервере();
КонецЕсли;
КонецПроцедуры

Ошибка:

Ошибка инициализации модуля: КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма
по причине:
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(4,1)}: Неопознанный оператор
<<?>>&НаСервере

В самом конфигураторе текст ошибки:
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(3,1)}: Неопознанный оператор
<<?>>&НаСервере (Проверка: Сервер)
{КнопкаСотруднику Документ.эсЗаданиеСотруднику.Форма.ФормаДокумента.Форма(3,1)}: Неопознанный оператор
<<?>>&НаСервере (Проверка: Тонкий клиент)
Найденные решения
4. polax 16.08.22 09:58 Сейчас в теме
Где-то перед &НаСервере случайно поставил какой-то знак
sacred_a; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 16.08.22 09:48 Сейчас в теме
(1) При открытии перезаписывать документ - это моветон! А как же "я только посмотреть"? А если период закрыт, то никто не сможет открыть этот документ?
3. Stiks1911 16.08.22 09:58 Сейчас в теме
(2)Перезаписывать документ мы будем только в том случае, если Отв.Менеджер будет не совпадать в документе и справочнике, но вопрос в другом - почему появилась ошибка "Неопознанный оператор &НаСервере " и "Неопознанный оператор &НаКлиенте" хотя до этого этих ошибок не было
5. RustamZz 16.08.22 10:08 Сейчас в теме
(3) Через 5 лет откроют документ, менеджер кто тогда работал с партнером уже уволился, работает новый и мы перезапишем документ. Так по вашему должно быть?
По теме в этом месте ошибки не может быть
6. collider 16.08.22 10:11 Сейчас в теме
(1) Вроде не хватает строчки, говорящей, что её нужно "перед" вызывать.


А вообще, если отступить от темы, то было бы правильно запихнуть это всё в регламентное задание, которое бы прочёсывало все документы. Это если вообще хранение основного менеджера в документе имеет смысл. Его же и так можно в любой момент получить из партнёра.
8. RustamZz 16.08.22 10:48 Сейчас в теме
(6) Обычно, если хранят в документе, то нужны исторические данные. Ну и заполнять в управляемых формах нужно ПриСоздании, а не как здесь ПриОткрытии, но автору все это объяснять похоже бесполезно.
9. collider 16.08.22 10:49 Сейчас в теме
(8)Если бы нужны были исторические данные, то этот реквизит наоборот бы берегли от изменений, а не сбивали бы при каждом открытии.
10. Stiks1911 16.08.22 10:52 Сейчас в теме
(8)
(8) Подскажите пожалуйста, как тогда это правильно было бы реализовать? Т.е. запрос делать именно в ПриСоздании, а как тогда записать в документ значение из Выборки в сам реквизит Объект.ОтветственныйМенеджер ? Тоже в ПриСоздании или как правильно?
11. RustamZz 16.08.22 10:54 Сейчас в теме
(10) Правильно не хранить в документе, а показывать из справочника Партнеры, если ответственный постоянно меняется.
collider; +1 Ответить
12. Stiks1911 16.08.22 11:00 Сейчас в теме
(11)&НаСервере
Процедура Расш1_ПриОткрытииПослеНаСервере()

СсылкаДок = Объект.Ссылка;

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Партнеры.ОсновнойМенеджер КАК ОсновнойМенеджер
|ИЗ
| Документ.эсЗаданиеСотруднику КАК эсЗаданиеСотруднику
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Партнеры КАК Партнеры
| ПО эсЗаданиеСотруднику.Партнер = Партнеры.Ссылка
|ГДЕ
| эсЗаданиеСотруднику.Ссылка = &Ссылка";

Запрос.УстановитьПараметр("Ссылка", СсылкаДок);
РезультатЗапроса = Запрос.Выполнить();


Выборка = РезультатЗапроса.Выбрать();

Выборка.Следующий();

Если Объект.ОтветственныйМенеджер <> Выборка.ОсновнойМенеджер Тогда

Объект.ОтветственныйМенеджер = Выборка.ОсновнойМенеджер;
КонецЕсли;

КонецПроцедуры


Вот так имеете ввиду и именно в ПриСоздании?
13. collider 16.08.22 11:04 Сейчас в теме
(12) Может всё-таки удовлетворите наше любопытство и подскажете, для чего в документе храните ответственного?

В запросе, кстати, партнёров можно не присоединять, а взять менеджера "через точку".
"ВЫБРАТЬ
| эсЗаданиеСотруднику.Партнер.ОсновнойМенеджер КАК ОсновнойМенеджер
|ИЗ
| Документ.эсЗаданиеСотруднику КАК эсЗаданиеСотруднику
|ГДЕ
| эсЗаданиеСотруднику.Ссылка = &Ссылка"
15. Stiks1911 16.08.22 11:19 Сейчас в теме
(13)Изначально, в справочнике партнеры устанавливается ответственный менеджер, который работает с этим партнером и затем создается Задание сотруднику, в котором указывается партнер, ответственный сотрудник и ответственный менеджер. Менеджер ранее проставлялся руками. Могла возникнуть ошибка, что в Справочнике Партнеры отв. менеджер изменился, а в задании сотруднику он остался прежним и все свои отчеты сотрудник присылает не тому менеджеру, поэтому нужно подтянуть отв.менеджера именно из Справочника Партнеры. Надеюсь смог более менее объяснить)
(13)
16. collider 16.08.22 11:21 Сейчас в теме
(15) То есть, ответственный нужен только как информация в момент открытия документа? Тогда в (14) вам подсказали верно.
17. Prikum 3 16.08.22 11:21 Сейчас в теме
(13)
а взять менеджера "через точку".
Не очень идея брать в запросе через точку.
18. collider 16.08.22 11:22 Сейчас в теме
(17) Почему? Думаете, партнёр там - составное поле?
19. Prikum 3 16.08.22 11:24 Сейчас в теме
(18)
Почему?
Потому что в запросе будет неявна выбрано все что через точку, просто это не оптимально. Насколько я помню за это даже снижают оценку на экзамене специалиста по платформе
20. collider 16.08.22 11:59 Сейчас в теме
(19) Нет, выберет только одно поле. И само собой, неявно соединит с партнёрами. Но при одинаковом результате читается легче.

Сейчас попрообовал. Вот такой запрос 1с
ВЫБРАТЬ
ПриобретениеТоваровУслуг.Партнер.Наименование КАК Партнер
ИЗ
Документ.ПриобретениеТоваровУслуг КАК ПриобретениеТоваровУслуг
ГДЕ
ПриобретениеТоваровУслуг.Ссылка = &Приобретение


превращается вот в такой на SQL
exec sp_executesql N'SEL ECT
T2._Description
FR OM dbo._Document1267 T1
LEFT OUTER JOIN dbo._Reference471 T2
ON (T1._Fld27539RRef = T2._IDRRef) AND (T2._Fld2739 = @P1)
WHERE ((T1._Fld2739 = @P2)) AND ((T1._IDRRef = @P3))',N'@P1 numeric(10),@P2 numeric(10),@P3 varbinary(16)',0,0,0xAD111C1B0D60385911ECEC5628D9EB97
14. RustamZz 16.08.22 11:15 Сейчас в теме
(12) В форме раскрыть Партнера выбрать поле Ответственный и перенести в нужное место. Код писать не нужно.
4. polax 16.08.22 09:58 Сейчас в теме
Где-то перед &НаСервере случайно поставил какой-то знак
sacred_a; +1 Ответить
7. Stiks1911 16.08.22 10:14 Сейчас в теме
(4) Благодарю Вас!) Начал удалять перед &НаСервере и оказалась какая-то левая строка, действительно,видимо, случайно нажал! Благодарю Вас и всех отозвавшихся!)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот