Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 окт 2021, 13:00

Регистр сведений Аналоги номенклатуры УПП

Автор vsharmanov, 22 сен 2021, 04:57

0 Пользователей и 1 гость просматривают эту тему.

vsharmanov

Добрый день всем.

Столкнулся с ситуацией такой:
Есть задача по отслеживанию изменений в регистре сведений Аналоги номенклатуры в УПП.
Для реализации сделал следующее:
В модуле набора записей добавил код:
Процедура ПередЗаписью(Отказ, Замещение)

Для каждого Запись Из ЭтотОбъект Цикл
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| АналогиНоменклатуры.Номенклатура
|ИЗ
| РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры
|ГДЕ
| АналогиНоменклатуры.Номенклатура = &Номенклатура"
| И АналогиНоменклатуры.Аналог = &Аналог
| И АналогиНоменклатуры.Спецификация = &Спецификация
| И АналогиНоменклатуры.ВидАналога = &ВидАналога";

Запрос.УстановитьПараметр("Номенклатура", Запись.Номенклатура);
Запрос.УстановитьПараметр("Аналог", Запись.Аналог);
Запрос.УстановитьПараметр("Спецификация", Запись.Спецификация);
Запрос.УстановитьПараметр("ВидАналога", Запись.ВидАналога);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

Если ВыборкаДетальныеЗаписи.Следующий() Тогда
НоваяНоменклатура = Запись.Номенклатура;
СтараяНоменклатура = ВыборкаДетальныеЗаписи.Номенклатура;
НовыйАналог = Запись.Аналог;
СтарыйАналог = ВыборкаДетальныеЗаписи.Аналог;
НоваяСпецификация = Запись.Спецификация;
СтараяСпецификация = ВыборкаДетальныеЗаписи.Спецификация;
НовыйВидАналога = Запись.ВидАналога;
СтарыйВидАналога = ВыборкаДетальныеЗаписи.ВидАналога;
            Данные = Новый Структура;
Данные.Вставить("OldNomenclature", СтараяНоменклатура);
Данные.Вставить("NewNomenclature", НоваяНоменклатура);
Данные.Вставить("OldAnalog", СтарыйАналог);
Данные.Вставить("NewAnalog", НовыйАналог);
Данные.Вставить("OldSpec", СтараяСпецификация);
Данные.Вставить("NewSpec", НоваяСпецификация);
Данные.Вставить("OldAnalogType", СтарыйВидАналога);
Данные.Вставить("NewAnalogType", НовыйВидАналога);
             КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЦикла;

КонецПроцедуры


Всё бы хорошо, но это не работает, поскольку в отладчике Запрос.Выполнить().Выгрузить() не содержит ни одной записи, тогда как в консоли запросов всё нормально.
Далее. закомментировал код, оставив только запрос без параметров.

Запрос.Текст =
"ВЫБРАТЬ
| АналогиНоменклатуры.Номенклатура
|ИЗ
| РегистрСведений.АналогиНоменклатуры КАК АналогиНоменклатуры";


В итоге - при изменении записи в регистре как только открывается форма записи изменяемая запись в результат запроса (431 запись всего) не попадает, хотя в параллельно запущенном еще одном клиенте она есть и в консоли запросов тоже выводится (432 записи).

Почему так происходит и как это обойти?

LexaK

есть другой вариант/путь,
называется Версионирование объектов
в типовых используется во всю.
Просто скопируйте в свою базу функционал, и не надо будет изобретать велосипед.
(а заодно и не надо будет разбираться как записи в регистр попадают/обрабатываются)
ответ Понравился? (в смысле пригодился?)

vsharmanov


vsharmanov

@LexaK, спасибо Вам за совет. Решил вопрос другим путём)

Теги: запросы 

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск