powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / 8.2 подключение через OLE
6 сообщений из 31, страница 2 из 2
8.2 подключение через OLE
    #37457474
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1.Не у всякого справочника есть поля Код и Наименование. "Длина кода"=0 - и нет такого поля.
Но наименование в этом случае останется.
2. Опять же - хороший тон в том, чтобы все нужные поля достать запросом, без необходимости дергать потом объекты (что приводит к дополнительном обращению к базе, а то и не к одному):

"ВЫБРАТЬ
| УстановкаЦен.ТипЦен.Наименование как ТипЦенНаименование,



а потом уже использовать НайтиПоНаименованию() для подбора нужного в базе-получателе. Хотя и тут можно запросом все нужное подобрать
...
Рейтинг: 0 / 0
8.2 подключение через OLE
    #37457531
Lana_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Zerro,pail
Огромное Спасибо! Поняла в чем ошибка, в результат запроса ни один документ не попадал .... сейчас заработало!!
...
Рейтинг: 0 / 0
8.2 подключение через OLE
    #37457557
Lana_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно еще вопрос?
Процедура правильно работает в случае с одним документом... а если документов несколько? Как правильно написать запрос, и как правильно потом достать результаты?
"ВЫБРАТЬ
| УстановкаЦен.Номер как Номер,
| УстановкаЦен.Дата как Дата,
| УстановкаЦен.ТипЦен.Код как ТипЦен,
| УстановкаЦен.Товары.Номенклатура.Наименование как Номенклатура,
| УстановкаЦен.Товары.Цена как Цена,
| УстановкаЦен.Товары.Валюта.Наименование как Валюта
|ИЗ
| Документ.УстановкаЦенНоменклатуры КАК УстановкаЦен
| СГРУППИРОВАТЬ ПО
| УстановкаЦен.Номер,
| УстановкаЦен.Товары.Номенклатура";

Если делаю так, выгружаю, то не совсем понятно как создать несколько документов в новой базе?
...
Рейтинг: 0 / 0
8.2 подключение через OLE
    #37457609
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lana_SV,


"ВЫБРАТЬ
| УстановкаЦен.Номер как Номер,
| УстановкаЦен.Дата как Дата,
| УстановкаЦен.ТипЦен.Код как ТипЦен,
| УстановкаЦен.Товары.(Номенклатура.Наименование как Номенклатура,
| Цена как Цена,
| Валюта.Наименование как Валюта) КАК Товары
|ИЗ
| Документ.УстановкаЦенНоменклатуры КАК УстановкаЦен
| ГДЕ .......................................
|";

Товары - будет результатом вложенного запроса,что больше соответствует структуре и источника, и получателя - на верхнем уровне результата запроса будет столько строк,сколько документов попадет в выборку, и в поле Товары каждой строки будет таблица, соответствующая табличной части документа.
А вот какие документы в выборку попадут, и сколько их там будет - определяется условием ГДЕ запроса
...
Рейтинг: 0 / 0
8.2 подключение через OLE
    #37457668
Lana_SV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pail,
Спасибо! Все получилось! Выкладываю код, вдруг таким же новичкам как я пригодится )))

Запрос = trade.NewObject("Запрос");
Запрос.Текст =
"ВЫБРАТЬ
| УстановкаЦен.Номер как Номер,
| УстановкаЦен.Дата как Дата,
| УстановкаЦен.ТипЦен.Код как ТипЦен,
| УстановкаЦен.Товары.(Номенклатура.Наименование как Номенклатура,
| Цена как Цена,
| Валюта.Наименование как Валюта) КАК Товары
|ИЗ
| Документ.УстановкаЦенНоменклатуры КАК УстановкаЦен";



Результат = Запрос.Выполнить().Выгрузить();
Для каждого стр из Результат Цикл
НовыйДокумент = Документы.УстановкаЦенНоменклатуры.СоздатьДокумент();
НовыйДокумент.Дата = стр.Дата;
НовыйДокумент.Номер = стр.Номер;
СпрТипЦен= Справочники.ТипыЦенНоменклатуры.найтипокоду(стр.ТипЦен);
Если СпрТипЦен <> Неопределено Тогда
НовыйДокумент.ТипЦен = СпрТипЦен;
Иначе
сообщить("Не найден тип цен "+стр.типцен);
КонецЕсли;
Для каждого строка из стр.Товары Цикл
СтрокаДокумента = НовыйДокумент.Товары.Добавить();
СпрНом = Справочники.Номенклатура.НайтиПоНаименованию(строка.Номенклатура);
Если СпрНом <> Неопределено Тогда
СтрокаДокумента.Номенклатура = СпрНом;
Иначе
сообщить("Не найдена номенклатура для "+строка.Номенклатура);
КонецЕсли;
СтрокаДокумента.Цена = строка.Цена;
СпрВал = Справочники.Валюты.НайтиПоНаименованию(строка.Валюта);
Если СпрВал <> Неопределено Тогда
СтрокаДокумента.Валюта = СпрВал;
Иначе
сообщить("Не найдена номенклатура для "+строка.Валюта);
КонецЕсли;
КонецЦикла;
НовыйДокумент.Записать();
КонецЦикла;
...
Рейтинг: 0 / 0
8.2 подключение через OLE
    #37457744
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НовыйДокумент.ТипЦен = Результат[0].ТипЦен;
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / [игнор отключен] [закрыт для гостей] / 8.2 подключение через OLE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]