[ОБУЧАЛОВКА] Финт ушами с временем документа.

30.06.09

Разработка - Универсальные функции

Маленькое наблюдение, облегчающее программную расстановку документов по оси времени.
Финт с чебурашечными ушами будет показан на примере. Простая задача: расставить документы ''накладная'' и ''счет-фактура'' на оси времени с интервалом в полторы минуты. Делаем примерно так:
//получаем исходное время
ЧЧ=0;
ММ=0;
СС=0;
ДокРН.ПолучитьВремя(ЧЧ,ММ,СС);
//формируем новое время
СС=СС+90;
ДокСФ.УстановитьВремя(ЧЧ,ММ,СС);
ДокСФ.Записать();

Как видно из примера, наращиваем только счетчик секунд, при записи документа движок 1С сам произведет ''адекватный'' пересчет секунд, минут, часов. Такаим образом можно наращивать любой из счетчиков времени в приведенном выше примере, наращивание производится должно в единицах увеличиваемого счетчика. Т.е. ничто не мешает для сдвига на 1 час написать
 CC=CC+60*60; 

или
 ММ=ММ+60; 

или
 ЧЧ=ЧЧ+1; 

Описанным выше способом можно двигать счетчики и вперед по (+), и назад по (-). Такой нехитрый прием существенно облегчает оперирование со временем документа.
При этом надо учитывать только то, что сдвижка производится только в пределах одних суток! Т.е. макисмально позднее(раннее) время, которое получится у документа: 23:59:59 (00:00:01) - прибавив к 23:59:10 больше 50 секунд в другой день ''перескочить'' не удастся ;-).
В этом случае надо действовать уже в зависимости от лично ваших нужд, как пример - можно так:
//формируем новое время
СС=СС+90;
ДокСФ.УстановитьВремя(ЧЧ,ММ,СС);
ДокСФ.Записать();
Если СтрЗаменить(ДокСФ.ПолучитьВремя(),'':'','''')=''235959'' Тогда
//тут обрабатываем ''исключительную ситуацию''
    //перехода на новую дату
ДокСФ.ДатаДок = ДокСФ.ДатаДок+1;
   ДокСФ.УстановитьВремя(00,00,01);
   ДокСФ.Записать();
КонецЕсли;


Вот такие вот чебурашки.

Разведал эту шнягу, когда забодался плюсовать секунды-минуты-секунды - неэстетично это, однозначно! А если попробовать прибавить много секунд - что будет? Попробовал - получилось...

PS: если эта статья помогла вам узнать нечто новое - плюсуй рейтинг! Не ленись...

См. также

Вставляем картинку из буфера обмена (платформа 1С 8.3.24)

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    2665    0    John_d    8    

53

GUID в 1С 8.3 - как с ними быть

Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    4599    atdonya    22    

45

Переоткрытие внешних обработок

Универсальные функции Платформа 1С v8.3 Бесплатно (free)

На заключительных этапах, когда идет отладка или доработка интерфейса, необходимо много раз переоткрыть внешний объект. Вот один из способов автоматизации этого.

30.11.2023    3958    ke.92@mail.ru    16    

61

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    8809    YA_418728146    6    

141

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2071    21    progmaster    7    

3

Расширение: Быстрые отборы через буфер [Alt+C] Копировать список, [Alt+V] Вставить список, [Ctrl+C] Копировать из файлов

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    16142    133    sapervodichka    112    

129

Система контроля ведения учета [БСП]

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    7242    quazare    8    

109
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. АЛьФ 12.07.06 11:59 Сейчас в теме
Прикольно.
dreadlord; san4o; andrey_k65; ineoosaki; +4 Ответить
2. vasilykushnir 63 12.07.06 12:16 Сейчас в теме
Плюсую. Буду пробовать поюзать. Идейка весьма интересная.
3. GROOVY 2505 12.07.06 14:15 Сейчас в теме
Документы располагать относительно друг друга надо не изменением времени а правильным созданием и записью самих документов. только в этом случае мы избежим ограничения 86400 документов в сутки!
4. CheBurator 3119 12.07.06 22:26 Сейчас в теме
Согласен.
Данный код - и служит целям "правильного" программного создания/модификации документов. ;-)
А про то, что документы интерактивно нужно правильно создавать/модифицировать - это да, возражений нет.
Если знаешь как программно создать и расположить реализацию после заявки не оперируя временем документа - поделись, будет интересно не только мне...
5. GROOVY 2505 13.07.06 00:32 Сейчас в теме
6. vasilykushnir 63 14.07.06 11:35 Сейчас в теме
>GROOVY
>Ок. Скоро будет!

Будем ждать...
В дополнение к замечанию Сhe: расхождение по времени с заявкой и расходной еще пол-беды. У нас цепочка из трех документов ЗаявкаПокупателя-Отборочная-Расходная. Если с заявкой и расходной все понятно, то чуть уточню, что за зверь Отборочная. Этот документ представляет собой обычное перемещение с отдела хранения в отдел экспедиции, где на их основании создается расходная. При этом не обязательно все товары из заявки попадают в отборочные и расходные, ну это к делу не относится. Так вот временная последовательность должна четко соблюдатся для пары Отборочная-Расходная - ну не может экспедиция выписать товар, который еще не поступил со складов. Но наши крендели умудряются иногда шурануть расходную более ранним временем (а иногда и датой!), чем отборочная. Так что если у GROOVY есть идеи как это блокировать на этапе создания расходной - воздадим хвалу этому достойному человеку!
7. CheBurator 3119 14.07.06 19:39 Сейчас в теме
Не к теме публикации, а по обсуждению... у меня еще лучше... у меня из неподтвержденки дерево документов может быть листов на 8-10 (неподтвержденка-заявки-заказы-поступления-расходы)
8. O-Planet 6431 14.07.06 22:33 Сейчас в теме
Надо воспользоваться этим, чтобы рейтинг выпрашивать :)
Токо где финт-то? Обычное преобразование типов...
9. CheBurator 3119 14.07.06 23:41 Сейчас в теме
Просвети, плиз, неграмотного - где здесь преобразование типов?
10. O-Planet 6431 15.07.06 02:25 Сейчас в теме
Да все просто. Для тебя время - это минуты, секунды и часы, а во внутреннем представлении 1С - это число типа long. Поэтому, ты мог с таким же успехом не секунды прибавлять, а, скажем, минуты. Она все равно бы преобразовала бы все к формату времени.

Кстати, если хошь знать, какими бывают финты, то читай мою статью последнюю :)
11. CheBurator 3119 15.07.06 15:15 Сейчас в теме
будь спок. минуты тоже прибавляем... ;-)
статью - ща посмотрим...
12. Mey 29.08.06 07:53 Сейчас в теме
13. 01.09.06 15:44 Сейчас в теме
Спасибо, открыл для себя: движок 1С сам произведет ''адекватный'' пересчет секунд, минут, часов. А то я совсем недавно решал такую проблему, так накрутил там пересчеты все самостоятельно :-). Оказывается можно было не заморачиваться.
14. d.snissarenko 152 06.09.06 18:18 Сейчас в теме
15. CheBurator 3119 07.09.06 01:07 Сейчас в теме
А чего пробовать? Юзать надо ;-)
17. CheBurator 3119 27.11.06 11:43 Сейчас в теме
Может кто еще знает некоторые неочевидные хитрости?
18. item 221 01.12.06 12:05 Сейчас в теме
Была такая фишка до 14-го релиза:
для дополнительных числовых реквизитов проводки
(напр. "количество2" с конф."Сельхоз.предприятие" от Рарус)
v77 поддерживала функции ДО() и КО() в запросе.
Жаль, что эту вещь выкосили в поздних релизах.
19. dark70 236 01.12.06 20:36 Сейчас в теме
у меня(как у пита) такое давно реализовано:)Правда не мучался,сразу получилось.Это когда из ТиС в Бухию переброску и если изменения,то меняем и в бухии.Соотв. и время нужно точно расставить.
20. CheBurator 3119 11.12.06 16:15 Сейчас в теме
Boj мелкая хитрость: бывает надо на экран вывести ТЗ (типа в отладочных целях), причем с нумерацией строк. Чтобы не заморачиваться, пишем: [code]
ТЗ.ВидимостьКолонки("НомерСтроки",1);
ТЗ.ВыбратьСтроку(," типа отладка");
Zab; Altez; Pari; mishau; +4 Ответить
21. CheBurator 3119 29.03.07 01:03 Сейчас в теме
Не понял.. читать - читаем, ума-разума набираемся.. а кто рейтинг статьи плюсовать будет, а???
22. das 232 22.09.07 04:51 Сейчас в теме
Бесценный опыт - в нашу копилку ;-)))
23. Voldemar 1 15.10.07 07:53 Сейчас в теме
Не так давно была задача "раскидать" по дню загруженные документы, так тщательно прописывал ЧЧ,ММ,СС. А оказывается, можно было всё гораздо проще сделать. Спасибо за ценный опыт.
24. CheBurator 3119 16.10.07 12:35 Сейчас в теме
Пожалуйста! Приходите и читатйе другие мои "жизненные" статьи!
25. Вадимко 214 24.11.07 03:41 Сейчас в теме
Позволю себе дополнить...
Управлять временем можно гораздо точнее нежели в переделах секунды... мы-то с вами знаем :)
86400 - это для пионэров
Есть у меня два документа с одинаковым временем 12.00.01
Если я поменяю время документа с '757H1S' на '757H1T', то документы что сделают?
Правильно, поменяются местами в журнале
А время какое мы продолжаем видеть в 1С? Правильно, 12.00.01 :)
ЗЫ. Чучундеру ПЛЮС за упорство в написании полезных программ и статей
26. CheBurator 3119 25.11.07 00:26 Сейчас в теме
(25) И вот сколько документов "влазит" в одну секунду - это и определяется "емкостью" приведенного ниже идентификатора...
27. valent 72 03.08.08 06:35 Сейчас в теме
Бывает нелишним перед всем этим вставить "АвтоВремяОтключить()"
+
alevnev; Svopper; hate; +3 Ответить
28. hate 16.08.08 13:06 Сейчас в теме
конечно не решило всех проблем, но все равно спасибо, подталкнуло в нужном направлении, поэтому однозначно +!
29. nickkey 29.09.11 05:18 Сейчас в теме
согласен все гениальное просто спасибо за идею :)
30. juraua 08.11.17 11:03 Сейчас в теме
Спасибо за решение, очень помогло!
31. CheBurator 3119 09.11.17 02:12 Сейчас в теме
32. ZloyProger 8 06.08.19 16:28 Сейчас в теме
(31) Ещё живее) Подскажите пожалуйста, не вижу ни ПолучитьВремя(), ни УстановитьВремя() (точнее функция есть - параметры другие).. Видимо с очередными версиями платформы (или это вообще для 7.7? к сожалению нет под рукой, а так давно не пользовался не помню уже) вырезали, теперь только свою проверку городить при добавлении? Или всё же есть какая-нибудь уловка?)
33. CheBurator 3119 06.08.19 22:24 Сейчас в теме
(32) пример рассмотрен для 7.7.
используются только штатные возможности.
.
вполне возможно, что такой подход (с поправкой на особенности 8-ки для задания датавремя документа) будет работать и на 1С 8.
Оставьте свое сообщение