|
Добавление данных | ☑ | ||
---|---|---|---|---|
0
JijiJie
21.06.24
✎
10:53
|
Недавно начал изучать 1С и вот возникла проблема.
Дано: Есть документ с табличной частью и ДатойНачала (дата, устанавливаемая пользователем) и справочник. При создании документа табличная часть формируется автоматически - в неё добавляются все данные из справочника. Добавлять новые данные в табличную часть самостоятельно нельзя. Задача: Нужно, чтобы при добавлении в справочник нового значения, во все документы, ДатаНачала которых больше даты добавления записи в справочник, в табличную часть добавлялась новая запись - с новой информацией из справочника Краткий порядок действий: Добавление записи в справочник -> Поиск документов, у которых ДатаНачала больше -> Добавление строк с новой записью из справочника в табличные части Проблема: Я перепробовал уже много разных вариантов, но ничего не получается. Помогите пожалуйста |
|||
1
Волшебник
21.06.24
✎
10:55
|
Ещё раз сформулируйте проблему.
Вот такая формулировка никуда не годится: "Я перепробовал уже много разных вариантов, но ничего не получается. Помогите пожалуйста" Это не проблема, а нытьё. |
|||
2
Valdis2007
21.06.24
✎
11:00
|
(0) Недавно начал изучать 1С и вот возникла проблема...
звучит не очень... |
|||
3
rphosts
21.06.24
✎
11:02
|
(0) Декомпозируйте задачу и укажите что именно не получается и что делали что-бы получилось. Если так сделаете - вам помогут, но делать за вас никто не будет - у каждого своя работа.
|
|||
4
Мультук
гуру
21.06.24
✎
11:03
|
(0)
>> Поиск документов, у которых ДатаНачала больше Начнём с простого Вот "рыба" функции которая будет искать вам нужные документы Напишите текст запроса Функция НайтиВсеНужныеДокументы(ДатаНачала) Запрос = новый Запрос; Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала); Запрос.Текст = "Напишите текст запроса"; тз = Запрос.выполнить().Выгрузить() возврат тз; КонецФункции |
|||
5
maxab72
21.06.24
✎
11:04
|
1. Найти все нужные документы
2. Добавить в них все нужные строки из справочника. 3. Записать документы (обычно начинающие пользователи именно этот пункт забывают). |
|||
6
JijiJie
21.06.24
✎
11:05
|
(1) Самое лучшее, что у меня получилось (не уверен правильно ли это вообще или нет)
&НаСервере Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Запрос = Новый Запрос ("ВЫБРАТЬ | ЖурналПосещаемости.Ссылка КАК Ссылка |ИЗ | Документ.ЖурналПосещаемости КАК ЖурналПосещаемости |ГДЕ | ЖурналПосещаемости.ДатаНачала = &Дата"); Запрос.УстановитьПараметр("Дата", ТекущаяДата()); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Строка = Выборка.Ссылка.ПолучитьОбъект().Успеваемость.Добавить(); Строка.Ученик = ТекущийОбъект.Ссылка; Строка.Оценка = 0; Строка.Присутствие = Ложь; Выборка.Ссылка.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; КонецПроцедуры В итоге, когда смотрю отладку, всё вроде как работает, даже перекидывает на метод ПриЗаписи() документа. Но по факту - данные не добавляются. |
|||
7
maxab72
21.06.24
✎
11:06
|
"Выборка.Ссылка.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);"
Вы снова вызываетет ссылку, где нет новых данных, и ее и записываете. |
|||
8
Александр111
21.06.24
✎
11:09
|
| ЖурналПосещаемости.ДатаНачала = &Дата");
= или >= |
|||
9
JijiJie
21.06.24
✎
11:11
|
(7) &НаСервере
Процедура ПослеЗаписиНаСервере(ТекущийОбъект, ПараметрыЗаписи) Запрос = Новый Запрос ("ВЫБРАТЬ | ЖурналПосещаемости.Ссылка КАК Ссылка |ИЗ | Документ.ЖурналПосещаемости КАК ЖурналПосещаемости |ГДЕ | ЖурналПосещаемости.ДатаНачала > &Дата"); Запрос.УстановитьПараметр("Дата", ТекущаяДата()); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ВыбранныйДокумент = Выборка.Ссылка.ПолучитьОбъект(); Строка = ВыбранныйДокумент.Успеваемость.Добавить(); Строка.Ученик = ТекущийОбъект.Ссылка; Строка.Оценка = 0; Строка.Присутствие = Ложь; ВыбранныйДокумент.Записать(РежимЗаписиДокумента.Проведение); КонецЦикла; КонецПроцедуры Если правильно вас понял, то вот что получилось. Не работает. Или я что-то не то сделал |
|||
10
maxab72
21.06.24
✎
11:14
|
(9) Что говорит отладчик? Возможно не проходит проверка в ПриЗаписи или ПередЗаписью или ОбработкаПроведения документа.
|
|||
11
Мультук
гуру
21.06.24
✎
11:17
|
(9)
А у вас ТОЧНО есть документы у которых ЖурналПосещаемости.ДатаНачала больше чем ТЕКУЩАЯДАТА() ? |
|||
12
JijiJie
21.06.24
✎
11:21
|
(9) это всё таки работает.
(11) вчера были, сегодня уже нет) Но проблема всё равно не в этом была. Вчера оно тоже не работало (10) ОГРОМНОЕ ЧЛОВЕЧЕСКОЕ СПАСИБО (0) Проблема решена - ответ (7) |
|||
13
rphosts
21.06.24
✎
11:30
|
JijiJie, а вы в курсе что у документа Дата - это Дата+Время и условие "=" в запросе - это совпадение до секунды.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |