Имя: Пароль:
1C
1C 7.7
v7: Инсерт документа с стороннего ПО в MSSQL.
0 qdsphp
 
23.09.11
16:58
Добрый день! Есть стороннее программное обеспечение, которое мы разрабатываем. Это система приема заказов - некий веб-процессинг. Недавно мы столкнулись с проблемой интеграции "онлайн" с 1С 7.7(База MSSQL). Нам нужно в режиме онлайн получать данные с БД. И передавать в нее скомпонованные документы.
Получить остатки, перечни складов, ТТ и т.п. - все получилось. Но вот с записью и проводкой документа - у нас полный ступор.
Как мы поняли - нам нужно сделать:

1) Инсерт в таблицу журналов.
2) Инсерт в таблицу документа.
3) Инсерт в таблицу документа(табличная часть).

Дальше полный ступор - господа 1Сники, помогите. По логике - еще нужно инсерты в регистры остатков...
Документ Розничная накладная. Конфигурация "Торговля и склад для Украины". 1Cv7.DDS - могу выложить.
Прошу извинить если уже где то было описано. Не знаю как корректно задать поиск.
1 Ёпрст
 
23.09.11
17:00
дальше нужно сделать инсерт в табличку движения регистра + пересчет итогов в табличке итогов (поиск записи, если есть - update, если нет - insert)
2 Ёпрст
 
23.09.11
17:01
+1 для пересчета можешь тупо хранимку вызвать
3 viktor_vv
 
23.09.11
17:03
Может проще из 1С цепляться к вашей базе и писать в 1С штатными средствами.
4 Mikeware
 
23.09.11
17:03
Вообще, посмотри хранимки в базе. и исполнение их при проведении. профайлером.
зы. Хотя писать "снаружи" я б не советовал. Ибо есть еще графы отбора, точка актуальности и прочее. Несложно, конечно, но нафига?
5 Попытка1С
 
23.09.11
17:19
Да запись в 1с из вне, это не гуд...
6 qdsphp
 
23.09.11
17:37
(3) Цеплять 1С 7.7 к удаленному MySQL серверу - такое возможно?
(4) Ок. Нужно записывать/проводить только  1 документ, только инсерты, апдейтов не будет.

Смысл в этом что бы люди (Торговые агенты) получали в режиме онлайн, актуальные данные по своим остаткам. Товар они возят с собой. Заведение документов происходит на обычном Android/Windows mobile устройстве.
7 qdsphp
 
23.09.11
17:39
(5) та я уже понял после фразы "пересчет итогов"....
8 Mikeware
 
23.09.11
17:40
(6) хосспадя, ишшо один....
1.Невозможного в "Цеплять 1С 7.7 к удаленному MySQL серверу" нету :-) цепляй.
2. чтобы "получать остатки" - не нужно _писать_ в базу.
9 CyberDream
 
23.09.11
17:41
я делал по-другому. Написал сервис, который принимаетс запросы по TCP, сервис коннектится к 1С используя COM и выполняет необходимые мне операции.
10 CyberDream
 
23.09.11
17:41
+9 исходя из этого метода не происходит нарушения данных при работе напрямую с базой
11 Попытка1С
 
23.09.11
17:42
(7) А какие документы вы хотите писать в базу с мобильного устройства? И зачем?
12 CyberDream
 
23.09.11
17:43
+(9) весь сервис - 2500 строк С++ кода.
13 Mikeware
 
23.09.11
17:43
(9) Можно и "изнутри" принимать...
14 CyberDream
 
23.09.11
17:45
(13) можно, но получается костыль
15 qdsphp
 
23.09.11
17:47
(8) 1. Я с системой 1С Предприятие знаком 4 дня - не нужно язвить.
2. Нужно - допустим он несет с собой 500 шт. товара - продал 1 шт., ввел документ на устройстве., теперь документ должен попасть в 1С  предприятие, что бы в следующий раз при заведении следующего он видел корректные остатки.

(9) прочитал только что о 1С COM наверное так и поступим.
16 qdsphp
 
23.09.11
17:48
Спасибо CyberDream!
17 CyberDream
 
23.09.11
17:50
(16) не за шо... обращайся...
18 Mikeware
 
23.09.11
17:51
(14) тут такой же костыль, только еще и на веревочке болтается...
(15) тут не в 1с вопрос... таких "разработчегов" валом, правда у них сплошной г0вн0с0фт™ получается...
хотя в твоем случае лучше действительно, делать внешний сервис.
зы. а еще лучше - купить готовое решение. которых тоже достаточно много.
19 CyberDream
 
23.09.11
17:55
(18) - что удивительно в каждом топике не упускается возможноть стебануться либо кого то полить гав..м.

Завидное постоянство....
20 qdsphp
 
23.09.11
18:05
(18) Обьясню. Во 1 - мы до этого не имели дело с подобного рода ПО. И да - мы пишем данную систему под заказ. Опыта работы с продуктами 1С Предприятие вообще никакого, вот потому обратился к Вам сюда.
Зачем опускать и писать о г0вн0с0фт™ и "разработчегов" - для меня честно говоря не понятно. Наверное это самоутверждение.
Теперь по поводу зачем это все, компания торгует очень мелкой продукцией с большим количеством наличия его у ТА. Им нужно:1)
21 qdsphp
 
23.09.11
18:09
1) Видеть сколько товара на данный момент у ТА и хотят они это видеть в 1С.
2) ТА - должен понимать сколько продукции у него осталось на данный момент.
3) При заведении ТА - должно фиксироваться его местоположение.
4) На какую сумму совершил продаж ТА.
Если бы это можно было совершить без коннекта с 1С Предприятие - мы бы это сделали.
22 CyberDream
 
23.09.11
18:11
(21) у ТА тонкий или толстый клиент?
23 CyberDream
 
23.09.11
18:12
у меня есть рад специализированных разработок под 1с и везде я использовал толстого клиента
24 CyberDream
 
23.09.11
18:14
просто здесь нужно знать специфику работы 1С для продуктивного обсуждения технического задания.

Вот по этому пункуту у меня серьезные вопросы:
1) Видеть сколько товара на данный момент у ТА и хотят они это видеть в 1С.

Здесь достаочно филосовская реализация могет быть.
25 viktor_vv
 
23.09.11
18:18
(22) Мне одному кажется, что ты не совсем внимательно прочитал раздел в котором тема находится ?
26 CyberDream
 
23.09.11
18:21
(25) Что не так?
27 МуМу
 
23.09.11
18:21
Наша компания разрабатывала такой продукт. Он генерит(и поддерживает) для любой БД 1С 7.7. набор хранимок, вьюшек на русском языке с читабельными параметрами. То есть если нужно создать документ то это выглядит что то типа на TSQL

СоздатьШапкуДокРеализация(@Клиент,@Склад...)
В цикле
СоздатьСтрокуТабДокРеализация(@Товар....)
СоздатьДвижениеРегОстатки(.....)

Где параметры @Клиент и т.п легко получаются из тоже понятных view.  
Делали в первую очередь для легкой интеграции с другими приложениями.
28 CyberDream
 
23.09.11
18:22
вопрос не про тонкого-толстого клиента платформы 1С, а принцип реализации клиента у торгового агента - это сторонняя разработка
29 МуМу
 
23.09.11
18:22
В том числе для вопросов интеграции с web online.
30 viktor_vv
 
23.09.11
18:22
(26) Да не, я без стеба. Просто тонкий и толстый клиент навевает мысль о восьмерке.
31 viktor_vv
 
23.09.11
18:23
(28) Теперь понятнее :).
32 CyberDream
 
23.09.11
18:23
(30) см (28)
33 qdsphp
 
23.09.11
18:58
(22) У ТА тонкий клиент - если его так можно классифицировать. Если точнее WEB-сервис, который взаимодействует только с GPS приемником устройства. Сделано для достижения максимально широкого круга поддерживаемых устройств.
(24) Да есть несколько вариантов - но как сделать в онлайне корректные остатки в 1С, по другому я не представляю.
34 Мимохожий Однако
 
23.09.11
19:05
(33) В любом случае, надо точно знать возможности 1C конфигурации  и не писать напрямую в базу SQL
35 ЧеловекДуши
 
23.09.11
19:14
(33)Как вариант решения вашей "проблемы"
Предлагаю создать промежуточную БД, в которую вы будете писать своей прогой и из которой будет читать 1С Бот под средством прямых запросов.
Для прямых запросов лучше использовать 1С++, и дешево и проверенно ;)
36 МуМу
 
23.09.11
19:30
Скорее всего можно сделать без концепции озвученной в (0). Но если хочется именно так то лучше купить чем разрабатывать все с ноля а потом еще и поддерживать(изменение конфы может повлиять на структуру - придется переписывать и иногда много). К тому же много подводных камней.(srcdoc только чего стоит)
37 Cthulhu
 
23.09.11
19:37
На уровне файлов и файл-маркеров, с крутящимся в 1с бот-юзером, который в цикле мониторит папку заданий, выполняет их (хоть документы создает, хоть остатки собирает) и результаты в согласованном формате кладет в папку ответов.
(доп.бонус: устойчивость к обрывам связи)
38 qdsphp
 
29.09.11
19:31
(35) Что такое С++ для меня пока не ведомо. )

Поступил так:
1) Открыл "конфигуратор" и обалдел.
2) Перечитал информацию о кодинге и структуре в 1С 7.7 .
3) Создал 2 справочника "Заказ" и подчиненный ему "ЗаказСтроки".
Справочник "Заказ" реквизиты:
-ДатаДокумента
-НомерДокумента
-Фирма
-Склад
-Контрагент
-ТорговаяТочка (ТТ контрагента)
-Признак (признак: 0-новый, 1-обработан, 2-изменен)
Справочник "ЗаказСтроки" реквизиты:
-Товар
-Количество
-Цена
4) Пишу обработку(бот-юзера).
Логика: Прогон по справочнику "Заказы" на наличие элементов с реквизитом Признак=0 или Признак=2. В первом варианте создается новый документ + заполняются строки с подчиненного справочника "ЗаказСтроки", во втором поиск уже существующего документа с последующим редактированием. Первого числа каждого месяца происходит зачистка справочников.

Инсерты в случае справочников проходят отлично - пересчет итогов соответственно не нужен. Ну и как доп. плюс все выполнено - без еще одной базы или "приблуды".

Кодить очень просто... Завтра выложу на суд общественности своего "бота".

Но все таки мучают сомнения - не нарушают ли такие действия какой то скрытой последовательности :) У кого-то есть опыт записи сторонними средствами в справочники?

Если можно без "стеба". Заранее спасибо!
39 Мимохожий Однако
 
29.09.11
20:09
(38)Выложи, что получилось. Обсуждать есть смысл что-нибудь рабочее.
40 VoditelKobyly
 
30.09.11
05:21
(38) Заведение документов через промежуточные справочники 1С - ничуть не лучше, чем просто скинуть их в файлы любой другой структуры и потом обрабатывать их изнутри 1С. Скорее всего главная ваша цель - актуальные остатки достигнута не будет.
41 Mikeware
 
30.09.11
07:12
(21) судя по постановке (переводя на русский) - вы хотите автоматизировать "торговлю с колес" (т.н. van-selling).
Продуктов такого рода достаточно много уже готовых, отлаженных, проверенных в работе и недорогих.
Теперь по пунктам:
>>1) Видеть сколько товара на данный момент у ТА и хотят >>они это видеть в 1С.
-по сути, надо регистрировать продажи ТА в 1с.

>>2) ТА - должен понимать сколько продукции у него осталось >>на данный момент.
-Это уже проблема вашего софта, но никак не "коннекта с 1С"

>>3) При заведении ТА - должно фиксироваться его >>местоположение.
- У вас ТА заводной? :-)) Тоже проблемы вашего софта, но никак не 1С. Отображать, в принципе, можно и "из 1С", но лучше предназначенными для этого средствами (ГИС или их подобиями).
>>4) На какую сумму совершил продаж ТА.
-- см. п.1.

>>Если бы это можно было совершить без коннекта с 1С >>Предприятие - мы бы это сделали.
-Вообще-то, можно и без "коннекта"

(38) Решение дурнющее.
42 Chai Nic
 
30.09.11
07:24
(9) +1. Единственное правильное решение. Лазить грязными руками с помощью сторонних средств в базу, да еще и затрагивая итоги - гарантия проблем.
43 qdsphp
 
30.09.11
16:43
(41) Очень рад что их много - но у нас такое задание.
(42) Где в моем решении, описанном в (38), нужно затрагивать итоги? Я как понимаю - в справочниках этого нет? Я пересмотрел структуру базы - ну ничего там такого нет. Или я ошибаюсь?
44 Lexxxxx
 
30.09.11
16:53
А почему Вы сразу расходные документы не делаете по информации, полученной от ТА?
45 Chai Nic
 
30.09.11
17:35
(43) Ну если вам нравится изврат с эмуляцией документов на справочниках, с последующим закатом солнца вручную..
46 Torquader
 
01.10.11
16:45
По идее, остатки должны жить в вашей системе, как и всё то, что там делает торговый агент, а в 1с это всё должно заводиться только после получения отчёта от агента (когда сдаст бумаги) в этом случае не придётся редактировать документы в 1с, так как вводиться они будут с разрешения бухгалтера.
Соответственно, остатки для агента важны те, которые он может продать, а не общая сумма чего-то на складе, то есть должно быть ещё и резервирование в момент ввода "документа" на КПК, чтобы не было "соревнования", кто успеет продать первый.
Потом, не стоит забывать про отложенные поставки, например, агент сегодня заключает договор на поставку товара, который только завтра поступает на склад.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn