7.7 Последовательность документов

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем Asttoxa, 19 мар 2012.

  1. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Подскажите пожалуйста как можно восстанавливать основную последовательность документов программно не выгоняя всех из базы?
    Или хотябы если обязательно всех выгонять то, чтобы обработка сама распроводила проблемные документы и обязательно записывала лог например в файл.
  2. rshakiro
    Offline

    rshakiro Профессионал в 1С Команда форума

    Регистрация:
    17 мар 2011
    Сообщения:
    2.236
    Симпатии:
    144
    Баллы:
    104
    Только в монопольном режиме. Смысл этой обработки в "поиске ошибок по документам"(не хватает товара на складе, и т.д.) останавливается на проблемном документе и "ждет" Вашего решение по решению проблемы... А Вы как хотели??
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Можно... Только паузы нужно делать.. иначе транзакции замучают

    Вот примерный код
    Код:
     Док = СоздатьОбъект("Документ");
    Док.ВыбратьПоПоследовательности(ПозицияНач, ПозицияКон, ИмяПоследовательности);
    Пока Док.ПолучитьДокумент() = 1 Цикл
    // непроведенные документы не принадлежат посл-тям
    Если Док.Проведен() = 0 Тогда
    Продолжить;
    КонецЕсли;
    // запретить регистрацию изменений документа при его проведении
    Док.РегистрацияИзменений(0);
    // собственно проведение документа. так как документы проводятся
    // последовательно то граница посл-ти будет перенесена на данный
    // документ
    Если Док.Провести()=0 Тогда
    Сообщить("ОБНАРУЖЕНА ОШИБКА. Документ не провелся! "+Док);   
    Прервать;
    КонецЕсли;
    //тут считаем сколько доков проведи и при необходимости делаем паузу
    КонецЦикла;
    
  4. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Что вот это за процедурка?
    Код:
      // запретить регистрацию изменений документа при его проведении
    Док.РегистрацияИзменений(0);
    И про паузу я не совсем понял для чего :blush:
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) РегистрацияИзменений - Недокументированная процедура. Включить или выключить регистрацию изменений для конкретного объекта в журнале регистрации.
    2) Для чего? Да для того чтобы пользователи могли хотя бы "чихнуть" в процессе работы. Иначе даже провести доки не смогут - обработка все себе "хапнет" и эффекта от фонового задания не будет.
  6. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    1) Не документированная?? Даже не знал что такие есть в 1с ... И много таких??
    2) Тогда я лучше сделаю чтобы работала обработка без пауз автоматом ночью когда можно блокировать всех :yahoo:
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Достаточно много
    2) Да... только время работы робота отслеживайте... чтобы останавливался сам. Запускать можно через регламентное задание
  8. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Ну отследить можно в цикле. А вот запускать через регламентное не понятно. Можно поподробнее??
  9. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Меню-Программы-Стандартные-Служебные-Назначенные задания...
    Здесь по расписанию нужно bat файл... в котором запускаете 1с под конкретным пользователем.
    В 1с в ГМ процедура ПриНачалеРаботыСистемы определяем что пользователь служебный и автоматом запускаем вашу обработку
  10. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Спасибо попробую.
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    "Спасибо" кнопкой по сообщению которое посчитали для себя полезным....

    Обращайтесь... Наверняка будут еще вопросы))))
  12. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Почему этой обработкой проводятся документы в разы медленнее чем Меню---Операции---Проведение документов --- Закладка последовательности.
    И во вторых как я понял если восстанавливать последовательность через меню там она как то определяет до какой даты последовательность восстановлена и начинает с нее. И так же ТА сдвигает.
  13. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    1) Разы медленнее потому что вы не монопольно и 1с это видит (для робота не все ли равно - вся ночь впереди)))
    2) Вам никто не мешает программно определить границу последовательности
    Код:
    
    Нашли=0;
    Для А=1 По Метаданные.Последовательность() Цикл
    Посл = Метаданные.Последовательность(А).Идентификатор;
    Если Найти(Посл,"ОсновнаяПоследовательность")<>0 Тогда //вот она родимая........
    Нашли=1;
    Послед=Последовательность.ПолучитьАтрибут(Посл);
    ДокПос=Послед.ПолучитьДокумент(); //вот и документ получили
    Сообщить("Документ ГП "+?(ДокПос.Выбран()=1,""+ДокПос," не определён."));
    Сообщить("Имя последовательности "+Посл);
    Сообщить("Последовательность неприрывна до: "+Послед.Получить());
    Сообщить("Позиция ГП: "+Послед.ПолучитьПозицию());
    КонецЕсли;
    КонецЦикла;
    
    
    Если Нашли=0 Тогда
    Предупреждение("Основная последовательность не найдена. Работа невозможна",15);
    СтатусВозврата(0);
    Возврат;
    КонецЕсли;
    
    
  14. TopicStarter Overlay
    Asttoxa
    Offline

    Asttoxa Опытный в 1С

    Регистрация:
    18 май 2010
    Сообщения:
    525
    Симпатии:
    0
    Баллы:
    26
    Подскажите пожалуйста изза чего дата основной последовательности сдвигается на более ранний срок?

    ------------------------
    Прошу прощения за глупый вопрос. Разобрался сам. Стыдно :blush:
  15. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    из-за проведения ЛЮБОГО документа принадлежащего данной последовательности.....
    Рекомендую активнее юзать дату запрета редактирования....

    Если этого не делать, то.... Пользователь открыл документ.. Ну посмотреть что-то хочет. Удовлетворил любопытство и машинально жмакнул "ОК". Все.. Документ перепровелся и последовательность "улетела". Дата запрета редактирования не даст открыть форму в режиме редактирования и как следствие документ случайно перепровести нельзя.

Поделиться этой страницей