По теме из базы знаний
- Простой доступ только для чтения [Запрет редактирования документов/справочников/регистров сведений/... ]
- История изменений справочников и документов
- Трекер задач - Управление задачами: Канбан доска
- АСТ: Обмен с ФГИС Меркурий из 1С
- Нумерация документов с префиксом по дате (настройка префикса документов)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
если в документе есть реквизит Клиент с типом Справочник.Клиенты:
короче, элемент справочника должен быть спозиционирован (выбран). иначе нечего записывать и получаем ошибку типа не выбран элемент и т.д.
Код |
---|
Показать полностью |
короче, элемент справочника должен быть спозиционирован (выбран). иначе нечего записывать и получаем ошибку типа не выбран элемент и т.д.
я правильно понял?
конструкция Спр.Организация.Замена=ДатаДок; не сработает, т.к. Организация также является реквизитом справочника Клиенты с типом Справочник.Организации.
а если Организация - реквизит документа, тогда все равно элемент надо спозиционировать...
конструкция Спр.Организация.Замена=ДатаДок; не сработает, т.к. Организация также является реквизитом справочника Клиенты с типом Справочник.Организации.
а если Организация - реквизит документа, тогда все равно элемент надо спозиционировать...
как все по умному. ;)
хорошо
через две точки присваивать нельзя.
то что надо спозиционировать... согласен
но конструкция
Спр.Замена=ДатаДок;
Спр.Записать();
Спр.Организация=Спр.ТекущийЭлемент();
Спр.Записать();
не рабочая.
все равно ругается.
и зачем искать элементы ?
У меня просто условие что если открыт вполне конкретный документ и выбрано определенные параметры в нем, то в справочнике клиента дата замены меняется на дату вот этого самого документа.
Думал что Спр.Записать будет достаточно, а 1С и в самом деле ругается что элемент не выбран.
хорошо
через две точки присваивать нельзя.
то что надо спозиционировать... согласен
но конструкция
Спр.Замена=ДатаДок;
Спр.Записать();
Спр.Организация=Спр.ТекущийЭлемент();
Спр.Записать();
не рабочая.
все равно ругается.
и зачем искать элементы ?
У меня просто условие что если открыт вполне конкретный документ и выбрано определенные параметры в нем, то в справочнике клиента дата замены меняется на дату вот этого самого документа.
Думал что Спр.Записать будет достаточно, а 1С и в самом деле ругается что элемент не выбран.
>Спр.Организация=Спр.ТекущийЭлемент();
читай внимательней код. конструкцию не проверял, но:
Спр.Организация=СпрОрг.ТекущийЭлемент();
Спр - Клиент, СпрОрг - Организация, Организация - реквизит Спр. Оба элемента спозиционированы. должно работать.
читай внимательней код. конструкцию не проверял, но:
Спр.Организация=СпрОрг.ТекущийЭлемент();
Спр - Клиент, СпрОрг - Организация, Организация - реквизит Спр. Оба элемента спозиционированы. должно работать.
2DbIM
Контсрукция, которую ты привел может быть рабочая. Все зависит от того, что у тебя в переменной Спр.
Почитай описание метода Записать(). Там написано, что он работает только для объекта, созданного функцией СоздатьОбъект().
Контсрукция, которую ты привел может быть рабочая. Все зависит от того, что у тебя в переменной Спр.
Почитай описание метода Записать(). Там написано, что он работает только для объекта, созданного функцией СоздатьОбъект().
2 LiS В первом примере я не понял при чем здесь справочник.организации (у меня такого вообще нет)
То что Записать() работает только для объекта, созданного функцией СоздатьОбъект().
Это понятно. Я же создал этот самый Спр. В первом сообщении моя первая строка кода.
Про ТекущийЭлемент() и позиционированние...
Ребят. Я понимаю, что ничего не понимаю. Может есть (на Мисте) или еще где подходящий кусок готового кода похожего. Чтобы я мог ткнуться носом и посмотреть как правильно там это реализованно.
2 ошибки: то Значение не представляет агрегатный объект
то не выбран элемент.
Уже запарился.
То что Записать() работает только для объекта, созданного функцией СоздатьОбъект().
Это понятно. Я же создал этот самый Спр. В первом сообщении моя первая строка кода.
Про ТекущийЭлемент() и позиционированние...
Ребят. Я понимаю, что ничего не понимаю. Может есть (на Мисте) или еще где подходящий кусок готового кода похожего. Чтобы я мог ткнуться носом и посмотреть как правильно там это реализованно.
2 ошибки: то Значение не представляет агрегатный объект
то не выбран элемент.
Уже запарился.
DbIM Написал:
-------------------------------------------------------
> 1) Спр=СоздатьОбъект("Справочник.Клиенты");
> 2) Организация.замена=датадок;
> 3) Спр.Записать();
что такое Организация? и если Организация - реквизит справочника Клиенты, то какой у этого реквизита тип?
-------------------------------------------------------
> 1) Спр=СоздатьОбъект("Справочник.Клиенты");
> 2) Организация.замена=датадок;
> 3) Спр.Записать();
что такое Организация? и если Организация - реквизит справочника Клиенты, то какой у этого реквизита тип?
Процедура ПриОткрытии()
Причина.ДобавитьЗначение("Замена ЭКЛЗ");
КонецПроцедуры
Процедура Заполнить()
Спр=СоздатьОбъект("Справочник.Клиенты");
НоваяСтрока();
Строк=Причина.ТекущаяСтрока();
Прич=Причина.ПолучитьЗначение(Строк);
если Прич=("Замена ЭКЛЗ") тогда
Если Спр.НайтиЭлемент(Организация)=0 Тогда
Возврат;
КонецЕсли;
Организация.замена=датадок;
Спр.Записать();
конецесли;
T=СоздатьОбъект("Таблица");
Т.ИсходнаяТаблица("Таблица");
Т.ВывестиСекцию("Секция_1");
Т.Показать();
КонецПроцедуры
Последний Рабочий вариант.
Выводит таблицу. Скажем если указать какую-нить переменную и присвоить ей значение Организация.замена и вывести ее на таблицу то будет видно что замэкл теперь содержит текущую дату. Однако эта дата все равно пока в справочник не записалась.
До этого с вариантами
Спр.Замена=ДатаДок;
Спр.Записать();
Ругалась и выдавала ошибку:
Поле агрегатного объекта не обнаружено (Замена)
Повторюсь.
В Справочнике Клиенты есть поле Замена с типом Дата.
В документе выбираю организацию из этого справочника и хочу присвоить (и сохранить) текущую дату в этом поле у выбранной организации.
Виноват если очень громоздко.
Причина.ДобавитьЗначение("Замена ЭКЛЗ");
КонецПроцедуры
Процедура Заполнить()
Спр=СоздатьОбъект("Справочник.Клиенты");
НоваяСтрока();
Строк=Причина.ТекущаяСтрока();
Прич=Причина.ПолучитьЗначение(Строк);
если Прич=("Замена ЭКЛЗ") тогда
Если Спр.НайтиЭлемент(Организация)=0 Тогда
Возврат;
КонецЕсли;
Организация.замена=датадок;
Спр.Записать();
конецесли;
T=СоздатьОбъект("Таблица");
Т.ИсходнаяТаблица("Таблица");
Т.ВывестиСекцию("Секция_1");
Т.Показать();
КонецПроцедуры
Последний Рабочий вариант.
Выводит таблицу. Скажем если указать какую-нить переменную и присвоить ей значение Организация.замена и вывести ее на таблицу то будет видно что замэкл теперь содержит текущую дату. Однако эта дата все равно пока в справочник не записалась.
До этого с вариантами
Спр.Замена=ДатаДок;
Спр.Записать();
Ругалась и выдавала ошибку:
Поле агрегатного объекта не обнаружено (Замена)
Повторюсь.
В Справочнике Клиенты есть поле Замена с типом Дата.
В документе выбираю организацию из этого справочника и хочу присвоить (и сохранить) текущую дату в этом поле у выбранной организации.
Виноват если очень громоздко.
Сhe Burashka Написал:
-------------------------------------------------------
> спр = создатьобъект("справочник.номенклатура");
> спр.найтипореквизиту("Артикул",Артикул,1);
> Сообщить(Спр.Наименование); //работает!
> Спр.Записать();
> Сообщить(Спр.Наименование); //не работает!!!,
> элемент не выбран
//*******************************************
Процедура Сформировать()
cпр = создатьобъект("справочник.номенклатура");
cпр.найтипореквизиту("Артикул",Артикул,1);
Сообщить(cпр.Наименование); //работает!
cпр.Записать();
cпр.найтипореквизиту("Артикул",Артикул,1);
Сообщить(cпр.Наименование); //не работает!!!, элемент не выбран\
КонецПроцедуры
После записи он переходит с элемента справочника :) Я лично Записать всегда в конце документа делаю :)
-------------------------------------------------------
> спр = создатьобъект("справочник.номенклатура");
> спр.найтипореквизиту("Артикул",Артикул,1);
> Сообщить(Спр.Наименование); //работает!
> Спр.Записать();
> Сообщить(Спр.Наименование); //не работает!!!,
> элемент не выбран
//*******************************************
Процедура Сформировать()
cпр = создатьобъект("справочник.номенклатура");
cпр.найтипореквизиту("Артикул",Артикул,1);
Сообщить(cпр.Наименование); //работает!
cпр.Записать();
cпр.найтипореквизиту("Артикул",Артикул,1);
Сообщить(cпр.Наименование); //не работает!!!, элемент не выбран\
КонецПроцедуры
После записи он переходит с элемента справочника :) Я лично Записать всегда в конце документа делаю :)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот