Друзья, снова небольшой вопрос -
в форме документа есть реквизит "ПериодНачисления", тип - строка, РежимВыбораИзСпика включен, изначально список выбора пустой, заполняется программно -
на событие "НачалоВыбора" присвоена процедура:
При создании документа список формируется, элементы списка выбираются и при проведении их значения записываются в соответствующие поля регистра накопления.
Но, если снова открываешь уже проведенный документ - значение из списка выбора пустое.(
Как с этим бороться?(
в форме документа есть реквизит "ПериодНачисления", тип - строка, РежимВыбораИзСпика включен, изначально список выбора пустой, заполняется программно -
на событие "НачалоВыбора" присвоена процедура:
Процедура ПериодНачисленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекГод=Формат(Число(ГОД(Объект.Дата)),"ЧГ=0");
Элемент.СписокВыбора.Добавить("Январь "+ТекГод);
Элемент.СписокВыбора.Добавить("Февраль "+ТекГод);
Элемент.СписокВыбора.Добавить("Март "+ТекГод);
Элемент.СписокВыбора.Добавить("Апрель "+ТекГод);
Элемент.СписокВыбора.Добавить("Май "+ТекГод);
Элемент.СписокВыбора.Добавить("Июнь "+ТекГод);
Элемент.СписокВыбора.Добавить("Июль "+ТекГод);
Элемент.СписокВыбора.Добавить("Август "+ТекГод);
Элемент.СписокВыбора.Добавить("Сентябрь "+ТекГод);
Элемент.СписокВыбора.Добавить("Октябрь "+ТекГод);
Элемент.СписокВыбора.Добавить("Ноябрь "+ТекГод);
Элемент.СписокВыбора.Добавить("Декабрь "+ТекГод);
КонецПроцедуры
ПоказатьПри создании документа список формируется, элементы списка выбираются и при проведении их значения записываются в соответствующие поля регистра накопления.
Но, если снова открываешь уже проведенный документ - значение из списка выбора пустое.(
Как с этим бороться?(
По теме из базы знаний
- Обработка выборки документов и выборочное перепроведение по видам движений для 1С-Предприятие-7.7
- Звоним из «1С». Универсальный софтфон для стандартных конфигураций «1С» с открытым кодом для платформ 8.2, 8.3 для Asterisk и не только.
- Как скрыть "пустые" группы справочника при открытии формы выбора? (только для УФ)
- Универсальная пакетная печать документов / справочников для типовых конфигураций 1С 8.2 - 8.3
- Памятка работ по задаче 1С
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
у меня так и есть, это реквизит док-та, который я добавил на форму документа:
Если реквизит только на форме, то он так и будет сбрасываться ему просто некуда сохранить значения Тебе надо в сам документ добавить новый реквизит, и этот реквизит перетащить на форму.
у меня так и есть, это реквизит док-та, который я добавил на форму документа:

(4)
больше процедур с этим реквизитом нет, только Процедура ПериодНачисленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка).
Возможно, что реквизит ничего не записывает, поскольку значения списка выбора формируются только при событии "НачалоВыбора".
И При создании формы на сервере никаких значений в принципе нет.
добавил процедуру для формы:
посмотрим, что будет.)
больше процедур с этим реквизитом нет, только Процедура ПериодНачисленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка).
Возможно, что реквизит ничего не записывает, поскольку значения списка выбора формируются только при событии "НачалоВыбора".
И При создании формы на сервере никаких значений в принципе нет.
добавил процедуру для формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Элементы.ПериодНачисления.РежимВыбораИзСписка=Истина;
ТекГод=Формат(Число(ГОД(Объект.Дата)),"ЧГ=0");
Элементы.ПериодНачисления.СписокВыбора.Добавить("Январь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Февраль "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Март "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Апрель "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Май "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Июнь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Июль "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Август "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Сентябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Октябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Ноябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Декабрь "+ТекГод);
КонецПроцедуры
Показатьпосмотрим, что будет.)
(5) А реквизит то сохраняется, смотрели что находится в реквизите после записи документа. Но вообще идея сохранения периода в тексте не очень, как потом если нужно будет строить отчет данные отбирать и соединять с другими таблицами. В зупе например период регистраци хранят в виде даты, а на форме показывают как у вас в виде строки, но там пачка процедур которая отвечает за изменение даты и отдельная форма выбора периода.
(6)
мне тоже идея не слишком нравится,но с моим уровней скилзов по 1С это единственный вариант, который я могу пока реализовать.)
А реквизит то сохраняется, смотрели что находится в реквизите после записи документа. Но вообще идея сохранения периода в тексте не очень, как потом если нужно будет строить отчет данные отбирать и соединять с другими таблицами. В зупе например период регистраци хранят в виде даты, а на форме показывают как у вас в виде строки, но там пачка процедур которая отвечает за изменение даты и отдельная форма выбора периода.
мне тоже идея не слишком нравится,но с моим уровней скилзов по 1С это единственный вариант, который я могу пока реализовать.)
(12) Ну тогда сделайте отдельную процедуру, заполнения списка причем процедуру, сделайте на #НаКлиенте. Процедуру вызывайте при открытии формы, а не при создании. При изменение даты так же вызывайте эту процедуру, т.к. у вас может год измениться. Ну проверьте что у вас сохраняется в реквезите.
(5) Ты не правильно описал Список выбора!
Ты заполнил только значение, а представление кто будет описывать. У тебя представление пустое "" вот при следующем открытии он и пустой.
Надо так.
Но я бы лучше сделал по другому у Реквизита ТИП сделал бы Датой и формат ДФ='MMMM yyyy'
Ты заполнил только значение, а представление кто будет описывать. У тебя представление пустое "" вот при следующем открытии он и пустой.
Элемент.СписокВыбора.Добавить( ЗНАЧЕНИЕ , ПРЕДСТАВЛЕНИЕ );
Надо так.
Процедура ПериодНачисленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекГод=Формат(Число(ГОД(Объект.Дата)),"ЧГ=0");
Элемент.СписокВыбора.Добавить("Январь "+ТекГод, "Январь "+ТекГод);
Элемент.СписокВыбора.Добавить("Февраль "+ТекГод, "Февраль "+ТекГод);
Элемент.СписокВыбора.Добавить("Март "+ТекГод, "Март "+ТекГод);
........
КонецПроцедуры
ПоказатьНо я бы лучше сделал по другому у Реквизита ТИП сделал бы Датой и формат ДФ='MMMM yyyy'
Прикрепленные файлы:

(27)
и еще один парадокс.
ПериодНачисления есть в нескольких документах:
1. РегистрацияПремий
2.Выдача для распределения.
В обоих реквизит одинакового типа, размера, никаких отличий в свойствах.
При этом, Регистр накопления показывает значение периода начисления,
а Выдача для распределения - не показывает.
и еще один парадокс.
ПериодНачисления есть в нескольких документах:
1. РегистрацияПремий
2.Выдача для распределения.
В обоих реквизит одинакового типа, размера, никаких отличий в свойствах.
При этом, Регистр накопления показывает значение периода начисления,
а Выдача для распределения - не показывает.
(22)
вот ))
и все.)
настройка реквизита:
вот ))
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Объект.Статус=ПредопределенноеЗначение("Перечисление.СтатусыПланов.НаУтверждении");
Элементы.ПериодНачисления.РежимВыбораИзСписка=Истина;
ТекГод=Формат(Число(ГОД(Объект.Дата)),"ЧГ=0");
Элементы.ПериодНачисления.СписокВыбора.Добавить("Январь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Февраль "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Март "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Апрель "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Май "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Июнь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Июль "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Август "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Сентябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Октябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Ноябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Декабрь "+ТекГод);
КонецПроцедуры
&НаКлиенте
Процедура ПериодНачисленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ТекГод=Формат(Число(ГОД(Объект.Дата)),"ЧГ=0");
Элемент.СписокВыбора.Добавить("Январь "+ТекГод);
Элемент.СписокВыбора.Добавить("Февраль "+ТекГод);
Элемент.СписокВыбора.Добавить("Март "+ТекГод);
Элемент.СписокВыбора.Добавить("Апрель "+ТекГод);
Элемент.СписокВыбора.Добавить("Май "+ТекГод);
Элемент.СписокВыбора.Добавить("Июнь "+ТекГод);
Элемент.СписокВыбора.Добавить("Июль "+ТекГод);
Элемент.СписокВыбора.Добавить("Август "+ТекГод);
Элемент.СписокВыбора.Добавить("Сентябрь "+ТекГод);
Элемент.СписокВыбора.Добавить("Октябрь "+ТекГод);
Элемент.СписокВыбора.Добавить("Ноябрь "+ТекГод);
Элемент.СписокВыбора.Добавить("Декабрь "+ТекГод);
КонецПроцедуры
Показатьи все.)
настройка реквизита:

(23)
Все в помойку надо так:
И в свойствах формы Оставить только ПРИ ОТКРЫТИИ
Все в помойку надо так:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Объект.Статус=ПредопределенноеЗначение("Перечисление.СтатусыПланов.НаУтверждении");
ТекГод=Формат(Число(ГОД(Объект.Дата)),"ЧГ=0");
Элементы.ПериодНачисления.СписокВыбора.Добавить("Январь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Февраль "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Март "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Апрель "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Май "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Июнь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Июль "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Август "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Сентябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Октябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Ноябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Декабрь "+ТекГод);
КонецПроцедуры
ПоказатьИ в свойствах формы Оставить только ПРИ ОТКРЫТИИ
Прикрепленные файлы:

(24)
пробую примерно так-же сейчас на новом тестовом документе:
сохраняю-провожу закрываю. В форме списка вроде ок. Но открываю документ - и снова пусто.)))))
какой-то шайтан прямо.)
пробую примерно так-же сейчас на новом тестовом документе:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Элементы.ПериодНачисления.РежимВыбораИзСписка=Истина;
ТекГод=Формат(Число(ГОД(Объект.Дата)),"ЧГ=0");
Элементы.ПериодНачисления.СписокВыбора.Добавить("Январь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Февраль "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Март "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Апрель "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Май "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Июнь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Июль "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Август "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Сентябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Октябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Ноябрь "+ТекГод);
Элементы.ПериодНачисления.СписокВыбора.Добавить("Декабрь "+ТекГод);
КонецПроцедуры
Показатьсохраняю-провожу закрываю. В форме списка вроде ок. Но открываю документ - и снова пусто.)))))

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