1с менеджер записи регистра сведений не записывает
Например, для того, чтобы в независимый регистр сведений ЗначенияСвойствОбъектов с измерениями Объект, Свойство и ресурсом Значение добавить одну запись, содержащую значение некоторого свойства выбранной номенклатуры, можно использовать следующий код:
В результате выполнения этого кода новая запись будет добавлена в регистр, или, если регистр уже содержит запись с выбранными значениями измерений Объект и Свойство, - существующая запись будет заменена новой.
Если требуется добавить несколько записей в регистр сведений, можно использовать объект РегистрСведенийНаборЗаписей..
Например, для того, чтобы в тот же самый регистр сведений ЗначенияСвойствОбъектов добавить несколько записей о значениях различных свойств выбранной номенклатуры, можно использовать следующий код (предполагается, что свойства и соответствующие им значения находятся в таблице значений ТаблицаСвойств, сформированной заранее):
Код 1C v 8.х
В результате выполнения этого кода новые записи будут добавлены в регистр, или, если регистр уже содержит записи с указанным значением измерения Объект (по которому установлен отбор в наборе записей), - существующие записи будут заменены новыми.
Похожие FAQ
Еще в этой же категории
Как изменить запись регистра сведений? 36
НаборЗаписей = РегистрыСведений.НумерацияДоговоров.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Период.Установить(НачалоГода(Дата)); НаборЗаписей.Отбор.Организация.Установить(Организация); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество Как добавить запись в периодический независимый регистр сведений? 16
// Добавление записей в периодический независимый регистр сведений НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Валюта.Установить(ТекущаяВалюта); НаборЗаписей.Отбор.Период.Установить(ТекущаяДата); НовЗапис Как добавить записи в непериодический независимый регистр сведений? 13
НаборЗаписей = РегистрыСведений.ЗначенияСвойств.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапи Открыть запись регистра сведений по ключу. 10
// Создание структуры значений СтруктураФормы = Новый Структура; СтруктураФормы.Вставить(" Пользователь" , Пользователь); СтруктураФормы.Вставить(" Настройка" , Элемент.ТекущаяСтрока); // Почему-то нужно создавать запись через массив (по друго Как выбрать записи из регистра сведений? 9
//ВНИМАНИЕ . // В качестве полей для отбора могут задаваться измерения или реквизиты, для которых // в конфигураторе признак индексирования установлен в значение " Индексировать" или // установлен признак " Ведущее" . Вид сравнения может бы Посмотреть все в категории Регистры сведений
В этой статье мы научимся программно работать с регистром сведений, используя объект Менеджер записи регистра сведений.
Перед тем как начать основную тему замечу: для того чтобы программно работать непосредственно с регистром сведений: создать новую запись, удалить или редактировать имеющуюся, получать выборку или срез первых (последних) и т.п., — необходимо работать с объектом Менеджер регистров, а после уже можно проводить различные вышеперечисленные манипуляции с регистром сведений.
Создать менеджер регистра сведений достаточно просто, например:
Хочу заметить, что работать с менеджером регистра сведений можно или в толстом клиенте, или в серверном контексте. В тонком клиенте код, написанный в этой статье работать не будет!
Для того, чтобы программным способом создать, редактировать или удалить конкретную запись независимого регистра сведений, необходимо использовать объект РегистрСведенийМенеджерЗаписи. С помощью данного объекта можно получить доступ к записи с необходимым набором полей. Создается менеджер записи с помощью функции менеджера регистров СоздатьМенеджерЗаписи.
Переменная МенеджерЗаписи, которую мы создали, имеет тип РегистрСведенийМенеджерЗаписи, этот тип предназначен для чтения, редактирования и удаления конкретной записи. Мы можем обращаться к измерениям, ресурсам и реквизитам регистра сведений как к свойствам данного объекта. Заполним созданную запись.
Объект РегистрСведенийМенеджерЗаписи позволяет управлять записью регистра сведений и применим только для независимых регистров. Доступ к записи обеспечивается путем присвоения значений полям объекта, которые соответствуют измерениям, ресурсам и реквизитам регистра. В Вашем примере это измерения Период, ВидТоплива и Поставщик, а также ресурс Цена.
Переменные, которые присваиваются полям регистра в моем случае это реквизиты управляемой формы 1С.
Относительно периода замечу, что платформа самостоятельно изменит текущую дату на дату начала периода, который установлен в свойстве периодичность регистра сведений (если периодичность месяц, а в период передана дата 21.12.2017, то запишется 01.12.2017).
В данном примере я не выясняю, есть ли уже запись с заданным набором ключевых полей (измерений), а просто записываю ее, поэтому если такая запись уже есть, то она перезапишется.
Как сделать так, чтобы регистр ЦеныНаТопливо не перезаписывался при одинаковых измерениях и периоде? Для этого нам понадобятся два метода объекта РегистрСведенийМенеджерЗаписи — метод Прочитать и метод Выбран.
Метод Прочитать считывает данные регистра по указанным измерениям и периоду, а метод Выбран возвращает Истину, если есть запись с указанными полями, и Ложь, если такой нет.
В этом случае наш код изменится.
В этом случае мы присваиваем значения ключевым полям (измерениям) и периоду. А после применяем метод Прочитать. Данный метод считывает записи с регистра по указанным ключевым полям (измерениям) и периоду. Если есть записи с данным набором полей, то метод Выбран возвращает Истину, иначе – Ложь. В Вашем примере, если метод Выбран вернул значение Ложь (записей нет), то мы присваиваем значения измерениям и ресурсу и записываем.
Если же нам нужно будет удалить запись с заданным набором измерений, то код немного поменяется.
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Разберем один из объектов, при помощи которого можно записывать данные в регистр сведений 1С. Набор записей регистра сведений. Если при помощи менеджера записей регистра сведений мы могли работать в регистре только с одной записью, то при помощи набора можно создавать (удалять, редактировать) любое количество записей.
Для создания набора записи регистра сведений необходимо использовать метод СоздатьНаборЗаписей менеджера регистра сведений.
МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();
После выполнения данного метода будет создан набор записей регистра сведений, т.е. переменная НаборЗаписей кода выше имеет тип РегистрСведенийНаборЗаписей.ЦеныНаТопливо. Причем он будет создан абсолютно пустым!
Заметьте, набор записей можно создать или в серверном контексте, или в клиентском контексте, но в режиме толстого клиента. Под тонким клиентом, код приведенный в этой статье работать не будет!
Вы можете работать с этим набором записей как с коллекцией: добавлять, удалять запись, очищать всю коллекцию. Причем, метод СоздатьНаборЗаписей создает пустой набор записей. В нашей переменной НаборЗаписей нет ни каких данных, даже если они имеются сейчас в регистре. И если мы запишем этот набор, то все данные, которые есть у нас в регистре будет уничтожены. Т.е. код ниже приведет к полной очистке моего регистра сведений.
МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();
Записать() – это метод объекта набор записей регистра сведений, которые записывает данные из созданного набора непосредственно в регистр сведений. Причем данный метод имеет параметр Замещать типа Булево, который по умолчанию всегда равен Истине. Если данный параметр принимает значение Истина, то после записи набор записей из созданного объекта заместит данные в регистре сведений. Поскольку мы не создали ни какие данные (наш набор пуст), то у нас просто все текущие записи в регистре сведений удалятся. Если мы не хотим этого, то нужно просто в параметр Замещать передать Ложь.
МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();
НаборЗаписей . Записать (Ложь);
В этом случае записи (которых нет) из набора не заместят записи из регистра, и данные не очистятся.
Если мы хотим создать новую запись, то необходимо воспользоваться методом Добавить() набора записей регистра сведений, который создает новую запись в нашем наборе.
МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();
НоваяЗапись = НаборЗаписей . Добавить ();
НоваяЗапись . Период = ТекущаяДата ();
НоваяЗапись . ВидТоплива = ВидТоплива ;
НоваяЗапись . ПоставщикТоплива = ПоставщикТоплива ;
НоваяЗапись . Цена = Цена ;
НаборЗаписей . Записать (Ложь);
Данный код создаст новую запись. В своем коде я работаю с регистром сведений, который создал для предыдущих статей.
Если мы попытаемся еще раз записать точно такой же набор данных, то возникнет ошибка «Запись с такими ключевыми полями существует!»
Причем такой проблемы ни когда не будет при работе с менеджером регистра сведений, так как при работе с менеджером мы получаем данные по измерениям и просто перезаписываем ресурсы и реквизиты.
И обратите внимание, если мы будет записывать с замещением, то проблем с ключевыми полями также не будет, поскольку мы своей записью заместим все имеющиеся данные, т.е. они будут очищены.
При помощи объекта набор записей можно записать в регистр практически неограниченное количество записей. Например, я сделаю выборку по поставщикам топлива и в цикле создам записи нашего набора.
МенеджерЦеныНаТопливо = РегистрыСведений . ЦеныНаТопливо ;
НаборЗаписей = МенеджерЦеныНаТопливо . СоздатьНаборЗаписей ();
Выборка = Справочники . ПоставщикиТоплива . Выбрать ();
Пока Выборка . Следующий () Цикл
НоваяЗапись = НаборЗаписей . Добавить ();
НоваяЗапись . Период = ТекущаяДата ();
НоваяЗапись . ВидТоплива = ВидТоплива ;
НоваяЗапись . ПоставщикТоплива = Выборка . Ссылка ;
НоваяЗапись . Цена = Цена ;
КонецЦикла;
НаборЗаписей . Записать (Ложь);
В этом коде мы создадим несколько записей набора, а потом запишем весь наш набор в регистр сведений.
Изучайте основы конфигурирования в 1С и учитесь программировать в «1С: Предприятии» с помощью моих книг: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучайте программирование в 1С в месте с моей книги «Программировать в 1С за 11 шагов»
- Книга написана понятным и простым языком — для новичка.
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Научитесь понимать архитектуру 1С;
- Станете писать код на языке 1С;
- Освоите основные приемы программирования;
- Закрепите полученные знания при помощи задачника;
Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.
- Очень доступный и понятный язык изложения
- Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
- Поймете идеологию управляемого приложения 1С
- Узнаете, как разрабатывать управляемое приложение;
- Научитесь разрабатывать управляемые формы 1С;
- Сможете работать с основными и нужными элементами управляемых форм
- Программирование под управляемым приложением станет понятным
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
Пример с использованием набора записей и менеджера записи:
А вот пример через менеджер записи:
Похожие FAQ
17 правил для составления оптимального ЗАПРОСа к данным базы 1С 44
Для формирования и выполнения запросов к таблицам базы данных в платформе 1С используется специальный объект языка программирования Запрос . Создается этот объект вызовом конструкции Новый Запрос . Запрос удобно использовать, когда требуется получ ZIP-архив Создание 0
Для того чтобы записать файлы в ZIP-архив необходимо выполнить несколько простых действий: * Создать архив с необходимыми параметрами, в который будут помещаться файлы. * Поместить в архив необходимые файлы. * Записать архив. Создание объекта За Автоматизация обмена данных используя обработку "Универсальный обмен данными в формате XML" 10
Автоматизация обмена между базами используя обработку " Универсальный обмен данными в формате XML" В основу данной публикации положены найденные мною материалы по cозданию обмена между двумя базами с использованием обработки " Универсальный обме Автоматическая выгрузка загрузка данных используя регламентное задание 12
Для обмена данными между программами необходимо сделать следующее: 1. При помощи Конвертации Данных создать правила выгрузки данных 2. Нужно чтобы в конфигурации была обработка УниверсальныйОбменДаннымиXML , желательно последней версии! (При помо Библиотека кода: Сравнить две таблицы значений 0
//Сравнивает две таблицы значений // Функция ТаблицыЗначенийРавны(ТаблицаЗначений1, ТаблицаЗначений2) Экспорт Если ТипЗнч(ТаблицаЗначений1) Тип("ТаблицаЗначений") ИЛИ ТипЗнч(ТаблицаЗначений2) Тип("ТаблицаЗначений") Тогда Возв Посмотреть все результаты поиска похожих
Еще в этой же категории
Как изменить запись регистра сведений? 36
НаборЗаписей = РегистрыСведений.НумерацияДоговоров.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Период.Установить(НачалоГода(Дата)); НаборЗаписей.Отбор.Организация.Установить(Организация); НаборЗаписей.Прочитать(); Если НаборЗаписей.Количество Как добавить запись в периодический независимый регистр сведений? 16
// Добавление записей в периодический независимый регистр сведений НаборЗаписей = РегистрыСведений.КурсыВалют.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Валюта.Установить(ТекущаяВалюта); НаборЗаписей.Отбор.Период.Установить(ТекущаяДата); НовЗапис Как добавить записи в непериодический независимый регистр сведений? 13
НаборЗаписей = РегистрыСведений.ЗначенияСвойств.СоздатьНаборЗаписей(); НаборЗаписей.Отбор.Номенклатура.Установить(ТекущаяНоменклатура); НаборЗаписей.Отбор.Свойство.Установить(ТекущееСвойство); НоваяЗапись = НаборЗаписей.Добавить(); НоваяЗапи Как добавить записи в независимый регистр сведений? 11
Для добавления отдельной записи в регистр сведений, не подчиненный регистратору, можно использовать объект РегистрСведенийМенеджерЗаписи. имя . Например, для того, чтобы в независимый регистр сведений ЗначенияСвойствОбъектов с измерениями Объект, Как выбрать записи из регистра сведений? 9
//ВНИМАНИЕ . // В качестве полей для отбора могут задаваться измерения или реквизиты, для которых // в конфигураторе признак индексирования установлен в значение " Индексировать" или // установлен признак " Ведущее" . Вид сравнения может бы Посмотреть все в категории Регистры сведений
Какие измерения в регистре?
Ну и еще должно быть Движение.Записать(Ложь), чтобы не замещались предыдущие записи
что то я не понял. Сделал Движение.Записать(Ложь); и добавил в Процедура ПриЗаписи(Отказ) выдает ошибку что запись с такими полями уже существует и не сохраняет
Изменения Реквизита Статус. По задумки статус может постоянной менять, при изменении статуса создается новый регистр с новой датой
Вам нужно еще одно измерение, скорее всего ДатаСтатуса
Не новый регистр, а новая запись регистра
В регистре не может быть две записи с одинаковыми измерениями
я создал новое измерение ДатаСтатуса
Вот я добавил в процедуру
Когда я меняю статус, создает регистр Номер строки 2, где меняется Дата статуса, а сам статус принимает одинаковое значение в Номере строки 1 и 2, по задумки Статус должен быть разный.
Выдает ошибку: Ошибка при вызове метода контекста (Записать)
Движение.Записать(Ложь);
по причине:
Запись с такими ключевыми полями существует! : СтатусЗаявокЕдиноеОкно: 12.10.2015 0:00:00, Заявка единое окно 000000003 от 12.10.2015 0:00:00, 12.10.2015 0:00:00, Заявка единое окно 000000003 от 12.10.2015 0:00:00, 102 100 012, Ремонт плиты, фыфафа, 12.10.2015 0:00:00 (Регистр сведений: Статус заявок единое окно; Номер строки: 3)
Вы отладчиком посмотрите, в какой момент статус меняется
А период разный почему у записей? Может его нужно как дата документа устанавливать, а не тек дата?
Период исправил на дату документа, почему больше двух не создается?
Больше двух чего? и в какой момент?
На счет почему меняется Статус во всех записях регистра мне не понятно, может что то не так я в коде сделал
и второй код когда я записываю в регистр сведений
Больше двух записей в регистре сведений не создается, а задумка должна создаваться запись в регистре сведений при изменении статуса, тем самым записей может быть около 5
Статус добавлен в регистр сведений в Ресурсы, может я тут что то не правильно сделал?
Да с ресурсом это нормально.
Уберите из обработки проведения код для этого регистра
Убрал код из обработки проведения, но новую запись по прежнему не создает, теперь переписывает существующую запись.
Я исправил на Движение.Записать(Ложь);, и все равно переписывает.
Убрав код обработки проведения при создании нового документа не записывает в регистр
Скрин сделайте развернутого регистра
Так вроде все норм
Только лишние данные: заявка - это регистратор, ДатаЗаявки - это период, можно убрать лишние измерения
Вы ПриЗаписи проследите отладчиком, что с набором записей происходит, чего гадать-то.
Начиная от Прочитать - что в него попало, потом добавили - каким стал набор, потом записался - еще раз шифтф9 нажмите, там же будет видно
Либо у вас еще где-то регистр пишется - может у регистра в модуле менеджера или подписки на события, вариантов еще тьма, на самом деле
Я так понимаю код у меня правильный для создания новой записи регистра при изменении Статуса?
Я так понимаю чтобы мой код работал нужно Записать(Ложь);
У вас все там правильно, и с истиной должно все работать, потому что вы добавляете запись к набору
я решил по пробовать другим способом, я сделал регистр Независимым, создал форму в нем. Прописал код при изменении Статус
Когда изменяю статус создается новая запись в регистре, когда сохраняю регистр, то все созданные ранее записи переписывают значение Статуса на последнее, как запретить переписывать значение у ранее созданных записей?
Давай cf, так хз
Тот, где еще набор записей был
В обработке проведения у вас там пипец просто. я ж вам говорю, уберите все из нее, что касается регистра
Вы там чего сделать пытаетесь? При записи в форме у вас уже пишется этот регистр, причем независимый. какие там могут быть еще движения?
Я же писал выше что переделал регистр сведений. В документе я наворотил спору нет. Подскажите как правильно сделать
Убирайте из обработки проведения все, в форме пусть пишется ПриЗаписи, там же все правильно сделано
Убрал все из обработки проведения, документ создает при помощи обработки. Теперь когда создаю документ в регистр запись не создается.
Не создает новые записи а переписывает существующую
Нужно вернуть подчинение регистратору для РС
В модуле формы все убрать - оставить только это (записи будут при каждом изменении статуса документа)
В модуле объекта все проверьте, чтобы этот регистр нигде не упоминался
Сделал как написали. При создании документа в РС запись не создалась, при изменении статуса создается запись в РС, когда сохраняю документ запись в РС удаляется.
Процедура ПриЗаписи в модуле объекта, пишется там регистр?
Процедура ОбработкаПроведения, пишется там регистр?
Вам зачем при записи документа в регистр писать? вы при изменении статуса все пишете
А при создании какой у него статус должен быть? в этом случае можно проверить, при изменении, если набор записей пустой, тогда добавить первую запись в набор с нужным вам статусом для нового документа
Ну или при открытии формы, если ЭтоНовый, вызовите процедуру при изменении
Процедура ПриЗаписи в модуле объекта, пишется там регистр? НЕТ, ВСЕ УДАЛИЛ
Процедура ОбработкаПроведения, пишется там регистр? ННЕТ, ВСЕ УДАЛИЛ
ПриЗаписи в форме?
Что то я запутался. Почему он не создает при каждом изменении статуса новую запись в РС
ПриЗаписи в форме ВСЕ УДАЛИЛ
Свойство документа "Удаление движений" поставьте - "Не удалять"
Это где находится Свойство документа "Удаление движений"
Встаете на документе в дереве конфигурации и Alt+Enter
Я как сделать теперь чтобы при создании документа появлялась запись, а то процедура обработка проведения на данный РС нет кода
При создании она не появится, нужно записывать документ сначала, чтобы ссылка у регистратора была
Можно поставить проверку при изменении статуса - если это новый - тогда отказ - уведомить пользователя и попросить записать документ
Когда он записан, при изменении статуса ссылка уже есть, и проверить: если набор записей пустой, тогда писать запись со статусом из Ссылка.Статус, а потом уже тот код выполняется, который есть, т.е. просто добавляется запись в набор
Можете показать на примере как уведомить пользователя и попросить записать документ
Но не работает, почему?
Движения без регистра вы не запишете, а вы как раз и пытаетесь это сделать, пока документ новый, у него нет ссылки и соответственно нет регистратора
Из обработки проведения убирайте это все дело
Вот эту строку после условия нужно поставить, это тот код, который и был у вас уже
Остальнгое, также как и для других записей
Это получается не корректно, так как Дата статуса будет одинакова, что у Открытого что у Выполненного статуса, а мне надо отследить дату открытого статуса и дату когда выполнился статус
Ну сделайте переменную в модуле, которая запомнит момент создания документа
Дак у меня переменная дата статуса, и что вы имеете ввиду.
Как мне эту переменную запись в регистр, мне что то не понятно чем отличается переменная от даты статуса?
Переменных может быть очень много. Вот что я имел ввиду:
В форме событие, например, перед открытием:
Потом, в том месте при изменении статуса в условии, где проверили на количество записей в РС, вам нужно у добавленной записи ДатаСтатуса = ДатаСозданияДокумента, а не ТекДата
Спасибо большое! Все получилось
При тестировании появились вопросы, подскажите как быть, сейчас при изменении Статуса в каждый раз добавляется РС, но это не правильно, в РС должен добавляться запись если изменили Статус и сохранили или записали документ. Вот мне не понятно как это сделать. Я сделал в процедуре ОбработкаПроведения
Код 1C v 8.х Код 1C v 8.х
Но тут не проверяется изменился статус или нет, постоянно создает запись если сохранять документ а мне надо если статус изменился и сохранил документ то создалась запись в РС
Нужно сравнить Статус и Ссылка.Статус
А как это сделать, можете подсказать начала а дальше я сам
Начало уже давно у вас есть. тут вопрос в конце
Зачем вот это: Если Движение.Количество() > 0 Тогда ?
Вы теперь только в обработке проведения пишете? или также при изменении? Что происходит с регистром сейчас при проведении? Сохраняется история изменения статусов или нет?
А условие будет Если Статус <> Ссылка.Статус Тогда Делаете запись в регистр КонецЕсли
Сейчас история сохраняется при каждом сохранении документа и если документ новый то сохраняет с ДатаСозданияДок
Мне не понятно как сделать если я изменяю Статус и сохраняю документ то появляется новая запись в РС
А при изменении не появляется?
Я отключил при изменении статуса, так как при каждом изменении статуса создается новая запись в РС хотя документ еще не сохранен, вот такой код бы
Но мне нужно код статус изменили и сохранили документ, после этого появилась запись в РС, а не при каждом изменении статуса как сейчас
Тогда этот код нужно поместить при записи, и перед началом этого кода добавить условие Если Статус <> Ссылка.Статус Тогда
Вообще не создает новую запись в РС при изменении статуса
В отладчике посмотрел это условие Статус <> Ссылка.Статус не срабатывает
А вы меняете статус?
да, конечно меняю
Статус и Ссылка.Статус принимает одинаковое значение
Ссори. перед записью, в при записи они уже совпадают, т.к. запись уже состоялась
Спасибо большое! Работает
Пытаюсь сохранить значения табличного поля в РС, т.е если в ТП 2 строки с данными то в РС будет 2 записи, но у меня почему то записывает только первую строку, хотя стоит цикл, что не так
Первую только и будет, у вас условие на кол-во записей, добавляется запись только тогда, когда набор пустой.
Условие уберите или измените
Спасибо, все получилось!
Пишу условие такое, при изменении статуса в ТЧ на Отменено или Выполнено после чего статус документа принимает значение Выполнено. Сейчас я меняю статус в любой строке ТЧ сразу же меняется статус документа, но это не правильно
Не понимаю, что вам нужно.
Если неправильно, значит по-другому делайте
Не понятно почему статус документа меняется сразу же после изменения статус в одной из строки табличной части , нужно чтобы в табличной части изменил статус во всех строчках после чего изменился статус в документа
Потому что обработчик ТабОтветственныхСтатусПриИзменении на строке висит, вот и меняется
У вас цикл проверяет, если хотя бы для одной строки условие выполняется, тогда изменить статус документа
Если так нужно, тогда после изменения статуса в строке, нужно проверить, скорее всего на равенство его статусам в остальных строках и тогда уже менять статус документа
Можете на примере показать
Предлагаю статус документа и историю статусов хранить отдельно. Статус для списков, а историю, если понадобится для отчетов по срокам исполнения. У документа в конкретный момент времени может быть только один статус. Когда документов станет очень много, система офигеет перебирать по всей истории последнее значение.Вероятно, статус документа может поменять некий другой документ (например, регистрирующий факт исполнения заявки). В связи с этим регистратор не равно заявка.Измерения не ссылочного типа - зло, крадущее поля для индекса виртуальной таблицы. По этому дата смены статуса - период. И больше ни каких дат не надо.
Спасибо большое, все получилось
НЕ могу понять что случилось, почему не работает условие. Не записывает в РС когда добавляем новую строку в ТЧ ТабОтветственных
Читайте также: