Добрый день. Впал в ступор, прошу помощи. 1С ПУБ, релиз платформы последний официальный. Проблема. Есть Справочник.ТМЦ, у него есть список периодических реквизитов. Один из них АвторДокаУЦ, который ведет учет пользователей, которые меняли учетную цену товара. В процедуре ПриЗаписи() меняется значение реквизита АвторДокаУЦ на нужное значение, проверяю в конфигураторе и с помощью сообщить(АвторДокаУЦ). Высвечивается нужное мне значение. После выполнения процедуры ПриЗаписи() значение в периодический реквизит не записывается. В чем может быть проблема? Перед присвоением значения реквизиту используется метод ИспользоватьДату(). Остальные периодические реквизиты элемента записываюются без проблем...
Группа: Местный
Сообщений: 462
Из: Украина
Спасибо сказали: 151 раз
Рейтинг: 152.8
Talkman @ Сегодня, 16:39
,
Установить(<?>,); Синтаксис: Установить(<Дата>,<Значение>) Назначение: Установить значение периодического реквизита справочника на заданную дату. Параметры: <Дата> - выражение со значением требуемой даты; <Значение> - выражение, содержащее устанавливаемое значение периодического реквизита справочника. Замечание: Метод можно использовать только для периодических реквизитов справочника и если для справочника еще не применялся метод ИспользоватьДату. Метод можно использовать только для объектов-справочников, созданных функцией СоздатьОбъект.
denis84 @ Сегодня, 16:58
, В элементе справочника используется метод ИспользоватьДату(). В моем случае метод Установить() не применяется, применяется прямое присвоение. ИспользоватьДату(<?>,); Синтаксис: ИспользоватьДату(<Дата>,<УстСразу>) Назначение: Установить дату выборки периодических реквизитов справочника. Возвращает: Текущее значение используемой даты (на момент до исполнения метода). Параметры: <Дата> - значение типа дата. <УстСразу> - необязательный параметр. Число: если 1, то дата, переданная в качестве параметра, будет установлена уже в текущей выборке; если 0 - то дата, переданная в качестве параметра, будет установлена при следующем открытии выборки. Значение по умолчанию - 0. . Замечание: Если к объекту применен метод ИспользоватьДату, то нельзя применять к этому же объекту метод Получить. Метод нельзя использовать через две точки.
Sharzem @ Вчера, 19:57
, Чесно кажучі вона мене вже дістала та сімка. Доречі, проблема вирішилася за допомогою СоздатьОбъект("Периодический") і додаванням нового запису для АвторДокаАЦ на необхідну дату. Я застопорився в тому, що всі інші періодичні реквізити зберігаються, а цей ні.
Группа: Местный
Сообщений: 462
Из: Украина
Спасибо сказали: 151 раз
Рейтинг: 152.8
denis84 @ Вчера, 16:58
, У меня была такая задача - необходимо было изменить цену (периодический реквизит) ТМЦ. На форме выбрал группу ТМЦ и значение цен,которая была и которая станет и для всех элементов изменить цену:
//******************************************* Процедура Сформировать() СпрТМЦ = СоздатьОбъект("Справочник.ТМЦ"); СпрТМЦ.ИспользоватьРодителя(ВыбТМЦ); СпрТМЦ.ВыбратьЭлементы(); Пока СпрТМЦ.ПолучитьЭлемент()>0 Цикл Если СпрТМЦ.ЭтоГруппа()=0 Тогда СпрТМЦ.УчетнаяЦена.Получить(ТекущаяДата()); Состояние("Обработано"+СпрТМЦ.Код); П = СоздатьОбъект("Периодический"); П.ИспользоватьОбъект("УчетнаяЦена",СпрТМЦ.ТекущийЭлемент()); П.ВыбратьЗначения(); Пока П.ПолучитьЗначение()=1 Цикл Цена = СпрТМЦ.УчетнаяЦена.Получить(ДатаРек); Если Цена = ЦенаБыло Тогда СпрТМЦ.УчетнаяЦена.Установить(ДатаРек,ЦенаСтало); КонецЕсли; СпрТМЦ.Записать(); КонецЦикла; КонецЕсли; КонецЦикла; КонецПроцедуры
denis84 @ Сегодня, 8:23
, Я может не дописал описание ситуации. Элемент справочника сохранятся должен интерактивно, то есть через форму элемента справочника. С обработками все предельно понятно. Затык был в том, что при сохранении элемента справочника все периодические реквизиты, значения которых менялись, записывались правильно, кроме одного. Я так и не понял, почему АвторДокаУЦ не записывался со всеми другими реквизитами, хотя его значение на последней строчке процедуры ПриЗаписи() было верное. Тип "Периодический" помог, но лично я считаю это костылем. Но работает же, и фиг с ним.
Группа: Местный
Сообщений: 299
Спасибо сказали: 98 раз
Рейтинг: 99.1
Цитата(Talkman @ 23.11.21, 9:47)
Я так и не понял, почему АвторДокаУЦ не записывался со всеми другими реквизитами
А можна процедуру ПриЗаписи() в студію? Чесно, я не зрозумів проблеми. Може Ви, маєте на увазі підпорядковані елементи? Періодичні реквізити так і працюють як Ви вважаєте "костилем". Як я бачу те, що Ви намагаєтеся подолати: Варіант 1: Хочете бачити які реквізити довідника змінені Автором (в цьому випадку, потрібен окремий довідик куди писати що мінялося, коли мінялося і ким.) Варіант 2: Хочете бачити хто останній вніс корективи в довідник (в даному випадку періодичність) Варіант 3: В темі цієї статті згадуєте різні елементи довідника "АвторДокаУЦ" та "АвторДокаАЦ" можливо випадково наплутали ?
Може варто все розпочати з початку ? Або змиритися з "Но работает же, и фиг с ним", тоді мета досягнута, вибачте що потурбував...
То, что для одного человека константа, для другого - переменная. (Алан.Дж.Перлис)
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!