Всем,доброго здоровья!
Есть две базы БП 3.0. В первой базе создан регистр сведений,в котором хранятся остатки по товарам в количественном выражении и остатки эти собираются по результатам ввода документов в двух базах,а далее через ComConnect по расписанию идет обращение ко второй базе и забираются данные,чтобы сформировать текущий остаток товара.
Получается,что в первой базе в обработку Подбор номенклатуры просто внести изменение,чтобы вместо неправильного бухгалтерского остатка показывался текущий из нового регистра.
А вот как сделать новый Подбор номенклатуры во второй базе,где регистра с остатками собранными с двух баз - пока не получается.
Попробовал изменить запрос динамического списка Список номенклатуры по такой схеме:
1. Получаю из внешней базы через
Запрос1=БпДоп.NewObject("Запрос")
таблицу текущих остатков , пусть это будет ДинОст
2. Запрос дин.списка Список номенклатуры меняю на пакет запросов:
ТекстЗапроса =
"ВЫБРАТЬ
| ДинОст.Наименование,
| 0 КАК ОстатокНаКонец
|ПОМЕСТИТЬ ДинОст
|ИЗ
| &ДинОст КАК ДинОст
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СправочникНоменклатура.Ссылка КАК Ссылка,
| // ост. поля родного запроса
|ПОМЕСТИТЬ ТабРодной
|ИЗ
| Справочник.Номенклатура КАК СправочникНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстаткиЦены)}, Счет В (&СчетаЗапасов), {(&ВидыСубконто)}, Организация В (&СписокОрганизаций) {(Подразделение) КАК Подразделение, (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Ссылка, (Субконто2)}) КАК ОстаткиНаСкладе
| ПО СправочникНоменклатура.Ссылка = ОстаткиНаСкладе.Субконто1
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаОстаткиЦены)}, Номенклатура В (&ДинОст) {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК ВалютаЦены}) КАК ЦеныНоменклатуры
| ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатуры.Номенклатура
|ГДЕ
| НЕ СправочникНоменклатура.ЭтоГруппа
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ТабОсн.Ссылка,
| ТабОсн.Услуга,
| ТабОсн.Наименование,
| ТабОсн.НаименованиеПолное,
| ТабОсн.Код,
| ТабОсн.Артикул,
| ТабОсн.ЕдиницаИзмерения,
| динОст.ОстатокНаКонец КАК КоличествоОстаток,
| ТабОсн.Цена КАК Цена,
| ТабОсн.Валюта КАК Валюта
|ИЗ
| ТабРодной КАК ТабОсн
| ЛЕВОЕ СОЕДИНЕНИЕ ДинОст КАК динОст
| ПО ТабОсн.Наименование = динОст.Наименование"
;
Показать
То есть надо,чтобы в запросе взялся остаток из таблицы.
Но когда начинается настройка списка в форме Подбора,то не находится параметр &ДинОст или тип его неправильный ,и все. С этим вариантом терплю поражение.
Пробую более простой вариант.
В обработке Подбор формируется таблица с остатками из другой базы.
В событии СписокНоменклатурыПриАктивизацииСтроки(Элемент)
надо остаток в Списке номенклатуры заменить из таблички.
Нарисовал такой код:
&НаКлиенте
Процедура СписокНоменклатурыПриАктивизацииСтроки(Элемент)
// Вставить содержимое обработчика.
Отбор = Новый Структура();
Отбор.Вставить("Наименование",Элемент.ТекущиеДанные.Наименование);
Строки = ДинОст.НайтиСтроки(Отбор);
Если Строки.Количество() >0 Тогда
Элемент.ТекущиеДанные.КоличествоОстаток = Строки[0].ОстатокНаКонец;
КонецЕсли;
КонецПроцедуры
Показать
Код срабатывает,остаток находится,подставляется.
Но,не происходит автоматическое изменение остатка на форме,а чтобы появилось это изменение,надо прокруткой поменять строки,ну как-то непонятно.
Друзья,прошу помочь,что неправильно делаю? Спасибо.