![]() |
![]() |
![]() |
|
Com-соединение с синхронизацией по номеру документа | ☑ | ||
---|---|---|---|---|
0
DK_L
23.02.07
✎
20:08
|
Идея такая - из базы-источник документ реализация "преобразуется" в базе-приемнике в поступление. Проблема в том,что не могу проверить то, что уже существует документ поступление с таким номером как текущая реализация
МодульВнешнихСоединений = Новый COMОбъект("V8.COMConnector"); Попытка Соединение = МодульВнешнихСоединений.Connect("Srvr=""HOME-UTA"";Ref=""Tovaroved""; Usr=""Администратор"";") ; Исключение Предупреждение("База данных не открыта!!!"); Возврат; КонецПопытки; ЕстьЛиПоступление = Соединение.Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер);// Вот здесь не пойму как проверить на номер НовыйДокумент = Соединение.Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент.Дата = Дата; //Форма = НовыйДокумент.ПолучитьФорму(); //Форма.Открыть(); НовыйДокумент.Номер = Номер; НовыйДокумент.ВидПоступления = Перечисления.ВидыПоступленияТоваров.НаСклад; НовыйДокумент.Контрагент = Соединение.Справочники.Контрагенты.НайтиПоКоду("0000001"); НовыйДокумент.ДоговорКонтрагента =Соединение.Справочники.ДоговорыКонтрагентов.НайтиПоКоду("00001"); НовыйДокумент.Организация = Соединение.Справочники.Организации.НайтиПоКоду("00001"); НовыйДокумент.СкладОрдер = Соединение.Справочники.Склады.НайтиПоКоду("00001"); НовыйДокумент.Записать(); |
|||
1
ТелепатБот
гуру
23.02.07
✎
20:08
|
||||
2
avmlvm
23.02.07
✎
21:01
|
(задумчиво) ну-у-у вообще-то
СсылкаНаНайденыйДокумент = Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер) это ссылка... и проверка "результативности" поиска, это Если СсылкаНаНайденыйДокумент.Пустая() Тогда или Если СсылкаНаНайденыйДокумент = Документы.ПоступлениеТоваровУслуг.ПустаяСсылка() Тогда чЁ выбрать - вопрос религии ЗЫ.. надеюсь понятно, что в примере говорится о "Документы", а у тебя это "Соединение.Документы"? :-) |
|||
3
Neco
23.02.07
✎
21:15
|
(0) Лучше сделай так номер реализации запихивая в реквизит поступления НомерВходящегоДокумента. А потом ищи по реквизиту через НайтиПоРеквизиту
|
|||
4
DK_L
23.02.07
✎
21:20
|
(2) точно, мозги раком уже , просто сначала пробовал стандартно ТипЗнч - не прокатило :)))
|
|||
5
DK_L
23.02.07
✎
21:21
|
(3) спасибо, ща попробую
|
|||
6
DK_L
23.02.07
✎
21:28
|
(3) Слушай, Денис, а как ты реализовывал синхронизацию элементов номенклатуры в ТЧ. ИМХО нужно делать постоянно ...НайтиПоКоду(КодТекущегоТовараТекущегоДокумента)
|
|||
7
Neco
23.02.07
✎
21:34
|
(6) Можно и так. Можно искать через уникальный идентификатор, через:
|
|||
8
DK_L
23.02.07
✎
23:01
|
МодульВнешнихСоединений = Новый COMОбъект("V8.Application");
Попытка Соединение = МодульВнешнихСоединений.Connect("Srvr=""HOME-UTA"";Ref=""Tovaroved""; Usr=""Администратор"";") ; Исключение Предупреждение("База данных не открыта!!!"); Возврат; КонецПопытки; ЕстьЛиПоступление = МодульВнешнихСоединений.Документы.ПоступлениеТоваровУслуг.НайтиПоНомеру(Номер); Если ЕстьЛиПоступление.Пустая() Тогда НовыйДокумент = МодульВнешнихСоединений.Документы.ПоступлениеТоваровУслуг.СоздатьДокумент(); НовыйДокумент.Дата = Дата; //Форма = НовыйДокумент.ПолучитьФорму(); //Форма.Открыть(); НовыйДокумент.Номер = Номер; НовыйДокумент.НомерВходящегоДокумента = Номер; НовыйДокумент.ВидПоступления = МодульВнешнихСоединений.Перечисления.ВидыПоступленияТоваров.НаСклад; НовыйДокумент.Контрагент = МодульВнешнихСоединений.Справочники.Контрагенты.НайтиПоКоду("0000001"); НовыйДокумент.ДоговорКонтрагента =МодульВнешнихСоединений.Справочники.ДоговорыКонтрагентов.НайтиПоКоду("00001"); НовыйДокумент.Организация = МодульВнешнихСоединений.Справочники.Организации.НайтиПоКоду("00001"); НовыйДокумент.СкладОрдер = МодульВнешнихСоединений.Справочники.Склады.НайтиПоКоду("00001"); НовыйДокумент.СуммаВключаетНДС = Истина; НовыйДокумент.УчитыватьНДС = Истина; НовыйДокумент.ОтражатьВБухгалтерскомУчете = Истина; НовыйДокумент.ОтражатьВНалоговомУчете = Истина; НовыйДокумент.ОтражатьВУправленческомУчете = Истина; НовыйДокумент.ТипЦен = МодульВнешнихСоединений.Справочники.ТипыЦенНоменклатурыКонтрагентов.НайтиПоКоду("00001"); НовыйДокумент.РегистрироватьЦеныПоставщика = Истина; Для Каждого СтрокаТовары Из Товары Цикл НоваяСтрокаТЧПоступления = НовыйДокумент.Товары.Добавить(); МодульВнешнихСоединений.ЗаполнитьЗначенияСвойств(НоваяСтрокаТЧПоступления,СтрокаТовары); ЕстьЛиТовар = МодульВнешнихСоединений.Справочники.Номенклатура.НайтиПоКоду(СтрокаТовары.Номенклатура.Код); Если Не ЕстьЛиТовар.Пустая() Тогда Иначе НовыйТовар = МодульВнешнихСоединений.Справочники.Номенклатура.СоздатьЭлемент(); НовыйТовар.Код = СтрокаТовары.Номенклатура.Код; НовыйТовар.Наименование = СтрокаТовары.Номенклатура.Наименование; НовыйТовар.НаименованиеПолное = СтрокаТовары.Номенклатура.НаименованиеПолное; НовыйТовар.Артикул = СтрокаТовары.Номенклатура.Артикул; НовыйТовар.БазоваяЕдиницаИзмерения = СтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения; НовыйТовар.СтавкаНДС = СтрокаТовары.Номенклатура.СтавкаНДС; // ЕдиницаОтчетов и ЕдиницаХраненияОстатков ВыборкаЕдиниц = МодульВнешнихСоединений.Справочники.ЕдиницыИзмерения.Выбрать(, НовыйТовар.Ссылка); Если ВыборкаЕдиниц.Следующий() Тогда НайденнаяЕдиница = ВыборкаЕдиниц.Ссылка; Иначе НайденнаяЕдиницаОбъект = Справочники.ЕдиницыИзмерения.СоздатьЭлемент(); НайденнаяЕдиницаОбъект.Наименование = СтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения.Наименование; НайденнаяЕдиницаОбъект.ЕдиницаПоКлассификатору = СтрокаТовары.Номенклатура.БазоваяЕдиницаИзмерения; НайденнаяЕдиницаОбъект.Коэффициент = 1; НайденнаяЕдиницаОбъект.Владелец = НовыйТовар.Ссылка; Попытка НайденнаяЕдиницаОбъект.Записать();// ВОТ ЗДЕСЬ НЕ ХОЧЕТ ЗАПИСЫВАТЬ И ВСЕ ТУТ Исключение Сообщить("Не удалось записать единицу хранения остатков: " + ОписаниеОшибки(), СтатусСообщения.Важное); Отказ = Истина; Возврат; КонецПопытки; НайденнаяЕдиница = НайденнаяЕдиницаОбъект.Ссылка; НовыйТовар.ЕдиницаХраненияОстатков = НайденнаяЕдиница; НовыйТовар.ЕдиницаДляОтчетов = НайденнаяЕдиница; КонецЕсли; НовыйТовар.Записать(); НоваяСтрокаТЧПоступления.Номенклатура = НовыйТовар; КонецЕсли; КонецЦикла; НовыйДокумент.Записать(); КонецЕсли; |
|||
9
DK_L
23.02.07
✎
23:06
|
Не хочет записывать спрЕдиницыИзмерения , т.к нет ссылки еще Номенклатуры - что делать ?
|
|||
10
Neco
23.02.07
✎
23:10
|
Сначало запиши НовыйТовар
Тут тоже ошибка подумай, что за элеменет и где ты создаешь |
|||
11
DK_L
23.02.07
✎
23:12
|
(10)Вот из-за этого то и не записывался товар, по второй части отрабатываю стандартную часть при записи Номенклатуры
|
|||
12
DK_L
23.02.07
✎
23:15
|
После этого // ЕдиницаОтчетов и ЕдиницаХраненияОстатков
взял часть отсюда Процедура ПроверитьЕдиницуХраненияОстатков(Отказ) Если НЕ ЗначениеНеЗаполнено(ЕдиницаХраненияОстатков) Тогда Возврат;// ВОТ ОН ОТКАЗ КонецЕсли; .... |
|||
13
DK_L
23.02.07
✎
23:16
|
+(12) процедура из модуля формы спр Номенклатура
|
|||
14
DK_L
23.02.07
✎
23:19
|
про отказ не то написал, ладно до завтра, а то мозги раком
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |