Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
24 июн 2024, 06:36

Нужно помощь

Автор shamsbjj, 20 ноя 2023, 15:04

0 Пользователей и 1 гость просматривают эту тему.

shamsbjj

Добрый день подскажите как Провести все документы "Заказ клиента"

Полученную выборку документов обойти в цикле (Пока Выборка.Следующий() )

В цикле получаем объект от ссылки каждого документа:

ДокументОбъект = Выборка.ПолучитьОбъект();

И проводим документ, выполнив запись объекта в режиме проведения

Максим75

shamsbjj, именно так. не мешало бы еще проверить на пометку удаления, вдруг совсем удаленный и проводить не надо.

LexaK

почти так, как вы описали, только еще добавьте проверку
Если Выборка.Проведен Тогда //вот здесь ваш код для проведения

так как есть/бывают НеПроведенные (мало ли, отменили проведение)
еще бывают документы  помеченные на удаление = их тоже не надо проводить

и еще надо решить вопрос с обходом ошибок проведения
что в этом случае делать, тормозить/прерывать весь цикл перепроведения,
или выдавать предупреждения и проводить дальше
если помогло нажмите: Спасибо!

shamsbjj

LexaK, это таким образом будет решаться ?

СсылкаНаДокумент = Документы.ЗаказКлиента.НайтиПоНомеру("00000000009", ТекущаяДата());
   
    //2. проверка на пустую ссылку
    Если СсылкаНаДокумент.Пустая() Тогда
        Сообщение = Новый СообщениеПользователю;
        Сообщение.Текст = "Не найден документ";
        Сообщение.Сообщить();
        Возврат;
    КонецЕсли;
   
    //3. получить объект документа
    ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
   
    //4. проведение документа
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);

LexaK

shamsbjj, вы наверно совсем не читаете ответы? вам писали что нужно добавить проверки
(зачем вообще что-то спрашивать, если затем игнорировать ответы)

вот ваш код с добавленной проверкой (именно для перепроведения документа)
СсылкаНаДокумент = Документы.ЗаказКлиента.НайтиПоНомеру("00000000009", ТекущаяДата());
Если СсылкаНаДокумент.Проведен Тогда
//Если Не СсылкаНаДокумент.Пустая() и Не СсылкаНаДокумент.ПометкаУдаления Тогда //для выбора всех не помеченных на удаление
//документ проведен, ПереПроводим
    //3. получить объект документа
    ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
Попытка
    //4. проведение документа
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
лкОшибка = ОписаниеОшибки();
Сообщить(лкОшибка);
КонецПопытки;
КонецЕсли;
если помогло нажмите: Спасибо!

shamsbjj

LexaK, так только один документ проводиться

shamsbjj

LexaK,  а если вот так добавить дата начало и конец можно потом перевести все документы за этот период ?



ДатаНачало = '20211101';
ДатаОкончания = '20211130';

СсылкаНаДокумент = Документы.ЗаказКлиента.НайтиПоНомеру("00000000009", ТекущаяДата());
Если СсылкаНаДокумент.Проведен Тогда
//Если Не СсылкаНаДокумент.Пустая() и Не СсылкаНаДокумент.ПометкаУдаления Тогда //для выбора всех не помеченных на удаление
    //документ проведен, ПереПроводим
    //3. получить объект документа
    ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
    Попытка
        //4. проведение документа
        ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);   
    Исключение
        лкОшибка = ОписаниеОшибки();
        Сообщить(лкОшибка);
    КонецПопытки;
КонецЕсли;

antoneus

СсылкаНаДокумент = Документы.ЗаказКлиента.НайтиПоНомеру("00000000009", ТекущаяДата());
Этот код находит ОДИН документ, который и проводится. Чтобы провести несколько (много) документов, читайте про методы Выбрать для менеджера документов и Следующий для выборки.

LexaK

так в самом начале темы вы писали
Полученную выборку документов обойти в цикле (Пока Выборка.Следующий() )

В цикле получаем объект от ссылки каждого документа:

ДокументОбъект = Выборка.ПолучитьОбъект();

вот это код добавьте проверки и перепроводите.

прикольно, тему поместили в цикл, ходим по кругу!  :xfbnsdfb:
если помогло нажмите: Спасибо!

shamsbjj

LexaK,  Пока Выборка.Следующий()каждого

      ДокументОбъект = Выборка.ПолучитьОбъект();
   
   СсылкаНаДокумент = Документы.ЗаказКлиента.НайтиПоНомеру("00000000009", ТекущаяДата());
   Если СсылкаНаДокумент.Проведен Тогда
    ДокументОбъект = СсылкаНаДокумент.ПолучитьОбъект();
   Попытка
      ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);   
    Исключение
        лкОшибка = ОписаниеОшибки();
        Сообщить(лкОшибка);
    КонецПопытки;
КонецЕсли;
   КонецЦикла;   
КонецПроцедуры




типо так имеете ввиду?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск