Одна из граблей - это то, что зачастую пытаются натянуть эту "шину" на "горячую" (рабочую) инфраструктуру различного ПО, особо не заморачивась на разработку самой модели взаимодействия между этим ПО.
Цитата(Bernet @ 30.03.17, 10:37)
но до меня не доходит как будет выглядеть окончательный обмен между двумя конфигурациями: скажем УТП и Документооборот, обменяться справочником "Контрагенты"
Мне кажется Вы не до конца понимаете суть шины. Это что-то вроде очень гибкого и удобного транспорта для обмена сообщением между всем и вся с возможностью использовать транзакции и прочие фитчи. Но имхо, это не панацея для решения вопрос синхронизации. Все равно придется описывать типы, правила, маршруты, схемы...и пилить....пилить...конфиг 1с.
НО сопрягти это с 1С не пойму как. Подскажите как можно (если конечно можно) на стороне 1С выполнить код С#.
Не надо выполнять код на C# В 1С В Visual Studio пишите консольную утилиту, которая принимает аргументы, к примеру "Строка передачи в сканер" и параметры COM. Компилируйте ее в exe. Проверяйте из командной строки Windows, как оно работает. Потом в 1С запускайте ее через КомандаСистемы(ПутьКонсольнойУтилите.exe +ПараметрыИз1С) Как-то так.
P.S. Кстати, есть достаточно спорный вопрос в реализации данной задачи. Придется постоянно закрывать COM-порт, который занимает 1С для отправки в него данных из консольной утилиты. Т.к. 1С слушает COM - на вход, а после получения данных в 1С этот порт надо закрыть и открыть по новой для отправки. Имхо Вам наверное больше ТСД нужен для решения данной задачи. Хотя....можно попробовать поизвращаться.
В Вашей самописной конфигурации хоть в каком нибудь документе есть контроль превышения остатков? Что бы 100 раз перепроводить документ, который контролирует остаток нужно перед проведением удалять его движения из регистра.
Построитель = Новый ПостроительЗапроса; ЭлементыФормы.Список.ВыделенныеСтроки.Очистить(); Источник = Новый ОписаниеИсточникаДанных(ДокументСписок); Построитель.ИсточникДанных = Источник; Построитель.Выполнить(); Т = Построитель.Результат.Выгрузить(); Для Каждого Строка Из Т Цикл ЭлементыФормы.Список.ВыделенныеСтроки.Добавить(Строка.Ссылка); КонецЦикла;
АдресВХранилище = ""; Если Параметры.Свойство("Адрес", АдресВХранилище) Тогда Т = ПолучитьИзВременногоХранилища(АдресВХранилище); Для Каждого Строка Из Т Цикл НоваяСтрока = Результат.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); КонецЦикла; КонецЕсли;
Для Каждого Колонка Из Таб.Колонки Цикл Если Колонка.ТипЗначения.СодержитТип(Тип("Число")) Тогда ЭлементыФормы.Таб.Колонки[Колонка.Имя].Видимость = Таб.Итог(Колонка.Имя) <> 0.00; КонецЕсли; КонецЦикла;
Можно попробовать зарегистрировать консоль "по-новой". С правами Администратор запустить файл: RegMSC.cmd Он лежит в папке bin (напр. C:\Program Files\1cv8\8.3.8.2027\bin\RegMSC.cmd).
{ОбщаяФорма.ПечатьДокументов.Форма(120,17)}: Процедура или функция с указанным именем не определена (ОпределитьАдресПолучателя) Адрес = <<?>>ОпределитьАдресПолучателя(Объект.Контрагент); (Проверка: Толстый клиент (обычное приложение))
Ну дык исправьте на:
Адрес = УправлениеЭлектроннойПочтой.ОпределитьАдресПолучателя(Объект.Контрагент);
Acid @ Сегодня, 9:53
, Как правило, такие админы не сидят фикси в канторах, где 10 пользователей. В основном это аутсорс... и достаточно не дешевый по текущим меркам. А ввиду того, что в такое связке "из коробки" не получиться стабильно работающего решения и придется постоянно, что-то, да подкручивать - эта экономия весьма сомнительна.
З.Ы. Автору по теме: Нормальная железка за эту сумму. Дешевле, это только SSD исключить. Одно из узких мест I/O (в контексте производительности БД) - это дисковая подсистема. SSD в данном случае дает весьма ощутимый прирост производительности. Все Имхо
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!