Имя: Пароль:
1C
1C 7.7
v7: Войны за буфер обмена
,
0 dk
 
10.01.20
14:18
Интересный нюанс тут вылез
запускается много (штук 15) экземпляров 1с на одном сервере и они выполняют один и тот же отчет но с разными настройками
все бы хорошо, но иногда .... результат отчет не совпадал с заданными настройками
подозрение пало на буфер обмена, использование которого прописано в отчете
типа
1. 1с01 скопировала в буфер
2. 1с04 скопировала в буфер
3. 1с01 вставила из буфера в Excel
4. 1с04 вставила из буфера в Excel
-------------
в итоге в обоих файлах оказался один и тот же набор из буфера - а хотелось бы разные
------------------
Варианты:
1. Попробовать поискать множественный буфер
2. Добавить блокировку на время работы с буфером
Какие идеи есть у сообщества?
1 dk
 
10.01.20
14:21
можно в теории отказаться от буфера обмена но блин тоже переписывать много придется
2 PiotrLoginov
 
10.01.20
14:27
>>подозрение пало на буфер обмена, использование которого прописано в отчете
ну вы, блин, даете...
3 ДенисЧ
 
10.01.20
14:29
За построение отчёта, который работает через буфер обмена, положено 10 лет эциха с ржавыми шурупами.
4 dk
 
10.01.20
14:31
ну не стал бы я так категорично говорить про работу с Excel
в общем «Не учите меня жить. Лучше помогите материально»
5 ДенисЧ
 
10.01.20
14:32
(4) Тебе дать денег на кроссовки, которые выдержат кросс до канадской границы?
6 Злопчинский
 
10.01.20
14:34
(5) можно я буду держателем призового фонда?
.
что там переписывать?
загнать параметры в СЗ, СЗ - в файл с идом отчета...
первое что в голову пришло
7 8 bit
 
10.01.20
14:35
(3) поддержу, хотя....

Лет 20 назад писал обработку.Там из экселя нужно было копировать выделенную область в БО и вставлять из БО на поле, размещенное на форме этой обработки. Идея понравилась бухам, но через пару месяцев переписал на загрузку данных непосредственно из файлов excel.

Фигня эти ваши БО. Учитесь программировать.
8 8 bit
 
10.01.20
14:36
(5) ухйоп.. ты лучше модель таких добротных кроссовок подскажи, а купить я и сам могу.
9 dk
 
10.01.20
14:43
для понимания - в буфере копируется большая область ячеек из одного excel листа на другой excel лист другой книги
10 dk
 
10.01.20
14:44
так что сз, непосредственно из excel и прочие - мимо кассы
11 Garikk
 
10.01.20
14:49
(1) переписать в теории? это единственно верное решение, вообще это такой адовый уровень наркомании - так писать что аж страшно что там у вас ещё понаписано
12 dk
 
10.01.20
14:58
так и запишем - нихто не знает
13 Salimbek
 
10.01.20
15:05
(9) Разобраться с Экселем и использовать его встроенные методы копирования, без идиотского буфера обмена, уже предлагали?
14 dk
 
10.01.20
15:09
ну что-то не видно разбирающихся - одно советчики
15 dk
 
10.01.20
15:10
однИ советчики
16 Salimbek
 
10.01.20
15:12
(14) А что непонятного? Ну типа такого:
"В данной конструкции можно указывать только верхную левую ячейку, куда собираете вставить, т.е. так  

Sub Macro1()  
   Range("R3:T65536").Copy Worksheets("Лист2").Range("A1")  
End Sub  

А1 - и является верхней левой ячейкой диапазона"
Отсюда: https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=8&TID=2032
17 Salimbek
 
10.01.20
15:12
Можешь тут посмотреть еще и видео: https://excelpedia.ru/makrosi-v-excel/3-sposoba-kopirovaniya-yacheek-vba-excel
18 8 bit
 
10.01.20
15:13
(15) а ты ССЗБ. И учись программировать.
19 dk
 
10.01.20
15:14
Лист = Книга.Sheets(1);
    Лист_Образец = Книга_Образец.Sheets(1);
    Лист_Образец.Activate();
    ЗаписьЖурналаРегистрации("Excel: 3.1");
    Лист_Образец.Range(Лист_Образец.Cells(1,1), Лист_Образец.Cells(Таб.ВысотаТаблицы(),Таб.ШиринаТаблицы())).EntireColumn.Copy();
    ЗаписьЖурналаРегистрации("Excel: 3.2");
    Лист.Paste();
    ЗаписьЖурналаРегистрации("Excel: 3.3");
    Лист.Activate();    
    ЗаписьЖурналаРегистрации("Excel: 4");

    Лист_Образец = "";
    // [+] ((( dk, 17.09.2019 чтобы дурные вопросы не задавала о сохранении и буфере обмена
    Книга_Образец.Saved = -1;
    Excel.CutCopyMode    = 0;
    //[+] dk, 17.09.2019 )))
    
    ЗаписьЖурналаРегистрации("Excel: 4.1");
    
    Книга_Образец.Close(0);
--------------------
вот исходный
что поменять чтобы без буфера было?
20 Garikk
 
10.01.20
15:15
(14) разбирающихся в наркоманском коде?

у вас даже из постановке задачи видно в чем косяк, если вы идете сюда спрашивать 'почему не работает и как починить', то блин тут вам не советчик нужен 'как чинить что есть' - а совет - все переделать чтобы вообще буфер не юзать
(19) <что поменять чтобы без буфера было?>
а это уже денег стоит
21 dk
 
10.01.20
15:17
можно и дальше в др/др какашками кидаться
а можно по делу подсказать
22 Garikk
 
10.01.20
15:19
(21) по делу - всё переписать
это именно что подсказка, единственно верная.
23 dk
 
10.01.20
15:21
(22) см (14) и проходи мимо
24 Garikk
 
10.01.20
15:21
(23) ккк, не вам мне указывать куда ходить ;)
25 Salimbek
 
10.01.20
16:31
(19) Вроде это, именно оно, модифицируйте под себя: Workbooks("План.xlsx").Worksheets("Лист1").Range("A1").Copy(Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1"))
Источник: https://excelpedia.ru/makrosi-v-excel/3-sposoba-kopirovaniya-yacheek-vba-excel
26 Злопчинский
 
10.01.20
22:06
(19) а ты попробуй интерактивно смоделировать ситуацию "одновременного" использования буфера двумя разными прогами. точно так же не получится (наверное?).
если подправлять - то только блокировать использование буфера до осовобождения.
или - если винды поддерживают - как выше писал - с множественным буфером (я не спец).
я бы пошел по простому пути - блокировать буфер. но тут будет проблема (?) доступа к разделяемому ресурсу-флагу занятости буфера (?)
27 Cthulhu
 
11.01.20
01:25
если Win10 - вспомнить про клавиатурную композицию Win + V и перестать парить мозги себе и людям
(опционально, при всей "одинаковости" копируемого - в копируемый фрагмент программно или ручками проставлять хроно-маркер формирования и основные характеристики использованных при формировании настроек)
28 trdm
 
11.01.20
04:38
(19) может сделать шаблон листа и его копировать через фс с переименованием и заполнять уже его?
29 DES
 
11.01.20
07:06
буфер заменить внешним файлом с уникальным именем
30 DES
 
11.01.20
07:08
заменить везде  
1с01 скопировала в буфер
на
1. 1с01 скопировала_в_файлбуфер()
31 dk
 
13.01.20
07:35
(25) вроде то, что нужно, спасибо, щас проверю
(30) дык пока копируешь пока сохраняешь в файл может уже кто-то влезть, файл тут вроде ничем не поможет
32 Сияющий в темноте
 
13.01.20
09:05
у вас сервер,видимо,не совсем сервер,вот буфер обмена для всех и один.
при работе с буфером нужно по-хорошему подписываться на оповещение о его изменении,чтобы было не так обидно.
и,если честно,то через буфер намногг сложнее программировать,чем напрямую макросами.
33 dk
 
13.01.20
09:16
(32) просто 15 заданий в планировщике - поэтому буфер один
(25) пока попробуем этот вариант, но буфер перезаписывается, посмотрим на конфликты
34 DES
 
13.01.20
10:14
(31) Куда влезть? Если буфер не будет использоваться вообще, а вместо него будет у каждого экземпляра свой уникальный файл. И это не так медленно как кажется, файлы буферизируются в памяти. Особенно если короткие, то полностью.
35 dk
 
13.01.20
10:58
(34) я думал речь про сохранение буфера в файл и обратно из файла в буфер
а без буфера напиши пример как несколько тыс ячеек скопировать из одной книги в другую книгу
36 Сияющий в темноте
 
13.01.20
18:34
(33) 15 пользователей для 15 заданий слабо?
37 dk
 
15.01.20
13:42
(36) думали над таким вариантом- есть проблемы
1. трудно отслеживать визуально что задание упало с какой-нить ошибкой
2. настройка сетевых прав
3. ну и если список баз например почистился в реестре, то снова всем прописывать
4. 1с не любит если пользователь не залогинен в системе под которым задание выполняется
есть и плюсы конечно, но пока отказались