Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Программное изменение Договоров Контрагентов          
Constantus Подменю пользователя
сообщение 24.08.17, 10:43
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Приветствую, форумчане!
"Управление торговлей 10.3", (Моби-С 5.5). "ABBYY Ukraine", 2003-2014 (2.3.20.1)

Имеются 2-а связных документа:
1. Заказ Покупателя
2. Реализация Товаров (создан на основании Заказа Покупателя)

Естественно у этих документов одинаковые Договора Контрагентов.

В неком самописном документе в ТЧ указаны эти 2-а документа. Так вот случилось, что при определенных условиях необходимо поменять у этих связных документов Договора контрагентов.

Для этого применил код:

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

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


Код вроде сработал, но:

1. Оптимален ли код?
2. (более важно) Не повлияет ли подобное изменение договоров на правильность учета данных?

Посоветуйте и порекомендуйте правильность исполнения данного желания...

Flexy Подменю пользователя
сообщение 24.08.17, 11:52
Сообщение #2

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(Constantus @ 24.08.17, 10:43) *
1. Оптимален ли код?

Нет.
Цитата(Constantus @ 24.08.17, 10:43) *
2. Не повлияет ли подобное изменение договоров на правильность учета данных?

Повлияет

Constantus Подменю пользователя
сообщение 24.08.17, 12:01
Сообщение #3

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Сегодня, 14:52 * ,

Благодарю за ответ.

Какой более правильный код? И на что повлияет данная махинация? Как Правильно сделать?

Flexy Подменю пользователя
сообщение 24.08.17, 12:20
Сообщение #4

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Цитата(Constantus @ 24.08.17, 12:01) *
Какой более правильный код?

С одним циклом.
Цитата(Constantus @ 24.08.17, 12:01) *
И на что повлияет данная махинация?

Штатно программа не даст изменить договор по которому есть движения в регистрах. Потому, что это чревато не правильным отражением учета.
Разве, что каждый раз перепроводить документы в которых договор меняется программным образом.
Я так понимаю, с такой методой реализации задачи у Вас в базе все отчеты по взаиморасчетам и т.д. будут тупо "плавать".
Цитата(Constantus @ 24.08.17, 12:01) *
Как Правильно сделать?

Изначально выбирать в документах "правильные договора".

Сообщение отредактировал Flexy - 24.08.17, 12:22

Constantus Подменю пользователя
сообщение 24.08.17, 12:50
Сообщение #5

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Цитата(Flexy @ 24.08.17, 15:20) *
Штатно программа не даст изменить договор по которому есть движения в регистрах. Потому, что это чревато не правильным отражением учета.
Разве, что каждый раз перепроводить документы в которых договор меняется программным образом.
Я так понимаю, с такой методой реализации задачи у Вас в базе все отчеты по взаиморасчетам и т.д. будут тупо "плавать".


Суть в следующем.

Имеется единичный Заказ по договору "Основной". На основании его сделана Реализация по такому же договору "Основной".

По определенным причинам, в моем случае клиент не смог оплатить и попросил отсрочку платежа. В этом случае нужно пройти следующие круги ада:
1. Осуществить возврат
2. Создать новый Заказ с новой датой
3. На основании Заказа сделать новую Реализацию

Наша учетная политика не позволяет проведение операций по договору "Основной" с отсрочкой платежей, т.е. вынь деньги на бочку и бери товар, иначе - разворачиваемся и машем...
К тому же ежедневный отчет по наличным средствам базируется по договору "Основной". В итоге, если оставить всё как есть, то касса желаемая и действительная не совпадут (если не делать возврат). Но у клиента очень добрые глаза, тем более поклялся всем, что у него есть и будет. Товар остается без оплаты...

Чтобы избежать подобной ситуации, ранее использовалась схема с возвратом и переписыванием договора на "Кредит на 7 дней", тогда типа всё нормально и проблемы кассы переносятся на коллекторов...

Вот и мелькнула мысль, чтобы одним махом просто изменить договор с "Основного" на "Кредит 7 дней" у Заказа и Реализации...

Данный код моей махинации решает проблемы, но вот правая печень как-то что-то не так сомневается...

С другой стороны, как Вы сказали: Разве, что каждый раз перепроводить документы в которых договор меняется программным образом.
Так я своим кодом и перепровожу эти два документа (Заказ и Реализация)

            Объект = Стр.Реализация.ПолучитьОбъект();
            Объект.ДоговорКонтрагента = Стр.СтатусДоговора;
            Объект.Записать(РежимЗаписиДокумента.[b]Проведение[/b]);


Flexy Подменю пользователя
сообщение 24.08.17, 13:33
Сообщение #6

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Покажите, как выглядит сея ТЧ в самопальной доке.

Constantus Подменю пользователя
сообщение 24.08.17, 13:42
Сообщение #7

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Сегодня, 16:33 * ,

Звиняюсь, это не документ, а обработка...

В смысле? Показать картинку этой обработки с ТЧ или код кнопки "Нажатия"?

//Кстати, я так и не понял, как здесь правильно разместить картинку. Требует УРЛ адрес этой картинки. Предварительно нужно разместить эту картинку где-то типа облако майл.ру?

Flexy Подменю пользователя
сообщение 24.08.17, 13:58
Сообщение #8

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Ок. Давайте без картинки. У вас в ТЧ, в одной строке заполнен и Заказ и РТиУ? Или чередуются?

Constantus Подменю пользователя
сообщение 24.08.17, 15:01
Сообщение #9

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Сегодня, 16:58 * ,

Строка ТЧ

Договор; Контрагент; Заказ; Реализация; Номер (реализации); Сумма (одинакова для всех); Реструктуризация (булево, если нужно менять); СтатусДоговора (НовыйДоговор)

Всё в одной строке...

В коде: Если "Реструктуризация = истина" Тогда проверяется наличие нового договора и выполнение вышеуказанного кода

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

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

Flexy Подменю пользователя
сообщение 24.08.17, 16:41
Сообщение #10

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Constantus @ Сегодня, 15:01 * ,
А зачем два отдельных цикла? upset.gif
МассивСтрок = Детально.НайтиСтроки(Новый Структура("Реструктуризация", Истина));
Если МассивСтрок.Количество() = 0 Тогда
Возврат;
КонецЕсли;

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

Исключение
ЕстьОшибки = Истина;
Сообщить(ОписаниеОшибки());
КонецПопытки;

Если Не ЕстьОшибки Тогда
ЗафиксироватьТранзакцию();
Иначе
ОтменитьТранзакцию();
КонецЕсли;


Сообщение отредактировал Flexy - 24.08.17, 17:06

Constantus Подменю пользователя
сообщение 24.08.17, 17:25
Сообщение #11

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Сегодня, 19:41 * ,

Это всё в тестовом режиме, сделано лишь бы сработало. Основной вопрос на что может повлиять подобное перепроведение документов при смене ДоговораКонтрагента. Можно ли так вносить изменения с точки зрения учета...

Flexy Подменю пользователя
сообщение 24.08.17, 18:04
Сообщение #12

Танцор с Бубном
Иконка группы
Группа: Местный
Сообщений: 1121
Из: Днепра
Спасибо сказали: 230 раз
Рейтинг: 0

Constantus @ Сегодня, 17:25 * ,
С точки зрения учета, методики и системы то, что Вы делаете - Это Имхо не правильно.
Безусловно, Вы можете программно изменять договора и переписывать движения в регистр, если "без этого ни как".
По хорошему, имхо, программа тут не причем.
Если проблема в том, что превышена задолженность клиента по договору и программа не дает в таком случае совершить следующую отгрузку по этой причине,то следует пилить механизм контроля этого всего дела, а не изобретать велосипед с подменой договоров и перепроведением доков. Это ппц как не оптимально.

P.S. Просто не прослеживается логика. Сначала Вы хотите от программы контролировать и учитывать что-то, что бы потом задним числом, как-то и что-то поменять, что бы Вот так, а если не так то иначе, и если не иначе, то на всякий случай.
Это учетная система, и тут такое решение не лучший вариант.

Цитата(Constantus @ 24.08.17, 17:25) *
Это всё в тестовом режиме, сделано лишь бы сработало. Основной вопрос на что может повлиять подобное перепроведение документов при смене ДоговораКонтрагента. Можно ли так вносить изменения с точки зрения учета...

Какого учета? Управленческого? Можно.

Сообщение отредактировал Flexy - 24.08.17, 18:10

Constantus Подменю пользователя
сообщение 25.08.17, 9:01
Сообщение #13

Ветеран
*******
Группа: Пользователи
Сообщений: 962
Спасибо сказали: 8 раз
Рейтинг: 0

Flexy @ Вчера, 21:04 * ,

Да. В Управленческом учете в моей УТ 10.3. Так могу я так внести изменения Договоров без глобального ущерба экономике? А то топик как-то наполнен противоречиями

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 30.04.24, 12:59
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!