Помогите ПЛЗ, знаю что вопрос детский, но я только учусь
Мне нужно в базе ОЛЕ найти документ по номеру, и значение реквизита "ФИО" из найденного документа присвоить реквизиту в базе приемнике.
Процедура выполняется по нажатию кнопки, подключился без проблем, ВвестиЧисло(Ном,"Введите номер заказа",5,0); - ввожу номер искомого документа, как поступить дальше?
Напрвьте пожалуйста на путь истинный!!
Мне нужно в базе ОЛЕ найти документ по номеру, и значение реквизита "ФИО" из найденного документа присвоить реквизиту в базе приемнике.
Процедура выполняется по нажатию кнопки, подключился без проблем, ВвестиЧисло(Ном,"Введите номер заказа",5,0); - ввожу номер искомого документа, как поступить дальше?
Напрвьте пожалуйста на путь истинный!!
По теме из базы знаний
- Rocket Launcher 7.7. Свертка базы 1С 7.7. Перенос справочников и документов 7.7
- БГУ: Сравнение движений НФА в 8.2 и 7.7 через OLE
- Загрузка документов из ЗиК 7.7 в ЗУП 3.1 по OLE
- Как система обмена данными помогает решить нетривиальные задачи, характерные для терабайтных баз: обрезка, обслуживание, балансировка нагрузки и другие
- Новый сборник задач по программированию (топ на 13.03.2025)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот код:
Процедура ДобавитьЗаказ()
БазаОле = СоздатьОбъект("V77.Application");
КаталогБазыОле = "e:\Bases\ortoped\";
ПользовательОле = "Администратор";
ПарольОле = "qwerty";
ЗапускБезЗаставки = 1;
РезультатПодключения = БазаОле.Initialize(БазаОле.RMTrade,"/d"+КаталогБазыОле+" /M/N"+ПользовательОле+" /P"+ПарольОле,
"NO_SPLASH_SHOW");
Если РезультатПодключения=0 Тогда
Предупреждение("Не удалось подключиться к указанной базе - проверьте вводные!");
Иначе
Сообщить("Удачное подключение");
ДокОле=БазаОле.CreateObject("Документ.ЗаказПОИ");
ВвестиЧисло(Ном,"Введите номер заказа",5,0);
ДокОле.НайтиПоНомеру(Ном);
ФИО=ДокОле.Заказчик;
Предупреждение(ФИО);
КонецЕсли;
КонецПроцедуры
Выдает пустое предупреждение
ДокОле.Заказчик - тип реквизита Справочник.Заказчики, видимо из-за этого?
Процедура ДобавитьЗаказ()
БазаОле = СоздатьОбъект("V77.Application");
КаталогБазыОле = "e:\Bases\ortoped\";
ПользовательОле = "Администратор";
ПарольОле = "qwerty";
ЗапускБезЗаставки = 1;
РезультатПодключения = БазаОле.Initialize(БазаОле.RMTrade,"/d"+КаталогБазыОле+" /M/N"+ПользовательОле+" /P"+ПарольОле,
"NO_SPLASH_SHOW");
Если РезультатПодключения=0 Тогда
Предупреждение("Не удалось подключиться к указанной базе - проверьте вводные!");
Иначе
Сообщить("Удачное подключение");
ДокОле=БазаОле.CreateObject("Документ.ЗаказПОИ");
ВвестиЧисло(Ном,"Введите номер заказа",5,0);
ДокОле.НайтиПоНомеру(Ном);
ФИО=ДокОле.Заказчик;
Предупреждение(ФИО);
КонецЕсли;
КонецПроцедуры
Выдает пустое предупреждение
ДокОле.Заказчик - тип реквизита Справочник.Заказчики, видимо из-за этого?
reef Написал:
-------------------------------------------------------
> Изменил тип реквизита на строку длинной 99
> Все равно пусто
> Значит нужно в базе приемнике создать аналогичный
> документ?
> Док=СоздатьОбъект("ЗаказПОИ");
> Док.НайтиПоНомеру(ДокОле.Ном);
> ФИО=Док.ФИО;
>
>
> Это правильно?
>
Нет, в базе приемнике ничего создавать не надо.
-------------------------------------------------------
> Изменил тип реквизита на строку длинной 99
> Все равно пусто
> Значит нужно в базе приемнике создать аналогичный
> документ?
> Док=СоздатьОбъект("ЗаказПОИ");
> Док.НайтиПоНомеру(ДокОле.Ном);
> ФИО=Док.ФИО;
>
>
> Это правильно?
>
Нет, в базе приемнике ничего создавать не надо.
Это решение
> Сообщить("Удачное подключение");
> ДокОле=БазаОле.CreateObject("Документ.ЗаказПОИ");
> ВвестиЧисло(Ном,"Введите номер заказа",5,0);
> ДокОле.НайтиПоНомеру(Ном);
> ФИО=ДокОле.Заказчик;
> Предупреждение(ФИО);
Я-бы написал чуть-чуть по-другому
Сообщить("Удачное подключение");
ДокОле=БазаОле.CreateObject("Документ.ЗаказПОИ");
ВвестиЧисло(Ном,"Введите номер заказа",5,0);
Если ДокОле.НайтиПоНомеру(Ном,ТекущаяДата()) = 1 Тогда // Дата указывает в каком году искать
ФИО=ДокОле.Заказчик;
Предупреждение(ФИО.Наименование);//Т.к. ФИО - это элемент справочника не текущей базы,
//показать на экран текущей сможем только число или текст
Иначе
Предупреждение("Не нашли документ с номером " + Ном + " в текущем году");
КонецЕсли;
> ДокОле=БазаОле.CreateObject("Документ.ЗаказПОИ");
> ВвестиЧисло(Ном,"Введите номер заказа",5,0);
> ДокОле.НайтиПоНомеру(Ном);
> ФИО=ДокОле.Заказчик;
> Предупреждение(ФИО);
Я-бы написал чуть-чуть по-другому
Сообщить("Удачное подключение");
ДокОле=БазаОле.CreateObject("Документ.ЗаказПОИ");
ВвестиЧисло(Ном,"Введите номер заказа",5,0);
Если ДокОле.НайтиПоНомеру(Ном,ТекущаяДата()) = 1 Тогда // Дата указывает в каком году искать
ФИО=ДокОле.Заказчик;
Предупреждение(ФИО.Наименование);//Т.к. ФИО - это элемент справочника не текущей базы,
//показать на экран текущей сможем только число или текст
Иначе
Предупреждение("Не нашли документ с номером " + Ном + " в текущем году");
КонецЕсли;
Это решение
Внимание! Не забывайте отмечать решение на ваш вопрос, если оно найдено. Это повысит ваш рейтинг на форуме.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот