Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
39 / 39 / 4
Регистрация: 20.04.2011
Сообщений: 789
Записей в блоге: 1

delphi и 1С 7.7

02.02.2012, 12:04. Показов 4258. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
в проекте есть 2 процедуры которые вытаскивают данные и справочников
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure TForm1.Button1Click(Sender: TObject);
 begin
 ADOConnection1.Connected:=true;
 nomenklatura:=ole1c.CreateObject('Справочник.Номенклатура');
 price:=ole1c.CreateObject('Справочник.Цены');
 ADOCommand1.CommandText:='delete from product';
  ADOCommand1.Execute;
  sel := ole1c.CreateObject('Запрос');
  textquery := textquery+'Код = Справочник.Номенклатура.Код;';
  textquery :=textquery+'Наименование = Справочник.Номенклатура.Наименование;';
  textquery :=textquery+'Родитель = Справочник.Номенклатура.Родитель;';
  textquery :=textquery+'Группировка Наименование;';
  textquery :=textquery+'Условие((Родитель.наименование="Кулинария") ИЛИ (Родитель.наименование ="Мясные п/ф"));';
  // ИЛИ (Родитель.наименование =""Мясные п/ф""))
  if sel.Execute(textquery) = 0 then
    showmessage('не могу выполнить запрос!') else
    begin
      ADOTable1.Active:=false;
      while sel.Группировка(1) = 1  do begin
        nomenklatura.НайтиПоНаименованию(sel.Наименование,0);
        price.ИспользоватьВладельца(nomenklatura.ТекущийЭлемент);
        price.ВыбратьЭлементы;
        priceN:=price.ТекущийЭлемент;
        ADOCommand2.Parameters[0].Value :=sel.Код ;
        ADOCommand2.Parameters[1].Value :=sel.Наименование;
        ADOCommand2.Parameters[2].Value :=convertdecimal(priceN.Цена.Получить('ТекущаяДата'));
        ADOCommand2.Execute;
      end;
    end;
ADOConnection1.Connected:=false;
 
end;
и
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
procedure TForm1.Button2Click(Sender: TObject);
begin
DecimalSeparator:='.';
ADOConnection1.Connected:=true;
nomenklatura:=ole1c.CreateObject('Справочник.Номенклатура');
price:=ole1c.CreateObject('Справочник.Цены');
 ADOCommand1.CommandText:='delete from ingridient';
  ADOCommand1.Execute;
  select := ole1c.CreateObject('Запрос');
  textquery := textquery+'Код1 = Справочник.Номенклатура.Код;'+
                         'Наименование1 = Справочник.Номенклатура.Наименование;'+
                         'Родитель1 = Справочник.Номенклатура.Родитель;'+
                         'Группировка Наименование1;'+
                         'Условие(Родитель1.Код="00001771");';
  if select.Execute(textquery) = 0 then
    showmessage('не могу выполнить запрос!') else
    begin
       while select.Группировка(1) = 1  do begin
        nomenklatura.НайтиПоНаименованию(select.Наименование1,0);
        price.ИспользоватьВладельца(nomenklatura.ТекущийЭлемент);
        price.ВыбратьЭлементы;
        priceN:=price.ТекущийЭлемент;
        ADOCommand3.Parameters[0].Value :=select.Код1 ;
        ADOCommand3.Parameters[1].Value :=select.Наименование1 ;
        ADOCommand3.Parameters[2].Value :=convertdecimal(priceN.Цена.Получить('ТекущаяДата'));
   ADOCommand3.Execute;
      end;
    end;
если в 1 запуск программы запускать 1 процедуру от се работает отлично, если запустить одну а потом вторую выдает ошибку
Миниатюры
delphi и 1С 7.7  
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.02.2012, 12:04
Ответы с готовыми решениями:

Что лучше брать Delphi XE2, Delphi XE, Delphi 7?
Привет форумчане! У меня вопрос: что лучше брать Delphi XE2, Delphi XE, Delphi 7? Как вообще различаются серия Delphi XE, и Delphi 7?

Какие отличия Delphi 5, Delphi 6 и Delphi 7
Кто-нибудь юзал Delphi 6? Если да, то напишите, плиз, его отличия от 5-ой версии (плюсы и минусы) Кстати, никто не слышал ничего о Delphi...

ZipForge для Delphi Xe - интерфейс стал выглядеть как в Delphi 2007
Народ!!! Помоготи!!! Установил компонент ZipForge для Delphi Xe и после этого интерфейс моей программы стал таким, как будто я его в delphi...

16
39 / 39 / 4
Регистрация: 20.04.2011
Сообщений: 789
Записей в блоге: 1
02.02.2012, 12:37  [ТС]
может кто в курсе с чем это связано?

Добавлено через 28 минут
еще такая же ошибка возникает если повторно выполнить одну из процедур.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
02.02.2012, 12:48
Ошибка эсэшная - похоже, ркгается на запрос.
Рекомендация: брать данные из 1С надежнее напрямую через скл-сервер, нежели используя 1с-Ком - интерфейс, который хромает на все ноги. Сам запрос составить надо не в 1С (там база объектная), а через построители запросов 1С (в дурнете валом их шаровых)

Добавлено через 4 минуты
А вообще самый простой, тупой, но проверенный способ - это обмен данными 1С - Делфи-проект посредством дбф-к
ЗЫ. Да, типа не по-джидайски, стыдуха так делать, сам по началу так считал, но потыркавшись об одинэсину (кто заглядывал в ее нутро, тот знает сколько там понаворочено, да и вообще все коряво сделано достаточно) и пооббивав лоб и зубы, решал любые проблемы тупым экспортом-импортом дбф.
0
39 / 39 / 4
Регистрация: 20.04.2011
Сообщений: 789
Записей в блоге: 1
02.02.2012, 13:11  [ТС]
с запросом проблем нету выполнятеся корректно, проблема в том что после выполнения какой либо из процедур надо перезапускать приложение. хотел пере создавать подкючение, но не вышло,так же освободить переменные которые были задействованы не выходит

Добавлено через 3 минуты
через дбф разве выйдет проводить контроль ввода/создание,проведение документов?
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
02.02.2012, 17:27
Delphi
1
через дбф разве выйдет проводить контроль ввода/создание,проведение документов?
А кто это придумал в делфе вводить и ПРОВОДИТЬ 1с-овские документы ? Это - прямой путь в могилу.
1С вполне самодостаточная система и свои функции выполняет. А вот если приходится писать всевозможные расширения и при этом юзать данные 1С - тогда вот и возникает проблема импорта данных из 1С баз. Если же у Вас возникла необходимость дополнения базы или функционала 1С собственными делами (введ и последующий экспорт в 1С документов, операций и т.д.) - знайте, пора искать замену 1С. И попытки затыкания дырок хитромудрыми примочками только усугубят дело, создав у начальства иллюзию того, что "все может 1С".
0
39 / 39 / 4
Регистрация: 20.04.2011
Сообщений: 789
Записей в блоге: 1
02.02.2012, 17:41  [ТС]
возникла необходимость в производственном модуле, т.к. 1с я практически не знаю, написал модуль в delphi через OLE создаются 2 документа, приход и списание. проведение не подключал, чтобы на первых этапах контролировали работу проги в ручную, но как вариант рассмотреть можно. проблема еще в том что используется 1с 7. поддержка не осуществляется, за переход на 8.2 с подобным модулем хотят очень много денег=)
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
03.02.2012, 09:40
Ну с 8.2 тоже можно из делфей работать и попроще чем с 77.
Но в целом а почему не написать на стороне 1с внешнюю обработку?
Пусть она цепляется куда надо и тянет, то что надо.
Это первое. А в ключе перехода.
Если есть возможность перейти, переходите. Если у вас загвоздка в этих документах, то это не причина это не сделать.
А в каком плане просят много? У вас 77 сильно отличается от типовой?
Что подразумевается под
с подобным модулем хотят очень много денег
Опишите задачу модуля. Может все не так страшно как кажется.
0
39 / 39 / 4
Регистрация: 20.04.2011
Сообщений: 789
Записей в блоге: 1
03.02.2012, 09:48  [ТС]
Цитата Сообщение от rdama Посмотреть сообщение
Но в целом а почему не написать на стороне 1с внешнюю обработку?
уже отвечал на этот вопрос выше.
Цитата Сообщение от rdama Посмотреть сообщение
Если есть возможность перейти, переходите.
Руководство не хочет этого делать, потому как лицензии+внедрение+обучение+сопровождени е выходит достаточно много, отказ категоричный.
Цитата Сообщение от rdama Посмотреть сообщение
У вас 77 сильно отличается от типовой?
не знаю уже писал что в 1с не силен, конфигурация ККС магазин, наскок понял на УТ базируется но насколько сильно отличается сказать не могу, но касяков полно встречается, частично решили (заменой на внешние обработки).

Добавлено через 1 минуту
я эту конфу увидел только тут и снята с поддержки еще до меня была, так что когда у меня спрашивают "а как это?" "а как то?", руководствуюсь только здравой логикой=)
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
03.02.2012, 10:31
Ну тут то я вам что могу сказать 77 снята с поддержки уже почти год как.
О том, что вы не знаете ее и пишите под нее. Это плачевно.
А руководство вам придется ставить перед фактом перехода. Т.к. то на чем вы работаете уже не поддерживается и устаревает, а совсем скоро станет совсем непригодным.
И на самом деле все не так дорого как кажется.
И я думаю что ваши схемы учета вполне можно привести к типовой конфигурации 1С Управление торговлей.
Далее о цене.
Лицензии 40 руб. 20 штук.
Внедрение? Что вы понимаете под этим?
Развертывание системы и ее настройка? Разовые работы франчи рублей 10-15 попросят. Может и меньше. Они разные бывают.
Обучение тут тоже. Огромный вопрос. Зачем учить всех Учить самых ответственных, а они научат остальных. Да косяки будут, но они будут по любому.
Сопровождение 2,5 руб/мес. Если оформите подписку на ИТС 1 руб/мес и приловчитесь сами ставить обновки, то и на этом можно экономить. А франчам можно звонить в любое время, они всегда ответят на ваши вопросы. Они оф канал техподдержки. Обязаны.
Ну я опустил приобретение самой платформы и конфы это тоже рублей 40 будет.
Но с ключами можно не заморачиваться. Купить и положить в стол. Есть/есть а в реалиях эмуль.
Цены называю те по которым сами брали.
P.S. Вам совет освайвайте ску пока есть возможность. Пересиливайте себя и боритесь.
Это полезные знания. Сам к ней пришел уже будучи не первый день в программировании.
Всегда помните что это еще одна монетка в вашу копилку знаний.
Зачастую 1С-ники кроме нее ни знают ничего. Так что вы сознанием и ее тоже более конкурентоспособны на рынке труда.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
03.02.2012, 11:33
Походу, у ТС начальство из "старых" (на еще не испустивших дух промпредприятиях сидят в директорах чудом выжившие отпрыски совноменклатуры), считает, что наняли программера и он им все должен сделать. Ну т.е. купили коробку 1С на базаре за 40 енотов, а дальше сделает "красиво" программист.
Гнилое начальство, гнилая контора, гнилое дело...
Аминь !
0
39 / 39 / 4
Регистрация: 20.04.2011
Сообщений: 789
Записей в блоге: 1
03.02.2012, 11:43  [ТС]
Цитата Сообщение от MsGuns Посмотреть сообщение
Походу, у ТС начальство из "старых" (на еще не испустивших дух промпредприятиях сидят в директорах чудом выжившие отпрыски совноменклатуры), считает, что наняли программера и он им все должен сделать. Ну т.е. купили коробку 1С на базаре за 40 енотов, а дальше сделает "красиво" программист.
Гнилое начальство, гнилая контора, гнилое дело...
Аминь !
ну не все так критично но чтото в этом районе.

Добавлено через 2 минуты
rdama, типовая конфигурация УТ не подходит, анализ рынка предлагаемого ПО с нужным функционалом показал что подходит конфа ВашМаг (и выше) от Астора, те цены которые вы написали несколько отличаются. их конфу с внедрением и обучением пользователей в количестве 20-25 челов и 20 лицензиями выходит свыше 250к

Добавлено через 3 минуты
опять же сделать програмку на дельфе(к примеру), которая через OLE формирует программно пару документов не особо сложная задача, 1с зна по самоучителям и инфой из сети, насчет курсво задумывался но пока нету времени. а вообще лучше бы по теме что-нить подсказали, а то на ум приходит только закрытие приложение с перезапуском чтобы избежать ошибок пользователей, причем это единственный момент с которым не вышло разобратся по крайней мере пока=)
0
 Аватар для rdama
569 / 292 / 12
Регистрация: 28.01.2011
Сообщений: 1,326
03.02.2012, 12:00
А зачем вы пересоздаете всю цепочку?
Вот этот блок кода
Delphi
1
2
nomenklatura:=ole1c.CreateObject('Справочник.Номенклатура');
price:=ole1c.CreateObject('Справочник.Цены');
Вы и так храните все соединение в глобальной переменной.
Почему к ней не обращаться?
Эта часть тоже может быть универсальной
Delphi
1
2
3
4
5
6
  select := ole1c.CreateObject('Запрос');
  textquery := textquery+'Код1 = Справочник.Номенклатура.Код;'+
                         'Наименование1 = Справочник.Номенклатура.Наименование;'+
                         'Родитель1 = Справочник.Номенклатура.Родитель;'+
                         'Группировка Наименование1;'+
                         'Условие(Родитель1.Код="00001771");';
Ну и думаю что надо сделать явное привидение типов в этом месте
Delphi
1
2
3
ADOCommand3.Parameters[0].Value :=select.Код1 ;
        ADOCommand3.Parameters[1].Value :=select.Наименование1 ;
        ADOCommand3.Parameters[2].Value :=convertdecimal(priceN.Цена.Получить('ТекущаяДата'));
Ибо не совсем прозрачно что здесь происходит.
Это ADOCommand3.Parameters[0].Value имеет тип Variant, это select.Код1 - OleVariant.
И что там происходит в реалиях никому не известно.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
03.02.2012, 12:27
Delphi
1
а вообще лучше бы по теме что-нить подсказали
Вам подсказали, что Ваши попытки сделать из дерева табуретку с помощью пилки для ногтей и кисточки для ресниц обречены на полный крах. Вы же пытаетесь пилку заменить маникюрными ножницами и ждете что Вам посоветуют как ими срубить дуб, а затем попилить на доски.

Вы изначально выбрали неверный подход, при этом аргумент "нацялныка приказала" не катит. Ваша задача как профи - объяснить "нацялнику" тщетность попыток сделать "красиво" подручными средствами и к "позавчера". Либо написать заявление если начальство - дураки.

Добавлено через 4 минуты
Поймите, что проект (конфигурацию) выбирают под цели, а потом подпиливают, подкручивают, подтачивают, подгоняя под нужную модель документооборота (организации производства) предприятия.

Но никак не наоборот.

У Вас же ситуация комичная. Купили кота (на всякий случай), а когда пришла пора пахать, кому-то "умному" пришла в голову мысля а не запрячь ли в плуг Ваську. Мыши мышами, но пахать-то надоть !
0
39 / 39 / 4
Регистрация: 20.04.2011
Сообщений: 789
Записей в блоге: 1
03.02.2012, 12:37  [ТС]
Цитата Сообщение от rdama Посмотреть сообщение
А зачем вы пересоздаете всю цепочку?
Вот этот блок кода
такой пример работы в сети был. по нему и ваял.

Добавлено через 4 минуты
MsGuns, я то прекрасно понимаю, но надомной еще 2 человека, в программировании оба не разбираются, первый имеет только общее представление. и если средства 1с позволяют что-то реализовать значит я должен это сделать и не важно что при этом придется ковырять цать тысяч строк чужого кода... заявление писать не вариант, ибо стажа официального мало.
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
03.02.2012, 12:54
Delphi
1
заявление писать не вариант, ибо стажа официального мало
Ну тогда: "Пилите, Шура, пилите..." (с)
Благо, что не выгонят (таких не выгоняют как правило

По сути все же:

1. Выжимайте максимум из 1С. В дурнете мильярды форумов по 1с и мильоны шараварно-фриварных поделок под нее (в т.ч. готовых компонент). Думается, что в итоге Вы засунете в 1С практически любой реальный документ.
2. Не пытайтесь мостить какие-то гала-конструкции из RAD-ов. Упрощайте все до разумных пределов, уходя от COM по возможности (в 1С он реализован крайне криво - просто поверьте) и не боясь использовать файловые передачи информации (dbf,txt,csv,html...).
3. Если что-то (задачу например) нельзя в полном объеме рализовать в 1С (например, состав заказов - граф по жизни, в 1С просто нереализуем как класс ), не пытайтесь делать по принципу "что можно в 1С, остальное - в дельфи (си, васике, жабе...) - ВСЕ делайте в доступном и удобном Вам RAD. Организовать связь между разными задачами посредством данных чаще всего много проще чем через всевозможные открытые интерфейсы или OLE-сервера. Кстати, мелкомягкая ActiveX ославила себя в том числе и патологически жуткими тормозами.
0
39 / 39 / 4
Регистрация: 20.04.2011
Сообщений: 789
Записей в блоге: 1
03.02.2012, 12:57  [ТС]
просто почитал в сети, что использование OLE предотвратит "падение" баз из-за некорректно введенных данных и т.д. идет контроль самой 1с-кой пусть пока пользуются этим пока не перейдут на 8.2, по крайней мере выбора у меня нету=)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
03.02.2012, 13:08
OLE-контейнеры полезны, если необходимо например из Delphi-приложения управлять например AutoCAD`ом как отдельным окном с полной поддержкой автокадного функционала. Или для Вашего случая - показывать список документов в делфи-окне, а саму работу - в окне 1С под управлением Делфи. Однако, сколько я в свое время не пытался это реализовать ШТАТНЫМИ средствами "семерки", получил жесткий облом. В результате весь интерфейс писал в делфи, а обмен с базой 1С (в основном чтение, писать в 1С я жутко боюс, хоть и не трус ) - через ПРЯМЫЕ запросы к MS SQL (кстати, а он-то хоть у вас имеется в шарашке ?, если нет - то точно веники всякой вашей "производственной" затее)

Добавлено через 6 минут
Если у Вас предприятие мануфактурного формата (100 человек, из которых треть - заводуправление и еще треть - сторожа, уборщицы, водители..., производит крючки для вязания, кастрюли со сковородками или иное шило-мыло), то кидайте нафих 1С и проектируйте производство сами - сделать вряд ли что путное сможете, но опыт приобретете
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.02.2012, 13:08
Помогаю со студенческими работами здесь

Какова разница работы одного кода в Delphi 7 и в Delphi XE5?
Почему приложение состоящие из одинакового кода, но компилируемое в разных средах работает по разному? Есть клиент-серверное приложение,...

где найти delphi c компилятором? и с чего начинать программирование в delphi?
здравствуйте, вот начинаю изучать delphi с чего начинать лучше?

Почему функция работающая в Delphi 7 не работает в Delphi 2007 и в 2009 ??
Данный код работал нормально в D7: procedure TForm1.Button1Click(Sender: TObject); begin ShowWindow(Application.Handle, 0); end;...

Переписать часть кода с Delphi на ассемблер (ассемблерные вставки в Delphi)
Добрый вечер. Нужно сделать ассемблерные вставки в программе. Первый раз столкнулся с таким заданием, в языке ассемблера почти ноль....

Как в Lazarus сделать интерфейс Delphi 2006 вместо Delphi 7?
Добрый вечер! Подскажите пожалуйста, как в Lazarus сделать интерфейс Delphi 2006 вместо Delphi 7? Т.е. чтобы окна были прикрепленные, а не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru