1. zhenek1980 14.02.20 12:45 Сейчас в теме

Обновление данных при создании новых документов

Доброго времени суток, такая проблема:

Есть документ изменяющий реквизиты справочника с регистрацией в регистре сведений

в форму подтягиваются данные из справочника
так же в форму вводятся новые данные реквизитов
Документ сохраняется, проводится новые данные записываются в справочник и регистр сведений, тут все работает хорошо

а вот если создать сразу еще один документ на изменение той же позиции справочника в него подтянутся устаревшие данные которые были до изменений первым документом. При этом данные в справочнике изменились согласно первому документу

Если перезапустить базу этого глюка нет, как будто при открытии второго документа данные подтягиваются не из справочника а из кеша или чего то подобного.

Вопрос как сделать так что бы при открытии второго документа данные подтягивались те что в справочнике, а не устаревшие
Найденные решения
9. zhenek1980 14.02.20 16:17 Сейчас в теме
В общем проблему я решил, точнее реализовал по другому: функцию "НайтиПоРеквизиту" заменил запросом на выборку.
Всем спасибо!
Остальные ответы
Избранное Подписка Сортировка: Древо
2. starjevschik 14.02.20 12:53 Сейчас в теме
Скорее проблема в процедуре "подтягивания". Что-то она не то "подтягивает". Или не в тот момент.
3. zhenek1980 14.02.20 13:04 Сейчас в теме
(2) "подтягивание" идет по нажатию кнопки в форме, или "ПриИзменении" поля ввода в этой же форме, функцией "Справочники.Номенклатура.НайтиПоРеквизиту"
4. markw 14.02.20 13:08 Сейчас в теме
А можно чуть больше кода? Ничего не понятно.
5. zhenek1980 14.02.20 13:18 Сейчас в теме
на форме вводится ИнвНомер в поле ввода "Объект.ИнвНомер" после нажатия кнопки запускается процедура: "Поиск"

&НаКлиенте
Процедура Поиск(Команда)
	Объект.ТМЦ = СервернаяСреда.ИнвН_Проверка(Объект.ИнвНомер);
КонецПроцедуры


Объект.ТМЦ это реквизит типа СправочникСсылка.Номенклатура


СервернаяСреда.ИнвН_Проверка ищет в справочнике запись по реквизиту:

Функция  ИнвН_Проверка (ИнвН) Экспорт

ПИН= Справочники.Номенклатура.НайтиПоРеквизиту("ИнвНомер",ИнвН);
          
Если ПИН= Справочники.Номенклатура.ПустаяСсылка() тогда ПИН=NULL
	КонецЕсли;
Возврат ПИН;


дальше в форму выводятся данные: с реквизита объекта (просто перетянул мышкой нужные реквизиты на форму в конструкторе)

Объект.ТМЦ.Наименование
Объект.ТМЦ.Сотрудник
....
6. zhenek1980 14.02.20 13:40 Сейчас в теме
попробую еще объяснить в картинках:
1 картинка
Красным выделено старое название
1) создаем новое название
сохраняем и проводим документ
2) данные внесены в справочник что видим в изменившимся списке
Закрываем документ

2 картинка
открываем новый документ
3) находим туже запись в справочнике
4) видим что изменение в прошлом документе отработали нормально
5) НО данные которые подтягиваются остались старыми
Прикрепленные файлы:
7. starjevschik 14.02.20 13:50 Сейчас в теме
я думаю, что где-то в алгоритмах ошибка, но понять по приведенным отрывкам это невозможно. Что-то не туда записывается, или не оттуда читается, или читается не то, что должно читаться (например, дублируются элементы справочника с тем же реквизитом), или еще что. Кэши и прочие фокусы платформы вряд ли имеют здесь значение. А вот качество кода, как видно, не самое выдающееся.
ИнвН_Проверка() - это функция, которая находит элемент справочника! Почем же она ИнвН_Проверка, а не НайтиЭлементПоИнвентарномуНомеру()? ПИН - это ссылка на номенклатуру. Почему ПИН?? Если там все так написано, то неудивительно, что ошибку так сразу не разглядишь...
8. zhenek1980 14.02.20 13:57 Сейчас в теме
(7) тут тяжело спорить, код в читаемый вид приведу
ИнвН_Проверка, так называется т.к это функция в основном используется для проверки на уникальность ИнвН в справочнике
ПИН переменная внутри этой функции сокращение от ПроверкаИнвНомера

ps согласен что отмазка слабая
9. zhenek1980 14.02.20 16:17 Сейчас в теме
В общем проблему я решил, точнее реализовал по другому: функцию "НайтиПоРеквизиту" заменил запросом на выборку.
Всем спасибо!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Екатеринбург
зарплата от 90 000 руб. до 150 000 руб.
Полный день

Архитектор 1С
Нижний Новгород
зарплата от 180 000 руб.
Полный день

Программист 1С
Балашиха
зарплата от 80 000 руб.
Полный день

Программист 1С
Челябинск
зарплата от 100 000 руб.
Полный день

Разработчик 1С
Нижний Новгород
зарплата до 90 000 руб.
Полный день